{ "name": "kanera", "private": true, "version": "1.10.0", "packageManager": "pnpm@11.23.0", "engines": { "node": "^24.0.0" }, "scripts": { "predev": "pnpm i && node scripts/clear-dev-ports.mjs", "dev": "pnpm with:local-env concurrently -k -n api,worker,web -c blue,magenta,green \"pnpm --filter @kanera/api dev\" \"pnpm --filter @kanera/api dev:worker\" \"pnpm --filter @kanera/web start\"", "dev:mcp": "pnpm --filter @kanera/mcp dev", "cli": "pnpm --filter @kanera/cli dev --", "dev:hosted": "pnpm with:hosted-local-env concurrently -k -n api,worker,web -c blue,magenta,green \"pnpm --filter @kanera/api dev\" \"pnpm --filter @kanera/api dev:worker\" \"pnpm --filter @kanera/web start\"", "dev:public-api": "pnpm with:local-env pnpm --filter @kanera/api dev:public-api", "dev:admin": "pnpm with:local-env concurrently -k -n admin-api,admin-web -c blue,green \"pnpm --filter @kanera/api dev:admin-api\" \"pnpm --filter @kanera/admin-web start\"", "dev:https": "pnpm with:local-env concurrently -k -n api,worker,web -c blue,magenta,green \"WEB_ORIGIN=https://localhost:4200 pnpm --filter @kanera/api dev\" \"WEB_ORIGIN=https://localhost:4200 pnpm --filter @kanera/api dev:worker\" \"pnpm --filter @kanera/web start:https\"", "dev:db": "docker compose -f docker-compose.dev.yml up -d --wait", "dev:db:down": "docker compose -f docker-compose.dev.yml down", "dev:db:reset": "docker compose -f docker-compose.dev.yml down -v && pnpm dev:db && pnpm db:migrate:local", "dev:db:reset:seed": "docker compose -f docker-compose.dev.yml down -v && pnpm dev:db && pnpm db:migrate:local && pnpm db:seed:local", "dev:db:reset:seed:hosted": "docker compose -f docker-compose.dev.yml down -v && pnpm dev:db && pnpm db:migrate:hosted:local && pnpm db:seed:hosted:local", "dev:db:reset:seed:hosted:account": "docker compose -f docker-compose.dev.yml down -v && pnpm dev:db && pnpm db:migrate:hosted:local && pnpm db:seed:hosted-accounts", "build": "pnpm -r build", "bundle:web": "pnpm --filter @kanera/web bundle:analyze", "bundle:web:check": "pnpm --filter @kanera/web bundle:check", "lint": "pnpm -r lint && pnpm lint:e2e && pnpm lint:knip", "lint:knip": "knip", "i18n:extract": "pnpm --filter @kanera/web i18n:extract", "i18n:check": "pnpm --filter @kanera/web i18n:check", "lint:eslint": "eslint .", "lint:e2e": "tsc -p e2e/tsconfig.json && eslint e2e", "release": "node scripts/release.mjs", "test": "pnpm test:release && pnpm test:integrations && pnpm test:api && pnpm --filter @kanera/web test && pnpm test:mcp && pnpm test:cli && pnpm test:sdk && pnpm test:api:integration && pnpm test:mcp:integration && pnpm test:e2e", "test:release": "node --test scripts/release.test.mjs scripts/build-release-compose.test.mjs", "test:integrations": "node --test scripts/agent-integrations.test.mjs", "test:api": "pnpm --filter @kanera/api test", "test:mcp": "pnpm --filter @kanera/mcp test", "test:cli": "pnpm --filter @kanera/cli test", "test:sdk": "pnpm --filter @kanera/sdk test", "test:e2e": "bash scripts/test-e2e.sh", "test:web:bundles": "playwright test --config benchmarks/web/bundle-loading.config.cjs", "test:analytics": "playwright test --config e2e/playwright.analytics.config.ts", "test:mcp:integration": "bash scripts/test-mcp-integration.sh", "test:api:integration": "bash scripts/test-api-integration.sh", "db:generate": "pnpm --filter @kanera/api db:generate", "db:migrate": "pnpm --filter @kanera/api db:migrate", "db:migrate:local": "pnpm with:local-env pnpm db:migrate", "db:migrate:hosted:local": "pnpm with:hosted-local-env pnpm db:migrate", "db:seed": "pnpm --filter @kanera/api db:seed", "db:seed:local": "pnpm with:local-env pnpm db:seed", "db:seed:hosted:local": "pnpm with:hosted-local-env pnpm db:seed", "db:seed:hosted-accounts": "pnpm with:hosted-local-env pnpm --filter @kanera/api db:seed:hosted-accounts", "perf:web:seed": "pnpm with:local-env pnpm --filter @kanera/api db:seed:web-performance", "perf:web": "npx -y -p @playwright/test@1.61.1 sh -c 'NODE_PATH=\"$(dirname \"$(dirname \"$(command -v playwright)\")\")\" playwright test --config benchmarks/web/playwright.config.cjs'", "perf:api": "node benchmarks/api/load.mjs", "db:studio": "pnpm --filter @kanera/api db:studio", "email:preview": "pnpm --filter @kanera/api email:preview", "start:public-api": "pnpm --filter @kanera/api start:public-api", "start:mcp": "pnpm --filter @kanera/mcp start", "with:local-env": "DATABASE_URL=postgres://kanera:kanera@localhost:5433/kanera REDIS_URL=redis://localhost:6379/0 JWT_SECRET=local_development_jwt_secret MFA_ENCRYPTION_KEY=local_development_mfa_encryption_key_32 MEDIA_SIGNING_SECRET=local_development_media_signing_secret_32 SECRETS_ENCRYPTION_KEY=local_development_secrets_encryption_key_32 ADMIN_JWT_SECRET=local_development_admin_jwt_secret", "with:hosted-local-env": "KANERA_DEPLOYMENT_MODE=hosted HOSTED_PRO_PRICE_MONTHLY_CENTS=500 HOSTED_PRO_PRICE_ANNUAL_CENTS=4900 STRIPE_SECRET_KEY=sk_test_local STRIPE_PUBLISHABLE_KEY=pk_test_local STRIPE_WEBHOOK_SECRET=whsec_test_local STRIPE_PRICE_ID_PRO_MONTHLY=price_local_monthly STRIPE_PRICE_ID_PRO_ANNUAL=price_local_annual pnpm with:local-env" }, "devDependencies": { "@eslint/js": "^10.0.1", "@modelcontextprotocol/client": "^2.4.0", "@playwright/test": "1.61.1", "@types/node": "^24.19.2", "angular-eslint": "^22.6.0", "concurrently": "^9.2.5", "eslint": "^10.14.0", "globals": "^17.14.0", "knip": "^6.44.1", "typescript": "~5.9.3", "typescript-eslint": "^8.72.1" } }