@praxisui/core 9.0.36 → 9.0.37

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,8 +1,8 @@
1
1
  {
2
2
  "schemaVersion": "1.0.0",
3
- "generatedAt": "2026-08-29T20:24:51.350Z",
3
+ "generatedAt": "2026-08-30T00:46:55.066Z",
4
4
  "packageName": "@praxisui/core",
5
- "packageVersion": "9.0.36",
5
+ "packageVersion": "9.0.37",
6
6
  "sourceRegistry": "praxis-component-registry-ingestion",
7
7
  "sourceRegistryVersion": "1.0.0",
8
8
  "componentCount": 4,
@@ -5101,8 +5101,593 @@
5101
5101
  }
5102
5102
  }
5103
5103
  ],
5104
+ "configEditor": {
5105
+ "component": "[ref:PraxisRelatedResourceOutletConfigEditorComponent]",
5106
+ "title": "Related resource presentation"
5107
+ },
5108
+ "authoringManifestRef": {
5109
+ "componentId": "praxis-related-resource-outlet",
5110
+ "version": "1.0.0",
5111
+ "source": "PRAXIS_RELATED_RESOURCE_OUTLET_AUTHORING_MANIFEST"
5112
+ },
5104
5113
  "source": "projects/praxis-core/src/lib/surfaces/praxis-related-resource-outlet.metadata.ts",
5105
5114
  "exportName": "PRAXIS_RELATED_RESOURCE_OUTLET_COMPONENT_METADATA",
