{ "name": "telegram-marketing-agent", "version": "1.0.0", "description": "Claude Code × Telegram Marketing Intelligence Agent System", "main": "index.js", "type": "module", "scripts": { "dev": "nodemon --exec node --experimental-modules --loader ./loader.js index.js", "start": "node --experimental-modules --loader ./loader.js index.js", "test": "jest", "test:unit": "jest --testPathPattern=tests/unit", "test:integration": "jest --testPathPattern=tests/integration", "test:e2e": "jest --testPathPattern=tests/e2e --runInBand", "test:watch": "jest --watch", "test:coverage": "jest --coverage", "lint": "eslint .", "lint:fix": "eslint . --fix", "migrate": "node ./scripts/migrate.js", "migrate:prod": "NODE_ENV=production node ./scripts/migrate.js", "build:docker": "docker-compose build", "deploy:k8s": "kubectl apply -f ./infrastructure/k8s/" }, "keywords": [ "telegram", "marketing", "ai", "claude", "automation" ], "author": "", "license": "MIT", "dependencies": { "@anthropic-ai/sdk": "^0.20.0", "@elastic/elasticsearch": "^8.12.0", "@hapi/hapi": "^21.3.2", "@hapi/joi": "^17.1.1", "amqplib": "^0.10.3", "bcryptjs": "^3.0.2", "bullmq": "^5.1.0", "dotenv": "^16.4.1", "ioredis": "^5.3.2", "jsonwebtoken": "^9.0.2", "mongoose": "^8.1.1", "pg": "^8.11.3", "pg-hstore": "^2.3.4", "pino": "^8.17.2", "pino-pretty": "^10.3.1", "prometheus-api-metrics": "^3.2.2", "sequelize": "^6.35.2", "telegram": "^2.19.0", "uuid": "^9.0.1", "winston": "^3.11.0", "xstate": "^5.5.1" }, "devDependencies": { "@babel/core": "^7.23.9", "@babel/preset-env": "^7.23.9", "@types/jest": "^29.5.11", "@types/node": "^20.11.5", "eslint": "^8.56.0", "eslint-config-prettier": "^9.1.0", "eslint-plugin-prettier": "^5.1.3", "jest": "^29.7.0", "nodemon": "^3.0.3", "prettier": "^3.2.4", "supertest": "^6.3.4", "@shelf/jest-mongodb": "^4.1.7", "redis-mock": "^0.56.3", "sinon": "^15.2.0", "@faker-js/faker": "^8.0.2", "eslint-plugin-jest": "^27.2.3" }, "engines": { "node": ">=18.0.0" }, "directories": { "doc": "docs", "test": "test" }, "jest": { "testEnvironment": "node", "coverageDirectory": "coverage", "collectCoverageFrom": [ "services/**/*.js", "!services/**/node_modules/**", "!services/**/*.test.js", "!services/**/*.spec.js" ], "testMatch": [ "**/tests/**/*.test.js", "**/tests/**/*.spec.js" ], "setupFilesAfterEnv": [ "/tests/setup.js" ], "moduleNameMapper": { "^@/(.*)$": "/$1", "^@services/(.*)$": "/services/$1", "^@tests/(.*)$": "/tests/$1" }, "coverageThreshold": { "global": { "branches": 70, "functions": 70, "lines": 80, "statements": 80 } } } }