Visão geral
Como o AI Core é construído - repositórios, o build, as regras que todo script segue.
O AI Core é TypeScript de ponta a ponta. Cada recurso segue a estrutura do overextended/fivem-ts; Lua é usado só para a ponte ESX / QB / Qbox dentro do ai-core e para o lado Lua do ai-lib.
Repositórios
| Repositório | O quê |
|---|---|
| Pasta do servidor | server.cfg e os outros arquivos cfg, recipe/ (txAdmin), tools/, template/, as regras e a documentação para ferramentas de IA. Também é a raiz do workspace do bun. |
ai-core e cada ai-* | Um repositório por script. O build (dist/, fxmanifest.lua) é commitado, então os servidores rodam sem ferramentas de build. |
packages | Os pacotes npm: @aicore-fivem/lib (helpers), @aicore-fivem/mysql (motor de banco de dados), @aicore-fivem/shared (contratos entre recursos), @aicore-fivem/build (etapas de build). |
Build
bun install # na pasta do servidor: liga os pacotes e cada recurso
bun run build # cada recurso (cerca de 40 s), ou: bun run build ai-core ai-fuel
bun run typecheck
bun run lintDentro de um recurso, os mesmos scripts rodam só para aquele recurso; bun run dev fica observando. O fxmanifest.lua é gerado a partir do package.json: nunca o edite à mão. Depois de um build, reinicie o recurso (bun tools/rcon.ts "ensure ai-fuel") ou tudo depois do ai-core (bun tools/restart.ts).
Regras que todo script segue
- O servidor decide. Cada pedido do cliente passa pelo portão da lib (
onClientEvent/onClientCallback): verificação de jogador real, limite de taxa, guards (admin, tem personagem, perto de um ponto), um parser de argumentos. Dinheiro, itens e permissões nunca mudam no cliente. - Snapshot e delta. Dados ao vivo vão para os clientes como um snapshot, depois só as mudanças, só para quem precisa delas. Sem polling, sem sinais de "mudou, busque de novo".
- A lib primeiro. Pontos de interação, blips, zonas, keybinds, comandos, menus, progresso, veículos, state bags e trabalho periódico vêm do
@aicore-fivem/lib; uma segunda cópia escrita à mão é um defeito. - Tudo no painel. As configurações que o dono do servidor ajusta ficam no painel de administração (
schema.ts+data/*.json), nunca em um arquivo de config. - Através do AI Core. Itens, chaves de veículos, alertas, celular, clima, prisão, roupas e mortes passam pelas camadas do AI Core, nunca pelos exports de um script específico.
- Escala primeiro. As coleções são planejadas para milhões de registros e medidas com benchmarks.
As regras completas estão na pasta do servidor: CLAUDE.md e .claude/rules/.