@m3r/sdk 0.5.0

ctx.capabilities

SDK_CATALOG 0.5.0 congelado. A mesma fonte do compilador, do validate e desta documentação.

ctx.capabilities é SDK_CATALOG. Não é um fetch. Não muda em runtime.

src/index.ts
ctx.logger.info(ctx.capabilities.version);
ctx.logger.info(ctx.capabilities.modules.sales.status); // "available"
ctx.logger.info(ctx.capabilities.modules.purchase.status); // "planned"

O que tem dentro

ChaveUso
version"0.5.0"
channelsm3r, events, entryPoints, ext + status
modulessales available; purchase/stock/financial/fiscal planned
entryPoints.codes / refsSdkEntryPoint
events.names / refsSdkEvent
scopes.values / refsSdkScope
ext.tables / screens / nav / reportstipos e tetos
forbiddenSQL, React, TypeORM, iframe, Python próprio, coluna json

GET /developer/sdk/catalog (JWT developer) devolve o mesmo catálogo mais o que o Core tem wired.

Validação

Não “consulte o catálogo e invente o código”. Importe o const:

import { SdkEntryPoint, SdkEvent, SdkScope, SDK_CATALOG } from "@m3r/sdk";

SdkEntryPoint.SalesOrderBeforeSave;
SDK_CATALOG.ext.tables.maxTables; // 20

String fora do conjunto: TypeScript (se tipou) + SdkValidationError + m3r validate.

Pode / não pode

Pode

  • Branch defensivo: if (ctx.capabilities.modules.sales.status === "available").
  • Ler limites antes de tables.ensure.

Não pode

  • Mutar ctx.capabilities (frozen).
  • Copiar a lista para um JSON seu e “atualizar depois” — a fonte é o pacote.

Detalhe dos enums e IPs: Catálogo da SDK.