Especificação
Documento normativo do AI Parlance (v0.1). Define gramática, semântica, builtins, políticas e níveis de estabilidade dos blocos. Visão geral: Introdução. Sintaxe: Sintaxe.Glossário
Escopo e limites
AI Parlance cobre hoje:- modelagem de dados e API (CRUD)
- autorização declarativa
- workflows e eventos de domínio limitados
- UI custom ou design system
- algoritmos complexos ou otimizações manuais
- integrações ad hoc sem bloco dedicado
- SQL imperativo escrito à mão (bloco
customreservado para o futuro; fora do v0.1)
Pipeline
.aip é a fonte; a AST é representação interna.
Ferramentas de referência (v0.1): parser, validador v0.1 completo (Core + Infra + Security + Behavior) e emitters em prévia na matriz (aip parse / aip validate / aip emit …) estão no monorepo. Este documento é a fonte normativa em prosa; gramática em spec/v0.1/grammar.ebnf e marcos em ROADMAP.md.
Bloco app obrigatório
Toda spec v0.1 deve começar com exatamente um bloco app (recomendado @0.1):
auth ao usar authenticated, role ou permission em policy. Exemplo mínimo: examples/minimal.aip.
Gramática (EBNF resumida)
Gramática normativa completa: spec/v0.1/grammar.ebnf. Resumo:app_block é obrigatório e deve aparecer primeiro. Ordem de modificadores: required | optional → unique → default(...).
Comentários de linha: // até o fim da linha.
Níveis de estabilidade
Blocos de topo
enum { } / relation { } e has_one / has_many / many_to_many estão no roadmap, não no v0.1.
Blocos beta podem mudar entre releases v0.x menores. O Core é estável dentro do v0.1; a linguagem permanece rascunho (ferramentas de referência em prévia no monorepo — ainda não é v1.0 congelada). Ver ROADMAP.
Campos implícitos
Todaentity recebe automaticamente (salvo id: uuid explícito):
O modificador
timestamps em entity é documentação opcional; não desativa esses campos.
soft_delete em entity adiciona deleted_at: datetime optional.
Builtins
Builtins não listados são inválidos.
Ciclo de vida
Eventos de sistema (gatilhos dewhen):
when Lead.created em workflow equivale a on created em lifecycle. Prefira lifecycle com vários ganchos na mesma entidade.
Statements de workflow (v0.1)
Dentro deworkflow / ganchos de lifecycle: var, if / reject, assign, create, emit, notify, dispatch (opcional after + duração). Durações: 15m, 1h, 1d — ver Workflows.
Referências forward são válidas: emit e create podem usar event / entity declarados depois no arquivo.
Políticas
Lead.seller como belongs_to User.
Acesso padrão
Entidades sempolicy: transpiladores devem usar authenticated no CRUD quando app tem auth, ou public sem auth. policy explícita prevalece.
Propostos (fora da gramática v0.1)
- Declaração top-level
permission nome - Blocos
endpointpara rate limit por rota
Validação
O validador deve rejeitar:- ausência ou duplicata do bloco
app - referência a
entity/event/jobinexistente policysemauthnoappquando usarauthenticatedouroleowner(field)com campo inexistenteworkflowsemwhen- modificadores duplicados ou fora de ordem (warning vs error por regra)
- builtins não registrados
Matriz de transpiladores
Custo de inferência LLM incide na edição do
.aip, não na transpilação offline.
Specs de referência
Capítulos de domínio (Banco, Segurança, Workflows) documentam extensões em relação a este arquivo.
