@praxisui/page-builder 9.0.45 → 9.0.46
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/README.md +12 -0
- package/ai/component-registry.json +124 -63
- package/fesm2022/praxisui-page-builder.mjs +40 -22
- package/package.json +4 -4
- package/types/praxisui-page-builder.d.ts +9 -3
package/README.md
CHANGED
|
@@ -287,6 +287,8 @@ Repeated parent/resource context can be declared through `UiCompositionPlan.cont
|
|
|
287
287
|
|
|
288
288
|
Compiled links may retain `metadata.source: 'ui-composition-plan'` as explicit authoring provenance. This value is part of core's public `LinkMetadata` contract and remains distinct from `native-composition-link`, `persisted-composition-link`, and legacy migration provenance.
|
|
289
289
|
|
|
290
|
+
`bindings[].from` accepts `global-action` as the canonical continuation source for results emitted through `dynamicPage.composition.dispatch`. The authored source declares only a stable `actionId`; the runtime dispatch payload is the value delivered to state or component targets. `payload`, `payloadExpr`, `meta`, labels and result-type hints do not participate in endpoint matching and fail closed when placed on a global-action source. Those fields remain valid only for global-action targets, where they configure command dispatch. The compiler persists the source as `{ kind: 'global-action', ref: { actionId } }`, matching Core's existing runtime contract without a host adapter.
|
|
291
|
+
|
|
290
292
|
The official Employee Operations case is an executable regression for this boundary. Its first-class `*.ui-composition-plan.json` artifact expresses 22 persisted links as one `selectionSyncs` declaration, two `contextScopes` declarations and one explicit transformed binding, while compilation preserves the same 22 source/target paths, guards, transforms and policies. This reduces the wiring declarations from 22 to 4 (82%) without hiding the executable graph from runtime inspection, audit or the public JSON viewer. Context scopes are deliberately limited to direct inheritance: a value that must be wrapped or reshaped remains an explicit binding with a canonical transform.
|
|
291
293
|
|
|
292
294
|
Page-owned copy can remain compact in the authoring plan. When a `PraxisTextValue` descriptor declares only `{ key }` and the key exists in `i18n.dictionaries[fallbackLocale]`, both canonical compilers materialize that message as the descriptor's runtime `text` fallback. The persisted `WidgetPageDefinition` therefore stays portable while authors do not repeat the same fallback beside every key. Explicit `text` still wins and unknown keys remain untouched, so the compiler never invents copy.
|
|
@@ -307,6 +309,16 @@ Every official local apply of a `UiCompositionPlan` now runs a fail-closed prefl
|
|
|
307
309
|
|
|
308
310
|
`preflightUiCompositionPlan(plan, targetRegistry)` is exported by `@praxisui/page-builder` for official Dynamic Page hosts that compile plans outside `DynamicPageBuilderComponent`. Those hosts must inject their runtime `ComponentMetadataRegistry`; omitting it fails closed with `UI_COMPOSITION_TARGET_REGISTRY_REQUIRED`.
|
|
309
311
|
|
|
312
|
+
Workspace contributors can exercise this path in the reference host at
|
|
313
|
+
`/dynamic-page-lab`. Its **Certificação do UiCompositionPlan** station displays
|
|
314
|
+
the compact plan, registry-aware preflight, compiled `WidgetPageDefinition`, real
|
|
315
|
+
Dynamic Page, diagnostics, widget-event trail and sanitized runtime observation
|
|
316
|
+
without introducing another compiler or registry. The initial deterministic
|
|
317
|
+
scenario covers Table, shell, page state and a global-action target; an unknown
|
|
318
|
+
component proves fail-closed behavior. The broader certification matrix and the
|
|
319
|
+
known Page Builder limitation for a global action used as a binding source are
|
|
320
|
+
tracked in issues #430 and #431 respectively.
|
|
321
|
+
|
|
310
322
|
When a preview contains both `uiCompositionPlan` and `compiledFormPatch`, the semantic plan is the attested source for local preview. Persistence rebuilds `patch.page` from that locally materialized page so a backend patch cannot bypass the registry-aware gate. Provider readiness in this cut means that the target registry contains owner metadata with a materializable Angular component type; uniform certification of the owner providers and bootstrap recipes remains tracked by issue #392 and is not inferred through Page Builder heuristics.
|
|
311
323
|
|
|
312
324
|
Streaming apply is fail-closed. A preview is persistable only when it is the unchanged payload of an applicable terminal `result` event and its diagnostics carry the matching `streamId`, `threadId`, `turnId`, and `resultEventId`. A locally regenerated or normalized preview remains available for review, but it cannot reuse an older terminal reference or call `page-apply`; the backend must issue a new terminal result for the new patch.
|