@praxisui/core 9.0.5-rc.28 → 9.0.5-rc.29

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 CHANGED
@@ -253,7 +253,7 @@ export const appConfig = {
253
253
 
254
254
  Use `GlobalActionRef` and the catalog helpers when declaring or validating action payloads. The host remains responsible for registered executors and policy.
255
255
 
256
- Resource action discovery also carries an optional `execution` contract. Consumers must materialize its interaction, idempotency, correlation, resource-version, selection, outcome and refresh policies instead of inferring command behavior from labels or HTTP methods. `ResourceDiscoveryService.getActionsByResourceKey(...)` resolves the canonical `/schemas/actions?resource=...` catalog without requiring the consumer to know a resource path. A collection action may declare `resourceVersionTargetResourceKey` and `resourceVersionTargetIdField` when its `If-Match` belongs to another canonical resource, allowing a consumer to bind optimistic concurrency without deducing the target from paths or labels. `ResourceActionOpenAdapterService` projects form-based actions into Dynamic Form inputs, uses transient schema-owned command layout, keeps the materialized host inputs authoritative over saved preferences, and fails closed when a required `If-Match` version cannot be supplied or bound at runtime.
256
+ Resource action discovery also carries an optional `execution` contract. Consumers must materialize its interaction, idempotency, correlation, resource-version, selection, outcome and refresh policies instead of inferring command behavior from labels or HTTP methods. `ResourceDiscoveryService.getActionsByResourceKey(...)` resolves the canonical `/schemas/actions?resource=...` catalog without requiring the consumer to know a resource path. A collection action may declare `resourceVersionTargetResourceKey` and `resourceVersionTargetIdField` when its `If-Match` belongs to another canonical resource. `ResourceActionOpenAdapterService` then projects that exact pair into Dynamic Form runtime inputs when no version is available at open time; after the request payload is prepared, Dynamic Form reads only the declared scalar id field, resolves the exact target resource catalog, fetches its current representation and requires the response ETag before executing the command. Missing pairs, divergent catalogs, absent ids and absent ETags fail closed. This path does not deduce targets from URLs, labels, lookup display objects or action names. The adapter also uses transient schema-owned command layout and keeps materialized host inputs authoritative over saved preferences.
257
257
 
258
258
  ## Collection Export
259
259
 
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-15T13:32:21.019Z",
3
+ "generatedAt": "2026-08-16T01:02:42.425Z",
4
4
  "packageName": "@praxisui/core",
5
- "packageVersion": "9.0.5-rc.28",
5
+ "packageVersion": "9.0.5-rc.29",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 4,
@@ -15938,6 +15938,16 @@ class ResourceActionOpenAdapterService {
15938
15938
  ];
15939
15939
  return;
15940
15940
  }
15941
+ const targetResourceKey = String(execution.preconditions.resourceVersionTargetResourceKey ?? '').trim();
15942
+ const targetIdField = String(execution.preconditions.resourceVersionTargetIdField ?? '').trim();
15943
+ if (targetResourceKey || targetIdField) {
15944
+ if (!targetResourceKey || !targetIdField) {
15945
+ throw new Error(`ResourceActionOpenAdapterService requires both resourceVersionTargetResourceKey and resourceVersionTargetIdField for action "${action.id}".`);
15946
+ }
15947
+ inputs['submitResourceVersionTargetResourceKey'] = targetResourceKey;
15948
+ inputs['submitResourceVersionTargetIdField'] = targetIdField;
15949
+ return;
15950
+ }
15941
15951
  if (execution.preconditions.resourceVersion === 'REQUIRED') {
15942
15952
  throw new Error(`ResourceActionOpenAdapterService requires resourceVersion or resourceVersionBindingPath for action "${action.id}".`);
15943
15953
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@praxisui/core",
3
- "version": "9.0.5-rc.28",
3
+ "version": "9.0.5-rc.29",
4
4
  "description": "Core library for Praxis UI Workspace: types, tokens, services and utilities shared across @praxisui/* packages.",
5
5
  "peerDependencies": {
6
6
  "@angular/common": "^21.0.0",
@@ -9860,6 +9860,8 @@ interface DomainRuleTestScenarioRequest {
9860
9860
  facts: Record<string, unknown>;
9861
9861
  expectedDecision: DomainRuleDecision;
9862
9862
  expectedOutput?: unknown;
9863
+ expectedReasonCodes?: string[];
9864
+ expectedEffectIntents?: string[];
9863
9865
  status?: 'ACTIVE' | 'DISABLED';
9864
9866
  }
9865
9867
  interface DomainRuleTestScenario extends DomainRuleTestScenarioRequest {