Saltar para o conteúdo principal

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
Não substitui:
  • UI custom ou design system
  • algoritmos complexos ou otimizações manuais
  • integrações ad hoc sem bloco dedicado
  • SQL imperativo escrito à mão (bloco custom reservado para o futuro; fora do v0.1)

Pipeline

O texto .aip é a fonte; a AST é representação interna. Toolchain (v0.1): parser, validador e transpiladores ainda não publicados. Este documento é a fonte normativa; gramática em spec/v0.1/grammar.ebnf.

Bloco app obrigatório

Toda spec v0.1 deve começar com exatamente um bloco app (recomendado @0.1):
Inclua auth ao usar authenticated, role ou permission em policy. Exemplo mínimo: examples/minimal.aip.

Gramática (EBNF resumida)

Ordem de modificadores: required | optionaluniquedefault(...). 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 spec global permanece rascunho até existir toolchain de referência.

Campos implícitos

Toda entity 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 de when):
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 de workflow / 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

Requer Lead.seller como belongs_to User.

Acesso padrão

Entidades sem policy: 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 endpoint para rate limit por rota
Preview em Segurança até entrarem na gramática.

Validação

O validador deve rejeitar:
  • ausência ou duplicata do bloco app
  • referência a entity / event / job inexistente
  • policy sem auth no app quando usar authenticated ou role
  • owner(field) com campo inexistente
  • workflow sem when
  • 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.

Spec de referência

Exemplo CRM: examples/crm-reference.aip Capítulos de domínio documentam extensões em relação a esse arquivo.