teqo-backup/knip.json
Francisco Ignácio Fontoura Solla f9cd1df7b2 feat: AI chat 'Sollinha' — campaign data assistant (v1 read-only)
- Streaming AI endpoint at /campanha/api/ai-chat with DeepSeek V4 Flash
- 8 tools: calculate, getMunicipalityVotes, getTopDeputies, getDobradinhas,
  getMunicipalityOverview, getLeaderships, getOrganizations, searchEntities
- In-memory rate limiter (50 msgs / 15 min per user)
- Desktop: resizable right sidebar via react-resizable-panels
- Mobile: full-screen Drawer opened by FAB (2/3 size of quick-actions FAB)
- Markdown rendering with react-markdown + remark-gfm (tables, bold, lists)
- Session-bound context (clean slate each open)
- Auth via existing campaign-token cookie, tools respect user RBAC
- Architecture doc: docs/plans/ai-chat-sollinha.md
- E2E tests: campaignAiChat.e2e.spec.ts (mocked endpoint)
2026-08-04 06:17:31 -03:00

29 lines
798 B
JSON

{
"$schema": "https://unpkg.com/knip@5/schema.json",
"entry": [
"src/migrations/index.ts",
"src/migrations/*.ts",
"src/app/(payload)/admin/importMap.js",
"scripts/*.mjs",
"eslint-local-rules.mjs",
"tests/**/*.spec.ts",
"tests/helpers/serverOnly.ts"
],
"project": ["src/**/*.{ts,tsx,js}", "scripts/**/*.mjs", "tests/**/*.ts"],
"ignore": [
"src/components/ui/bubble.tsx",
"src/components/ui/marker.tsx",
"src/components/ui/message.tsx"
],
"paths": {
"server-only": ["tests/helpers/serverOnly.ts"]
},
"ignoreBinaries": [],
"ignoreDependencies": ["tailwindcss-animate", "tw-animate-css", "shadcn", "eslint-config-next"],
"rules": {
"exports": "error",
"types": "error",
"enumMembers": "error",
"duplicates": "off"
}
}