5115
+ "authoringManifest": {
5116
+ "schemaVersion": "1.0.0",
5117
+ "componentId": "praxis-related-resource-outlet",
5118
+ "ownerPackage": "@praxisui/core",
5119
+ "configSchemaId": "PraxisRelatedResourceOutletPresentationInputs",
5120
+ "manifestVersion": "1.0.0",
5121
+ "runtimeInputs": [
5122
+ {
5123
+ "name": "title",
5124
+ "type": "string | null",
5125
+ "description": "Optional visual title override."
5126
+ },
5127
+ {
5128
+ "name": "subtitle",
5129
+ "type": "string | null",
5130
+ "description": "Optional visual subtitle override."
5131
+ },
5132
+ {
5133
+ "name": "icon",
5134
+ "type": "string | null",
5135
+ "description": "Optional visual icon override."
5136
+ },
5137
+ {
5138
+ "name": "mode",
5139
+ "type": "'inline' | 'open-action'",
5140
+ "allowedValues": [
5141
+ "inline",
5142
+ "open-action"
5143
+ ],
5144
+ "description": "Outlet display mode."
5145
+ },
5146
+ {
5147
+ "name": "presentation",
5148
+ "type": "'drawer' | 'modal'",
5149
+ "allowedValues": [
5150
+ "drawer",
5151
+ "modal"
5152
+ ],
5153
+ "description": "Host-mediated presentation used by open-action mode."
5154
+ },
5155
+ {
5156
+ "name": "compact",
5157
+ "type": "boolean",
5158
+ "allowedValues": [
5159
+ true,
5160
+ false
5161
+ ],
5162
+ "description": "Compact visual density for non-materialized states."
5163
+ },
5164
+ {
5165
+ "name": "emptyState",
5166
+ "type": "PraxisRelatedResourceOutletEmptyStatePresentation",
5167
+ "description": "Closed presentation-only empty-state subset. Actions, templates and contexts are not authorable here."
5168
+ }
5169
+ ],
5170
+ "editableTargets": [
5171
+ {
5172
+ "kind": "relatedResourceOutletPresentation",
5173
+ "resolver": "component-config",
5174
+ "description": "Persisted visual shell inputs owned by the Related Resource Outlet config editor."
5175
+ },
5176
+ {
5177
+ "kind": "relatedResourceOutletEmptyStatePresentation",
5178
+ "resolver": "component-config",
5179
+ "description": "Persisted presentation-only emptyState subset; opaque empty-state fields are preserved unchanged."
5180
+ }
5181
+ ],
5182
+ "operations": [
5183
+ {
5184
+ "operationId": "related-resource-outlet.presentation.set-title",
5185
+ "title": "Set related-resource title",
5186
+ "description": "Sets only the persisted visual title; relationship metadata and runtime context remain unchanged.",
5187
+ "scope": "global",
5188
+ "targetKind": "relatedResourceOutletPresentation",
5189
+ "target": {
5190
+ "kind": "relatedResourceOutletPresentation",
5191
+ "resolver": "component-config",
5192
+ "ambiguityPolicy": "fail",
5193
+ "required": false
5194
+ },
5195
+ "inputSchema": {
5196
+ "type": "object",
5197
+ "additionalProperties": false,
5198
+ "required": [
5199
+ "value"
5200
+ ],
5201
+ "properties": {
5202
+ "value": {
5203
+ "oneOf": [
5204
+ {
5205
+ "type": "string"
5206
+ },
5207
+ {
5208
+ "type": "null"
5209
+ }
5210
+ ]
5211
+ }
5212
+ }
5213
+ },
5214
+ "effects": [
5215
+ {
5216
+ "kind": "set-value",
5217
+ "path": "title",
5218
+ "inputPath": "value"
5219
+ }
5220
+ ],
5221
+ "destructive": false,
5222
+ "requiresConfirmation": false,
5223
+ "validators": [
5224
+ "component-config-editor-respected",
5225
+ "editor-round-trip-preserve"
5226
+ ],
5227
+ "affectedPaths": [
5228
+ "title"
5229
+ ],
5230
+ "submissionImpact": "visual-only",
5231
+ "preconditions": [
5232
+ "component-config-loaded"
5233
+ ]
5234
+ },
5235
+ {
5236
+ "operationId": "related-resource-outlet.presentation.set-subtitle",
5237
+ "title": "Set related-resource subtitle",
5238
+ "description": "Sets only the persisted visual subtitle; relationship metadata and runtime context remain unchanged.",
5239
+ "scope": "global",
5240
+ "targetKind": "relatedResourceOutletPresentation",
5241
+ "target": {
5242
+ "kind": "relatedResourceOutletPresentation",
5243
+ "resolver": "component-config",
5244
+ "ambiguityPolicy": "fail",
5245
+ "required": false
5246
+ },
5247
+ "inputSchema": {
5248
+ "type": "object",
5249
+ "additionalProperties": false,
5250
+ "required": [
5251
+ "value"
5252
+ ],
5253
+ "properties": {
5254
+ "value": {
5255
+ "oneOf": [
5256
+ {
5257
+ "type": "string"
5258
+ },
5259
+ {
5260
+ "type": "null"
5261
+ }
5262
+ ]
5263
+ }
5264
+ }
5265
+ },
5266
+ "effects": [
5267
+ {
5268
+ "kind": "set-value",
5269
+ "path": "subtitle",
5270
+ "inputPath": "value"
5271
+ }
5272
+ ],
5273
+ "destructive": false,
5274
+ "requiresConfirmation": false,
5275
+ "validators": [
5276
+ "component-config-editor-respected",
5277
+ "editor-round-trip-preserve"
5278
+ ],
5279
+ "affectedPaths": [
5280
+ "subtitle"
5281
+ ],
5282
+ "submissionImpact": "visual-only",
5283
+ "preconditions": [
5284
+ "component-config-loaded"
5285
+ ]
5286
+ },
5287
+ {
5288
+ "operationId": "related-resource-outlet.presentation.set-icon",
5289
+ "title": "Set related-resource icon",
5290
+ "description": "Sets only the persisted visual icon; relationship metadata and runtime context remain unchanged.",
5291
+ "scope": "global",
5292
+ "targetKind": "relatedResourceOutletPresentation",
5293
+ "target": {
5294
+ "kind": "relatedResourceOutletPresentation",
5295
+ "resolver": "component-config",
5296
+ "ambiguityPolicy": "fail",
5297
+ "required": false
5298
+ },
5299
+ "inputSchema": {
5300
+ "type": "object",
5301
+ "additionalProperties": false,
5302
+ "required": [
5303
+ "value"
5304
+ ],
5305
+ "properties": {
5306
+ "value": {
5307
+ "oneOf": [
5308
+ {
5309
+ "type": "string"
5310
+ },
5311
+ {
5312
+ "type": "null"
5313
+ }
5314
+ ]
5315
+ }
5316
+ }
5317
+ },
5318
+ "effects": [
5319
+ {
5320
+ "kind": "set-value",
5321
+ "path": "icon",
5322
+ "inputPath": "value"
5323
+ }
5324
+ ],
5325
+ "destructive": false,
5326
+ "requiresConfirmation": false,
5327
+ "validators": [
5328
+ "component-config-editor-respected",
5329
+ "editor-round-trip-preserve"
5330
+ ],
5331
+ "affectedPaths": [
5332
+ "icon"
5333
+ ],
5334
+ "submissionImpact": "visual-only",
5335
+ "preconditions": [
5336
+ "component-config-loaded"
5337
+ ]
5338
+ },
5339
+ {
5340
+ "operationId": "related-resource-outlet.presentation.set-mode",
5341
+ "title": "Set related-resource display mode",
5342
+ "description": "Selects inline rendering or a host-mediated open action without changing the relationship or its operation.",
5343
+ "scope": "global",
5344
+ "targetKind": "relatedResourceOutletPresentation",
5345
+ "target": {
5346
+ "kind": "relatedResourceOutletPresentation",
5347
+ "resolver": "component-config",
5348
+ "ambiguityPolicy": "fail",
5349
+ "required": false
5350
+ },
5351
+ "inputSchema": {
5352
+ "type": "object",
5353
+ "additionalProperties": false,
5354
+ "required": [
5355
+ "value"
5356
+ ],
5357
+ "properties": {
5358
+ "value": {
5359
+ "enum": [
5360
+ "inline",
5361
+ "open-action"
5362
+ ]
5363
+ }
5364
+ }
5365
+ },
5366
+ "effects": [
5367
+ {
5368
+ "kind": "set-value",
5369
+ "path": "mode",
5370
+ "inputPath": "value"
5371
+ }
5372
+ ],
5373
+ "destructive": false,
5374
+ "requiresConfirmation": false,
5375
+ "validators": [
5376
+ "component-config-editor-respected",
5377
+ "editor-round-trip-preserve"
5378
+ ],
5379
+ "affectedPaths": [
5380
+ "mode"
5381
+ ],
5382
+ "submissionImpact": "visual-only",
5383
+ "preconditions": [
5384
+ "component-config-loaded"
5385
+ ]
5386
+ },
5387
+ {
5388
+ "operationId": "related-resource-outlet.presentation.set-open-presentation",
5389
+ "title": "Set related-resource open presentation",
5390
+ "description": "Selects drawer or modal for the host-mediated open payload without changing target resource semantics.",
5391
+ "scope": "global",
5392
+ "targetKind": "relatedResourceOutletPresentation",
5393
+ "target": {
5394
+ "kind": "relatedResourceOutletPresentation",
5395
+ "resolver": "component-config",
5396
+ "ambiguityPolicy": "fail",
5397
+ "required": false
5398
+ },
5399
+ "inputSchema": {
5400
+ "type": "object",
5401
+ "additionalProperties": false,
5402
+ "required": [
5403
+ "value"
5404
+ ],
5405
+ "properties": {
5406
+ "value": {
5407
+ "enum": [
5408
+ "drawer",
5409
+ "modal"
5410
+ ]
5411
+ }
5412
+ }
5413
+ },
5414
+ "effects": [
5415
+ {
5416
+ "kind": "set-value",
5417
+ "path": "presentation",
5418
+ "inputPath": "value"
5419
+ }
5420
+ ],
5421
+ "destructive": false,
5422
+ "requiresConfirmation": false,
5423
+ "validators": [
5424
+ "component-config-editor-respected",
5425
+ "editor-round-trip-preserve"
5426
+ ],
5427
+ "affectedPaths": [
5428
+ "presentation"
5429
+ ],
5430
+ "submissionImpact": "visual-only",
5431
+ "preconditions": [
5432
+ "component-config-loaded"
5433
+ ]
5434
+ },
5435
+ {
5436
+ "operationId": "related-resource-outlet.presentation.set-compact",
5437
+ "title": "Set compact related-resource states",
5438
+ "description": "Changes only the visual density of non-materialized outlet states.",
5439
+ "scope": "global",
5440
+ "targetKind": "relatedResourceOutletPresentation",
5441
+ "target": {
5442
+ "kind": "relatedResourceOutletPresentation",
5443
+ "resolver": "component-config",
5444
+ "ambiguityPolicy": "fail",
5445
+ "required": false
5446
+ },
5447
+ "inputSchema": {
5448
+ "type": "object",
5449
+ "additionalProperties": false,
5450
+ "required": [
5451
+ "value"
5452
+ ],
5453
+ "properties": {
5454
+ "value": {
5455
+ "type": "boolean"
5456
+ }
5457
+ }
5458
+ },
5459
+ "effects": [
5460
+ {
5461
+ "kind": "set-value",
5462
+ "path": "compact",
5463
+ "inputPath": "value"
5464
+ }
5465
+ ],
5466
+ "destructive": false,
5467
+ "requiresConfirmation": false,
5468
+ "validators": [
5469
+ "component-config-editor-respected",
5470
+ "editor-round-trip-preserve"
5471
+ ],
5472
+ "affectedPaths": [
5473
+ "compact"
5474
+ ],
5475
+ "submissionImpact": "visual-only",
5476
+ "preconditions": [
5477
+ "component-config-loaded"
5478
+ ]
5479
+ },
5480
+ {
5481
+ "operationId": "related-resource-outlet.presentation.configure-empty-state",
5482
+ "title": "Configure related-resource empty-state presentation",
5483
+ "description": "Merges only the closed presentation subset; actions, contexts, images, templates and unknown fields remain opaque.",
5484
+ "scope": "global",
5485
+ "targetKind": "relatedResourceOutletEmptyStatePresentation",
5486
+ "target": {
5487
+ "kind": "relatedResourceOutletEmptyStatePresentation",
5488
+ "resolver": "component-config",
5489
+ "ambiguityPolicy": "fail",
5490
+ "required": false
5491
+ },
5492
+ "inputSchema": {
5493
+ "type": "object",
5494
+ "additionalProperties": false,
5495
+ "minProperties": 1,
5496
+ "properties": {
5497
+ "title": {
5498
+ "oneOf": [
5499
+ {
5500
+ "type": "string"
5501
+ },
5502
+ {
5503
+ "type": "null"
5504
+ }
5505
+ ]
5506
+ },
5507
+ "message": {
5508
+ "oneOf": [
5509
+ {
5510
+ "type": "string"
5511
+ },
5512
+ {
5513
+ "type": "null"
5514
+ }
5515
+ ]
5516
+ },
5517
+ "description": {
5518
+ "oneOf": [
5519
+ {
5520
+ "type": "string"
5521
+ },
5522
+ {
5523
+ "type": "null"
5524
+ }
5525
+ ]
5526
+ },
5527
+ "icon": {
5528
+ "oneOf": [
5529
+ {
5530
+ "type": "string"
5531
+ },
5532
+ {
5533
+ "type": "null"
5534
+ }
5535
+ ]
5536
+ },
5537
+ "tone": {
5538
+ "oneOf": [
5539
+ {
5540
+ "enum": [
5541
+ "neutral",
5542
+ "primary",
5543
+ "secondary"
5544
+ ]
5545
+ },
5546
+ {
5547
+ "type": "null"
5548
+ }
5549
+ ]
5550
+ },
5551
+ "variant": {
5552
+ "oneOf": [
5553
+ {
5554
+ "enum": [
5555
+ "card",
5556
+ "inline",
5557
+ "panel",
5558
+ "transparent"
5559
+ ]
5560
+ },
5561
+ {
5562
+ "type": "null"
5563
+ }
5564
+ ]
5565
+ },
5566
+ "alignment": {
5567
+ "oneOf": [
5568
+ {
5569
+ "enum": [
5570
+ "start",
5571
+ "center"
5572
+ ]
5573
+ },
5574
+ {
5575
+ "type": "null"
5576
+ }
5577
+ ]
5578
+ },
5579
+ "density": {
5580
+ "oneOf": [
5581
+ {
5582
+ "enum": [
5583
+ "compact",
5584
+ "comfortable"
5585
+ ]
5586
+ },
5587
+ {
5588
+ "type": "null"
5589
+ }
5590
+ ]
5591
+ },
5592
+ "iconContainer": {
5593
+ "oneOf": [
5594
+ {
5595
+ "enum": [
5596
+ "none",
5597
+ "circle",
5598
+ "soft"
5599
+ ]
5600
+ },
5601
+ {
5602
+ "type": "null"
5603
+ }
5604
+ ]
5605
+ }
5606
+ }
5607
+ },
5608
+ "effects": [
5609
+ {
5610
+ "kind": "merge-object",
5611
+ "path": "emptyState"
5612
+ }
5613
+ ],
5614
+ "destructive": false,
5615
+ "requiresConfirmation": false,
5616
+ "validators": [
5617
+ "component-config-editor-respected",
5618
+ "editor-round-trip-preserve"
5619
+ ],
5620
+ "affectedPaths": [
5621
+ "emptyState.title",
5622
+ "emptyState.message",
5623
+ "emptyState.description",
5624
+ "emptyState.icon",
5625
+ "emptyState.tone",
5626
+ "emptyState.variant",
5627
+ "emptyState.alignment",
5628
+ "emptyState.density",
5629
+ "emptyState.iconContainer"
5630
+ ],
5631
+ "submissionImpact": "visual-only",
5632
+ "preconditions": [
5633
+ "component-config-loaded"
5634
+ ]
5635
+ }
5636
+ ],
5637
+ "validators": [
5638
+ {
5639
+ "validatorId": "component-config-editor-respected",
5640
+ "level": "error",
5641
+ "code": "RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED",
5642
+ "description": "Only paths owned by the published config editor may be authored."
5643
+ },
5644
+ {
5645
+ "validatorId": "editor-round-trip-preserve",
5646
+ "level": "error",
5647
+ "code": "RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE",
5648
+ "description": "Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift."
5649
+ }
5650
+ ],
5651
+ "roundTripRequirements": [
5652
+ "Opening the editor must never materialize runtime inputs or mutate the persisted widget definition.",
5653
+ "Apply, Save, Reset and Reopen must preserve every input outside the presentation-only editor boundary byte-for-byte.",
5654
+ "parentResourceId, surfaceId, surface, parentRecord, queryContext, state, relationship semantics and tableConfig are never authorable by this manifest.",
5655
+ "Unknown root inputs and unknown or behavior-bearing emptyState fields remain opaque and are preserved unchanged."
5656
+ ],
5657
+ "examples": [
5658
+ {
5659
+ "id": "set-related-resource-shell",
5660
+ "request": "Show the related participants inline with the title Participants and compact states.",
5661
+ "operationId": "related-resource-outlet.presentation.set-title",
5662
+ "params": {
5663
+ "value": "Participants"
5664
+ },
5665
+ "isPositive": true
5666
+ },
5667
+ {
5668
+ "id": "set-related-resource-empty-state-copy",
5669
+ "request": "Use No participants yet as the empty-state title.",
5670
+ "operationId": "related-resource-outlet.presentation.configure-empty-state",
5671
+ "params": {
5672
+ "title": "No participants yet"
5673
+ },
5674
+ "isPositive": true
5675
+ },
5676
+ {
5677
+ "id": "reject-related-resource-relationship-authoring",
5678
+ "request": "Change the child resource path, parent field, filter operation and tableConfig from this outlet editor.",
5679
+ "operationId": "related-resource-outlet.presentation.configure-empty-state",
5680
+ "params": {
5681
+ "childResourcePath": "operations/participants",
5682
+ "childParentField": "missionId",
5683
+ "tableConfig": {
5684
+ "columns": []
5685
+ }
5686
+ },
5687
+ "isPositive": false
5688
+ }
5689
+ ]
5690
+ },
5106
5691
  "chunks": [
5107
5692
  {
5108
5693
  "chunkIndex": 0,
@@ -5116,10 +5701,150 @@
5116
5701
  },
5117
5702
  {
5118
5703
  "chunkIndex": 1,
5704
+ "chunkKind": "authoring_manifest",
5705
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-title\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set related-resource title Sets only the persisted visual title; relationship metadata and runtime context remain unchanged. Effects: set-value. Show the related participants inline with the title Participants and compact states.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"title\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-related-resource-shell\",\"request\":\"Show the related participants inline with the title Participants and compact states.\",\"operationId\":\"related-resource-outlet.presentation.set-title\",\"params\":{\"value\":\"Participants\"},\"isPositive\":true}],\"negativeExamples\":[]}",
5706
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5707
+ "contentHash": "8278420c9c2c775062a1a5a83cf7349cdf6916dbfe85e8f7c0340677d88bf5f1",
5708
+ "sourceKind": "component_definition",
5709
+ "sourceId": "praxis-related-resource-outlet",
5710
+ "corpusVersion": "1.0.0"
5711
+ },
5712
+ {
5713
+ "chunkIndex": 2,
5714
+ "chunkKind": "authoring_manifest",
5715
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-subtitle\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set related-resource subtitle Sets only the persisted visual subtitle; relationship metadata and runtime context remain unchanged. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"subtitle\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
5716
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5717
+ "contentHash": "d6960b6c40aed34d2e86ea82d02010d41e2f528c3cbda1e4354fb1788f060659",
5718
+ "sourceKind": "component_definition",
5719
+ "sourceId": "praxis-related-resource-outlet",
5720
+ "corpusVersion": "1.0.0"
5721
+ },
5722
+ {
5723
+ "chunkIndex": 3,
5724
+ "chunkKind": "authoring_manifest",
5725
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-icon\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set related-resource icon Sets only the persisted visual icon; relationship metadata and runtime context remain unchanged. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"icon\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
5726
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5727
+ "contentHash": "e551d19b92f6f283a31451f405d2b34dfc8bdd94b8b7e16cdec30f3ddbd422dc",
5728
+ "sourceKind": "component_definition",
5729
+ "sourceId": "praxis-related-resource-outlet",
5730
+ "corpusVersion": "1.0.0"
5731
+ },
5732
+ {
5733
+ "chunkIndex": 4,
5734
+ "chunkKind": "authoring_manifest",
5735
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-mode\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set related-resource display mode Selects inline rendering or a host-mediated open action without changing the relationship or its operation. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\",\"inline\",\"open-action\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"mode\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
5736
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5737
+ "contentHash": "641b896f9dec24ffe0140af2f7e7622b0ed453919ad66e06af19c7625b751551",
5738
+ "sourceKind": "component_definition",
5739
+ "sourceId": "praxis-related-resource-outlet",
5740
+ "corpusVersion": "1.0.0"
5741
+ },
5742
+ {
5743
+ "chunkIndex": 5,
5744
+ "chunkKind": "authoring_manifest",
5745
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-open-presentation\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set related-resource open presentation Selects drawer or modal for the host-mediated open payload without changing target resource semantics. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\",\"drawer\",\"modal\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"presentation\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
5746
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5747
+ "contentHash": "fc2317046325aec88d643633f18be1535f244cc41d80a3c06fdfb88eb46bbd10",
5748
+ "sourceKind": "component_definition",
5749
+ "sourceId": "praxis-related-resource-outlet",
5750
+ "corpusVersion": "1.0.0"
5751
+ },
5752
+ {
5753
+ "chunkIndex": 6,
5754
+ "chunkKind": "authoring_manifest",
5755
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.set-compact\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set compact related-resource states Changes only the visual density of non-materialized outlet states. Effects: set-value.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[\"value\"],\"properties\":[\"value\"],\"semanticTerms\":[\"value\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"compact\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
5756
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5757
+ "contentHash": "c9edbf623be77d3d5d9d078aefb035391ff593b32e6392811308514c393c6246",
5758
+ "sourceKind": "component_definition",
5759
+ "sourceId": "praxis-related-resource-outlet",
5760
+ "corpusVersion": "1.0.0"
5761
+ },
5762
+ {
5763
+ "chunkIndex": 7,
5764
+ "chunkKind": "authoring_manifest",
5765
+ "content": "{\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure related-resource empty-state presentation Merges only the closed presentation subset; actions, contexts, images, templates and unknown fields remain opaque. Effects: merge-object. Use No participants yet as the empty-state title. Change the child resource path, parent field, filter operation and tableConfig from this outlet editor.\",\"scope\":\"global\",\"target\":{\"kind\":\"relatedResourceOutletEmptyStatePresentation\",\"resolver\":\"component-config\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"title\",\"message\",\"description\",\"icon\",\"tone\",\"variant\",\"alignment\",\"density\",\"iconContainer\"],\"semanticTerms\":[\"title\",\"message\",\"description\",\"icon\",\"tone\",\"variant\",\"alignment\",\"density\",\"iconContainer\",\"neutral\",\"primary\",\"secondary\",\"card\",\"inline\",\"panel\",\"transparent\",\"start\",\"center\",\"compact\",\"comfortable\",\"none\",\"circle\",\"soft\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"emptyState.title\",\"emptyState.message\",\"emptyState.description\",\"emptyState.icon\",\"emptyState.tone\",\"emptyState.variant\",\"emptyState.alignment\",\"emptyState.density\",\"emptyState.iconContainer\"],\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}],\"preconditions\":[\"component-config-loaded\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-related-resource-empty-state-copy\",\"request\":\"Use No participants yet as the empty-state title.\",\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"params\":{\"title\":\"No participants yet\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-related-resource-relationship-authoring\",\"request\":\"Change the child resource path, parent field, filter operation and tableConfig from this outlet editor.\",\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"params\":{\"childResourcePath\":\"operations/participants\",\"childParentField\":\"missionId\",\"tableConfig\":{\"columns\":[]}},\"isPositive\":false}]}",
5766
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5767
+ "contentHash": "dc007310376360c368a9ca658e05a65d99295220b958a6c0d9d448ea5c30ce77",
5768
+ "sourceKind": "component_definition",
5769
+ "sourceId": "praxis-related-resource-outlet",
5770
+ "corpusVersion": "1.0.0"
5771
+ },
5772
+ {
5773
+ "chunkIndex": 8,
5774
+ "chunkKind": "authoring_manifest",
5775
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"identity\"}",
5776
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5777
+ "contentHash": "6b5571568c817ab7c022d9e2f2995454bc0f44a81be0477931e025eda91da3b5",
5778
+ "sourceKind": "component_definition",
5779
+ "sourceId": "praxis-related-resource-outlet",
5780
+ "corpusVersion": "1.0.0"
5781
+ },
5782
+ {
5783
+ "chunkIndex": 9,
5784
+ "chunkKind": "authoring_manifest",
5785
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"title\",\"type\":\"string | null\",\"description\":\"Optional visual title override.\"},{\"name\":\"subtitle\",\"type\":\"string | null\",\"description\":\"Optional visual subtitle override.\"},{\"name\":\"icon\",\"type\":\"string | null\",\"description\":\"Optional visual icon override.\"},{\"name\":\"mode\",\"type\":\"'inline' | 'open-action'\",\"allowedValues\":[\"inline\",\"open-action\"],\"description\":\"Outlet display mode.\"},{\"name\":\"presentation\",\"type\":\"'drawer' | 'modal'\",\"allowedValues\":[\"drawer\",\"modal\"],\"description\":\"Host-mediated presentation used by open-action mode.\"},{\"name\":\"compact\",\"type\":\"boolean\",\"allowedValues\":[true,false],\"description\":\"Compact visual density for non-materialized states.\"},{\"name\":\"emptyState\",\"type\":\"PraxisRelatedResourceOutletEmptyStatePresentation\",\"description\":\"Closed presentation-only empty-state subset. Actions, templates and contexts are not authorable here.\"}]}",
5786
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5787
+ "contentHash": "141f4c37757d6130f4fcde81694c64c2282779d180a600de6d206b57cab24d84",
5788
+ "sourceKind": "component_definition",
5789
+ "sourceId": "praxis-related-resource-outlet",
5790
+ "corpusVersion": "1.0.0"
5791
+ },
5792
+ {
5793
+ "chunkIndex": 10,
5794
+ "chunkKind": "authoring_manifest",
5795
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"description\":\"Persisted visual shell inputs owned by the Related Resource Outlet config editor.\"},{\"kind\":\"relatedResourceOutletEmptyStatePresentation\",\"resolver\":\"component-config\",\"description\":\"Persisted presentation-only emptyState subset; opaque empty-state fields are preserved unchanged.\"}]}",
5796
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5797
+ "contentHash": "d6e859708fc704d82fe5ac8adff7f29b13163cc180e26e7a3b0d58f5a5eda88c",
5798
+ "sourceKind": "component_definition",
5799
+ "sourceId": "praxis-related-resource-outlet",
5800
+ "corpusVersion": "1.0.0"
5801
+ },
5802
+ {
5803
+ "chunkIndex": 11,
5804
+ "chunkKind": "authoring_manifest",
5805
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"related-resource-outlet.presentation.set-title\",\"title\":\"Set related-resource title\",\"description\":\"Sets only the persisted visual title; relationship metadata and runtime context remain unchanged.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"title\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"title\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.set-subtitle\",\"title\":\"Set related-resource subtitle\",\"description\":\"Sets only the persisted visual subtitle; relationship metadata and runtime context remain unchanged.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"subtitle\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"subtitle\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.set-icon\",\"title\":\"Set related-resource icon\",\"description\":\"Sets only the persisted visual icon; relationship metadata and runtime context remain unchanged.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"icon\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"icon\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.set-mode\",\"title\":\"Set related-resource display mode\",\"description\":\"Selects inline rendering or a host-mediated open action without changing the relationship or its operation.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"enum\":[\"inline\",\"open-action\"]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"mode\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"mode\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.set-open-presentation\",\"title\":\"Set related-resource open presentation\",\"description\":\"Selects drawer or modal for the host-mediated open payload without changing target resource semantics.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"enum\":[\"drawer\",\"modal\"]}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"presentation\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"presentation\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.set-compact\",\"title\":\"Set compact related-resource states\",\"description\":\"Changes only the visual density of non-materialized outlet states.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletPresentation\",\"target\":{\"kind\":\"relatedResourceOutletPresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"required\":[\"value\"],\"properties\":{\"value\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"compact\",\"inputPath\":\"value\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"compact\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]},{\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"title\":\"Configure related-resource empty-state presentation\",\"description\":\"Merges only the closed presentation subset; actions, contexts, images, templates and unknown fields remain opaque.\",\"scope\":\"global\",\"targetKind\":\"relatedResourceOutletEmptyStatePresentation\",\"target\":{\"kind\":\"relatedResourceOutletEmptyStatePresentation\",\"resolver\":\"component-config\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"additionalProperties\":false,\"minProperties\":1,\"properties\":{\"title\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]},\"message\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]},\"description\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]},\"icon\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"null\"}]},\"tone\":{\"oneOf\":[{\"enum\":[\"neutral\",\"primary\",\"secondary\"]},{\"type\":\"null\"}]},\"variant\":{\"oneOf\":[{\"enum\":[\"card\",\"inline\",\"panel\",\"transparent\"]},{\"type\":\"null\"}]},\"alignment\":{\"oneOf\":[{\"enum\":[\"start\",\"center\"]},{\"type\":\"null\"}]},\"density\":{\"oneOf\":[{\"enum\":[\"compact\",\"comfortable\"]},{\"type\":\"null\"}]},\"iconContainer\":{\"oneOf\":[{\"enum\":[\"none\",\"circle\",\"soft\"]},{\"type\":\"null\"}]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"emptyState\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"component-config-editor-respected\",\"editor-round-trip-preserve\"],\"affectedPaths\":[\"emptyState.title\",\"emptyState.message\",\"emptyState.description\",\"emptyState.icon\",\"emptyState.tone\",\"emptyState.variant\",\"emptyState.alignment\",\"emptyState.density\",\"emptyState.iconContainer\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"component-config-loaded\"]}]}",
5806
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5807
+ "contentHash": "82326b632ac4e0f138cb68b3318a88b5e1a0d0dab267adea9c58af61857569eb",
5808
+ "sourceKind": "component_definition",
5809
+ "sourceId": "praxis-related-resource-outlet",
5810
+ "corpusVersion": "1.0.0"
5811
+ },
5812
+ {
5813
+ "chunkIndex": 12,
5814
+ "chunkKind": "authoring_manifest",
5815
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"component-config-editor-respected\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_CONFIG_EDITOR_RESPECTED\",\"description\":\"Only paths owned by the published config editor may be authored.\"},{\"validatorId\":\"editor-round-trip-preserve\",\"level\":\"error\",\"code\":\"RELATED_RESOURCE_OUTLET_EDITOR_ROUND_TRIP_PRESERVE\",\"description\":\"Save and reopen must preserve runtime, relationship, Table-owned and unknown persisted inputs without drift.\"}]}",
5816
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5817
+ "contentHash": "d0fb0a87aa8ef98b8291757354fb9fff9f6b4f105c64e2b70b3191e658dc6a63",
5818
+ "sourceKind": "component_definition",
5819
+ "sourceId": "praxis-related-resource-outlet",
5820
+ "corpusVersion": "1.0.0"
5821
+ },
5822
+ {
5823
+ "chunkIndex": 13,
5824
+ "chunkKind": "authoring_manifest",
5825
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"Opening the editor must never materialize runtime inputs or mutate the persisted widget definition.\",\"Apply, Save, Reset and Reopen must preserve every input outside the presentation-only editor boundary byte-for-byte.\",\"parentResourceId, surfaceId, surface, parentRecord, queryContext, state, relationship semantics and tableConfig are never authorable by this manifest.\",\"Unknown root inputs and unknown or behavior-bearing emptyState fields remain opaque and are preserved unchanged.\"]}",
5826
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5827
+ "contentHash": "4092810a04c004443c220baef928bcf380c006cea605819dff49bc5450032020",
5828
+ "sourceKind": "component_definition",
5829
+ "sourceId": "praxis-related-resource-outlet",
5830
+ "corpusVersion": "1.0.0"
5831
+ },
5832
+ {
5833
+ "chunkIndex": 14,
5834
+ "chunkKind": "authoring_manifest",
5835
+ "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-related-resource-outlet\",\"ownerPackage\":\"@praxisui/core\",\"configSchemaId\":\"PraxisRelatedResourceOutletPresentationInputs\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"set-related-resource-shell\",\"request\":\"Show the related participants inline with the title Participants and compact states.\",\"operationId\":\"related-resource-outlet.presentation.set-title\",\"params\":{\"value\":\"Participants\"},\"isPositive\":true},{\"id\":\"set-related-resource-empty-state-copy\",\"request\":\"Use No participants yet as the empty-state title.\",\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"params\":{\"title\":\"No participants yet\"},\"isPositive\":true},{\"id\":\"reject-related-resource-relationship-authoring\",\"request\":\"Change the child resource path, parent field, filter operation and tableConfig from this outlet editor.\",\"operationId\":\"related-resource-outlet.presentation.configure-empty-state\",\"params\":{\"childResourcePath\":\"operations/participants\",\"childParentField\":\"missionId\",\"tableConfig\":{\"columns\":[]}},\"isPositive\":false}]}",
5836
+ "sourcePointer": "projects/praxis-core/src/lib/ai/praxis-related-resource-outlet-authoring-manifest.ts",
5837
+ "contentHash": "07500d246df4bc97245ede755c714debb647bba12d811d73b34d886ce94f2f4c",
5838
+ "sourceKind": "component_definition",
5839
+ "sourceId": "praxis-related-resource-outlet",
5840
+ "corpusVersion": "1.0.0"
5841
+ },
5842
+ {
5843
+ "chunkIndex": 15,
5119
5844
  "chunkKind": "recipe",
5120
- "content": "{\"_comment\":\"Recipe para agentes usarem surface.relatedResource com o runtime canonico praxis-related-resource-outlet.\",\"_comment2\":\"O filtro pai-filho deve vir de relatedResource.childParentField; nao duplique a mesma regra em composition.links quando o outlet puder resolver.\",\"templateMeta\":{\"registryKey\":\"praxis-related-resource-outlet\",\"variantId\":\"inline-table-child-resource\",\"status\":\"public-example\",\"useWhen\":\"Render a related child resource from surfaceId or ResourceSurfaceCatalogItem.relatedResource without hand-writing table filters or host-specific code.\",\"examplePrompts\":[\"renderize recursos relacionados de uma linha selecionada\",\"crie tabela filha a partir de relatedResource\",\"mostrar participantes filtrados pela missao selecionada sem composition manual\"]},\"platformValue\":{\"canonicalContract\":\"praxis-metadata-starter publishes ResourceSurfaceCatalogItem.relatedResource in the surfaces catalog.\",\"angularRuntime\":\"@praxisui/core discovers the requested surface by surfaceId when needed, resolves relatedResource into a SurfaceOpenPayload and materializes praxis-table through DynamicWidgetLoader.\",\"migrationValue\":\"Hosts keep only surfaceId plus parentRecord or parentResourceId in the page; parent-child filtering is declared once in metadata.\",\"agentCorpus\":\"This recipe keeps surfaceId, parentResourcePath, parentResourceId and parentRecord explicit so agents do not infer relationships from labels.\"},\"authoringGuidance\":[\"Use praxis-related-resource-outlet with surfaceId when the parent resource publishes item-level surfaces.\",\"Pass surface directly only when the host already has the ResourceSurfaceCatalogItem available.\",\"Pass parentRecord when the selected row is available; pass parentResourceId when only the id is available.\",\"Do not repeat childParentField filters in composition.links unless the page intentionally overrides queryContext.\",\"Keep availability fail-closed; permission-limited and not-found states should render as outlet states instead of empty tables.\",\"Omit emptyState for the default related-resource empty copy; the runtime derives contextual copy and create action from surface.relatedResource. Pass emptyState only when domain-specific wording must override the platform default.\",\"Use mode=open-action when the host owns drawer/dialog orchestration; use mode=inline for embedded child tables.\"],\"teaches\":[\"surface.relatedResource\",\"surfaceId\",\"praxis-related-resource-outlet\",\"related-resource.childParentField\",\"related-resource.childResourcePath\",\"resourceEvent\",\"surfaceOpen\"],\"page\":{\"layout\":{\"orientation\":\"columns\",\"columns\":2,\"gap\":\"16px\"},\"widgets\":[{\"key\":\"missionParticipants\",\"shell\":{\"kind\":\"dashboard-card\",\"icon\":\"hub\",\"title\":\"Related participants\",\"subtitle\":\"Child table resolved from surface.relatedResource\"},\"definition\":{\"id\":\"praxis-related-resource-outlet\",\"bindingOrder\":[\"surfaceId\",\"parentRecord\",\"parentResourceId\",\"parentResourcePath\",\"mode\"],\"inputs\":{\"mode\":\"inline\",\"surfaceId\":\"team\",\"parentResourcePath\":\"operations/missoes\",\"parentResourceId\":1,\"parentRecord\":{\"id\":1,\"titulo\":\"Atlantic Shield\",\"status\":\"PLANEJADA\"}},\"outputs\":{\"widgetEvent\":\"emit\",\"resourceEvent\":\"emit\",\"surfaceOpen\":\"emit\"}}}]}}",
5845
+ "content": "{\"_comment\":\"Recipe para agentes usarem surface.relatedResource com o runtime canonico praxis-related-resource-outlet.\",\"_comment2\":\"O filtro pai-filho deve vir de relatedResource.childParentField; nao duplique a mesma regra em composition.links quando o outlet puder resolver.\",\"_comment3\":\"O configEditor e o manifest do outlet authoram apenas title, subtitle, icon, mode, presentation, compact e o subset visual fechado de emptyState; todo contexto e semantica de relacionamento permanecem opacos.\",\"templateMeta\":{\"registryKey\":\"praxis-related-resource-outlet\",\"variantId\":\"inline-table-child-resource\",\"status\":\"public-example\",\"useWhen\":\"Render a related child resource from surfaceId or ResourceSurfaceCatalogItem.relatedResource without hand-writing table filters or host-specific code.\",\"examplePrompts\":[\"renderize recursos relacionados de uma linha selecionada\",\"crie tabela filha a partir de relatedResource\",\"mostrar participantes filtrados pela missao selecionada sem composition manual\"]},\"platformValue\":{\"canonicalContract\":\"praxis-metadata-starter publishes ResourceSurfaceCatalogItem.relatedResource in the surfaces catalog.\",\"angularRuntime\":\"@praxisui/core discovers the requested surface by surfaceId when needed, resolves relatedResource into a SurfaceOpenPayload and materializes praxis-table through DynamicWidgetLoader.\",\"migrationValue\":\"Hosts keep only surfaceId plus parentRecord or parentResourceId in the page; parent-child filtering is declared once in metadata.\",\"agentCorpus\":\"This recipe keeps surfaceId, parentResourcePath, parentResourceId and parentRecord explicit so agents do not infer relationships from labels.\"},\"authoringGuidance\":[\"Use praxis-related-resource-outlet with surfaceId when the parent resource publishes item-level surfaces.\",\"Pass surface directly only when the host already has the ResourceSurfaceCatalogItem available.\",\"Pass parentRecord when the selected row is available; pass parentResourceId when only the id is available.\",\"Do not repeat childParentField filters in composition.links unless the page intentionally overrides queryContext.\",\"Keep availability fail-closed; permission-limited and not-found states should render as outlet states instead of empty tables.\",\"Omit emptyState for the default related-resource empty copy; the runtime derives contextual copy and create action from surface.relatedResource. Pass emptyState only when domain-specific wording must override the platform default.\",\"Use mode=open-action when the host owns drawer/dialog orchestration; use mode=inline for embedded child tables.\",\"Use the published config editor for presentation only. Never author parentResourceId, resource paths, childParentField, operations, filters, queryContext, surface/runtime state or tableConfig through the outlet editor.\"],\"teaches\":[\"surface.relatedResource\",\"surfaceId\",\"praxis-related-resource-outlet\",\"related-resource.childParentField\",\"related-resource.childResourcePath\",\"resourceEvent\",\"surfaceOpen\"],\"page\":{\"layout\":{\"orientation\":\"columns\",\"columns\":2,\"gap\":\"16px\"},\"widgets\":[{\"key\":\"missionParticipants\",\"shell\":{\"kind\":\"dashboard-card\",\"icon\":\"hub\",\"title\":\"Related participants\",\"subtitle\":\"Child table resolved from surface.relatedResource\"},\"definition\":{\"id\":\"praxis-related-resource-outlet\",\"bindingOrder\":[\"surfaceId\",\"parentRecord\",\"parentResourceId\",\"parentResourcePath\",\"mode\"],\"inputs\":{\"mode\":\"inline\",\"surfaceId\":\"team\",\"parentResourcePath\":\"operations/missoes\",\"parentResourceId\":1,\"parentRecord\":{\"id\":1,\"titulo\":\"Atlantic Shield\",\"status\":\"PLANEJADA\"}},\"outputs\":{\"widgetEvent\":\"emit\",\"resourceEvent\":\"emit\",\"surfaceOpen\":\"emit\"}}}]}}",
5121
5846
  "sourcePointer": "examples/ai-recipes/praxis-related-resource-outlet.json",
5122
- "contentHash": "78e8662251848fd16b257c70c5dc826a83e3c3d5672c5c484a977b1d92f7c519",
5847
+ "contentHash": "6560318b2040dc7a9a60e4762aaa4e5ea744094e9be249c5a9230b32d7b7b235",
5123
5848
  "sourceKind": "component_definition",
5124
5849
  "sourceId": "praxis-related-resource-outlet",
5125
5850
  "corpusVersion": "1.0.0"