@m3r/sdk 0.5.0
SDK de extensões
A extensão declara comportamento. O Core persiste. O ERP pinta com os componentes padrão.
Uma extensão M3R é um processo TypeScript isolado. Ela não desenha React no ERP, não executa SQL e não importa o backend.
O contrato é um único objeto: ctx. Quatro canais, sem string solta para o que a plataforma já fechou.
| Canal | Papel |
|---|---|
ctx.m3r | A extensão chama o Core (hoje: vendas). |
ctx.events | O Core avisa depois do commit. Não aborta. |
ctx.entryPoints | O Core consulta a extensão no meio da tela ou do save. Pode negar. |
ctx.ext | Tabela, tela, menu e relatório declarativos. O ERP renderiza. |
ctx.capabilities é o mesmo catálogo que o compilador, o m3r validate e esta documentação usam. Se o conjunto é fechado — módulo, IP, evento, scope, tipo de coluna, menuKey — ele é const + tipo. Typo não passa.



O index só orquestra. Tabela, tela, nav, IP e evento ficam na pasta do domínio. Padrões.
Marketplace (VS Code / Cursor) ou .vsix no site.
m3r.json, defineExtension, validate, build e run.
Pastas por domínio, tabelas/telas e como o index inicia.
Ciclo de vidaValidate, build, deploy assinado, run e o que persiste no stop.
Gestão no ERPConfigurações → Extensões: ativas, inativas e logs.
Sample 0.6.1A árvore real: vendas/tabelas, telas, IPs. Index só orquestra.
O objeto ctxSubmenu: m3r, events, entryPoints, ext, logger.
ctx.m3rPedidos e ciclo de vendas.
ctx.extTabela, tela, menu e relatório.
ctx.entryPointsNegar save, patch e UI.
Catálogo de IPsWired vs catalogado, telas e serviços.
CatálogoConst enums, módulos, IPs, eventos, scopes e o que é proibido.
