{
  "name": "@ameshkin/ticket-mate",
  "version": "0.1.26",
  "private": false,
  "description": "Jira integration and AI execution layer - bridges Jira tickets and AI-assisted development workflows (backend package)",
  "keywords": [
    "jira",
    "jira-integration",
    "project-management",
    "ai-agents",
    "cli",
    "automation",
    "development-workflow",
    "backend",
    "api"
  ],
  "homepage": "https://github.com/nevaroAI/ticket-mate-demo#readme",
  "bugs": {
    "url": "https://github.com/nevaroAI/ticket-mate-demo/issues"
  },
  "repository": {
    "type": "git",
    "url": "git+https://github.com/nevaroAI/ticket-mate-demo.git"
  },
  "license": "MIT",
  "author": "Amir Meshkin <amir.meshkin@gmail.com> (https://github.com/ameshkin)",
  "sideEffects": false,
  "type": "module",
  "exports": {
    ".": {
      "types": "./dist/index.d.ts",
      "default": "./dist/index.js"
    },
    "./cli": {
      "types": "./dist/cli/index.d.ts",
      "default": "./dist/cli/index.js"
    }
  },
  "main": "./dist/index.js",
  "module": "./dist/index.js",
  "types": "./dist/index.d.ts",
  "bin": {
    "ticket-mate": "./scripts/cli-wrapper.mjs",
    "ticket-mate-projects": "dist/cli/project-list.js",
    "tm": "./scripts/cli-wrapper.mjs"
  },
  "files": [
    "dist",
    "config",
    "README.md",
    "LICENSE"
  ],
  "scripts": {
    "analyze": "cross-env ANALYZE=true next build --webpack",
    "audit:fix": "npm audit fix --omit=dev",
    "prebuild": "npm run prisma:generate && npm run prebuild:check",
    "build": "npm run build:app",
    "build:app": "npm run prisma:generate && npm run build:package && npm run prebuild:check && next build",
    "prebuild:check": "node scripts/pre-build-checker.mjs",
    "build:check": "npm run prebuild:check && npm run typecheck && next build",
    "build:lib": "bash scripts/build-lib.sh",
    "build:package": "mkdir -p dist && npx tsc -p tsconfig.build.json --skipLibCheck || true",
    "prebuild:ui": "mkdir -p .orchestrator &&  .orchestrator/tickets/bugs/bugs.json || true",
    "build:ui": "npm run build:app",
    "check:env": "tsx scripts/check-env.ts",
    "check:env-auth": "tsx scripts/check-env-auth.ts",
    "check:env-keys": "tsx scripts/check-env-keys.ts",
    "check:local-user": "tsx scripts/check-local-user.ts",
    "clean": "rm -rf .next dist node_modules/.vite node_modules/.cache",
    "clean-build": "bash ./scripts/orchestrator-clean-build.sh",
    "clean-locks": "bash scripts/clean-locks.sh",
    "cleanup:env": "node scripts/cleanup-env-files.mjs",
    "db": "rm -rf node_modules/.prisma && prisma generate && prisma validate",
    "db:bootstrap": "tsx scripts/dev/bootstrap-db.ts",
    "db:reset": "prisma migrate reset --force && npm run db:seed",
    "db:seed": "tsx prisma/seed.ts",
    "db:studio": "npx prisma studio",
    "db:test": "bash scripts/test-db-connection.sh",
    "db:test:tunnel": "DATABASE_URL=postgresql://ticket-mate:ticketpassmate@localhost:15432/ticket_mate npx prisma db execute --stdin <<< \"SELECT 1;\"",
    "db:tunnel": "ssh -L 15432:localhost:5432 root@72.61.71.227",
    "db:tunnel:stable": "ssh -i /Users/amirmeshkin/.ssh/hostinger_ollama -N -L 5433:localhost:5432 root@72.61.71.227",
    "deploy": "npm run typecheck && npm run build:app && npm publish",
    "predev": "mkdir -p public && cp src/assets/logo.jpg public/logo.jpg || true && npm run build:lib && npm run db:bootstrap",
    "dev": "npx next dev -p 4000",
    "dev:all": "concurrently \"npm run dev:server\" \"npm run dev:ui\"",
    "dev:full": "concurrently -n \"next,ngrok\" -c \"cyan,magenta\" \"npm run dev\" \"npm run ngrok\"",
    "dev:server": "tsx src/server/index.ts",
    "dev:ui": "npx next dev -p 4000",
    "fix:notifications-userid": "bash scripts/fix-notifications-userid.sh",
    "go": "npm test && npm run build && git add . && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx --max-warnings 2000",
    "lint:ui": "eslint src/app --ext ts,tsx --report-unused-disable-directives",
    "migrate:bugs": "tsx scripts/migrate-bugs-json.ts",
    "migrate:jm-mate": "tsx scripts/migrate-jm-mate.ts",
    "migrate:notification-userid": "node scripts/apply-notifications-userid-migration.mjs",
    "migrate:users-core": "tsx scripts/migrate-users-to-customer-and-ai-tokens.ts",
    "ngrok": "ngrok start ticket-mate --config ngrok.yml",
    "orchestrator:ci": "ts-node ./scripts/orchestrator-ci.ts",
    "orchestrator:clean-build": "bash ./scripts/orchestrator-clean-build.sh",
    "orchestrator:clean-build-push": "bash .orchestrator/scripts/clean-build-test-push.sh",
    "prebuild:skip-typecheck": "echo '⏭️  Skipping typecheck (temporary)'",
    "prepare": "husky install",
    "prepublishOnly": "npm run build",
    "preview": "npx next start -p 4000",
    "prisma:generate": "npx prisma generate",
    "prisma:migrate": "prisma migrate dev",
    "prisma:migrate:deploy": "prisma migrate deploy",
    "prisma:migrate:dev": "prisma migrate dev",
    "prisma:seed": "prisma db seed",
    "prisma:selftest": "node scripts/prisma-selftest.cjs",
    "prisma:studio": "prisma studio",
    "prisma:studio:remote": "bash scripts/prisma-studio-remote.sh",
    "prisma:studio:server": "bash scripts/prisma-studio-remote-server.sh",
    "publish:all": "npm run build && npm run test:run && npm version patch -m \"chore(release): %s\" && git push --follow-tags && npm publish",
    "publish:github": "npm run release:patch",
    "publish:patch": "npm run release:patch",
    "release:patch": "npm run release:pre && npm version patch -m \"chore(release): %s\" && git push && git push --tags && npm publish",
    "release:pre": "npm run typecheck && npm run test:run && npm run build:app",
    "security:check": "tsx scripts/security-check.ts staged",
    "security:scan": "tsx scripts/security-check.ts all",
    "security:validate": "tsx scripts/security-check.ts config",
    "seed": "tsx prisma/seed.ts",
    "seed:tunnel": "DATABASE_URL=postgresql://ticket-mate:ticketpassmate@localhost:15432/ticket_mate npx tsx prisma/seed.ts",
    "prestart": "npm run build:lib",
    "start": "npx next start -p 4000",
    "sync:lib": "bash scripts/sync-lib-from-local.sh",
    "test": "vitest --config tests/vitest.config.ts",
    "test:all": "npm run test:run",
    "test:all:strict": "npm run typecheck && npm run test:run",
    "test:automation": "tsx scripts/test-automation-api.ts",
    "test:automation:direct": "node --loader ts-node/esm scripts/test-automation-direct.ts",
    "test:automation:simple": "node scripts/test-automation-simple.mjs",
    "test:coverage": "vitest run --coverage --config tests/vitest.config.ts",
    "test:e2e": "playwright test --config tests/playwright.config.ts",
    "test:e2e:cart": "tsx scripts/test-cart-e2e.ts",
    "test:e2e:debug": "playwright test --debug --config tests/playwright.config.ts",
    "test:e2e:headed": "playwright test --headed --config tests/playwright.config.ts",
    "test:e2e:ui": "playwright test --ui --config tests/playwright.config.ts",
    "test:e2e:watch": "jasmine --config tests/jasmine/jasmine.json --watch",
    "test:gherkin": "cucumber-js tests/cucumber/**/*.feature --require tests/cucumber/step-definitions/**/*.ts --require-module ts-node/register --config tests/cucumber.config.ts",
    "test:gherkin:watch": "cucumber-js tests/cucumber/**/*.feature --require tests/cucumber/step-definitions/**/*.ts --require-module ts-node/register --config tests/cucumber.config.ts --watch",
    "test:jira": "npm run build && node scripts/test-jira-connection.mjs",
    "test:login": "tsx scripts/test-login.ts",
    "test:login:tunnel": "DATABASE_URL=postgresql://ticket-mate:ticketpassmate@localhost:15432/ticket_mate npx tsx scripts/test-login.ts",
    "test:run": "vitest run --config tests/vitest.config.ts",
    "test:unit": "vitest run --config tests/vitest.config.ts",
    "test:unit:watch": "vitest watch --config tests/vitest.config.ts",
    "test:watch": "vitest watch --config tests/vitest.config.ts",
    "typecheck": "bash scripts/typecheck-log.sh",
    "typecheck:ui": "tsc --noEmit",
    "validate:jm-data": "tsx scripts/validate-jm-data.ts",
    "vercel-build": "node scripts/vercel-migrate.mjs && npm run build:app",
    "vercel:env:dev": "node scripts/vercel-sync-env.mjs --target development",
    "vercel:env:preview": "node scripts/vercel-sync-env.mjs --target preview",
    "vercel:env:prod": "node scripts/vercel-sync-env.mjs --target production",
    "webhooks:delete-legacy": "tsx scripts/delete-legacy-webhooks.ts",
    "webhooks:list": "tsx scripts/list-jira-webhooks.ts",
    "webhooks:register": "tsx scripts/register-jira-webhook.ts"
  },
  "lint-staged": {
    "*.{ts,tsx,js,jsx}": [
      "eslint --fix",
      "prettier --write"
    ],
    "*.{json,md,css,scss}": [
      "prettier --write"
    ]
  },
  "config": {
    "ignore-scripts": false
  },
  "dependencies": {
    "@ameshkin/markdown-handler": "^0.1.7",
    "@ameshkin/nextcrumbs": "^0.2.0",
    "@aws-sdk/client-s3": "^3.956.0",
    "@dnd-kit/core": "^6.3.1",
    "@dnd-kit/modifiers": "^9.0.0",
    "@dnd-kit/sortable": "^10.0.0",
    "@dnd-kit/utilities": "^3.2.2",
    "@emotion/cache": "^11.13.5",
    "@emotion/react": "^11.13.5",
    "@emotion/styled": "^11.13.5",
    "@hello-pangea/dnd": "^18.0.1",
    "@hookform/resolvers": "^5.2.2",
    "@lexical/clipboard": "^0.39.0",
    "@lexical/code": "^0.39.0",
    "@lexical/history": "^0.39.0",
    "@lexical/html": "^0.39.0",
    "@lexical/link": "^0.39.0",
    "@lexical/list": "^0.39.0",
    "@lexical/markdown": "^0.39.0",
    "@lexical/react": "^0.39.0",
    "@lexical/rich-text": "^0.39.0",
    "@lexical/selection": "^0.39.0",
    "@lexical/table": "^0.39.0",
    "@lexical/utils": "^0.39.0",
    "@mui/icons-material": "^7.0.0",
    "@mui/material": "^7.0.0",
    "@mui/material-nextjs": "^7.3.5",
    "@mui/system": "^7.0.0",
    "@next-auth/prisma-adapter": "^1.0.7",
    "@octokit/auth-app": "^8.1.2",
    "@octokit/rest": "^22.0.1",
    "@prisma/adapter-pg": "^7.4.0",
    "@prisma/client": "7.0.1",
    "@replit/extensions": "^1.10.0",
    "@replit/extensions-react": "^0.6.0",
    "@tanstack/react-query": "^5.90.12",
    "@tanstack/react-query-devtools": "^5.91.1",
    "ai": "^5.0.115",
    "bcryptjs": "^2.4.3",
    "better-sqlite3": "^12.5.0",
    "commander": "^14.0.2",
    "cors": "^2.8.5",
    "date-fns": "^3.3.1",
    "express": "^4.18.0",
    "framer-motion": "^12.23.26",
    "js-yaml": "^4.1.1",
    "konva": "^10.0.12",
    "lexical": "^0.39.0",
    "micromark-util-sanitize-uri": "^2.0.1",
    "moment": "^2.30.1",
    "next": "^16.0.0",
    "next-auth": "^4.24.13",
    "openai": "^4.78.1",
    "pg": "^8.18.0",
    "react": "^18.3.1",
    "react-dom": "^18.3.1",
    "react-hot-toast": "^2.6.0",
    "react-hotkeys-hook": "^5.2.1",
    "react-international-phone": "^4.6.1",
    "react-konva": "^18.2.14",
    "reactflow": "^11.11.4",
    "resend": "^6.6.0",
    "stripe": "^17.7.0",
    "swagger-jsdoc": "^6.2.8",
    "swagger-ui-express": "^5.0.1",
    "zod": "^3.25.76"
  },
  "devDependencies": {
    "@axe-core/playwright": "^4.8.0",
    "@cucumber/cucumber": "^12.2.0",
    "@cucumber/gherkin": "^29.0.0",
    "@cucumber/gherkin-streams": "^6.0.0",
    "@cucumber/gherkin-utils": "^9.0.0",
    "@cucumber/messages": "^24.0.0",
    "@eslint/eslintrc": "^3.3.3",
    "@monaco-editor/react": "^4.6.0",
    "@next/bundle-analyzer": "^16.1.1",
    "@playwright/test": "^1.40.0",
    "@testing-library/dom": "^10.4.0",
    "@testing-library/jest-dom": "^6.1.5",
    "@testing-library/react": "^16.0.0",
    "@testing-library/user-event": "^14.5.1",
    "@types/bcryptjs": "^2.4.6",
    "@types/better-sqlite3": "^7.6.13",
    "@types/cors": "^2.8.19",
    "@types/express": "^5.0.5",
    "@types/jasmine": "^5.1.4",
    "@types/js-yaml": "^4.0.9",
    "@types/node": "^20.19.25",
    "@types/pg": "^8.16.0",
    "@types/react": "^18.3.27",
    "@types/react-dom": "^18.3.1",
    "@types/swagger-jsdoc": "^6.0.4",
    "@types/swagger-ui-express": "^4.1.8",
    "@types/yamljs": "^0.2.34",
    "@typescript-eslint/eslint-plugin": "^8.0.0",
    "@typescript-eslint/parser": "^8.0.0",
    "@vitest/coverage-v8": "^4.0.6",
    "baseline-browser-mapping": "^2.8.32",
    "concurrently": "^8.2.2",
    "cross-env": "^10.1.0",
    "dotenv": "^17.2.3",
    "eslint": "^8.57.0",
    "eslint-config-next": "^15.0.0",
    "eslint-plugin-react-hooks": "^5.0.0",
    "eslint-plugin-react-refresh": "^0.4.5",
    "husky": "^9.0.11",
    "jasmine": "^5.1.1",
    "jsdom": "^23.0.1",
    "lint-staged": "^16.2.7",
    "ngrok": "^5.0.0-beta.2",
    "prisma": "7.0.1",
    "react-hook-form": "^7.50.0",
    "react-markdown": "^9.0.1",
    "react-router-dom": "^6.22.0",
    "recharts": "^2.15.4",
    "reflect-metadata": "^0.2.2",
    "remark-gfm": "^4.0.0",
    "sort-package-json": "^2.10.0",
    "ts-node": "^10.9.2",
    "tsx": "^4.20.6",
    "typescript": "^5.9.3",
    "vitest": "^4.0.6",
    "yamljs": "^0.3.0",
    "zustand": "^4.5.0"
  },
  "packageManager": "npm@10.5.0",
  "engines": {
    "node": ">=20.19 <23"
  },
  "overrides": {
    "prisma": "7.0.1",
    "@prisma/client": "7.0.1",
    "magicast": "0.5.2"
  }
}
