@praxisui/core 9.0.0-beta.36 → 9.0.0-beta.38

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.
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-07-04T01:05:24.857Z",
3
+ "generatedAt": "2026-07-06T01:44:02.635Z",
4
4
  "packageName": "@praxisui/core",
5
- "packageVersion": "9.0.0-beta.36",
5
+ "packageVersion": "9.0.0-beta.38",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
- "componentCount": 3,
8
+ "componentCount": 4,
9
9
  "components": {
10
10
  "praxis-domain-catalog": {
11
11
  "id": "praxis-domain-catalog",
@@ -3388,6 +3388,140 @@
3388
3388
  }
3389
3389
  ]
3390
3390
  },
3391
+ "praxis-related-resource-outlet": {
3392
+ "id": "praxis-related-resource-outlet",
3393
+ "description": "Runtime genérico para materializar surface.relatedResource como tabela filha governada por metadata.",
3394
+ "inputs": [
3395
+ {
3396
+ "name": "surfaceId",
3397
+ "type": "string | null",
3398
+ "required": false
3399
+ },
3400
+ {
3401
+ "name": "surfaceCatalog",
3402
+ "type": "ResourceSurfaceCatalogResponse | null",
3403
+ "required": false
3404
+ },
3405
+ {
3406
+ "name": "discoverySource",
3407
+ "type": "ResourceLinkSource | null",
3408
+ "required": false
3409
+ },
3410
+ {
3411
+ "name": "parentLinks",
3412
+ "type": "RestApiLinks | RestApiResponse<unknown> | null",
3413
+ "required": false
3414
+ },
3415
+ {
3416
+ "name": "apiEndpointKey",
3417
+ "type": "ApiEndpoint | null",
3418
+ "required": false
3419
+ },
3420
+ {
3421
+ "name": "apiUrlEntry",
3422
+ "type": "ApiUrlEntry | null",
3423
+ "required": false
3424
+ },
3425
+ {
3426
+ "name": "surface",
3427
+ "type": "ResourceSurfaceCatalogItem | null",
3428
+ "required": false
3429
+ },
3430
+ {
3431
+ "name": "parentRecord",
3432
+ "type": "Record<string, unknown> | null",
3433
+ "required": false
3434
+ },
3435
+ {
3436
+ "name": "parentResourceId",
3437
+ "type": "string | number | null",
3438
+ "required": false
3439
+ },
3440
+ {
3441
+ "name": "parentResourcePath",
3442
+ "type": "string | null",
3443
+ "required": false
3444
+ },
3445
+ {
3446
+ "name": "queryContext",
3447
+ "type": "RelatedResourceQueryContext | null",
3448
+ "required": false
3449
+ },
3450
+ {
3451
+ "name": "mode",
3452
+ "type": "'inline' | 'open-action'",
3453
+ "required": false
3454
+ },
3455
+ {
3456
+ "name": "state",
3457
+ "type": "RelatedResourceResolutionState | null",
3458
+ "required": false
3459
+ },
3460
+ {
3461
+ "name": "compact",
3462
+ "type": "boolean",
3463
+ "required": false
3464
+ },
3465
+ {
3466
+ "name": "strictValidation",
3467
+ "type": "boolean",
3468
+ "required": false
3469
+ }
3470
+ ],
3471
+ "outputs": [
3472
+ {
3473
+ "name": "surfaceOpen",
3474
+ "type": "SurfaceOpenPayload",
3475
+ "required": false
3476
+ },
3477
+ {
3478
+ "name": "widgetEvent",
3479
+ "type": "WidgetEventEnvelope",
3480
+ "required": false
3481
+ },
3482
+ {
3483
+ "name": "resourceEvent",
3484
+ "type": "PraxisResourceEvent",
3485
+ "required": false
3486
+ }
3487
+ ],
3488
+ "configSchemaId": null,
3489
+ "selector": "praxis-related-resource-outlet",
3490
+ "friendlyName": "Related Resource Outlet",
3491
+ "icon": "hub",
3492
+ "tags": [
3493
+ "resource",
3494
+ "surface",
3495
+ "related-resource",
3496
+ "runtime",
3497
+ "metadata-driven"
3498
+ ],
3499
+ "lib": "@praxisui/core",
3500
+ "source": "projects/praxis-core/src/lib/surfaces/praxis-related-resource-outlet.metadata.ts",
3501
+ "exportName": "PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA",
3502
+ "chunks": [
3503
+ {
3504
+ "chunkIndex": 0,
3505
+ "chunkKind": "summary",
3506
+ "content": "Component ID: praxis-related-resource-outlet\nSelector: praxis-related-resource-outlet\nFriendly Name: Related Resource Outlet\nDescription: Runtime genérico para materializar surface.relatedResource como tabela filha governada por metadata.\nLib/Package: @praxisui/core\nTags: resource, surface, related-resource, runtime, metadata-driven\nInputs:\n - surfaceId (string | null)\n - surfaceCatalog (ResourceSurfaceCatalogResponse | null)\n - discoverySource (ResourceLinkSource | null)\n - parentLinks (RestApiLinks | RestApiResponse<unknown> | null)\n - apiEndpointKey (ApiEndpoint | null)\n - apiUrlEntry (ApiUrlEntry | null)\n - surface (ResourceSurfaceCatalogItem | null)\n - parentRecord (Record<string, unknown> | null)\n - parentResourceId (string | number | null)\n - parentResourcePath (string | null)\n - queryContext (RelatedResourceQueryContext | null)\n - mode ('inline' | 'open-action')\n - state (RelatedResourceResolutionState | null)\n - compact (boolean)\n - strictValidation (boolean)\nOutputs:\n - surfaceOpen (SurfaceOpenPayload)\n - widgetEvent (WidgetEventEnvelope)\n - resourceEvent (PraxisResourceEvent)\n",
3507
+ "sourcePointer": "praxis-ui-angular/projects/praxis-core/src/lib/surfaces/praxis-related-resource-outlet.metadata.ts",
3508
+ "contentHash": "116c99da68c5132d32f60a7ad56cd1ed8d5cb918111fffbae4e93eaed2097735",
3509
+ "sourceKind": "component_definition",
3510
+ "sourceId": "praxis-related-resource-outlet",
3511
+ "corpusVersion": "1.0.0"
3512
+ },
3513
+ {
3514
+ "chunkIndex": 1,
3515
+ "chunkKind": "recipe",
3516
+ "content": "{\n \"_comment\": \"Recipe para agentes usarem surface.relatedResource com o runtime canonico praxis-related-resource-outlet.\",\n \"_comment2\": \"O filtro pai-filho deve vir de relatedResource.childParentField; nao duplique a mesma regra em composition.links quando o outlet puder resolver.\",\n \"templateMeta\": {\n \"registryKey\": \"praxis-related-resource-outlet\",\n \"variantId\": \"inline-table-child-resource\",\n \"status\": \"public-example\",\n \"useWhen\": \"Render a related child resource from surfaceId or ResourceSurfaceCatalogItem.relatedResource without hand-writing table filters or host-specific code.\",\n \"examplePrompts\": [\n \"renderize recursos relacionados de uma linha selecionada\",\n \"crie tabela filha a partir de relatedResource\",\n \"mostrar participantes filtrados pela missao selecionada sem composition manual\"\n ]\n },\n \"platformValue\": {\n \"canonicalContract\": \"praxis-metadata-starter publishes ResourceSurfaceCatalogItem.relatedResource in the surfaces catalog.\",\n \"angularRuntime\": \"@praxisui/core discovers the requested surface by surfaceId when needed, resolves relatedResource into a SurfaceOpenPayload and materializes praxis-table through DynamicWidgetLoader.\",\n \"migrationValue\": \"Hosts keep only surfaceId plus parentRecord or parentResourceId in the page; parent-child filtering is declared once in metadata.\",\n \"agentCorpus\": \"This recipe keeps surfaceId, parentResourcePath, parentResourceId and parentRecord explicit so agents do not infer relationships from labels.\"\n },\n \"authoringGuidance\": [\n \"Use praxis-related-resource-outlet with surfaceId when the parent resource publishes item-level surfaces.\",\n \"Pass surface directly only when the host already has the ResourceSurfaceCatalogItem available.\",\n \"Pass parentRecord when the selected row is available; pass parentResourceId when only the id is available.\",\n \"Do not repeat childParentField filters in composition.links unless the page intentionally overrides queryContext.\",\n \"Keep availability fail-closed; permission-limited and not-found states should render as outlet states instead of empty tables.\",\n \"Use mode=open-action when the host owns drawer/dialog orchestration; use mode=inline for embedded child tables.\"\n ],\n \"teaches\": [\n \"surface.relatedResource\",\n \"surfaceId\",\n \"praxis-related-resource-outlet\",\n \"related-resource.childParentField\",\n \"related-resource.childResourcePath\",\n \"resourceEvent\",\n \"surfaceOpen\"\n ],\n \"page\": {\n \"layout\": {\n \"orientation\": \"columns\",\n \"columns\": 2,\n \"gap\": \"16px\"\n },\n \"widgets\": [\n {\n \"key\": \"missionParticipants\",\n \"shell\": {\n \"kind\": \"dashboard-card\",\n \"icon\": \"hub\",\n \"title\": \"Related participants\",\n \"subtitle\": \"Child table resolved from surface.relatedResource\"\n },\n \"definition\": {\n \"id\": \"praxis-related-resource-outlet\",\n \"bindingOrder\": [\n \"surfaceId\",\n \"parentRecord\",\n \"parentResourceId\",\n \"parentResourcePath\",\n \"mode\"\n ],\n \"inputs\": {\n \"mode\": \"inline\",\n \"surfaceId\": \"team\",\n \"parentResourcePath\": \"operations/missoes\",\n \"parentResourceId\": 1,\n \"parentRecord\": {\n \"id\": 1,\n \"titulo\": \"Atlantic Shield\",\n \"status\": \"PLANEJADA\"\n }\n },\n \"outputs\": {\n \"widgetEvent\": \"emit\",\n \"resourceEvent\": \"emit\",\n \"surfaceOpen\": \"emit\"\n }\n }\n }\n ]\n }\n}\n",
3517
+ "sourcePointer": "praxis-ui-angular/examples/ai-recipes/praxis-related-resource-outlet.json",
3518
+ "contentHash": "e9e842635ad7211ff2f021ebbcc1071a8a491cd5c88885525ba153a8a49223b8",
3519
+ "sourceKind": "component_definition",
3520
+ "sourceId": "praxis-related-resource-outlet",
3521
+ "corpusVersion": "1.0.0"
3522
+ }
3523
+ ]
3524
+ },
3391
3525
  "praxis-runtime-component-observation": {
3392
3526
  "id": "praxis-runtime-component-observation",
3393
3527
  "description": "Canonical runtime component observation contract for exposing active component instance grounding to agentic turns.",