Skip to main content

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. 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):
Inclua 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:
Exatamente um app_block é obrigatório e deve aparecer primeiro. 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 linguagem permanece rascunho (ferramentas de referência em prévia no monorepo — ainda não é v1.0 congelada). Ver ROADMAP.

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.

Specs de referência

Capítulos de domínio (Banco, Segurança, Workflows) documentam extensões em relação a este arquivo.