teqo/package.json
Francisco Solla e04db48742 feat(ops): auto-promote stage→main e merge em stage sem exigir head (#68)
* feat(ops): auto-promote stage→main e merge em stage sem exigir head

Substitui o promote manual por workflow disparado no ci-stage green,
relaxa strict na proteção de stage (script configure:branch-protection)
e documenta o novo paradigma em AGENT-OPS e work-issue.

* style: format AGENT-OPS and configure-branch-protection for ci-pr

* feat(ops): pnpm push com ensure-repo-deps determinístico

Bootstrap install + Husky antes de todo push (pnpm push e pre-push).
Documenta fluxo canônico em work-issue, agent-pr-workflow e AGENT-OPS.

* fix(ops): pnpm push roda gate no script, sem depender do Husky

Cloud environment.json chama prepare explicitamente após install.

* test(int): isolate advisor portfolio search from shared cairu slug

Parallel int specs were stomping municipality.advisors on the fixed
cairu row; allocate per-test municipalities instead.
2026-07-30 21:12:52 -03:00

175 lines
8.1 KiB
JSON

{
"name": "teqo",
"version": "1.0.0",
"description": "White-label civic engagement platform for Brazilian politicians, launched with deputado Jorge Solla.",
"keywords": [
"politics",
"brazil",
"civic-engagement",
"white-label",
"payload-cms"
],
"homepage": "https://github.com/fsolla/teqo",
"repository": {
"type": "git",
"url": "https://github.com/fsolla/teqo.git"
},
"bugs": {
"url": "https://github.com/fsolla/teqo/issues"
},
"author": "Francisco Solla",
"license": "MIT",
"type": "module",
"scripts": {
"build": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload migrate && cross-env NODE_OPTIONS=\"--no-deprecation --max-old-space-size=8000\" next build",
"db:start": "docker compose up -d postgres",
"db:stop": "docker compose down",
"db:doctor": "node scripts/db-doctor.mjs",
"db:pull": "node scripts/db-pull.mjs",
"db:seed:posts": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/seed-posts.mjs",
"db:seed:tse": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/seed-tse-results.mjs",
"db:seed:consent": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/seed-consent.mjs",
"db:seed:projecao": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/import-projecao.mjs",
"db:seed:minimal": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/seed-minimal.mjs",
"db:refresh:stage": "node scripts/refresh-stage.mjs",
"agent:claim": "node scripts/agent-claim.mjs",
"agent:register": "node scripts/agent-register.mjs",
"agent:prioritize": "node scripts/agent-prioritize.mjs",
"agent:file-miss": "node scripts/agent-file-miss.mjs",
"agent:promote": "node scripts/agent-promote.mjs",
"agent:pool": "node scripts/agent-pool.mjs",
"configure:branch-protection": "node scripts/configure-branch-protection.mjs",
"build:demographics": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm\" node scripts/build-bahia-demographics.mjs",
"build:election-aggregates": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm --import=./scripts/seed-loader.mjs\" node scripts/build-election-aggregates.mjs",
"build:geometries": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm\" node scripts/build-bahia-geometries.mjs",
"build:municipality-zone-geometries": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm\" node scripts/build-municipality-zone-geometries.mjs",
"build:tse-city-codes": "cross-env NODE_OPTIONS=\"--no-deprecation --import=tsx/esm\" node scripts/build-bahia-tse-city-codes.mjs",
"dev": "node scripts/guard-dev-db.mjs && cross-env NODE_OPTIONS=--no-deprecation next dev",
"devsafe": "rm -rf .next && node scripts/guard-dev-db.mjs && cross-env NODE_OPTIONS=--no-deprecation next dev",
"format": "prettier --write .",
"format:check": "prettier --check .",
"gate:fast": "pnpm lint && pnpm typecheck && pnpm test:unit",
"gate:ci": "node scripts/gate-ci.mjs",
"gate:push": "pnpm gate:ci",
"push": "node scripts/git-push.mjs",
"check:cycles": "madge --circular --extensions ts,tsx --ts-config tsconfig.json src",
"generate:importmap": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload generate:importmap",
"generate:types": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload generate:types",
"migrate": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload migrate",
"migrate:create": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload migrate:create",
"migrate:status": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload migrate:status",
"knip": "knip",
"knip:production": "knip --production",
"lint": "cross-env NODE_OPTIONS=--no-deprecation eslint --cache --cache-location .next/cache/eslint/ --max-warnings=0",
"lint:fix": "cross-env NODE_OPTIONS=--no-deprecation eslint --fix",
"payload": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server\" payload",
"start": "cross-env NODE_OPTIONS=--no-deprecation next start",
"test": "pnpm run test:unit && pnpm run test:int",
"test:all": "pnpm run test && pnpm run test:e2e",
"test:e2e": "cross-env NODE_OPTIONS=\"--no-deprecation --conditions=react-server --import=tsx/esm\" playwright test --config=playwright.config.ts",
"test:e2e:affected": "node scripts/run-e2e-affected.mjs",
"test:int": "cross-env NODE_OPTIONS=--no-deprecation vitest run --config ./vitest.config.mts",
"test:unit": "cross-env NODE_OPTIONS=--no-deprecation DATABASE_URL=postgresql://invalid:invalid@127.0.0.1:1/unit_tests_must_not_connect vitest run --config ./vitest.unit.config.mts",
"typecheck": "tsc --noEmit",
"typecheck:tsc6": "tsc6 --noEmit",
"prepare": "husky",
"agent:status": "node scripts/agent-status.mjs"
},
"dependencies": {
"@base-ui/react": "^1.6.0",
"@hookform/resolvers": "^5.2.2",
"@payloadcms/db-postgres": "3.82.0",
"@payloadcms/email-resend": "3.82.0",
"@payloadcms/live-preview-react": "3.82.0",
"@payloadcms/next": "3.82.0",
"@payloadcms/plugin-import-export": "3.82.0",
"@payloadcms/richtext-lexical": "3.82.0",
"@payloadcms/storage-vercel-blob": "3.82.0",
"@payloadcms/ui": "3.82.0",
"@simplewebauthn/browser": "^13.3.0",
"@simplewebauthn/server": "^13.3.2",
"@vercel/analytics": "^1.6.1",
"@vercel/speed-insights": "^1.3.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"cross-env": "^7.0.3",
"dotenv": "16.4.7",
"graphql": "^16.8.1",
"leaflet": "^1.9.4",
"lucide-react": "^0.570.0",
"next": "15.4.11",
"next-themes": "^0.4.6",
"payload": "3.82.0",
"radix-ui": "^1.4.3",
"react": "^19.2.4",
"react-dom": "^19.2.4",
"react-hook-form": "^7.71.1",
"server-only": "^0.0.1",
"shadcn": "^4.0.3",
"sharp": "0.34.2",
"sonner": "^2.0.7",
"tailwind-merge": "^3.4.1",
"tailwindcss-animate": "^1.0.7",
"topojson-client": "^3.1.0",
"tw-animate-css": "^1.4.0",
"zod": "^4.3.6"
},
"devDependencies": {
"@eslint/eslintrc": "^3.3.6",
"@playwright/test": "1.58.2",
"@tailwindcss/postcss": "^4.1.18",
"@testing-library/react": "16.3.0",
"@types/geojson": "^7946.0.16",
"@types/leaflet": "^1.9.21",
"@types/node": "22.19.9",
"@types/pg": "^8.10.2",
"@types/react": "^19.2.14",
"@types/react-dom": "^19.2.3",
"@types/shpjs": "^3.4.7",
"@types/topojson-client": "^3.1.5",
"@types/topojson-server": "^3.0.4",
"@types/topojson-simplify": "^3.0.3",
"@types/topojson-specification": "^1.0.5",
"@types/yauzl": "^3.4.0",
"@vercel/blob": "2.3.1",
"@vitejs/plugin-react": "4.5.2",
"csv-parse": "^7.0.1",
"eslint": "^9.39.2",
"eslint-config-next": "15.4.11",
"eslint-config-prettier": "^10.1.8",
"eslint-plugin-check-file": "^3.3.1",
"husky": "^9.1.7",
"jsdom": "28.0.0",
"knip": "^6.27.0",
"madge": "^8.0.0",
"pg": "^8.22.0",
"postcss": "^8.5.6",
"prettier": "^3.4.2",
"prettier-plugin-organize-imports": "^4.3.0",
"schema-dts": "^2.0.0",
"shpjs": "^6.2.0",
"tailwindcss": "^4.1.18",
"topojson-server": "^3.0.1",
"topojson-simplify": "^3.0.3",
"tsx": "4.21.0",
"typescript": "npm:@typescript/typescript6@6.0.2",
"typescript-7": "npm:typescript@7.0.2",
"vite-tsconfig-paths": "6.0.5",
"vitest": "4.0.18",
"xlsx": "^0.18.5",
"yauzl": "^3.4.0"
},
"engines": {
"node": "^18.20.2 || >=20.9.0",
"pnpm": "^9 || ^10"
},
"pnpm": {
"onlyBuiltDependencies": [
"sharp",
"esbuild",
"unrs-resolver"
]
},
"packageManager": "pnpm@10.11.0+sha512.6540583f41cc5f628eb3d9773ecee802f4f9ef9923cc45b69890fb47991d4b092964694ec3a4f738a420c918a333062c8b925d312f42e4f0c263eb603551f977"
}