@fayz-ai/core 0.16.0 → 0.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{chunk-ZIB6Y7TE.js → chunk-2VY5IJW7.js} +11 -4
- package/dist/chunk-2VY5IJW7.js.map +1 -0
- package/dist/{chunk-UMIZDILP.js → chunk-AOIYRUTF.js} +16 -3
- package/dist/chunk-AOIYRUTF.js.map +1 -0
- package/dist/i18n/index.js +1 -1
- package/dist/i18n/shell-translations.en.d.ts.map +1 -1
- package/dist/i18n/shell-translations.pt-br.d.ts.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/plugin/index.js +1 -1
- package/dist/plugin/runtime.d.ts.map +1 -1
- package/dist/{shell-translations.pt-br-HD4F3QKU.js → shell-translations.pt-br-ZSSVWG6H.js} +10 -2
- package/dist/shell-translations.pt-br-ZSSVWG6H.js.map +1 -0
- package/dist/types/onboarding.d.ts +206 -0
- package/dist/types/onboarding.d.ts.map +1 -0
- package/dist/types/org.d.ts +6 -0
- package/dist/types/org.d.ts.map +1 -1
- package/dist/types/plugins.d.ts +11 -0
- package/dist/types/plugins.d.ts.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-UMIZDILP.js.map +0 -1
- package/dist/chunk-ZIB6Y7TE.js.map +0 -1
- package/dist/shell-translations.pt-br-HD4F3QKU.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/entity/events.ts","../src/registry/block-schema.ts","../src/registry/handles.ts","../src/registry/loaders.ts","../src/registry/block-constraints.ts","../src/registry/schema-check.ts","../src/registry/extension-points.ts","../src/registry/index.ts","../src/registry/block-catalog.ts","../src/plugin/runtime.ts"],"names":["formatValidSet"],"mappings":"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","file":"chunk-AOIYRUTF.js","sourcesContent":["import type { ResolvedDomainEvent } from '../types/plugins'\nimport type { EventField } from '../events/types'\nimport type { RegisteredEntity } from './registry'\n\n// ---------------------------------------------------------------------------\n// Os FATOS dos cadastros.\n//\n// Um cliente novo, um fornecedor editado, um produto excluído: são os fatos\n// mais frequentes do sistema e eram os únicos invisíveis. Módulo declara os\n// seus no manifesto; cadastro não tem manifesto — o que ele tem é o EntityDef\n// que o app registrou, e é dele que estes eventos saem.\n//\n// Derivados, e não escritos à mão, por dois motivos: um app com trinta\n// cadastros teria noventa declarações para manter em dia, e a que alguém\n// esquecesse viraria um buraco silencioso na auditoria exatamente no cadastro\n// menos lembrado.\n//\n// O payload declarado é curto de propósito — id, nome e qual cadastro. A linha\n// inteira traria CPF, telefone e endereço para dentro de todo webhook por\n// padrão, e \"manda tudo\" não é uma decisão que se toma por quem instalou uma\n// integração. Quem precisa do resto busca pelo id.\n// ---------------------------------------------------------------------------\n\nexport type EntityEventAction = 'created' | 'updated' | 'deleted' | 'imported'\n\nfunction fieldsFor(entity: RegisteredEntity): EventField[] {\n return [\n { name: 'record_name', label: entity.label, type: 'string', example: `${entity.label} Exemplo` },\n { name: 'record_id', label: 'ID', type: 'string', example: '8f14e45f-…' },\n { name: 'entity_label', label: 'Cadastro', type: 'string', example: entity.label },\n { name: 'actor_name', label: 'Quem fez', type: 'string', example: 'João Pereira' },\n { name: 'business_name', label: 'Seu negócio', type: 'string', example: 'Seu Negócio' },\n ]\n}\n\n/** `registry.person:client.created` — a chave que webhook, auditoria e\n * automações usam para falar do mesmo fato. */\nexport function entityEventKey(entityKey: string, action: EntityEventAction): string {\n return `registry.${entityKey}.${action}`\n}\n\n// Importação fala do PLURAL — \"Cliente importados\" denuncia um rótulo montado\n// por concatenação, e o usuário lê isso como descuido do produto inteiro.\nconst ACTION_LABEL: Record<EntityEventAction, (label: string, plural: string) => string> = {\n created: (l) => `${l} cadastrado`,\n updated: (l) => `${l} atualizado`,\n deleted: (l) => `${l} excluído`,\n imported: (_l, plural) => `${plural} importados`,\n}\n\nconst ACTION_TRIGGER: Record<EntityEventAction, (label: string, plural: string) => string> = {\n created: (l) => `Quando um registro de ${l.toLowerCase()} é criado`,\n updated: (l) => `Quando um registro de ${l.toLowerCase()} é alterado`,\n deleted: (l) => `Quando um registro de ${l.toLowerCase()} é excluído`,\n imported: (_l, plural) => `Quando uma planilha de ${plural.toLowerCase()} é importada`,\n}\n\nconst ACTION_ICON: Record<EntityEventAction, string> = {\n created: 'Plus', updated: 'Pencil', deleted: 'Trash2', imported: 'Upload',\n}\n\n/**\n * Os fatos de um cadastro. Todos auditados: \"quem cadastrou este fornecedor?\"\n * e \"quem apagou este registro?\" são as perguntas que a trilha existe para\n * responder, e são justamente as que ninguém pensa em declarar antes de\n * precisar.\n */\nexport function buildEntityDomainEvents(entities: RegisteredEntity[]): ResolvedDomainEvent[] {\n const out: ResolvedDomainEvent[] = []\n for (const entity of entities) {\n const fields = fieldsFor(entity)\n const actions: EntityEventAction[] = ['created', 'updated', 'deleted', 'imported']\n for (const action of actions) {\n const plural = entity.labelPlural || entity.label\n out.push({\n name: entityEventKey(entity.entityKey, action),\n title: ACTION_LABEL[action](entity.label, plural),\n description: `${plural} · ${ACTION_LABEL[action](entity.label, plural).toLowerCase()}`,\n trigger: ACTION_TRIGGER[action](entity.label, plural),\n icon: entity.icon ?? ACTION_ICON[action],\n fields: action === 'imported'\n // Importação é UM ato — a planilha inteira. O que interessa é quantos\n // entraram, não um evento por linha.\n ? [{ name: 'record_count', label: 'Quantidade', type: 'string', example: '128' },\n ...fields.filter((f) => f.name !== 'record_name' && f.name !== 'record_id')]\n : fields,\n audit: true,\n // Cadastro não pertence a plugin nenhum: o dono é o app. Agrupar sob\n // \"Cadastros\" mantém a lista legível quando são trinta entidades.\n pluginId: entity.pluginId ?? 'registry',\n pluginName: entity.pluginName ?? 'Cadastros',\n pluginIcon: entity.pluginIcon ?? entity.icon,\n })\n }\n }\n return out\n}\n","import type { JsonSchema } from './registry-class'\n\n// ---------------------------------------------------------------------------\n// Block authoring schema — what a block declares about its own props.\n//\n// `RegistryMeta.propsSchema` (JSON Schema) has always been the machine contract:\n// it is what a visual editor renders a form from and what constrains AI\n// generation. Nothing populated it, because hand-writing JSON Schema next to a\n// React component is tedious enough that nobody does it.\n//\n// So this is the authoring layer: a flat, readable `settings` list that compiles\n// DOWN to `propsSchema`. Authors write `settings`; tools keep reading\n// `propsSchema`. One source of truth, two ergonomics.\n//\n// Precedent for the shape: Shopify's `{% schema %}` (settings + presets, colocated\n// with the section) and VTEX IO's `Component.schema` (JSON Schema hung off the\n// React component). Both prove the model works when the schema lives WITH the\n// block rather than in a central manifest that drifts.\n// ---------------------------------------------------------------------------\n\n/**\n * The control a setting is edited with — and, by implication, the shape of the\n * prop. Semantic types (`product`, `category`, `collection`) serialize as\n * strings but must not degrade to a free-text input: the editor owes the author\n * a picker, and an AI generating a block needs to know the value is an id it has\n * to resolve rather than copy invent. `entity` names a DECLARED entity\n * (defineEntity key) — validators check it against the declared set (I2).\n */\nexport type BlockSettingType =\n | 'text'\n | 'richtext'\n | 'number'\n | 'boolean'\n | 'color'\n | 'image'\n | 'url'\n | 'select'\n | 'product'\n | 'category'\n | 'collection'\n | 'entity'\n | 'list'\n\n/**\n * The setting-type vocabulary as a runtime value, for catalogs (`describeStore`)\n * and validators. The `satisfies` + exhaustiveness pair keeps it impossible to\n * add a type to the union without it appearing here.\n */\nexport const BLOCK_SETTING_TYPES = [\n 'text',\n 'richtext',\n 'number',\n 'boolean',\n 'color',\n 'image',\n 'url',\n 'select',\n 'product',\n 'category',\n 'collection',\n 'entity',\n 'list',\n] as const satisfies readonly BlockSettingType[]\ntype MissingSettingType = Exclude<BlockSettingType, (typeof BLOCK_SETTING_TYPES)[number]>\nconst _settingTypesExhaustive: [MissingSettingType] extends [never] ? true : never = true\nvoid _settingTypesExhaustive\n\nexport interface BlockSettingOption {\n value: string\n label: string\n}\n\nexport interface BlockSetting {\n /** Prop name this setting writes to. */\n id: string\n type: BlockSettingType\n label: string\n /** Shown under the field in the editor; also the best hint an AI gets. */\n help?: string\n default?: unknown\n required?: boolean\n /** `select` only. */\n options?: readonly BlockSettingOption[]\n /**\n * `list` only — the shape of each item. This is what makes a block accept\n * repeatable children (slides, FAQ rows, testimonials) without every such\n * block inventing its own array format.\n */\n of?: readonly BlockSetting[]\n /** `number` only. */\n min?: number\n max?: number\n}\n\n/**\n * A named starting point for the block.\n *\n * The reason this exists: adding a section that lands as an empty skeleton reads\n * as work to do, while one that lands already populated reads as progress. The\n * preset is what the editor (and the AI) inserts, not the bare component.\n */\nexport interface BlockPreset {\n name: string\n props?: Record<string, unknown>\n}\n\n/** Contract stability. Absent means `stable`. */\nexport type BlockStability = 'stable' | 'experimental'\n\nconst STRING_TYPES: Record<string, true> = {\n text: true,\n richtext: true,\n color: true,\n image: true,\n url: true,\n select: true,\n product: true,\n category: true,\n collection: true,\n entity: true,\n}\n\n/**\n * JSON Schema `format` for the setting types that map onto a standard one.\n * Everything else keeps its semantics in `x-fayz-control` instead of inventing\n * a format keyword a generic JSON Schema validator would ignore anyway.\n */\nconst FORMAT_BY_TYPE: Partial<Record<BlockSettingType, string>> = {\n url: 'uri',\n image: 'uri',\n color: 'color',\n}\n\nfunction settingToJsonSchema(setting: BlockSetting): JsonSchema {\n const node: JsonSchema = {\n title: setting.label,\n // The control survives the compile: a `product` setting is a string in JSON\n // Schema terms, but an editor rendering it as a text input is a bug.\n 'x-fayz-control': setting.type,\n }\n\n if (setting.help) node.description = setting.help\n if (setting.default !== undefined) node.default = setting.default\n\n const format = FORMAT_BY_TYPE[setting.type]\n if (format) node.format = format\n\n if (setting.type === 'number') {\n node.type = 'number'\n if (setting.min !== undefined) node.minimum = setting.min\n if (setting.max !== undefined) node.maximum = setting.max\n return node\n }\n\n if (setting.type === 'boolean') {\n node.type = 'boolean'\n return node\n }\n\n if (setting.type === 'list') {\n node.type = 'array'\n node.items = setting.of?.length\n ? settingsToJsonSchema(setting.of)\n : // A list with no declared item shape accepts anything rather than\n // nothing — an under-specified block should still render.\n {}\n return node\n }\n\n if (STRING_TYPES[setting.type]) {\n node.type = 'string'\n if (setting.type === 'select' && setting.options?.length) {\n node.enum = setting.options.map((option) => option.value)\n node['x-fayz-enum-labels'] = setting.options.map((option) => option.label)\n }\n return node\n }\n\n return node\n}\n\n/**\n * Compile authoring `settings` into the `propsSchema` JSON Schema that the\n * editor, `fayz doctor` and AI generation already expect.\n *\n * Returns a schema with no properties for an empty list rather than `undefined`,\n * so \"this block was authored and declares no props\" stays distinguishable from\n * \"this block was never authored\" (which is `propsSchema` absent entirely).\n */\nexport function settingsToJsonSchema(settings: readonly BlockSetting[] = []): JsonSchema {\n const properties: Record<string, JsonSchema> = {}\n const required: string[] = []\n\n for (const setting of settings) {\n properties[setting.id] = settingToJsonSchema(setting)\n if (setting.required) required.push(setting.id)\n }\n\n const schema: JsonSchema = { type: 'object', properties }\n if (required.length > 0) schema.required = required\n return schema\n}\n\n/**\n * Default props implied by a block's settings — every setting that declares\n * one. Used to seed a freshly inserted block when no preset is chosen.\n */\nexport function defaultPropsFromSettings(\n settings: readonly BlockSetting[] = [],\n): Record<string, unknown> {\n const props: Record<string, unknown> = {}\n for (const setting of settings) {\n if (setting.default !== undefined) props[setting.id] = setting.default\n }\n return props\n}\n","import { Registry } from './registry-class'\nimport type { RegistryMeta } from './registry-class'\n\n// Named code handles — how a pure-data Store Document references code.\n//\n// Code cannot live in a serialized document; a NAME can, resolved here at\n// hydrate time. `registerHandle('artorious.customCard', Component)`, and the\n// document stores the name where the config held the component. This replaces\n// the in-memory Map the scaffold kept, which made a document reconstitutable\n// only within the session that authored it.\n//\n// I2: an unknown handle is a hard error naming the valid set, never a silent\n// drop. I3: names are namespaced ('<app>.<name>') so two generated extensions\n// cannot collide.\n\n/**\n * Namespaced handle name: '<namespace>.<segment>[.<segment>…]'. The namespace\n * is an app/plugin id (lowercase, dashes); later segments allow the casing of\n * the thing they name ('artorious.components.ProductCard').\n */\nconst HANDLE_NAME_RE = /^[a-z0-9][a-z0-9-]*(\\.[A-Za-z0-9_][A-Za-z0-9_-]*)+$/\n\nexport const handleRegistry = new Registry<unknown>('handle')\n\nexport interface RegisterHandleOptions {\n /**\n * Allow re-registering the name with a different value. Off by default:\n * two modules silently fighting over one name is exactly the collision the\n * namespace exists to prevent, so it throws unless the caller states the\n * replacement is deliberate (config re-evaluation, HMR, tests).\n */\n replace?: boolean\n}\n\nfunction formatValidSet(): string {\n const ids = handleRegistry.ids().sort()\n return ids.length\n ? `Registered handles: ${ids.join(', ')}`\n : 'No handles are registered — call registerHandle(name, value) before referencing one.'\n}\n\n/**\n * Register named code under a namespaced handle.\n *\n * Re-registering the SAME value under the same name is a no-op (idempotent, so\n * a module evaluated twice does not fail). Re-registering a DIFFERENT value\n * throws unless `replace: true` — see {@link RegisterHandleOptions}.\n */\nexport function registerHandle<T>(\n name: string,\n value: T,\n meta: RegistryMeta = {},\n options: RegisterHandleOptions = {},\n): void {\n if (!HANDLE_NAME_RE.test(name)) {\n throw new Error(\n `Invalid handle name \"${name}\". Handles are namespaced: '<app-or-plugin-id>.<name>' ` +\n `(e.g. 'artorious.customCard'), matching ${String(HANDLE_NAME_RE)}.`,\n )\n }\n if (value === undefined) {\n throw new Error(`registerHandle(\"${name}\"): the value is undefined — a handle must name something.`)\n }\n const existing = handleRegistry.getEntry(name)\n if (existing) {\n if (Object.is(existing.value, value)) return\n if (!options.replace) {\n throw new Error(\n `Handle \"${name}\" is already registered with a different value. ` +\n `Pass { replace: true } if the replacement is deliberate, or pick another name. ${formatValidSet()}`,\n )\n }\n }\n handleRegistry.register(name, value, meta)\n}\n\n/** The value behind a handle, or undefined. Prefer {@link resolveHandle} in\n * hydration paths — an unknown handle there must be a hard error (I2). */\nexport function getHandle<T = unknown>(name: string): T | undefined {\n return handleRegistry.get(name) as T | undefined\n}\n\nexport function hasHandle(name: string): boolean {\n return handleRegistry.has(name)\n}\n\n/**\n * Resolve a handle or throw naming the valid set — the I2 contract. This is\n * the only lookup a document hydrator may use: an unknown handle silently\n * dropped would render a store that LOOKS restored and is missing code.\n */\nexport function resolveHandle<T = unknown>(name: string): T {\n if (!handleRegistry.has(name)) {\n throw new Error(`Unknown handle \"${name}\". ${formatValidSet()}`)\n }\n return handleRegistry.get(name) as T\n}\n\n/** All registered handle names, sorted. */\nexport function listHandles(): string[] {\n return handleRegistry.ids().sort()\n}\n\n/**\n * Reverse lookup: the name a value was registered under, if any. Used by\n * `exportStore` to serialize a code-valued config field as its handle name —\n * which only works because handles hold the value by reference, not a copy.\n */\nexport function handleNameFor(value: unknown): string | undefined {\n for (const entry of handleRegistry.list()) {\n if (Object.is(entry.value, value)) return entry.id\n }\n return undefined\n}\n\n/** Test helper — a suite that registers handles must not leak into the next. */\nexport function clearHandles(): void {\n handleRegistry.clear()\n}\n","import { Registry } from './registry-class'\nimport type { JsonSchema, RegistryMeta, RegistryEntryDescriptor, LoaderParamRef, LoaderPropRef } from './registry-class'\nimport { settingsToJsonSchema } from './block-schema'\nimport type { BlockSetting } from './block-schema'\n\n// ---------------------------------------------------------------------------\n// Loaders — named, schema-declared reads (spine §3 L4, milestone M3).\n//\n// A loader is the only way a block asks for data. It receives `(params, ctx)`\n// where ctx carries the ShopProvider port — a loader NEVER imports Supabase or\n// fetches directly (I11: the storefront never names a backend; every read goes\n// through a loader, every write through an action). Because a read is a\n// registry entry with a params schema, it is enumerable by the agent,\n// checkable by validateStore, resolvable once per page, and — later —\n// resolvable on a server before render, which is the SSR prerequisite the\n// spine calls out.\n//\n// Same meta envelope as blocks (I1): id, title, description, params declared\n// as `settings` and compiled to JSON Schema by the same emission path, output\n// description, stability. Same I2 semantics: an unknown loader id is a hard\n// error naming the valid set, never a silent drop.\n//\n// Leaf-module discipline (see registry-class.ts): this module instantiates a\n// registry at module scope, so it imports only sibling leaves, never ./index.\n// ---------------------------------------------------------------------------\n\n/**\n * What a loader gets to read from. `shop` is the ShopProvider port — typed as\n * `unknown` here because core is backend-agnostic; the storefront layer pins\n * it to its ShopProvider interface. Nothing else is provided on purpose:\n * a loader that needs more than the port and its params is a loader that has\n * smuggled in a dependency the resolver cannot see.\n */\nexport interface LoaderContext<TShop = unknown> {\n shop: TShop\n}\n\n/** A loader implementation: pure function of (params, ctx). */\nexport type LoaderImpl<\n P extends Record<string, unknown> = Record<string, unknown>,\n R = unknown,\n TShop = unknown,\n> = (params: P, ctx: LoaderContext<TShop>) => Promise<R> | R\n\nexport const loaderRegistry = new Registry<LoaderImpl>('loader')\n\n/**\n * Register a loader with its meta envelope. `settings` declare the params and\n * compile to the params JSON Schema exactly as block settings compile to\n * propsSchema — one declaration, no drift (I1).\n */\nexport function defineLoader<P extends Record<string, unknown>, R, TShop = unknown>(\n id: string,\n impl: LoaderImpl<P, R, TShop>,\n meta: Omit<RegistryMeta, 'propsSchema'> = {},\n): void {\n const propsSchema = meta.settings ? settingsToJsonSchema(meta.settings) : undefined\n loaderRegistry.register(\n id,\n impl as LoaderImpl,\n propsSchema ? { ...meta, propsSchema } : { ...meta },\n )\n}\n\nfunction formatValidSet(): string {\n const ids = loaderRegistry.ids().sort()\n return ids.length\n ? `Registered loaders: ${ids.join(', ')}`\n : 'No loaders are registered — call defineLoader(id, impl, meta) before referencing one.'\n}\n\n/**\n * Resolve a loader or throw naming the valid set — the I2 contract. This is\n * the only lookup a resolver may use: a data need whose loader silently\n * resolved to nothing would render a page that LOOKS complete and is missing\n * data.\n */\nexport function resolveLoader<\n P extends Record<string, unknown> = Record<string, unknown>,\n R = unknown,\n TShop = unknown,\n>(id: string): LoaderImpl<P, R, TShop> {\n const impl = loaderRegistry.get(id)\n if (!impl) throw new Error(`Unknown loader \"${id}\". ${formatValidSet()}`)\n return impl as LoaderImpl<P, R, TShop>\n}\n\nexport function hasLoader(id: string): boolean {\n return loaderRegistry.has(id)\n}\n\n/** All registered loader ids, sorted. */\nexport function listLoaders(): string[] {\n return loaderRegistry.ids().sort()\n}\n\n/** Test seam — a suite that registers loaders must not leak into the next. */\nexport function clearLoaders(): void {\n loaderRegistry.clear()\n}\n\n/** The uniform envelope plus the loader-specific fields the agent reads. */\nexport interface LoaderDescriptor extends RegistryEntryDescriptor {\n /** JSON Schema for the loader's params (alias of `schema`, named for intent). */\n paramsSchema?: JsonSchema\n /** The authored param declarations, for editors that render pickers. */\n params: readonly BlockSetting[]\n /** One-line description of what the loader resolves to. */\n output?: string\n}\n\n/** Every loader reduced to its descriptor, sorted by id — what describeStore\n * publishes and the agent generates against. */\nexport function describeLoaders(): LoaderDescriptor[] {\n return loaderRegistry.describe().map((base) => {\n const meta = loaderRegistry.getEntry(base.id)?.meta\n return {\n ...base,\n paramsSchema: base.schema,\n params: meta?.settings ?? [],\n output: meta?.output,\n }\n })\n}\n\n// --- Param bindings -----------------------------------------------------------\n\nexport function isLoaderParamRef(value: unknown): value is LoaderParamRef {\n return (\n typeof value === 'object' && value !== null && !Array.isArray(value) &&\n typeof (value as LoaderParamRef).$param === 'string' &&\n Object.keys(value).length === 1\n )\n}\n\nexport function isLoaderPropRef(value: unknown): value is LoaderPropRef {\n return (\n typeof value === 'object' && value !== null && !Array.isArray(value) &&\n typeof (value as LoaderPropRef).$prop === 'string' &&\n Object.keys(value).length === 1\n )\n}\n\n// --- Dedupe key ---------------------------------------------------------------\n\nfunction canonicalJson(value: unknown): string {\n if (value === null || typeof value !== 'object') return JSON.stringify(value)\n if (Array.isArray(value)) return `[${value.map(canonicalJson).join(',')}]`\n const record = value as Record<string, unknown>\n const parts = Object.keys(record)\n .sort()\n .filter((key) => record[key] !== undefined)\n .map((key) => `${JSON.stringify(key)}:${canonicalJson(record[key])}`)\n return `{${parts.join(',')}}`\n}\n\n/**\n * Canonical identity of one (loader, params) pair — the dedupe unit. Key-order\n * insensitive and `undefined`-dropping, so two blocks declaring the same need\n * in different spellings still resolve it once per page.\n */\nexport function dataNeedKey(loader: string, params: Record<string, unknown> = {}): string {\n return `${loader} ${canonicalJson(params)}`\n}\n","import { blockRegistry } from './index'\nimport type { RegistryMeta } from './registry-class'\nimport { defaultPropsFromSettings } from './block-schema'\n\n// ---------------------------------------------------------------------------\n// Block composition constraints — checking and repair.\n//\n// The vocabulary itself lives on the meta envelope (registry-class.ts):\n// `parent`, `ancestor`, `usesContext`/`providesContext`, `allowMultiple`,\n// `requiredChildren` — WooCommerce's block.json constraint set, which is the\n// part of their block layer that earned I7 (\"a generated tree that is wrong\n// must fail validation; a merely broken one must not reach the shopper\").\n//\n// This module is the shared enforcement: `validateStore` maps the violations\n// to I2-style errors, and the renderer (blocks/index.tsx) reads the same\n// declarations to keep a violating block off the page at runtime. One\n// declaration, two enforcement points, zero drift.\n//\n// Deliberately React-free and BlockNode-free (structural node type) so the\n// registry layer keeps owning composition rules without importing the\n// renderer.\n// ---------------------------------------------------------------------------\n\n/** Structural view of a block tree node — matches `BlockNode` without importing it. */\nexport interface BlockTreeNode {\n type: string\n id?: string\n props?: Record<string, unknown>\n children?: BlockTreeNode[]\n}\n\nexport type BlockConstraintRule = 'constraint-parent' | 'constraint-ancestor' | 'constraint-multiple'\n\nexport interface BlockConstraintViolation {\n /** Path relative to the checked list, e.g. '[2].children[0]'. */\n path: string\n /** The violating block's type. */\n type: string\n rule: BlockConstraintRule\n detail: string\n /** The valid set (I2): the declared parent/ancestor ids, or for\n * constraint-multiple the path of the instance that is allowed to stay. */\n valid?: string[]\n}\n\nfunction metaFor(type: string): RegistryMeta | undefined {\n return blockRegistry.getEntry(type)?.meta\n}\n\n/** Where a violating block IS, phrased for an error message. */\nfunction placement(parentType: string | undefined): string {\n return parentType ? `under \"${parentType}\"` : 'at the tree root'\n}\n\ninterface WalkFrame {\n node: BlockTreeNode\n path: string\n /** Ancestor types, outermost first; the direct parent is the last entry. */\n ancestors: readonly string[]\n}\n\nfunction* walk(nodes: readonly BlockTreeNode[], basePath: string, ancestors: readonly string[]): Generator<WalkFrame> {\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i]!\n const path = `${basePath}[${i}]`\n yield { node, path, ancestors }\n if (node.children?.length) {\n yield* walk(node.children, `${path}.children`, [...ancestors, node.type])\n }\n }\n}\n\n/** One node's parent/ancestor verdicts — shared by the validator and the renderer. */\nexport function checkNodePlacement(\n type: string,\n ancestors: readonly string[],\n): BlockConstraintViolation[] {\n const meta = metaFor(type)\n if (!meta) return [] // unknown block: reported elsewhere (unknown-block)\n const found: BlockConstraintViolation[] = []\n const parentType = ancestors[ancestors.length - 1]\n\n if (meta.parent?.length && (parentType === undefined || !meta.parent.includes(parentType))) {\n found.push({\n path: '',\n type,\n rule: 'constraint-parent',\n detail: `block \"${type}\" may only be a direct child of one of [${meta.parent.join(', ')}]; it is placed ${placement(parentType)}`,\n valid: [...meta.parent],\n })\n }\n\n if (meta.ancestor?.length && !ancestors.some((a) => meta.ancestor!.includes(a))) {\n found.push({\n path: '',\n type,\n rule: 'constraint-ancestor',\n detail: `block \"${type}\" must appear inside one of [${meta.ancestor.join(', ')}] (at any depth); it is placed ${placement(parentType)}`,\n valid: [...meta.ancestor],\n })\n }\n\n return found\n}\n\n/**\n * Structural constraint violations in one block tree: `parent` (direct child\n * only), `ancestor` (any depth), `allowMultiple` (per tree). Unregistered\n * types are skipped — they are a different error (`unknown-block`) with its\n * own reporter.\n */\nexport function checkBlockConstraints(nodes: readonly BlockTreeNode[]): BlockConstraintViolation[] {\n const found: BlockConstraintViolation[] = []\n const firstInstanceOf = new Map<string, string>()\n\n for (const { node, path, ancestors } of walk(nodes, '', [])) {\n for (const violation of checkNodePlacement(node.type, ancestors)) {\n found.push({ ...violation, path })\n }\n\n const meta = metaFor(node.type)\n if (meta?.allowMultiple === false) {\n const first = firstInstanceOf.get(node.type)\n if (first === undefined) {\n firstInstanceOf.set(node.type, path)\n } else {\n found.push({\n path,\n type: node.type,\n rule: 'constraint-multiple',\n detail: `block \"${node.type}\" declares allowMultiple: false and already appears at ${first || '(root)'} — remove one of the instances`,\n valid: [first],\n })\n }\n }\n }\n\n return found\n}\n\n// --- Context requirements (advisory) -----------------------------------------\n\nexport interface BlockContextFinding {\n path: string\n type: string\n /** Context keys the block declares in `usesContext` that nothing provides. */\n missing: string[]\n}\n\n/**\n * Placements where a block's `usesContext` keys are satisfied neither by an\n * ancestor's `providesContext` nor by the surface itself (`provided` — e.g. a\n * slot area's context keys).\n *\n * Advisory, not an error: context also arrives through runtime channels a\n * static tree cannot see, so the honest verdict is \"nothing declares this\",\n * not \"this is broken\". `checkPageBlocks` maps these to warnings.\n */\nexport function checkBlockContext(\n nodes: readonly BlockTreeNode[],\n provided: readonly string[] = [],\n): BlockContextFinding[] {\n const findings: BlockContextFinding[] = []\n for (const { node, path, ancestors } of walk(nodes, '', [])) {\n const meta = metaFor(node.type)\n if (!meta?.usesContext?.length) continue\n const available = new Set<string>(provided)\n for (const ancestorType of ancestors) {\n for (const key of metaFor(ancestorType)?.providesContext ?? []) available.add(key)\n }\n const missing = meta.usesContext.filter((key) => !available.has(key))\n if (missing.length > 0) findings.push({ path, type: node.type, missing })\n }\n return findings\n}\n\n// --- Forced-layout repair ----------------------------------------------------\n\nexport interface BlockTreeRepair {\n /** Path of the PARENT whose child list was repaired ('' for a root-level list). */\n path: string\n /** Type of the block that was re-inserted. */\n inserted: string\n /** Index it was re-inserted at. */\n index: number\n}\n\n/** Materialize a required child: template props over the child's own defaults. */\nfunction buildRequiredChild(spec: { type: string; id?: string; props?: Record<string, unknown> }): BlockTreeNode {\n const defaults = defaultPropsFromSettings(metaFor(spec.type)?.settings)\n return {\n type: spec.type,\n id: spec.id ?? spec.type,\n props: { ...defaults, ...spec.props },\n }\n}\n\nfunction repairChildren(\n parentPath: string,\n parentMeta: RegistryMeta | undefined,\n children: readonly BlockTreeNode[],\n repairs: BlockTreeRepair[],\n): BlockTreeNode[] {\n let out = [...children]\n\n // The template order decides the index: walking the template with a cursor\n // that advances past each found child re-inserts a missing one exactly where\n // the template says it sits relative to its surviving siblings — the\n // use-forced-layout insertion rule.\n if (parentMeta?.requiredChildren?.length) {\n let cursor = 0\n for (const spec of parentMeta.requiredChildren) {\n const at = out.findIndex((child) => child.type === spec.type)\n if (at >= 0) {\n cursor = at + 1\n continue\n }\n const index = Math.min(cursor, out.length)\n out.splice(index, 0, buildRequiredChild(spec))\n repairs.push({ path: parentPath, inserted: spec.type, index })\n cursor = index + 1\n }\n }\n\n // Recurse AFTER the insertion pass, so a re-inserted child's own required\n // children are repaired too.\n out = out.map((child, i) => {\n if (!child.children?.length && !metaFor(child.type)?.requiredChildren?.length) return child\n const childPath = parentPath ? `${parentPath}[${i}]` : `[${i}]`\n const repaired = repairChildren(`${childPath}.children`, metaFor(child.type), child.children ?? [], repairs)\n return repaired === child.children ? child : { ...child, children: repaired }\n })\n\n return out\n}\n\nexport interface RepairBlockTreeResult {\n nodes: BlockTreeNode[]\n repairs: BlockTreeRepair[]\n}\n\n/**\n * Re-insert required children that went missing, at the index the declaring\n * block's template gives them (use-forced-layout). Returns the INPUT array\n * untouched when nothing was repaired, so memoized consumers can keep\n * reference equality.\n */\nexport function repairBlockTree(nodes: readonly BlockTreeNode[]): RepairBlockTreeResult {\n const repairs: BlockTreeRepair[] = []\n const repaired = nodes.map((node, i) => {\n const meta = metaFor(node.type)\n if (!node.children?.length && !meta?.requiredChildren?.length) return node\n const children = repairChildren(`[${i}].children`, meta, node.children ?? [], repairs)\n if (children.length === (node.children?.length ?? 0) && children.every((c, j) => c === node.children?.[j])) {\n return node\n }\n return { ...node, children }\n })\n if (repairs.length === 0) return { nodes: nodes as BlockTreeNode[], repairs }\n return { nodes: repaired, repairs }\n}\n","import type { JsonSchema } from './registry-class'\n\n// ---------------------------------------------------------------------------\n// Minimal runtime JSON Schema checker — the enforcement half of I1.\n//\n// Registry entries CARRY JSON Schemas; extension points (spine M7) are the\n// first registry whose schemas are enforced against live values at runtime,\n// in both directions (handler input and handler output). A full ajv would be\n// ~120kb of dependency for storefront bundles; the vocabulary our emitted\n// schemas actually use is small and closed (settingsToJsonSchema and the\n// hand-authored extension-point schemas use nothing outside it), so this\n// checker implements exactly that subset and REPORTS unknown keywords as\n// unenforced rather than silently passing them (I2: no silent drops).\n//\n// Supported keywords: type (string | string[]), properties, required,\n// additionalProperties (boolean), items, enum, const, minimum, maximum,\n// minLength, maxLength, minItems, maxItems.\n// ---------------------------------------------------------------------------\n\nexport interface SchemaIssue {\n /** Dotted path into the value ('' is the root). */\n path: string\n message: string\n}\n\nfunction typeOf(value: unknown): string {\n if (value === null) return 'null'\n if (Array.isArray(value)) return 'array'\n if (typeof value === 'number') return Number.isInteger(value) ? 'integer' : 'number'\n return typeof value\n}\n\nfunction typeMatches(declared: string, actual: string): boolean {\n if (declared === actual) return true\n // JSON Schema: every integer is also a number.\n return declared === 'number' && actual === 'integer'\n}\n\nfunction joinPath(base: string, key: string | number): string {\n return base === '' ? String(key) : `${base}.${key}`\n}\n\n/**\n * Check `value` against `schema`, returning issues (empty = valid).\n * Pure and total: never throws, never mutates.\n */\nexport function checkAgainstSchema(schema: JsonSchema, value: unknown, path = ''): SchemaIssue[] {\n const issues: SchemaIssue[] = []\n\n const declaredType = schema.type\n if (declaredType !== undefined) {\n const actual = typeOf(value)\n const accepted = Array.isArray(declaredType) ? declaredType.map(String) : [String(declaredType)]\n if (!accepted.some((t) => typeMatches(t, actual))) {\n issues.push({ path, message: `expected ${accepted.join(' | ')}, got ${actual}` })\n return issues // further keyword checks would only cascade noise\n }\n }\n\n if (Array.isArray(schema.enum) && !schema.enum.some((allowed) => JSON.stringify(allowed) === JSON.stringify(value))) {\n issues.push({\n path,\n message: `value ${JSON.stringify(value)} is not one of ${schema.enum.map((v) => JSON.stringify(v)).join(', ')}`,\n })\n }\n if (schema.const !== undefined && JSON.stringify(schema.const) !== JSON.stringify(value)) {\n issues.push({ path, message: `expected constant ${JSON.stringify(schema.const)}` })\n }\n\n if (typeof value === 'string') {\n if (typeof schema.minLength === 'number' && value.length < schema.minLength) {\n issues.push({ path, message: `string shorter than minLength ${schema.minLength}` })\n }\n if (typeof schema.maxLength === 'number' && value.length > schema.maxLength) {\n issues.push({ path, message: `string longer than maxLength ${schema.maxLength}` })\n }\n }\n\n if (typeof value === 'number') {\n if (typeof schema.minimum === 'number' && value < schema.minimum) {\n issues.push({ path, message: `${value} is below minimum ${schema.minimum}` })\n }\n if (typeof schema.maximum === 'number' && value > schema.maximum) {\n issues.push({ path, message: `${value} is above maximum ${schema.maximum}` })\n }\n }\n\n if (Array.isArray(value)) {\n if (typeof schema.minItems === 'number' && value.length < schema.minItems) {\n issues.push({ path, message: `array shorter than minItems ${schema.minItems}` })\n }\n if (typeof schema.maxItems === 'number' && value.length > schema.maxItems) {\n issues.push({ path, message: `array longer than maxItems ${schema.maxItems}` })\n }\n if (schema.items && typeof schema.items === 'object' && !Array.isArray(schema.items)) {\n value.forEach((item, index) => {\n issues.push(...checkAgainstSchema(schema.items as JsonSchema, item, joinPath(path, index)))\n })\n }\n }\n\n if (value !== null && typeof value === 'object' && !Array.isArray(value)) {\n const record = value as Record<string, unknown>\n const properties =\n schema.properties && typeof schema.properties === 'object'\n ? (schema.properties as Record<string, JsonSchema>)\n : undefined\n\n if (Array.isArray(schema.required)) {\n for (const key of schema.required) {\n if (typeof key === 'string' && record[key] === undefined) {\n issues.push({ path: joinPath(path, key), message: `required property \"${key}\" is missing` })\n }\n }\n }\n\n if (properties) {\n for (const [key, propSchema] of Object.entries(properties)) {\n if (record[key] !== undefined) {\n issues.push(...checkAgainstSchema(propSchema, record[key], joinPath(path, key)))\n }\n }\n if (schema.additionalProperties === false) {\n const known = new Set(Object.keys(properties))\n for (const key of Object.keys(record)) {\n if (!known.has(key)) {\n issues.push({\n path: joinPath(path, key),\n message: `unknown property \"${key}\" — declared properties: ${[...known].sort().join(', ')}`,\n })\n }\n }\n }\n }\n }\n\n return issues\n}\n\n/** Render issues as one human/agent-readable line each. */\nexport function formatSchemaIssues(issues: SchemaIssue[]): string {\n return issues.map((issue) => (issue.path ? `${issue.path}: ${issue.message}` : issue.message)).join('; ')\n}\n","import { Registry } from './registry-class'\nimport type { JsonSchema, RegistryEntryDescriptor, RegistryMeta, RegistrySource } from './registry-class'\nimport { checkAgainstSchema, formatSchemaIssues } from './schema-check'\n\n// ---------------------------------------------------------------------------\n// Extension points — spine M7, the behaviour half of I3/I4.\n//\n// An extension point is a DECLARED seam: namespaced id, description, an INPUT\n// schema and an OUTPUT schema, both enforced at runtime in both directions.\n// Many handlers may register at one point, ordered by declared dependency\n// (`after: ['other-handler']`), never by integer priority — WooCommerce's\n// priority ladder ends in eight PHP_INT_MAX call sites because integers\n// cannot express \"after X\", only \"hopefully later than most things\".\n//\n// The two failure philosophies this module encodes, and why:\n//\n// * Registration/lookup errors (unknown point, malformed id, a second\n// registrant on an escape valve) are I2 hard errors ALWAYS, naming the\n// valid set / the existing holder. These are authoring-time mistakes and\n// the agent needs the signal.\n// * Runtime schema violations (a caller passing bad input, a handler\n// returning bad output) follow M2's error philosophy, same as a crashing\n// block: hard error in dev so the author fixes it, isolated + logged in\n// production so one broken handler cannot take checkout down with it.\n//\n// I4 — escape valves. A point declared `mode: 'escape'` is the ONE nullable\n// escape per irreversible operation (WooCommerce's `woocommerce_create_order`\n// filter policy). The registry enforces at most one registrant; a second\n// registration is a hard error NAMING the current holder — the exact inverse\n// of Medusa's create-hook throw, which rejects the second handler without\n// saying who owns the first. A non-null return short-circuits the default.\n// ---------------------------------------------------------------------------\n\nexport type ExtensionPointMode = 'many' | 'escape'\n\nexport interface ExtensionPointDeclaration {\n /** Namespaced id: `namespace.point` (e.g. 'cart.lineAnnotation'). */\n id: string\n description: string\n /** JSON Schema every invocation's input is checked against. */\n input: JsonSchema\n /** JSON Schema every handler's (non-null) return is checked against. */\n output: JsonSchema\n /**\n * 'many' (default): any number of handlers, dependency-ordered, outputs\n * collected. 'escape': at most ONE handler, `Output | null` return, non-null\n * short-circuits the caller's default path (I4).\n */\n mode?: ExtensionPointMode\n source?: RegistrySource\n since?: string\n}\n\nexport interface ExtensionHandlerOptions {\n /** Handler ids that must run before this one (dependency ordering, I3). */\n after?: readonly string[]\n description?: string\n source?: RegistrySource\n pluginId?: string\n}\n\nexport type ExtensionHandler<I = unknown, O = unknown> = (input: I) => O | Promise<O>\n\ninterface RegisteredHandler {\n id: string\n handler: ExtensionHandler\n after: readonly string[]\n description?: string\n source?: RegistrySource\n pluginId?: string\n}\n\n/** One point's handlers, in registration order (ordering happens at run). */\nconst handlersByPoint = new Map<string, RegisteredHandler[]>()\n\nexport const extensionPointRegistry = new Registry<ExtensionPointDeclaration>('extension-point')\n\nconst POINT_ID_PATTERN = /^[a-z][a-zA-Z0-9-]*\\.[a-z][a-zA-Z0-9-]*$/\n\n// Same probe as core/blocks: Vite statically replaces process.env.NODE_ENV in\n// app builds; the try/catch covers runtimes where `process` is absent.\ndeclare const process: { env: Record<string, string | undefined> }\nfunction isProductionBuild(): boolean {\n try {\n return process.env.NODE_ENV === 'production'\n } catch {\n return true\n }\n}\n\nfunction formatValidPoints(): string {\n const ids = extensionPointRegistry.ids().sort()\n return ids.length\n ? `Declared extension points: ${ids.join(', ')}`\n : 'No extension points are declared — call defineExtensionPoint first.'\n}\n\n/**\n * Declare an extension point. Idempotent per id (a re-declaration replaces the\n * spec but keeps registered handlers), so HMR and repeated register-all calls\n * are safe. The id must be namespaced `namespace.point` — two generated\n * extensions can then never collide on a bare name (I3).\n */\nexport function defineExtensionPoint(declaration: ExtensionPointDeclaration): void {\n if (!POINT_ID_PATTERN.test(declaration.id)) {\n throw new Error(\n `Extension point id \"${declaration.id}\" is not namespaced. Use \"namespace.point\" (e.g. \"cart.lineAnnotation\").`,\n )\n }\n const meta: RegistryMeta = {\n description: declaration.description,\n source: declaration.source,\n since: declaration.since,\n }\n extensionPointRegistry.register(declaration.id, declaration, meta)\n if (!handlersByPoint.has(declaration.id)) handlersByPoint.set(declaration.id, [])\n}\n\nfunction resolvePoint(pointId: string): ExtensionPointDeclaration {\n const spec = extensionPointRegistry.get(pointId)\n if (!spec) throw new Error(`Unknown extension point \"${pointId}\". ${formatValidPoints()}`)\n return spec\n}\n\n/**\n * Register a handler at a point. Unknown point → hard error naming the valid\n * set (I2). On an escape-valve point, a SECOND registration is a hard error\n * naming who already holds it — the valve stays a valve, never a graph.\n * Re-registering the SAME handler id replaces it (HMR safety), on any mode.\n */\nexport function registerExtensionHandler<I = unknown, O = unknown>(\n pointId: string,\n handlerId: string,\n handler: ExtensionHandler<I, O>,\n options: ExtensionHandlerOptions = {},\n): void {\n const spec = resolvePoint(pointId)\n const handlers = handlersByPoint.get(pointId)!\n const existingIndex = handlers.findIndex((h) => h.id === handlerId)\n\n if ((spec.mode ?? 'many') === 'escape' && existingIndex < 0 && handlers.length > 0) {\n throw new Error(\n `Extension point \"${pointId}\" is an escape valve and is already held by handler \"${handlers[0]!.id}\"` +\n `${handlers[0]!.pluginId ? ` (plugin \"${handlers[0]!.pluginId}\")` : ''}. ` +\n 'An escape valve accepts exactly ONE registrant (I4) — unregister the holder first, or extend through a many-handler point instead.',\n )\n }\n\n const entry: RegisteredHandler = {\n id: handlerId,\n handler: handler as ExtensionHandler,\n after: options.after ?? [],\n description: options.description,\n source: options.source,\n pluginId: options.pluginId,\n }\n if (existingIndex >= 0) handlers[existingIndex] = entry\n else handlers.push(entry)\n}\n\n/** Remove one handler (test seams, HMR teardown). Unknown ids are a no-op. */\nexport function unregisterExtensionHandler(pointId: string, handlerId: string): void {\n const handlers = handlersByPoint.get(pointId)\n if (!handlers) return\n const index = handlers.findIndex((h) => h.id === handlerId)\n if (index >= 0) handlers.splice(index, 1)\n}\n\n// --- Dependency ordering ------------------------------------------------------\n\n/**\n * Order handlers by declared dependency: `after: ['x']` guarantees x runs\n * first. Stable — registration order breaks ties, so adding an unrelated\n * handler never reshuffles existing ones. An `after` naming an unregistered\n * handler is a hard error (a silent skip would order the graph differently\n * than the author believes); a cycle is a hard error naming its members.\n */\nfunction orderHandlers(pointId: string, handlers: readonly RegisteredHandler[]): RegisteredHandler[] {\n const byId = new Map(handlers.map((h) => [h.id, h]))\n for (const handler of handlers) {\n for (const dep of handler.after) {\n if (!byId.has(dep)) {\n throw new Error(\n `Extension handler \"${handler.id}\" at \"${pointId}\" declares after: [\"${dep}\"], but no handler \"${dep}\" is registered there. ` +\n `Registered handlers: ${handlers.map((h) => h.id).join(', ')}`,\n )\n }\n }\n }\n\n const ordered: RegisteredHandler[] = []\n const state = new Map<string, 'visiting' | 'done'>()\n\n function visit(handler: RegisteredHandler, chain: string[]): void {\n const mark = state.get(handler.id)\n if (mark === 'done') return\n if (mark === 'visiting') {\n throw new Error(\n `Extension handlers at \"${pointId}\" declare a dependency cycle: ${[...chain, handler.id].join(' → ')}`,\n )\n }\n state.set(handler.id, 'visiting')\n for (const dep of handler.after) visit(byId.get(dep)!, [...chain, handler.id])\n state.set(handler.id, 'done')\n ordered.push(handler)\n }\n\n for (const handler of handlers) visit(handler, [])\n return ordered\n}\n\n// --- Runtime enforcement ------------------------------------------------------\n\nfunction schemaViolation(kind: 'input' | 'output', pointId: string, handlerId: string | null, detail: string): Error {\n const who = handlerId ? ` handler \"${handlerId}\"` : ''\n return new Error(`Extension point \"${pointId}\"${who}: invalid ${kind} — ${detail}`)\n}\n\n/**\n * One collected result of a many-handler run: which handler said it, and what\n * it said (already output-schema-checked).\n */\nexport interface ExtensionContribution<O = unknown> {\n handlerId: string\n value: O\n}\n\n/**\n * Run a many-handler extension point: input checked once against the input\n * schema, each handler's return checked against the output schema, results\n * collected in dependency order. A handler returning `undefined`/`null`\n * contributes nothing (that is how a handler declines) — anything else must\n * satisfy the output schema.\n *\n * Failure semantics (M2): in dev every violation throws; in production a bad\n * input logs and yields [] (the point is isolated), a bad output or a throwing\n * handler logs and drops THAT handler's contribution only.\n */\nexport async function runExtensionPoint<I = unknown, O = unknown>(\n pointId: string,\n input: I,\n): Promise<ExtensionContribution<O>[]> {\n const spec = resolvePoint(pointId)\n if ((spec.mode ?? 'many') === 'escape') {\n throw new Error(\n `Extension point \"${pointId}\" is an escape valve — call runEscapeValve, whose Output | null contract is the point (I4).`,\n )\n }\n\n const inputIssues = checkAgainstSchema(spec.input, input)\n if (inputIssues.length > 0) {\n const error = schemaViolation('input', pointId, null, formatSchemaIssues(inputIssues))\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n return []\n }\n\n const handlers = orderHandlers(pointId, handlersByPoint.get(pointId) ?? [])\n const contributions: ExtensionContribution<O>[] = []\n for (const handler of handlers) {\n let value: unknown\n try {\n value = await handler.handler(input)\n } catch (cause) {\n const error = new Error(\n `Extension point \"${pointId}\" handler \"${handler.id}\" threw: ${cause instanceof Error ? cause.message : String(cause)}`,\n )\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n continue\n }\n if (value === undefined || value === null) continue\n const outputIssues = checkAgainstSchema(spec.output, value)\n if (outputIssues.length > 0) {\n const error = schemaViolation('output', pointId, handler.id, formatSchemaIssues(outputIssues))\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n continue\n }\n contributions.push({ handlerId: handler.id, value: value as O })\n }\n return contributions\n}\n\n/**\n * Run an escape valve (I4): `Output | null`. Null (or no registrant) means\n * \"take the default path\"; a non-null return is schema-checked and returned\n * for the caller to short-circuit with. In production a schema-invalid return\n * or a throw logs and behaves as null — a broken escape must degrade to the\n * default order path, never to a broken checkout.\n */\nexport async function runEscapeValve<I = unknown, O = unknown>(pointId: string, input: I): Promise<O | null> {\n const spec = resolvePoint(pointId)\n if ((spec.mode ?? 'many') !== 'escape') {\n throw new Error(`Extension point \"${pointId}\" is not an escape valve — call runExtensionPoint.`)\n }\n\n const inputIssues = checkAgainstSchema(spec.input, input)\n if (inputIssues.length > 0) {\n const error = schemaViolation('input', pointId, null, formatSchemaIssues(inputIssues))\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n return null\n }\n\n const holder = (handlersByPoint.get(pointId) ?? [])[0]\n if (!holder) return null\n\n let value: unknown\n try {\n value = await holder.handler(input)\n } catch (cause) {\n const error = new Error(\n `Escape valve \"${pointId}\" handler \"${holder.id}\" threw: ${cause instanceof Error ? cause.message : String(cause)}`,\n )\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n return null\n }\n if (value === undefined || value === null) return null\n\n const outputIssues = checkAgainstSchema(spec.output, value)\n if (outputIssues.length > 0) {\n const error = schemaViolation('output', pointId, holder.id, formatSchemaIssues(outputIssues))\n if (!isProductionBuild()) throw error\n console.error(`[extension-points] ${error.message}`)\n return null\n }\n return value as O\n}\n\n// --- Enumerability (describeStore reads this) ---------------------------------\n\nexport interface ExtensionHandlerDescriptor {\n id: string\n after: readonly string[]\n description?: string\n source?: RegistrySource\n pluginId?: string\n}\n\nexport interface ExtensionPointDescriptor extends RegistryEntryDescriptor {\n mode: ExtensionPointMode\n /** JSON Schema for the invocation input. */\n inputSchema: JsonSchema\n /** JSON Schema for a handler's (non-null) return. */\n outputSchema: JsonSchema\n /** Registered handlers, in registration order with their dependencies. */\n handlers: ExtensionHandlerDescriptor[]\n}\n\n/** Every declared point with its schemas AND its registered handlers, sorted\n * by id — the enumerable surface an agent (and `fayz catalog`) reads. */\nexport function describeExtensionPoints(): ExtensionPointDescriptor[] {\n return extensionPointRegistry.describe().map((base) => {\n const spec = extensionPointRegistry.get(base.id)!\n return {\n ...base,\n mode: spec.mode ?? 'many',\n inputSchema: spec.input,\n outputSchema: spec.output,\n handlers: (handlersByPoint.get(base.id) ?? []).map((h) => ({\n id: h.id,\n after: h.after,\n description: h.description,\n source: h.source,\n pluginId: h.pluginId,\n })),\n }\n })\n}\n\nexport function hasExtensionPoint(pointId: string): boolean {\n return extensionPointRegistry.has(pointId)\n}\n\nexport function listExtensionPoints(): string[] {\n return extensionPointRegistry.ids().sort()\n}\n\n/** Registered handler ids at a point, in registration order. Unknown point →\n * the same I2 hard error as every other lookup. */\nexport function listExtensionHandlers(pointId: string): string[] {\n resolvePoint(pointId)\n return (handlersByPoint.get(pointId) ?? []).map((h) => h.id)\n}\n\n/** Test seam — clears declarations AND handlers. */\nexport function clearExtensionPoints(): void {\n extensionPointRegistry.clear()\n handlersByPoint.clear()\n}\n\n// --- withAfterHooks bridge ----------------------------------------------------\n\n/**\n * Build a `withAfterHooks` handler map whose hooks run an extension point.\n *\n * `withAfterHooks(provider, handlers)` (core/integrations, the CONNECTORS.md\n * outbound-sync seam) stays THE mechanism for post-write hooks — fire-and-\n * forget, failures never break the app call. What it lacked was schema\n * enforcement and enumerability; this bridge adds both by making the hook body\n * a `runExtensionPoint` invocation: the point declares the input shape\n * (`{ method, args, result }`), registered handlers are dependency-ordered and\n * output-checked, and describeExtensionPoints lists them. One mechanism, now\n * introspectable — not a competing one.\n *\n * Usage:\n * defineExtensionPoint({ id: 'shop.afterWrite', input: AFTER_WRITE_INPUT, … })\n * const provider = withAfterHooks(base, extensionAfterHooks('shop.afterWrite', ['placeOrder']))\n */\nexport function extensionAfterHooks<T extends object>(\n pointId: string,\n methods: readonly (keyof T & string)[],\n): Partial<Record<keyof T, (args: unknown[], result: unknown) => Promise<void>>> {\n resolvePoint(pointId)\n const map: Partial<Record<keyof T, (args: unknown[], result: unknown) => Promise<void>>> = {}\n for (const method of methods) {\n map[method] = async (args: unknown[], result: unknown) => {\n // withAfterHooks already swallows rejections; in dev runExtensionPoint\n // throws so the author sees schema violations, and the swallow keeps the\n // provider call itself unharmed either way (the CONNECTORS.md contract).\n await runExtensionPoint(pointId, { method, args, result })\n }\n }\n return map\n}\n","import type { ComponentType } from 'react'\nimport { settingsToJsonSchema } from './block-schema'\n\n// ---------------------------------------------------------------------------\n// Uniform registry — the indirection layer that lets a pure-data AppManifest\n// reference code by string id. Generalizes the entity registry pattern to\n// components, blocks, pages, metrics, scaffolds and plugins.\n//\n// Naming convention: SDK/plugin artifacts use a namespaced id\n// (`agenda.week-view`, `crud.detail-header`); app-local custom code uses the\n// reserved `custom:` prefix (`custom:tannat.HarvestBoard`). The platform never\n// generates `custom:` ids — they only come from an app's registry.tsx.\n// ---------------------------------------------------------------------------\n\nimport { Registry } from './registry-class'\nimport type { RegistryMeta } from './registry-class'\n\nexport { Registry, isCustomId } from './registry-class'\nexport type {\n JsonSchema,\n RegistrySource,\n RegistryMeta,\n RegistryEntry,\n RegistryEntryDescriptor,\n LoaderParamRef,\n LoaderPropRef,\n BlockDataNeed,\n BlockDataNeeds,\n} from './registry-class'\n\nexport { settingsToJsonSchema }\nexport { defaultPropsFromSettings, BLOCK_SETTING_TYPES } from './block-schema'\nexport {\n handleRegistry,\n registerHandle,\n getHandle,\n hasHandle,\n resolveHandle,\n listHandles,\n handleNameFor,\n clearHandles,\n} from './handles'\nexport type { RegisterHandleOptions } from './handles'\nexport {\n loaderRegistry,\n defineLoader,\n resolveLoader,\n hasLoader,\n listLoaders,\n clearLoaders,\n describeLoaders,\n isLoaderParamRef,\n isLoaderPropRef,\n dataNeedKey,\n} from './loaders'\nexport type { LoaderContext, LoaderImpl, LoaderDescriptor } from './loaders'\nexport {\n ENTITY_FIELD_TYPES,\n GENERIC_ENTITY_TABLE,\n RESERVED_ENTITY_FIELDS,\n entityDeclarationRegistry,\n defineEntity,\n resolveEntityDeclaration,\n hasEntityDeclaration,\n listEntityDeclarations,\n clearEntityDeclarations,\n entityRecordSchema,\n validateEntityRecordData,\n describeEntities,\n entityAdminForm,\n customFieldsRegistry,\n defineCustomFields,\n declaredCustomFields,\n hasCustomFieldsDeclaration,\n clearCustomFieldsDeclarations,\n} from './entities'\nexport type {\n EntityFieldType,\n EntityField,\n EntityReadAccess,\n EntityAccess,\n EntityStorageDescriptor,\n EntityDeclarationInput,\n EntityDeclaration,\n EntityRecordIssue,\n EntityDescriptor,\n EntityAdminForm as EntityAdminFormDescriptor,\n EntityFieldValidation,\n EntityFieldOption,\n CustomFieldsDeclaration,\n} from './entities'\nexport type {\n BlockSetting,\n BlockSettingType,\n BlockSettingOption,\n BlockPreset,\n BlockStability,\n} from './block-schema'\nexport {\n describeBlock,\n describeBlocks,\n isBlockEnabledOn,\n auditBlocks,\n summarizeBlockAudit,\n} from './block-catalog'\nexport type {\n BlockDescriptor,\n BlockCatalogOptions,\n BlockAudit,\n BlockAuditLevel,\n} from './block-catalog'\nexport type { RequiredBlockChild } from './registry-class'\nexport {\n checkBlockConstraints,\n checkNodePlacement,\n checkBlockContext,\n repairBlockTree,\n} from './block-constraints'\nexport type {\n BlockTreeNode,\n BlockConstraintRule,\n BlockConstraintViolation,\n BlockContextFinding,\n BlockTreeRepair,\n RepairBlockTreeResult,\n} from './block-constraints'\nexport { checkAgainstSchema, formatSchemaIssues } from './schema-check'\nexport type { SchemaIssue } from './schema-check'\nexport {\n extensionPointRegistry,\n defineExtensionPoint,\n registerExtensionHandler,\n unregisterExtensionHandler,\n runExtensionPoint,\n runEscapeValve,\n describeExtensionPoints,\n hasExtensionPoint,\n listExtensionPoints,\n listExtensionHandlers,\n clearExtensionPoints,\n extensionAfterHooks,\n} from './extension-points'\nexport type {\n ExtensionPointMode,\n ExtensionPointDeclaration,\n ExtensionHandlerOptions,\n ExtensionHandler,\n ExtensionContribution,\n ExtensionHandlerDescriptor,\n ExtensionPointDescriptor,\n} from './extension-points'\n\n// ---------------------------------------------------------------------------\n// Metric definitions (consumed by dashboard / reports / KPI panels).\n// ---------------------------------------------------------------------------\n\nexport type MetricFormat = 'number' | 'currency' | 'percent' | 'duration' | 'rating'\n\nexport interface MetricContext {\n tenantId?: string\n /** ISO date range the metric should compute over, when applicable. */\n range?: { from: string; to: string }\n [key: string]: unknown\n}\n\nexport interface MetricValue {\n value: number\n previousValue?: number\n trend?: 'up' | 'down' | 'flat'\n}\n\nexport interface MetricDefinition {\n id: string\n label?: string\n category?: string\n format?: MetricFormat\n compute: (ctx: MetricContext) => Promise<MetricValue> | MetricValue\n}\n\n// ---------------------------------------------------------------------------\n// Concrete registries. Components/blocks/pages/scaffolds hold React component\n// types; metrics hold definitions; plugins hold opaque manifests (typed at the\n// plugin layer to avoid a circular import).\n// ---------------------------------------------------------------------------\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\ntype AnyComponent = ComponentType<any>\n\nexport const componentRegistry = new Registry<AnyComponent>('component')\nexport const blockRegistry = new Registry<AnyComponent>('block')\nexport const pageRegistry = new Registry<AnyComponent>('page')\nexport const scaffoldRegistry = new Registry<AnyComponent>('scaffold')\nexport const metricRegistry = new Registry<MetricDefinition>('metric')\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const pluginRegistry = new Registry<any>('plugin')\n\n// Thin functional facade (the public API surface) -----------------------------\n\nexport const registerComponent = (id: string, c: AnyComponent, meta?: RegistryMeta) =>\n componentRegistry.register(id, c, meta)\nexport const getComponent = (id: string) => componentRegistry.get(id)\n\nexport const registerBlock = (id: string, c: AnyComponent, meta?: RegistryMeta) =>\n blockRegistry.register(id, c, meta)\nexport const getBlock = (id: string) => blockRegistry.get(id)\nexport const listBlocks = () => blockRegistry.list()\nexport const getBlockMeta = (id: string) => blockRegistry.getEntry(id)?.meta\n\n/**\n * Register a block together with the schema that describes its props.\n *\n * The only thing this adds over {@link registerBlock} is compiling `settings`\n * into `propsSchema` at registration, so the authored declaration and the\n * machine contract cannot drift apart — which is exactly what happens whenever\n * both are maintained by hand.\n *\n * Use this for any block a merchant, an editor or an agent is expected to\n * configure. `registerBlock` stays for blocks that take no props, and for\n * app-local code that has not been schematized yet.\n */\nexport const defineBlock = (\n id: string,\n component: AnyComponent,\n meta: Omit<RegistryMeta, 'propsSchema'> = {},\n): void => {\n // A block with no declared settings keeps propsSchema ABSENT rather than\n // empty: \"takes no props\" and \"was never described\" are different states, and\n // `fayz doctor` needs to tell them apart to know what is still unauthored.\n const propsSchema = meta.settings ? settingsToJsonSchema(meta.settings) : undefined\n blockRegistry.register(id, component, propsSchema ? { ...meta, propsSchema } : { ...meta })\n}\n\nexport const registerPage = (id: string, c: AnyComponent, meta?: RegistryMeta) =>\n pageRegistry.register(id, c, meta)\nexport const getPage = (id: string) => pageRegistry.get(id)\n\nexport const registerScaffold = (id: string, c: AnyComponent, meta?: RegistryMeta) =>\n scaffoldRegistry.register(id, c, meta)\nexport const getScaffold = (id: string) => scaffoldRegistry.get(id)\n\nexport const registerMetric = (def: MetricDefinition, meta?: RegistryMeta) =>\n metricRegistry.register(def.id, def, meta)\nexport const getMetric = (id: string) => metricRegistry.get(id)\nexport const listMetrics = () => metricRegistry.list()\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport const registerPlugin = (id: string, manifest: any, meta?: RegistryMeta) =>\n pluginRegistry.register(id, manifest, meta)\nexport const getPlugin = (id: string) => pluginRegistry.get(id)\nexport const listPlugins = () => pluginRegistry.list()\n\n// Plugin factories — a generated app registers each installed @fayz-ai/plugin-*\n// factory by id (src/plugins.generated.ts), so a scaffold can resolve a\n// manifest's PluginRef (id + JSON config) to a live PluginManifest:\n// getPluginFactory(ref.id)?.(ref.config)\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport type PluginFactory = (config?: Record<string, unknown>) => any\nexport const pluginFactoryRegistry = new Registry<PluginFactory>('plugin-factory')\nexport const registerPluginFactory = (id: string, factory: PluginFactory, meta?: RegistryMeta) =>\n pluginFactoryRegistry.register(id, factory, meta)\nexport const getPluginFactory = (id: string) => pluginFactoryRegistry.get(id)\nexport const listPluginFactories = () => pluginFactoryRegistry.list()\n","import { blockRegistry } from './index'\nimport type { JsonSchema, RegistryEntry, RegistryMeta, RegistrySource, RequiredBlockChild } from './index'\nimport { defaultPropsFromSettings } from './block-schema'\nimport type { BlockPreset, BlockSetting, BlockStability } from './block-schema'\n\n// ---------------------------------------------------------------------------\n// Block catalog — the registry, as data.\n//\n// Two consumers, one implementation:\n//\n// describeBlocks() the catalog an editor renders a section picker from and an\n// agent reads to know which blocks exist and what each one\n// accepts. Serializable on purpose: it has to survive being\n// put in a prompt or sent over a wire.\n//\n// auditBlocks() the conformance rules. A schema that lies is worse than no\n// schema — a preset naming a prop the component never reads\n// produces a section that silently ignores half its config,\n// and an agent generating against it produces the same bug\n// at scale. So these are checked, not trusted.\n//\n// Prior art: Shopify surfaces the section schema to the theme editor and to its\n// own tooling from the same `{% schema %}` block; VTEX IO publishes\n// `interfaces.json` so the site editor and the CLI agree on what a block is.\n// Neither keeps a second, hand-maintained description of the same thing.\n// ---------------------------------------------------------------------------\n\n/** A block, described well enough to configure it without reading its source. */\nexport interface BlockDescriptor {\n id: string\n label?: string\n description?: string\n source?: RegistrySource\n pluginId?: string\n settings: readonly BlockSetting[]\n presets: readonly BlockPreset[]\n /** Surfaces this block may be placed on. Empty means \"anywhere\". */\n enabledOn: readonly string[]\n stability: BlockStability\n /** The machine contract, compiled from `settings`. Absent if never described. */\n propsSchema?: JsonSchema\n /** Props a freshly inserted instance starts with, when no preset is chosen. */\n defaults: Record<string, unknown>\n // Composition constraints (see RegistryMeta) — surfaced so an agent reading\n // the catalog generates legal trees instead of learning the rules from\n // validation errors. Empty arrays mean unconstrained.\n parent: readonly string[]\n ancestor: readonly string[]\n usesContext: readonly string[]\n providesContext: readonly string[]\n allowMultiple: boolean\n requiredChildren: readonly RequiredBlockChild[]\n}\n\nexport interface BlockCatalogOptions {\n /** Keep only blocks placeable on this surface (`home`, `product`, …). */\n enabledOn?: string\n /** Keep only blocks from these origins. */\n source?: readonly RegistrySource[]\n /** Include `experimental` blocks. Default false — an agent should reach for a\n * stable block unless something explicitly asks it not to. */\n includeExperimental?: boolean\n}\n\nfunction describeEntry(entry: RegistryEntry<unknown>): BlockDescriptor {\n const meta: RegistryMeta = entry.meta ?? {}\n const settings = meta.settings ?? []\n return {\n id: entry.id,\n label: meta.label,\n description: meta.description,\n source: meta.source,\n pluginId: meta.pluginId,\n settings,\n presets: meta.presets ?? [],\n enabledOn: meta.enabledOn ?? [],\n stability: meta.stability ?? 'stable',\n propsSchema: meta.propsSchema,\n defaults: defaultPropsFromSettings(settings),\n parent: meta.parent ?? [],\n ancestor: meta.ancestor ?? [],\n usesContext: meta.usesContext ?? [],\n providesContext: meta.providesContext ?? [],\n allowMultiple: meta.allowMultiple ?? true,\n requiredChildren: meta.requiredChildren ?? [],\n }\n}\n\n/** Describe one registered block. Undefined if the id is not registered. */\nexport function describeBlock(id: string): BlockDescriptor | undefined {\n const entry = blockRegistry.getEntry(id)\n return entry ? describeEntry(entry) : undefined\n}\n\n/**\n * The whole registry as descriptors, filtered and sorted by id.\n *\n * Sorted because this feeds prompts and generated documentation: registration\n * order is an implementation detail, and letting it leak makes every diff of a\n * generated artifact noisy for no reason.\n */\nexport function describeBlocks(options: BlockCatalogOptions = {}): BlockDescriptor[] {\n const { enabledOn, source, includeExperimental = false } = options\n return blockRegistry\n .list()\n .map(describeEntry)\n .filter((block) => {\n if (!includeExperimental && block.stability === 'experimental') return false\n if (source && !source.includes(block.source ?? 'app')) return false\n // An empty `enabledOn` means \"anywhere\", so it passes every surface filter.\n if (enabledOn && block.enabledOn.length > 0 && !block.enabledOn.includes(enabledOn)) {\n return false\n }\n return true\n })\n .sort((a, b) => a.id.localeCompare(b.id))\n}\n\n/** True when `block` may be placed on `surface`. */\nexport function isBlockEnabledOn(block: Pick<BlockDescriptor, 'enabledOn'>, surface: string): boolean {\n return block.enabledOn.length === 0 || block.enabledOn.includes(surface)\n}\n\n// --- Conformance -------------------------------------------------------------\n\nexport type BlockAuditLevel = 'error' | 'warning'\n\nexport interface BlockAudit {\n level: BlockAuditLevel\n /** Stable machine-readable rule id, so tooling can filter or waive one rule. */\n rule: string\n blockId: string\n detail: string\n}\n\n/** Flatten a settings tree into \"path → setting\", so `of:` items are checked too. */\nfunction walkSettings(\n settings: readonly BlockSetting[],\n prefix = '',\n): { path: string; setting: BlockSetting }[] {\n const out: { path: string; setting: BlockSetting }[] = []\n for (const setting of settings) {\n const path = prefix ? `${prefix}[].${setting.id}` : setting.id\n out.push({ path, setting })\n if (setting.of?.length) out.push(...walkSettings(setting.of, path))\n }\n return out\n}\n\nfunction auditSettings(blockId: string, settings: readonly BlockSetting[]): BlockAudit[] {\n const found: BlockAudit[] = []\n const err = (rule: string, detail: string) =>\n found.push({ level: 'error', rule, blockId, detail })\n const warn = (rule: string, detail: string) =>\n found.push({ level: 'warning', rule, blockId, detail })\n\n for (const { path, setting } of walkSettings(settings)) {\n if (!setting.id) {\n err('setting-missing-id', `a setting at \"${path}\" has no id — it cannot write to a prop`)\n }\n if (!setting.label) {\n warn('setting-missing-label', `setting \"${path}\" has no label — the editor renders a blank field`)\n }\n if (setting.type === 'select' && !setting.options?.length) {\n // A select with nothing to select from is an empty dropdown: the author\n // sees a control that cannot be used, and an agent has no legal value.\n err('select-without-options', `setting \"${path}\" is a select with no options`)\n }\n if (setting.type === 'list' && !setting.of?.length) {\n warn(\n 'list-without-item-shape',\n `setting \"${path}\" is a list with no \\`of\\` — an agent cannot generate items for it`,\n )\n }\n if (setting.type !== 'number' && (setting.min !== undefined || setting.max !== undefined)) {\n warn('bounds-on-non-number', `setting \"${path}\" declares min/max but is not a number`)\n }\n if (setting.required && setting.default !== undefined) {\n // Required-with-a-default is never enforceable: the default always\n // satisfies it, so the constraint reads as documentation and misleads.\n warn(\n 'required-with-default',\n `setting \"${path}\" is required but also has a default — the default always satisfies it`,\n )\n }\n }\n\n // Duplicate ids at one level: the later silently wins in the compiled schema.\n const seen = new Set<string>()\n for (const setting of settings) {\n if (setting.id && seen.has(setting.id)) {\n err('setting-duplicate-id', `setting \"${setting.id}\" is declared more than once`)\n }\n seen.add(setting.id)\n }\n\n return found\n}\n\nfunction auditPresets(\n blockId: string,\n settings: readonly BlockSetting[],\n presets: readonly BlockPreset[],\n): BlockAudit[] {\n const found: BlockAudit[] = []\n const declared = new Set(settings.map((s) => s.id))\n const required = settings.filter((s) => s.required).map((s) => s.id)\n const names = new Set<string>()\n\n for (const preset of presets) {\n const label = preset.name || '(unnamed)'\n if (!preset.name) {\n found.push({\n level: 'error',\n rule: 'preset-missing-name',\n blockId,\n detail: 'a preset has no name — the editor has nothing to show in the picker',\n })\n } else if (names.has(preset.name)) {\n found.push({\n level: 'error',\n rule: 'preset-duplicate-name',\n blockId,\n detail: `two presets are both named \"${preset.name}\"`,\n })\n }\n names.add(preset.name)\n\n for (const key of Object.keys(preset.props ?? {})) {\n if (!declared.has(key)) {\n // This is the failure mode the whole audit exists for: the preset looks\n // like it configures the block, the component never reads the prop, and\n // nothing anywhere says so.\n found.push({\n level: 'error',\n rule: 'preset-undeclared-prop',\n blockId,\n detail: `preset \"${label}\" sets \"${key}\", which is not a declared setting`,\n })\n }\n }\n\n for (const key of required) {\n if (preset.props?.[key] === undefined) {\n found.push({\n level: 'error',\n rule: 'preset-missing-required',\n blockId,\n detail: `preset \"${label}\" omits required setting \"${key}\" — it inserts a broken block`,\n })\n }\n }\n }\n\n return found\n}\n\n/**\n * Conformance findings for the registered blocks.\n *\n * Errors mean the schema misdescribes the block — that is worth failing a build\n * over, because an editor and an agent both act on it. Warnings mean the block\n * is under-described: it works, but it cannot be configured well by anything\n * that did not read its source.\n *\n * `requirePresets`/`requireEnabledOn` are opt-in because they are a standard the\n * SDK holds itself to, not a rule an app's one-off block should fail. An app\n * block that only ever appears in one store needs no preset.\n */\nexport function auditBlocks(options: {\n source?: readonly RegistrySource[]\n requirePresets?: boolean\n requireEnabledOn?: boolean\n} = {}): BlockAudit[] {\n const { source, requirePresets = false, requireEnabledOn = false } = options\n const findings: BlockAudit[] = []\n\n for (const entry of blockRegistry.list()) {\n const meta: RegistryMeta = entry.meta ?? {}\n if (source && !source.includes(meta.source ?? 'app')) continue\n\n const blockId = entry.id\n const settings = meta.settings\n const presets = meta.presets ?? []\n\n // Constraint declarations must reference registered blocks: a `parent` that\n // names a typo'd id makes the block silently unplaceable everywhere, which\n // is exactly the class of failure the vocabulary exists to end.\n for (const [field, refs] of [\n ['parent', meta.parent],\n ['ancestor', meta.ancestor],\n ['requiredChildren', meta.requiredChildren?.map((child) => child.type)],\n ] as const) {\n for (const ref of refs ?? []) {\n if (!blockRegistry.has(ref)) {\n findings.push({\n level: 'error',\n rule: 'constraint-unknown-block',\n blockId,\n detail: `${field} references \"${ref}\", which is not a registered block`,\n })\n }\n }\n }\n\n if (!settings) {\n if (meta.propsSchema) {\n // Hand-written propsSchema with no `settings` behind it. It works today\n // and drifts tomorrow, because the next prop gets added to the component\n // and nobody edits raw JSON Schema to match.\n findings.push({\n level: 'warning',\n rule: 'block-handwritten-schema',\n blockId,\n detail: 'has a hand-written propsSchema — declare `settings` and let defineBlock compile it',\n })\n } else {\n findings.push({\n level: 'warning',\n rule: 'block-undescribed',\n blockId,\n detail: 'declares no settings — an editor and an agent can only guess its props',\n })\n }\n // Nothing below applies: there is no declaration to check the presets against.\n continue\n }\n\n findings.push(...auditSettings(blockId, settings))\n findings.push(...auditPresets(blockId, settings, presets))\n\n if (meta.enabledOn?.length === 0) {\n // `[]` reads as \"nowhere\" while the author almost certainly meant\n // \"anywhere\", which is what omitting the field says.\n findings.push({\n level: 'error',\n rule: 'enabled-on-empty',\n blockId,\n detail: 'enabledOn is an empty array, so the block is placeable nowhere — omit it for \"anywhere\"',\n })\n }\n\n if (requirePresets && presets.length === 0 && settings.length > 0) {\n findings.push({\n level: 'warning',\n rule: 'block-no-preset',\n blockId,\n detail: 'has settings but no preset — inserting it lands an empty skeleton',\n })\n }\n\n if (requireEnabledOn && meta.enabledOn === undefined) {\n findings.push({\n level: 'warning',\n rule: 'block-no-enabled-on',\n blockId,\n detail: 'does not declare enabledOn, so it is offered on every surface',\n })\n }\n }\n\n return findings\n}\n\n/** Convenience: the audit reduced to a pass/fail plus its counts. */\nexport function summarizeBlockAudit(findings: readonly BlockAudit[]): {\n ok: boolean\n errors: number\n warnings: number\n} {\n const errors = findings.filter((f) => f.level === 'error').length\n return { ok: errors === 0, errors, warnings: findings.length - errors }\n}\n","import * as React from 'react'\nimport type {\n PluginManifest,\n PluginRuntime,\n PluginRuntimeContext,\n PluginRuntimeIssue,\n PluginRuntimeRoute,\n PluginSettingsTab,\n PluginWidgetDefinition,\n PluginWidgetZone,\n ResolvedPluginManifest,\n ResolvedPluginWidget,\n TenantPluginBinding,\n PluginRegistryDef,\n PluginAITool,\n PluginNavigationEntry,\n PluginCapability,\n PluginWidgetVisibility,\n ResolvedDashboardWidget,\n DashboardSurface,\n ResolvedDomainEvent,\n} from '../types/plugins'\nimport type { ResolvedAnalyticsCard } from '../types/analytics'\nimport { buildEntityDomainEvents } from '../entity/events'\nimport type { FeatureDeclaration } from '../types/permissions'\nimport type { LimitDeclaration } from '../types/entitlements'\nimport type { ResolvedOnboardingProgram } from '../types/onboarding'\nimport type { ConnectorDefinition } from '../integrations'\nimport { getComponent } from '../registry'\nimport { getAllEntities } from '../entity/registry'\n\n/** The plugin contract version this runtime understands. A plugin declaring a\n * higher apiVersion is rejected rather than mis-rendered. */\nexport const PLUGIN_API_VERSION = 1\n\n/** Resolve a plugin route/widget/settings/onboarding target to a component,\n * whether it provided the component directly or a registered component id. */\nexport function resolvePluginComponent(\n def: { component?: React.ComponentType<unknown>; componentId?: string },\n): React.ComponentType<unknown> | undefined {\n if (def.component) return def.component\n if (def.componentId) return getComponent(def.componentId) as React.ComponentType<unknown> | undefined\n return undefined\n}\n\ninterface ResolvePluginRuntimeOptions {\n plugins?: PluginManifest[]\n tenantPlugins?: TenantPluginBinding[]\n hasTenantBindings?: boolean\n context: PluginRuntimeContext\n}\n\nconst EMPTY_CONTEXT: PluginRuntimeContext = {\n tenant: null,\n user: null,\n currentPath: '/',\n matchedPath: '/',\n layout: 'sidebar',\n}\n\nfunction slugify(input: string): string {\n return input.toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-|-$/g, '')\n}\n\nfunction matchesRoutePattern(pattern: string, currentPath: string): boolean {\n if (pattern === currentPath) return true\n if (pattern.endsWith('/*')) {\n const base = pattern.slice(0, -2)\n return currentPath === base || currentPath.startsWith(`${base}/`)\n }\n if (pattern.endsWith('*')) return currentPath.startsWith(pattern.slice(0, -1))\n return false\n}\n\nfunction isWidgetVisible(widget: ResolvedPluginWidget, context: PluginRuntimeContext): boolean {\n if (widget.permission && context.hasPermission && !context.hasPermission(widget.permission)) return false\n const visibility: PluginWidgetVisibility | undefined = widget.visibility\n if (!visibility) return true\n\n if (visibility.layouts && !visibility.layouts.includes(context.layout)) return false\n if (visibility.roles && context.user?.role && !visibility.roles.includes(context.user.role)) return false\n if (visibility.roles && !context.user?.role) return false\n if (visibility.plans && context.tenant?.plan && !visibility.plans.includes(context.tenant.plan)) return false\n if (visibility.plans && !context.tenant?.plan) return false\n if (visibility.routes && !visibility.routes.some((p) => matchesRoutePattern(p, context.currentPath))) return false\n if (visibility.excludeRoutes?.some((p) => matchesRoutePattern(p, context.currentPath))) return false\n if (visibility.permissions?.length) {\n if (!context.hasPermission) return false\n if (!visibility.permissions.every((req) => context.hasPermission?.(req))) return false\n }\n if (visibility.when && !visibility.when(context)) return false\n return true\n}\n\nfunction normalizeSettingsTabs(plugin: PluginManifest): PluginSettingsTab[] {\n return (plugin.settings ?? []).map((entry, index) => ({\n ...entry,\n pluginId: entry.pluginId ?? plugin.id,\n order: entry.order ?? index,\n id: entry.id ?? `${plugin.id}-${slugify(entry.label)}`,\n }))\n}\n\nfunction createEmptyRuntime(context: PluginRuntimeContext = EMPTY_CONTEXT): PluginRuntime {\n return {\n context,\n plugins: [],\n activePlugins: [],\n routes: [],\n navigation: [],\n settingsTabs: [],\n widgets: [],\n dashboardWidgets: [],\n analyticsCards: [],\n onboardingPrograms: [],\n events: [],\n capabilities: [],\n aiTools: [],\n registries: new Map(),\n connectorsByHost: new Map(),\n pluginFeatures: [],\n pluginLimits: [],\n issues: [],\n }\n}\n\nexport function definePlugin<T extends PluginManifest>(plugin: T): T {\n return plugin\n}\n\nexport function resolvePluginRuntime({\n plugins = [],\n tenantPlugins = [],\n hasTenantBindings,\n context,\n}: ResolvePluginRuntimeOptions): PluginRuntime {\n if (plugins.length === 0) return createEmptyRuntime(context)\n\n const issues: PluginRuntimeIssue[] = []\n const normalizedPlugins = new Map<string, PluginManifest>()\n\n for (const plugin of plugins) {\n if (normalizedPlugins.has(plugin.id)) {\n issues.push({ type: 'duplicate_plugin', pluginId: plugin.id, message: `Plugin \"${plugin.id}\" registered more than once.` })\n continue\n }\n if (plugin.apiVersion != null && plugin.apiVersion > PLUGIN_API_VERSION) {\n issues.push({\n type: 'incompatible_api_version',\n pluginId: plugin.id,\n message: `Plugin \"${plugin.id}\" requires plugin API v${plugin.apiVersion}, but this runtime supports v${PLUGIN_API_VERSION}. Upgrade @fayz-ai/core.`,\n })\n continue\n }\n normalizedPlugins.set(plugin.id, plugin)\n }\n\n const bindings = new Map<string, TenantPluginBinding>()\n for (const b of tenantPlugins) bindings.set(b.pluginId, b)\n const bindingsAreManaged = hasTenantBindings ?? tenantPlugins.length > 0\n\n const requested = new Set<string>()\n const activationReason = new Map<string, ResolvedPluginManifest['activationReason']>()\n\n for (const plugin of normalizedPlugins.values()) {\n const binding = bindings.get(plugin.id)\n if (binding?.status === 'active') {\n requested.add(plugin.id)\n activationReason.set(plugin.id, 'tenant')\n continue\n }\n if (plugin.defaultEnabled === true || (!bindingsAreManaged && plugin.defaultEnabled !== false)) {\n requested.add(plugin.id)\n activationReason.set(plugin.id, 'default')\n }\n }\n\n const orderedIds: string[] = []\n const visiting = new Set<string>()\n const visited = new Set<string>()\n\n function visit(pluginId: string, ancestry: string[] = []): void {\n if (visited.has(pluginId)) return\n const plugin = normalizedPlugins.get(pluginId)\n if (!plugin) return\n if (visiting.has(pluginId)) {\n issues.push({ type: 'circular_dependency', pluginId, message: `Circular dependency: ${[...ancestry, pluginId].join(' -> ')}.` })\n return\n }\n visiting.add(pluginId)\n for (const depId of plugin.dependencies ?? []) {\n if (!normalizedPlugins.has(depId)) {\n issues.push({ type: 'missing_dependency', pluginId, dependencyId: depId, message: `Plugin \"${plugin.id}\" depends on missing plugin \"${depId}\".` })\n continue\n }\n if (requested.has(pluginId) && !requested.has(depId)) {\n requested.add(depId)\n activationReason.set(depId, 'dependency')\n }\n visit(depId, [...ancestry, pluginId])\n }\n visiting.delete(pluginId)\n visited.add(pluginId)\n orderedIds.push(pluginId)\n }\n\n for (const id of normalizedPlugins.keys()) visit(id)\n\n const resolvedById = new Map<string, ResolvedPluginManifest>()\n\n for (const pluginId of orderedIds) {\n const plugin = normalizedPlugins.get(pluginId)\n if (!plugin) continue\n const binding = bindings.get(plugin.id)\n const missing = (plugin.dependencies ?? []).filter((id) => !normalizedPlugins.has(id))\n const compatible = !plugin.verticalId || plugin.verticalId === context.tenant?.verticalId\n if (!compatible) {\n issues.push({ type: 'vertical_mismatch', pluginId: plugin.id, message: `Plugin \"${plugin.id}\" requires vertical \"${plugin.verticalId}\".` })\n }\n const reason = activationReason.get(plugin.id) ?? 'inactive'\n const depsReady = (plugin.dependencies ?? []).every((id) => resolvedById.get(id)?.isActive)\n const explicitlyDisabled = binding?.status === 'disabled' || binding?.status === 'removed'\n const shouldActivate = reason === 'dependency' ? true : requested.has(plugin.id) && !explicitlyDisabled\n const isActive = shouldActivate && compatible && missing.length === 0 && depsReady\n\n resolvedById.set(plugin.id, {\n ...plugin,\n status: isActive ? 'active' : (binding?.status ?? 'disabled'),\n isActive,\n activationReason: isActive ? reason : 'inactive',\n config: binding?.config ?? {},\n missingDependencies: missing,\n settingsTabs: normalizeSettingsTabs(plugin),\n widgets: plugin.widgets ?? [],\n resolvedRegistries: plugin.registries ?? [],\n resolvedAITools: plugin.aiTools ?? [],\n })\n }\n\n const resolvedPlugins = orderedIds\n .map((id) => resolvedById.get(id))\n .filter((p): p is ResolvedPluginManifest => Boolean(p))\n\n const activePlugins = resolvedPlugins.filter((p) => p.isActive)\n const routes: PluginRuntimeRoute[] = []\n const navigation: PluginNavigationEntry[] = []\n const settingsTabs: PluginSettingsTab[] = []\n const widgets: ResolvedPluginWidget[] = []\n const dashboardWidgets: ResolvedDashboardWidget[] = []\n const analyticsCards: ResolvedAnalyticsCard[] = []\n const events: ResolvedDomainEvent[] = []\n const capabilities: PluginCapability[] = []\n const aiTools: PluginAITool[] = []\n const registries = new Map<string, PluginRegistryDef[]>()\n const connectorsByHost = new Map<string, ConnectorDefinition[]>()\n const pluginFeatures: FeatureDeclaration[] = []\n const pluginLimits: LimitDeclaration[] = []\n const onboardingPrograms: ResolvedOnboardingProgram[] = []\n\n for (const plugin of activePlugins) {\n routes.push(...plugin.routes.map((r) => ({ ...r, plugin })))\n navigation.push(...plugin.navigation.map((entry, i) => ({\n ...entry,\n id: entry.id ?? `${plugin.id}:${entry.route}:${i}`,\n icon: entry.icon ?? plugin.icon,\n })))\n settingsTabs.push(...plugin.settingsTabs)\n capabilities.push(...(plugin.capabilities ?? []))\n // Os eventos herdam a identidade do plugin dono: é o que agrupa a lista de\n // automações por módulo sem cada evento repetir de quem é.\n events.push(...(plugin.events ?? []).map((e) => ({\n ...e,\n pluginId: plugin.id,\n pluginName: plugin.name,\n pluginIcon: plugin.icon,\n })))\n // Como os eventos, as tools herdam o papel do plugin dono — é o que deixa\n // um plugin declarar \"isto é trabalho de growth\" uma vez, e não por tool.\n aiTools.push(\n ...plugin.resolvedAITools.map((t) =>\n t.role || !plugin.defaultAgentRole ? t : { ...t, role: plugin.defaultAgentRole },\n ),\n )\n if (plugin.resolvedRegistries.length > 0) registries.set(plugin.id, plugin.resolvedRegistries)\n // Group each addon's connectors under the host plugin they extend.\n for (const connector of plugin.connectors ?? []) {\n const list = connectorsByHost.get(connector.hostPluginId) ?? []\n list.push(connector)\n connectorsByHost.set(connector.hostPluginId, list)\n }\n if (plugin.declaredFeatures) pluginFeatures.push(...plugin.declaredFeatures)\n if (plugin.declaredLimits) pluginLimits.push(...plugin.declaredLimits)\n // Like the events and the tools, the program inherits the plugin's identity\n // and role: a module says \"this is how my module gets launched\" once.\n if (plugin.onboarding?.program) {\n const program = plugin.onboarding.program\n onboardingPrograms.push({\n ...program,\n role: program.role ?? plugin.defaultAgentRole,\n order: program.order ?? 100,\n pluginId: plugin.id,\n pluginName: plugin.name,\n })\n }\n widgets.push(...plugin.widgets.map((w, i) => ({\n ...w,\n order: w.order ?? i,\n config: { ...plugin.config, ...(w.props ?? {}) },\n plugin,\n })))\n dashboardWidgets.push(...(plugin.dashboardWidgets ?? []).map((w, i) => ({\n ...w,\n domain: w.domain ?? plugin.id,\n order: w.defaultOrder ?? i,\n plugin,\n })))\n analyticsCards.push(...(plugin.analyticsCards ?? []).map((c, i) => ({\n ...c,\n domain: c.domain ?? plugin.id,\n order: c.dashboard?.order ?? i,\n plugin,\n })))\n }\n\n // Os cadastros entram no MESMO catálogo dos módulos: para quem consome — uma\n // automação, um webhook, a auditoria — \"cliente cadastrado\" e \"pedido pago\"\n // são a mesma espécie de coisa, e separá-los em duas listas obrigaria cada\n // consumidor a saber de qual metade veio o fato.\n events.push(...buildEntityDomainEvents(getAllEntities()))\n\n navigation.sort((a, b) => {\n const order = { main: 0, secondary: 1, settings: 2 }\n return (order[a.section] ?? 99) - (order[b.section] ?? 99) || a.position - b.position\n })\n // Sorted by `order`, but a GROUP is kept contiguous and anchored at its\n // lowest order. A plain global sort by order let two plugins interleave — and\n // a group split in half renders its heading twice, which reads as two\n // different sections that happen to share a name.\n {\n const groupAnchor = new Map<string, number>()\n for (const tab of settingsTabs) {\n if (!tab.group) continue\n const order = tab.order ?? 0\n const current = groupAnchor.get(tab.group)\n if (current === undefined || order < current) groupAnchor.set(tab.group, order)\n }\n settingsTabs.sort((a, b) => {\n const anchorA = a.group ? groupAnchor.get(a.group)! : (a.order ?? 0)\n const anchorB = b.group ? groupAnchor.get(b.group)! : (b.order ?? 0)\n if (anchorA !== anchorB) return anchorA - anchorB\n // Same anchor: ungrouped before grouped, then by the tab's own order.\n if ((a.group ?? '') !== (b.group ?? '')) return (a.group ?? '').localeCompare(b.group ?? '')\n return (a.order ?? 0) - (b.order ?? 0)\n })\n }\n widgets.sort((a, b) => a.zone !== b.zone ? a.zone.localeCompare(b.zone) : a.order - b.order)\n onboardingPrograms.sort((a, b) => a.order - b.order)\n dashboardWidgets.sort((a, b) => a.order - b.order)\n analyticsCards.sort((a, b) => a.order - b.order)\n\n return { context, plugins: resolvedPlugins, activePlugins, routes, navigation, settingsTabs, widgets, dashboardWidgets, analyticsCards, capabilities, events, aiTools, issues, registries, connectorsByHost, pluginFeatures, pluginLimits, onboardingPrograms }\n}\n\nexport function getWidgetsForZone(\n runtime: PluginRuntime,\n zone: PluginWidgetZone,\n contextOverrides?: Partial<PluginRuntimeContext>,\n): ResolvedPluginWidget[] {\n const ctx = { ...runtime.context, ...contextOverrides }\n return runtime.widgets.filter((w) => w.zone === zone && isWidgetVisible(w, ctx))\n}\n\n/**\n * Analytics cards visible to the current tenant/user.\n *\n * The report LIST wants every card the user may read; the overview wants only\n * the ones a pack placed on the grid — hence `placedOnly`, rather than two\n * registries that could drift apart.\n */\nexport function getAnalyticsCards(\n runtime: PluginRuntime,\n options: {\n domain?: string\n category?: string\n /** Only cards with a `dashboard` placement (the overview grid). */\n placedOnly?: boolean\n /** Restrict placement to one surface. Implies `placedOnly`. */\n surface?: DashboardSurface\n contextOverrides?: Partial<PluginRuntimeContext>\n } = {},\n): ResolvedAnalyticsCard[] {\n const ctx = { ...runtime.context, ...options.contextOverrides }\n const placedOnly = options.placedOnly || Boolean(options.surface)\n return runtime.analyticsCards.filter((c) => {\n if (placedOnly && !c.dashboard) return false\n if (options.surface) {\n const surfaces = c.dashboard?.surfaces ?? ['analytics']\n if (!surfaces.includes(options.surface)) return false\n }\n if (options.domain && c.domain !== options.domain) return false\n if (options.category && c.category !== options.category) return false\n if (c.verticalId && ctx.tenant?.verticalId && c.verticalId !== ctx.tenant.verticalId) return false\n if (c.permission && ctx.hasPermission && !ctx.hasPermission(c.permission)) return false\n return true\n })\n}\n\nexport function getDashboardWidgets(\n runtime: PluginRuntime,\n options: { surface: DashboardSurface; domain?: string; contextOverrides?: Partial<PluginRuntimeContext> },\n): ResolvedDashboardWidget[] {\n const ctx = { ...runtime.context, ...options.contextOverrides }\n return runtime.dashboardWidgets.filter((w) => {\n const surfaces = w.surfaces ?? ['home', 'plugin-home']\n if (!surfaces.includes(options.surface)) return false\n if (options.domain && w.domain !== options.domain) return false\n if (w.verticalId && ctx.tenant?.verticalId && w.verticalId !== ctx.tenant.verticalId) return false\n if (w.permission && ctx.hasPermission && !ctx.hasPermission(w.permission)) return false\n return true\n })\n}\n\nconst PluginRuntimeContext = React.createContext<PluginRuntime | null>(null)\nexport const PluginRuntimeProvider = PluginRuntimeContext.Provider\n\nexport function usePluginRuntime(): PluginRuntime {\n return React.useContext(PluginRuntimeContext) ?? createEmptyRuntime()\n}\n\nexport function usePluginRuntimeOptional(): PluginRuntime | null {\n return React.useContext(PluginRuntimeContext)\n}\n\n/** Connectors contributed by addon plugins that extend the given host plugin. */\nexport function useConnectorsForPlugin(hostPluginId: string): ConnectorDefinition[] {\n return usePluginRuntime().connectorsByHost.get(hostPluginId) ?? []\n}\n"]}
|
package/dist/i18n/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation } from '../chunk-
|
|
1
|
+
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation } from '../chunk-2VY5IJW7.js';
|
|
2
2
|
//# sourceMappingURL=index.js.map
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-translations.en.d.ts","sourceRoot":"","sources":["../../src/i18n/shell-translations.en.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"shell-translations.en.d.ts","sourceRoot":"","sources":["../../src/i18n/shell-translations.en.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CA2iCtD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"shell-translations.pt-br.d.ts","sourceRoot":"","sources":["../../src/i18n/shell-translations.pt-br.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"shell-translations.pt-br.d.ts","sourceRoot":"","sources":["../../src/i18n/shell-translations.pt-br.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,qBAAqB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAuiCxD,CAAA"}
|
package/dist/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export type { EntityArchetype, BaseEntity, PersonEntity, ProductEntity, ServiceE
|
|
|
4
4
|
export type { EntityDef, EntityImageConfig, FieldDef, FieldType, FieldRelation, FieldGroup, DetailTab, FormLayout, ComputedFieldValue } from './types/crud';
|
|
5
5
|
export type { PluginManifest, PluginScope, PluginStatus, ResolvedPluginManifest, PluginRuntime, PluginRuntimeContext, PluginWidgetZone, PluginWidgetDefinition, PluginNavigationEntry, PluginSettingsTab, PluginRouteDefinition, PluginAITool, AIToolMode, AIToolExecution, AgentRpcDeclaration, AIToolParameterProperty, AIToolParameters, AIToolSuggestion, PluginRegistryDef, PluginMigration, PluginDiagnostic, VerticalId, ScaffoldType, TenantPluginBinding, PluginFacet, PluginEventSubscription, DashboardWidgetDef, DashboardWidgetKind, DashboardSurface, DashboardLayoutConfig, ResolvedDashboardWidget } from './types/plugins';
|
|
6
6
|
export { WidgetZone } from './types/plugins';
|
|
7
|
+
export type { OnboardingProgramDef, OnboardingStepDef, OnboardingMove, ResolvedOnboardingProgram, TourDef, TourStopDef, } from './types/onboarding';
|
|
7
8
|
export type { AgentRole, AgentStaffDef, AgentSuggestion, AgentPitch } from './types/agents';
|
|
8
9
|
export { AGENT_ROLES } from './types/agents';
|
|
9
10
|
export type { AuthAdapter, AuthUser, AuthSession, AuthProvider } from './types/auth';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -5,12 +5,12 @@ import { eventBus, DATA_CHANGED_EVENT, resolveDataProvider } from './chunk-2ZAUJ
|
|
|
5
5
|
export { CustomFieldsError, DATA_CHANGED_EVENT, DataError, FIELDS_TABLE, attachPersistentCache, bulkCreate, bulkRemove, cacheKeyFor, cachePrefixFor, clearCustomFieldsCache, countByTenant, createArchetypeProvider, createEventBus, createFayzApiProvider, createMockProvider, dataCall, dataQuery, emitDataChanged, eventBus, getActiveUnitId, getPersistentCache, invalidateCount, isKnownMissing, isUnitMode, localList, matchesDataChange, mergeCustomFields, registerDataTelemetry, rememberIfMissing, replicaKeyFor, resetActiveUnit, resetMissingObjects, resolveCustomFields, resolveDataProvider, setActiveUnitId, setUnitMode, subscribeActiveUnit, syncReplica, toDataError, useActiveUnitId, useDataChanged, useUnitMode, validateCustomFields, withCache, withOffline } from './chunk-2ZAUJVYP.js';
|
|
6
6
|
import { getActiveTenantId, getSupabaseClientOptional } from './chunk-BCI743RH.js';
|
|
7
7
|
export { DEFAULT_CACHE_TTL, applyRangeToQuery, clearGlobalCache, createCacheStore, createSupabaseProvider, getActiveTenantId, getScopedResource, getSupabaseClientOptional, globalCache, isFilterObject, matchesRange, parseRangeFilter, setActiveTenantId, setGlobalSupabaseClient, setScopedResources, stableKey, subscribeActiveTenant, useActiveTenantId } from './chunk-BCI743RH.js';
|
|
8
|
-
import { getBlock, checkNodePlacement, getScaffold } from './chunk-
|
|
9
|
-
export { BLOCK_SETTING_TYPES, PLUGIN_API_VERSION, PluginRuntimeProvider, auditBlocks, blockRegistry, buildEntityDomainEvents, checkAgainstSchema, checkBlockConstraints, checkBlockContext, checkNodePlacement, clearExtensionPoints, clearHandles, clearLoaders, componentRegistry, dataNeedKey, defaultPropsFromSettings, defineBlock, defineExtensionPoint, defineLoader, definePlugin, describeBlock, describeBlocks, describeExtensionPoints, describeLoaders, entityEventKey, extensionAfterHooks, extensionPointRegistry, formatSchemaIssues, getAnalyticsCards, getBlock, getBlockMeta, getComponent, getDashboardWidgets, getHandle, getMetric, getPage, getPlugin, getPluginFactory, getScaffold, getWidgetsForZone, handleNameFor, handleRegistry, hasExtensionPoint, hasHandle, hasLoader, isBlockEnabledOn, isLoaderParamRef, isLoaderPropRef, listBlocks, listExtensionHandlers, listExtensionPoints, listHandles, listLoaders, listMetrics, listPluginFactories, listPlugins, loaderRegistry, metricRegistry, pageRegistry, pluginFactoryRegistry, pluginRegistry, registerBlock, registerComponent, registerExtensionHandler, registerHandle, registerMetric, registerPage, registerPlugin, registerPluginFactory, registerScaffold, repairBlockTree, resolveHandle, resolveLoader, resolvePluginComponent, resolvePluginRuntime, runEscapeValve, runExtensionPoint, scaffoldRegistry, settingsToJsonSchema, summarizeBlockAudit, unregisterExtensionHandler, useConnectorsForPlugin, usePluginRuntime, usePluginRuntimeOptional } from './chunk-
|
|
8
|
+
import { getBlock, checkNodePlacement, getScaffold } from './chunk-AOIYRUTF.js';
|
|
9
|
+
export { BLOCK_SETTING_TYPES, PLUGIN_API_VERSION, PluginRuntimeProvider, auditBlocks, blockRegistry, buildEntityDomainEvents, checkAgainstSchema, checkBlockConstraints, checkBlockContext, checkNodePlacement, clearExtensionPoints, clearHandles, clearLoaders, componentRegistry, dataNeedKey, defaultPropsFromSettings, defineBlock, defineExtensionPoint, defineLoader, definePlugin, describeBlock, describeBlocks, describeExtensionPoints, describeLoaders, entityEventKey, extensionAfterHooks, extensionPointRegistry, formatSchemaIssues, getAnalyticsCards, getBlock, getBlockMeta, getComponent, getDashboardWidgets, getHandle, getMetric, getPage, getPlugin, getPluginFactory, getScaffold, getWidgetsForZone, handleNameFor, handleRegistry, hasExtensionPoint, hasHandle, hasLoader, isBlockEnabledOn, isLoaderParamRef, isLoaderPropRef, listBlocks, listExtensionHandlers, listExtensionPoints, listHandles, listLoaders, listMetrics, listPluginFactories, listPlugins, loaderRegistry, metricRegistry, pageRegistry, pluginFactoryRegistry, pluginRegistry, registerBlock, registerComponent, registerExtensionHandler, registerHandle, registerMetric, registerPage, registerPlugin, registerPluginFactory, registerScaffold, repairBlockTree, resolveHandle, resolveLoader, resolvePluginComponent, resolvePluginRuntime, runEscapeValve, runExtensionPoint, scaffoldRegistry, settingsToJsonSchema, summarizeBlockAudit, unregisterExtensionHandler, useConnectorsForPlugin, usePluginRuntime, usePluginRuntimeOptional } from './chunk-AOIYRUTF.js';
|
|
10
10
|
export { ENTITY_FIELD_TYPES, GENERIC_ENTITY_TABLE, RESERVED_ENTITY_FIELDS, Registry, clearCustomFieldsDeclarations, clearEntityDeclarations, customFieldsRegistry, declaredCustomFields, defineCustomFields, defineEntity, describeEntities, entityAdminForm, entityDeclarationRegistry, entityRecordSchema, hasCustomFieldsDeclaration, hasEntityDeclaration, isCustomId, listEntityDeclarations, resolveEntityDeclaration, validateEntityRecordData } from './chunk-EWKX4VUM.js';
|
|
11
11
|
export { clearEntityRegistry, deriveEntityKey, getAllEntities, getEntityByKey, registerEntity } from './chunk-CU64QI4A.js';
|
|
12
|
-
import { getCurrentLocale } from './chunk-
|
|
13
|
-
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation } from './chunk-
|
|
12
|
+
import { getCurrentLocale } from './chunk-2VY5IJW7.js';
|
|
13
|
+
export { I18nProvider, coreTranslations, getCurrentLocale, mergeTranslations, preloadLocale, registerTranslations, setCurrentLocale, setLocaleStore, tl, useI18nConfig, useTranslation } from './chunk-2VY5IJW7.js';
|
|
14
14
|
export { defaultRouterAdapter, hashRouterAdapter, historyRouterAdapter, hostRouterAdapter, staticRouterAdapter, windowRouterAdapter } from './chunk-OXQGRJZT.js';
|
|
15
15
|
export { FayzRuntimeError, createFayzRuntimeClient } from './chunk-7RTUHSKY.js';
|
|
16
16
|
export { AGENT_ROLES } from './chunk-RCMFU3RZ.js';
|