{
  "schemaVersion": "1.0.0",
  "generatedAt": "2026-08-26T04:13:47.852Z",
  "packageName": "@praxisui/dialog",
  "packageVersion": "9.0.23",
  "sourceRegistry": "praxis-component-registry-ingestion",
  "sourceRegistryVersion": "1.0.0",
  "componentCount": 1,
  "components": {
    "praxis-dialog": {
      "id": "praxis-dialog",
      "description": "Dialog shell for overlay and embedded authoring, with governed size, position, backdrop, close policy, presets and child host delegation.",
      "inputs": [
        {
          "name": "title",
          "type": "string",
          "required": false,
          "description": "Dialog title text.",
          "label": "Title"
        },
        {
          "name": "actions",
          "type": "DialogAction[]",
          "required": false,
          "description": "Dialog footer actions and payloads.",
          "label": "Actions"
        },
        {
          "name": "actionsLayout",
          "type": "ActionsLayout",
          "required": false,
          "description": "Footer action alignment.",
          "label": "Actions layout"
        },
        {
          "name": "width",
          "type": "string | number",
          "required": false,
          "description": "Dialog width.",
          "label": "Width"
        },
        {
          "name": "height",
          "type": "string | number",
          "required": false,
          "description": "Dialog height.",
          "label": "Height"
        },
        {
          "name": "minWidth",
          "type": "string | number",
          "required": false,
          "description": "Minimum dialog width.",
          "label": "Minimum width"
        },
        {
          "name": "maxWidth",
          "type": "string | number",
          "required": false,
          "description": "Maximum dialog width.",
          "label": "Maximum width"
        },
        {
          "name": "minHeight",
          "type": "string | number",
          "required": false,
          "description": "Minimum dialog height.",
          "label": "Minimum height"
        },
        {
          "name": "maxHeight",
          "type": "string | number",
          "required": false,
          "description": "Maximum dialog height.",
          "label": "Maximum height"
        },
        {
          "name": "themeColor",
          "type": "DialogThemeColor",
          "required": false,
          "description": "Dialog visual theme.",
          "label": "Theme color"
        },
        {
          "name": "disableClose",
          "type": "boolean",
          "required": false,
          "description": "Blocks backdrop and Escape close behavior.",
          "label": "Disable close"
        },
        {
          "name": "hasBackdrop",
          "type": "boolean",
          "required": false,
          "description": "Controls whether the dialog renders a backdrop.",
          "label": "Backdrop"
        },
        {
          "name": "closeOnBackdropClick",
          "type": "boolean",
          "required": false,
          "description": "Controls backdrop click close policy.",
          "label": "Close on backdrop click"
        },
        {
          "name": "panelClass",
          "type": "string | string[] | Record<string, boolean>",
          "required": false,
          "description": "Additional CSS class for the dialog panel.",
          "label": "Panel class"
        },
        {
          "name": "backdropClass",
          "type": "string | string[] | Record<string, boolean>",
          "required": false,
          "description": "Additional CSS class for the backdrop.",
          "label": "Backdrop class"
        },
        {
          "name": "position",
          "type": "PraxisDialogPosition",
          "required": false,
          "description": "Dialog position offsets.",
          "label": "Position"
        },
        {
          "name": "ariaRole",
          "type": "'dialog' | 'alertdialog'",
          "required": false,
          "description": "Accessible dialog role.",
          "label": "ARIA role"
        },
        {
          "name": "ariaLabel",
          "type": "string",
          "required": false,
          "description": "Accessible label when no visible title is present.",
          "label": "ARIA label"
        },
        {
          "name": "ariaLabelledBy",
          "type": "string",
          "required": false,
          "description": "External accessible label id.",
          "label": "ARIA labelled by"
        },
        {
          "name": "ariaDescribedBy",
          "type": "string",
          "required": false,
          "description": "External accessible description id.",
          "label": "ARIA described by"
        }
      ],
      "outputs": [
        {
          "name": "action",
          "type": "DialogAction",
          "required": false,
          "label": "Action"
        },
        {
          "name": "close",
          "type": "unknown",
          "required": false,
          "label": "Close"
        },
        {
          "name": "opened",
          "type": "void",
          "required": false,
          "label": "Opened"
        },
        {
          "name": "afterClosed",
          "type": "void",
          "required": false,
          "label": "After closed"
        }
      ],
      "configSchemaId": null,
      "selector": "praxis-dialog",
      "friendlyName": "Praxis Dialog",
      "icon": "dialogs",
      "tags": [
        "dialog",
        "overlay",
        "shell",
        "authoring"
      ],
      "lib": "@praxisui/dialog",
      "actions": [
        {
          "id": "dialog-open",
          "label": "Open dialog",
          "icon": "open_in_new",
          "description": "Opens a dialog shell with governed config.",
          "scope": "any"
        },
        {
          "id": "dialog-close",
          "label": "Close dialog",
          "icon": "close",
          "description": "Closes the dialog with an optional payload.",
          "emit": "close",
          "scope": "any"
        }
      ],
      "ports": [
        {
          "id": "config",
          "label": "Dialog config",
          "direction": "input",
          "semanticKind": "config-fragment",
          "schema": {
            "id": "PraxisDialogConfig",
            "kind": "ts-type",
            "ref": "PraxisDialogConfig"
          },
          "description": "Dialog shell configuration for title, actions, dimensions, backdrop, close policy and accessibility.",
          "exposure": {
            "public": true,
            "group": "config"
          }
        },
        {
          "id": "close",
          "label": "Close",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "unknown",
            "kind": "ts-type",
            "ref": "unknown"
          },
          "cardinality": "stream",
          "description": "Emitted when the dialog shell requests close with an optional result payload.",
          "exposure": {
            "public": true,
            "group": "events"
          }
        },
        {
          "id": "action",
          "label": "Action",
          "direction": "output",
          "semanticKind": "event",
          "schema": {
            "id": "DialogAction",
            "kind": "ts-type",
            "ref": "DialogAction"
          },
          "cardinality": "stream",
          "description": "Emitted when a configured dialog action is triggered.",
          "exposure": {
            "public": true,
            "group": "events"
          }
        }
      ],
      "source": "projects/praxis-dialog/src/lib/praxis-dialog.metadata.ts",
      "exportName": "PRAXIS_DIALOG_COMPONENT_METADATA",
      "authoringManifest": {
        "schemaVersion": "1.0.0",
        "componentId": "praxis-dialog",
        "ownerPackage": "@praxisui/dialog",
        "configSchemaId": "PraxisDialogConfig",
        "manifestVersion": "1.0.0",
        "runtimeInputs": [
          {
            "name": "config",
            "type": "PraxisDialogConfig",
            "description": "Canonical shell configuration consumed by PraxisDialog.open and tag mode."
          },
          {
            "name": "content",
            "type": "ComponentType | TemplateRef | DialogContentDescriptor",
            "description": "Dialog child host content. Child semantics remain owned by the child component manifest."
          },
          {
            "name": "variant",
            "type": "string",
            "description": "Optional global preset variant merged after dialog type presets and before local config."
          },
          {
            "name": "componentId",
            "type": "string",
            "description": "Component metadata or dialog registry id used by global dialog open actions."
          },
          {
            "name": "inputs",
            "type": "Record<string, unknown>",
            "description": "Inputs applied to the child component after opening the dialog."
          }
        ],
        "editableTargets": [
          {
            "kind": "dialogShell",
            "resolver": "praxis-dialog-config-root",
            "description": "Top-level PraxisDialogConfig shell fields such as title, role, actions and theme."
          },
          {
            "kind": "size",
            "resolver": "praxis-dialog-size-fields",
            "description": "Width, height, min/max size fields on PraxisDialogConfig."
          },
          {
            "kind": "position",
            "resolver": "praxis-dialog-position-fields",
            "description": "Overlay position fields top, bottom, left and right."
          },
          {
            "kind": "backdrop",
            "resolver": "praxis-dialog-backdrop-fields",
            "description": "Backdrop enablement and backdrop class semantics."
          },
          {
            "kind": "closePolicy",
            "resolver": "praxis-dialog-close-policy-fields",
            "description": "disableClose, closeOnBackdropClick, closeOnNavigation, restoreFocus and autofocus behavior."
          },
          {
            "kind": "preset",
            "resolver": "praxis-dialog-global-preset-by-type-variant",
            "description": "Type and variant presets merged through PRAXIS_DIALOG_GLOBAL_PRESETS."
          },
          {
            "kind": "childHost",
            "resolver": "praxis-dialog-child-component-or-template-host",
            "description": "Component/template registry child host and input/data envelope."
          }
        ],
        "operations": [
          {
            "operationId": "dialog.shell.set",
            "title": "Set dialog shell fields",
            "scope": "global",
            "targetKind": "dialogShell",
            "target": {
              "kind": "dialogShell",
              "resolver": "praxis-dialog-config-root",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "title": {
                  "type": "string"
                },
                "titleIcon": {
                  "type": "string"
                },
                "ariaRole": {
                  "enum": [
                    "dialog",
                    "alertdialog"
                  ]
                },
                "ariaLabel": {
                  "type": "string"
                },
                "ariaLabelledBy": {
                  "type": "string"
                },
                "ariaDescribedBy": {
                  "type": "string"
                },
                "themeColor": {
                  "enum": [
                    "primary",
                    "light",
                    "dark"
                  ]
                },
                "actionsLayout": {
                  "enum": [
                    "start",
                    "center",
                    "end",
                    "stretched"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "config"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "accessibility-label-preserved",
              "aria-role-valid",
              "shell-fields-supported",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config.title",
              "config.titleIcon",
              "config.ariaRole",
              "config.ariaLabel",
              "config.ariaLabelledBy",
              "config.ariaDescribedBy",
              "config.themeColor",
              "config.actionsLayout"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "dialog.size.set",
            "title": "Set dialog size",
            "scope": "layout",
            "targetKind": "size",
            "target": {
              "kind": "size",
              "resolver": "praxis-dialog-size-fields",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "width": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "height": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "minWidth": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "maxWidth": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "minHeight": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "maxHeight": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "config"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "size-values-safe",
              "size-min-max-consistent",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config.width",
              "config.height",
              "config.minWidth",
              "config.maxWidth",
              "config.minHeight",
              "config.maxHeight"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "dialog.position.set",
            "title": "Set dialog position",
            "scope": "layout",
            "targetKind": "position",
            "target": {
              "kind": "position",
              "resolver": "praxis-dialog-position-fields",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "top": {
                  "type": "string"
                },
                "bottom": {
                  "type": "string"
                },
                "left": {
                  "type": "string"
                },
                "right": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "config.position"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "position-values-safe",
              "position-not-conflicting",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config.position"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "dialog.backdrop.set",
            "title": "Set dialog backdrop",
            "scope": "skin",
            "targetKind": "backdrop",
            "target": {
              "kind": "backdrop",
              "resolver": "praxis-dialog-backdrop-fields",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "hasBackdrop": {
                  "type": "boolean"
                },
                "backdropClass": {
                  "oneOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "array"
                    },
                    {
                      "type": "object"
                    }
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "config"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "backdrop-policy-explicit",
              "backdrop-class-safe",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config.hasBackdrop",
              "config.backdropClass"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "dialog.closePolicy.set",
            "title": "Set dialog close policy",
            "scope": "accessibility",
            "targetKind": "closePolicy",
            "target": {
              "kind": "closePolicy",
              "resolver": "praxis-dialog-close-policy-fields",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "disableClose": {
                  "type": "boolean"
                },
                "closeOnBackdropClick": {
                  "type": "boolean"
                },
                "closeOnNavigation": {
                  "type": "boolean"
                },
                "restoreFocus": {
                  "type": "boolean"
                },
                "autoFocus": {
                  "type": "boolean"
                },
                "autoFocusedElement": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-object",
                "path": "config"
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "close-policy-explicit",
              "unsafe-close-confirmed-when-needed",
              "restore-focus-preserved",
              "alertdialog-focus-preserved",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config.disableClose",
              "config.closeOnBackdropClick",
              "config.closeOnNavigation",
              "config.restoreFocus",
              "config.autoFocus",
              "config.autoFocusedElement"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "confirmation-collected"
            ]
          },
          {
            "operationId": "dialog.preset.apply",
            "title": "Apply dialog preset",
            "scope": "global",
            "targetKind": "preset",
            "target": {
              "kind": "preset",
              "resolver": "praxis-dialog-global-preset-by-type-variant",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "dialogType"
              ],
              "properties": {
                "dialogType": {
                  "enum": [
                    "confirm",
                    "alert",
                    "prompt",
                    "custom"
                  ]
                },
                "variant": {
                  "type": "string"
                },
                "localConfig": {
                  "type": "object"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "dialog-preset-apply",
                "handlerContract": {
                  "reads": [
                    "PRAXIS_DIALOG_GLOBAL_PRESETS",
                    "config",
                    "variant"
                  ],
                  "writes": [
                    "config",
                    "variant"
                  ],
                  "identityKeys": [
                    "dialogType",
                    "variant"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "dialogType"
                    ],
                    "properties": {
                      "dialogType": {
                        "enum": [
                          "confirm",
                          "alert",
                          "prompt",
                          "custom"
                        ]
                      },
                      "variant": {
                        "type": "string"
                      },
                      "localConfig": {
                        "type": "object"
                      }
                    }
                  },
                  "failureModes": [
                    "preset-not-found",
                    "variant-not-found",
                    "preset-merge-order-invalid",
                    "accessibility-regression"
                  ],
                  "description": "Applies the canonical merge order type preset -> variant -> local config without mutating child component semantics."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "preset-exists",
              "preset-merge-order-preserved",
              "accessibility-label-preserved",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "config",
              "variant"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "childHost.configure",
            "title": "Configure dialog child host",
            "scope": "templating",
            "targetKind": "childHost",
            "target": {
              "kind": "childHost",
              "resolver": "praxis-dialog-child-component-or-template-host",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "contentType"
              ],
              "properties": {
                "contentType": {
                  "enum": [
                    "component",
                    "template"
                  ]
                },
                "componentId": {
                  "type": "string"
                },
                "templateId": {
                  "type": "string"
                },
                "inputs": {
                  "type": "object"
                },
                "data": {},
                "childManifestComponentId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "dialog-child-host-configure",
                "handlerContract": {
                  "reads": [
                    "ComponentMetadataRegistry",
                    "PRAXIS_DIALOG_CONTENT_REGISTRY",
                    "PRAXIS_DIALOG_TEMPLATE_REGISTRY",
                    "content",
                    "componentId",
                    "inputs",
                    "data"
                  ],
                  "writes": [
                    "content",
                    "componentId",
                    "inputs",
                    "data"
                  ],
                  "identityKeys": [
                    "componentId",
                    "templateId"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "contentType"
                    ],
                    "properties": {
                      "contentType": {
                        "enum": [
                          "component",
                          "template"
                        ]
                      },
                      "componentId": {
                        "type": "string"
                      },
                      "templateId": {
                        "type": "string"
                      },
                      "inputs": {
                        "type": "object"
                      },
                      "data": {},
                      "childManifestComponentId": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "component-not-registered",
                    "template-not-registered",
                    "child-inputs-not-serializable",
                    "child-manifest-required"
                  ],
                  "description": "Configures which component/template is hosted in the dialog and serializable host inputs; child config fields remain delegated to the child manifest."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "child-host-registered",
              "child-config-delegates-to-child-manifest",
              "child-inputs-serializable",
              "dialog-round-trip"
            ],
            "affectedPaths": [
              "content",
              "componentId",
              "inputs",
              "data"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "childOperation.delegate",
            "title": "Delegate operation to child manifest",
            "scope": "templating",
            "targetKind": "childHost",
            "target": {
              "kind": "childHost",
              "resolver": "praxis-dialog-child-component-or-template-host",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "childManifestComponentId",
                "operationId",
                "params"
              ],
              "properties": {
                "childManifestComponentId": {
                  "type": "string"
                },
                "operationId": {
                  "type": "string"
                },
                "target": {
                  "type": "string"
                },
                "params": {
                  "type": "object"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "dialog-child-operation-delegate",
                "handlerContract": {
                  "reads": [
                    "childManifestComponentId",
                    "operationId",
                    "params",
                    "componentRegistry.authoringManifest"
                  ],
                  "writes": [
                    "inputs",
                    "data"
                  ],
                  "identityKeys": [
                    "childManifestComponentId",
                    "operationId"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "childManifestComponentId",
                      "operationId",
                      "params"
                    ],
                    "properties": {
                      "childManifestComponentId": {
                        "type": "string"
                      },
                      "operationId": {
                        "type": "string"
                      },
                      "target": {
                        "type": "string"
                      },
                      "params": {
                        "type": "object"
                      }
                    }
                  },
                  "failureModes": [
                    "child-manifest-not-found",
                    "child-operation-not-authorized",
                    "child-operation-validation-failed",
                    "dialog-shell-child-boundary-violation"
                  ],
                  "description": "Delegates child component configuration edits to the child authoring manifest before projecting the validated patch into the dialog child host inputs/data envelope."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "child-manifest-resolvable",
              "child-operation-authorized",
              "child-config-delegates-to-child-manifest",
              "dialog-shell-boundary-preserved"
            ],
            "affectedPaths": [
              "inputs",
              "data"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "child-host-configured",
              "child-manifest-resolved"
            ]
          }
        ],
        "validators": [
          {
            "validatorId": "accessibility-label-preserved",
            "level": "error",
            "code": "DIALOG_ACCESSIBILITY_LABEL_PRESERVED",
            "description": "Dialog or alertdialog must keep an accessible title or aria label."
          },
          {
            "validatorId": "aria-role-valid",
            "level": "error",
            "code": "DIALOG_ARIA_ROLE_VALID",
            "description": "ariaRole must be dialog or alertdialog."
          },
          {
            "validatorId": "shell-fields-supported",
            "level": "error",
            "code": "DIALOG_SHELL_FIELDS_SUPPORTED",
            "description": "Shell edits must target supported PraxisDialogConfig fields."
          },
          {
            "validatorId": "size-values-safe",
            "level": "error",
            "code": "DIALOG_SIZE_VALUES_SAFE",
            "description": "Size values must be finite numbers or safe CSS size strings."
          },
          {
            "validatorId": "size-min-max-consistent",
            "level": "error",
            "code": "DIALOG_SIZE_MIN_MAX_CONSISTENT",
            "description": "Minimum sizes must not exceed maximum sizes."
          },
          {
            "validatorId": "position-values-safe",
            "level": "error",
            "code": "DIALOG_POSITION_VALUES_SAFE",
            "description": "Position values must be safe CSS size strings."
          },
          {
            "validatorId": "position-not-conflicting",
            "level": "warning",
            "code": "DIALOG_POSITION_NOT_CONFLICTING",
            "description": "Conflicting position pairs should be explicit and intentional."
          },
          {
            "validatorId": "backdrop-policy-explicit",
            "level": "error",
            "code": "DIALOG_BACKDROP_POLICY_EXPLICIT",
            "description": "Backdrop and backdrop-click behavior must be explicit when edited."
          },
          {
            "validatorId": "backdrop-class-safe",
            "level": "error",
            "code": "DIALOG_BACKDROP_CLASS_SAFE",
            "description": "Backdrop classes must be serializable safe class values."
          },
          {
            "validatorId": "close-policy-explicit",
            "level": "error",
            "code": "DIALOG_CLOSE_POLICY_EXPLICIT",
            "description": "Close behavior must explicitly describe ESC, backdrop and navigation semantics."
          },
          {
            "validatorId": "unsafe-close-confirmed-when-needed",
            "level": "error",
            "code": "DIALOG_UNSAFE_CLOSE_CONFIRMED",
            "description": "Disabling safe close affordances or enabling unsafe dismissal requires confirmation."
          },
          {
            "validatorId": "restore-focus-preserved",
            "level": "error",
            "code": "DIALOG_RESTORE_FOCUS_PRESERVED",
            "description": "restoreFocus must stay enabled unless intentionally changed with confirmation."
          },
          {
            "validatorId": "alertdialog-focus-preserved",
            "level": "error",
            "code": "DIALOG_ALERTDIALOG_FOCUS_PRESERVED",
            "description": "alertdialog focus behavior must keep primary action or configured focus target reachable."
          },
          {
            "validatorId": "preset-exists",
            "level": "error",
            "code": "DIALOG_PRESET_EXISTS",
            "description": "Preset type and variant must exist in PRAXIS_DIALOG_GLOBAL_PRESETS or be host-provided."
          },
          {
            "validatorId": "preset-merge-order-preserved",
            "level": "error",
            "code": "DIALOG_PRESET_MERGE_ORDER_PRESERVED",
            "description": "Preset merge order must remain type -> variant -> local config."
          },
          {
            "validatorId": "child-host-registered",
            "level": "error",
            "code": "DIALOG_CHILD_HOST_REGISTERED",
            "description": "Child component/template must resolve through ComponentMetadataRegistry or dialog registries."
          },
          {
            "validatorId": "child-config-delegates-to-child-manifest",
            "level": "error",
            "code": "DIALOG_CHILD_CONFIG_DELEGATES",
            "description": "Child component config edits must be delegated to the child authoring manifest."
          },
          {
            "validatorId": "child-inputs-serializable",
            "level": "error",
            "code": "DIALOG_CHILD_INPUTS_SERIALIZABLE",
            "description": "Child inputs/data persisted by authoring must be serializable safe values."
          },
          {
            "validatorId": "child-manifest-resolvable",
            "level": "error",
            "code": "DIALOG_CHILD_MANIFEST_RESOLVABLE",
            "description": "Delegated child operation must resolve a child component authoring manifest."
          },
          {
            "validatorId": "child-operation-authorized",
            "level": "error",
            "code": "DIALOG_CHILD_OPERATION_AUTHORIZED",
            "description": "Delegated child operation must be declared by the child manifest."
          },
          {
            "validatorId": "dialog-shell-boundary-preserved",
            "level": "error",
            "code": "DIALOG_SHELL_BOUNDARY_PRESERVED",
            "description": "Dialog shell operations must not rewrite child component semantics directly."
          },
          {
            "validatorId": "dialog-round-trip",
            "level": "error",
            "code": "DIALOG_ROUND_TRIP",
            "description": "Service/tag mode must preserve shell config through open, close, afterClosed and host persistence."
          }
        ],
        "roundTripRequirements": [
          "PraxisDialogConfig is the canonical shell config; child component config remains owned by the child manifest.",
          "Preset application must preserve merge order: type preset, then variant, then local config.",
          "Close policy edits must keep accessibility, focus trap, ESC/backdrop behavior and restoreFocus explicit.",
          "Dialog host operations must resolve component/template ids through governed registries instead of ad hoc overlays."
        ],
        "examples": [
          {
            "id": "set-size",
            "request": "Open this dialog at 860 by 640 pixels.",
            "operationId": "dialog.size.set",
            "params": {
              "width": "860px",
              "height": "640px"
            },
            "isPositive": true
          },
          {
            "id": "set-position",
            "request": "Anchor the dialog to the right side.",
            "operationId": "dialog.position.set",
            "params": {
              "right": "24px",
              "top": "64px"
            },
            "isPositive": true
          },
          {
            "id": "set-backdrop",
            "request": "Use a backdrop with the default governed backdrop class.",
            "operationId": "dialog.backdrop.set",
            "params": {
              "hasBackdrop": true,
              "backdropClass": "pdx-dialog-backdrop"
            },
            "isPositive": true
          },
          {
            "id": "set-close-policy",
            "request": "Make this destructive confirm require explicit button close.",
            "operationId": "dialog.closePolicy.set",
            "params": {
              "disableClose": true,
              "closeOnBackdropClick": false,
              "restoreFocus": true
            },
            "isPositive": true
          },
          {
            "id": "apply-danger-preset",
            "request": "Apply the danger confirm preset.",
            "operationId": "dialog.preset.apply",
            "params": {
              "dialogType": "confirm",
              "variant": "danger"
            },
            "isPositive": true
          },
          {
            "id": "configure-child-host",
            "request": "Host the dynamic page component with customization enabled.",
            "operationId": "childHost.configure",
            "params": {
              "contentType": "component",
              "componentId": "praxis-dynamic-page",
              "inputs": {
                "enableCustomization": true
              }
            },
            "isPositive": true
          },
          {
            "id": "delegate-child-config",
            "request": "Change the table column inside the dialog.",
            "operationId": "childOperation.delegate",
            "params": {
              "childManifestComponentId": "praxis-table",
              "operationId": "column.label.set",
              "params": {
                "field": "name",
                "label": "Name"
              }
            },
            "isPositive": true
          },
          {
            "id": "set-shell-label",
            "request": "Set the dialog title and alertdialog role.",
            "operationId": "dialog.shell.set",
            "params": {
              "title": "Delete record",
              "ariaRole": "alertdialog"
            },
            "isPositive": true
          },
          {
            "id": "reject-child-shell-mix",
            "request": "Directly patch the child table config from the dialog shell manifest.",
            "operationId": "childOperation.delegate",
            "params": {
              "childManifestComponentId": "",
              "operationId": "patch-raw-child-config",
              "params": {}
            },
            "isPositive": false
          },
          {
            "id": "reject-inaccessible-alert",
            "request": "Make an alertdialog with no title or aria label.",
            "operationId": "dialog.shell.set",
            "params": {
              "ariaRole": "alertdialog",
              "title": ""
            },
            "isPositive": false
          },
          {
            "id": "reject-unsafe-close",
            "request": "Let a destructive dialog close on accidental backdrop click with no confirmation.",
            "operationId": "dialog.closePolicy.set",
            "params": {
              "closeOnBackdropClick": true,
              "disableClose": false,
              "restoreFocus": false
            },
            "isPositive": false
          }
        ]
      },
      "chunks": [
        {
          "chunkIndex": 0,
          "chunkKind": "summary",
          "content": "Component ID: praxis-dialog\nSelector: praxis-dialog\nFriendly Name: Praxis Dialog\nDescription: Dialog shell for overlay and embedded authoring, with governed size, position, backdrop, close policy, presets and child host delegation.\nLib/Package: @praxisui/dialog\nTags: dialog, overlay, shell, authoring\nInputs:\n  - title (string)\n  - actions (DialogAction[])\n  - actionsLayout (ActionsLayout)\n  - width (string | number)\n  - height (string | number)\n  - minWidth (string | number)\n  - maxWidth (string | number)\n  - minHeight (string | number)\n  - maxHeight (string | number)\n  - themeColor (DialogThemeColor)\n  - disableClose (boolean)\n  - hasBackdrop (boolean)\n  - closeOnBackdropClick (boolean)\n  - panelClass (string | string[] | Record<string, boolean>)\n  - backdropClass (string | string[] | Record<string, boolean>)\n  - position (PraxisDialogPosition)\n  - ariaRole ('dialog' | 'alertdialog')\n  - ariaLabel (string)\n  - ariaLabelledBy (string)\n  - ariaDescribedBy (string)\nOutputs:\n  - action (DialogAction)\n  - close (unknown)\n  - opened (void)\n  - afterClosed (void)\n",
          "sourcePointer": "projects/praxis-dialog/src/lib/praxis-dialog.metadata.ts",
          "contentHash": "31805c5f46dec3934066a5cc7fabeaefe3c437478999140b23b94524447df209",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 1,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.shell.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set dialog shell fields Effects: merge-object. Set the dialog title and alertdialog role. Make an alertdialog with no title or aria label.\",\"scope\":\"global\",\"target\":{\"kind\":\"dialogShell\",\"resolver\":\"praxis-dialog-config-root\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"title\",\"titleIcon\",\"ariaRole\",\"ariaLabel\",\"ariaLabelledBy\",\"ariaDescribedBy\",\"themeColor\",\"actionsLayout\"],\"semanticTerms\":[\"title\",\"titleIcon\",\"ariaRole\",\"ariaLabel\",\"ariaLabelledBy\",\"ariaDescribedBy\",\"themeColor\",\"actionsLayout\",\"dialog\",\"alertdialog\",\"primary\",\"light\",\"dark\",\"start\",\"center\",\"end\",\"stretched\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"config.title\",\"config.titleIcon\",\"config.ariaRole\",\"config.ariaLabel\",\"config.ariaLabelledBy\",\"config.ariaDescribedBy\",\"config.themeColor\",\"config.actionsLayout\"],\"validators\":[{\"validatorId\":\"accessibility-label-preserved\",\"level\":\"error\",\"code\":\"DIALOG_ACCESSIBILITY_LABEL_PRESERVED\",\"description\":\"Dialog or alertdialog must keep an accessible title or aria label.\"},{\"validatorId\":\"aria-role-valid\",\"level\":\"error\",\"code\":\"DIALOG_ARIA_ROLE_VALID\",\"description\":\"ariaRole must be dialog or alertdialog.\"},{\"validatorId\":\"shell-fields-supported\",\"level\":\"error\",\"code\":\"DIALOG_SHELL_FIELDS_SUPPORTED\",\"description\":\"Shell edits must target supported PraxisDialogConfig fields.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-shell-label\",\"request\":\"Set the dialog title and alertdialog role.\",\"operationId\":\"dialog.shell.set\",\"params\":{\"title\":\"Delete record\",\"ariaRole\":\"alertdialog\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-inaccessible-alert\",\"request\":\"Make an alertdialog with no title or aria label.\",\"operationId\":\"dialog.shell.set\",\"params\":{\"ariaRole\":\"alertdialog\",\"title\":\"\"},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "39396fed8731e4d56a66286747844de9051f38d33dca16c9c904a86f7df51673",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 2,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.size.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set dialog size Effects: merge-object. Open this dialog at 860 by 640 pixels.\",\"scope\":\"layout\",\"target\":{\"kind\":\"size\",\"resolver\":\"praxis-dialog-size-fields\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"width\",\"height\",\"minWidth\",\"maxWidth\",\"minHeight\",\"maxHeight\"],\"semanticTerms\":[\"width\",\"height\",\"minWidth\",\"maxWidth\",\"minHeight\",\"maxHeight\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"config.width\",\"config.height\",\"config.minWidth\",\"config.maxWidth\",\"config.minHeight\",\"config.maxHeight\"],\"validators\":[{\"validatorId\":\"size-values-safe\",\"level\":\"error\",\"code\":\"DIALOG_SIZE_VALUES_SAFE\",\"description\":\"Size values must be finite numbers or safe CSS size strings.\"},{\"validatorId\":\"size-min-max-consistent\",\"level\":\"error\",\"code\":\"DIALOG_SIZE_MIN_MAX_CONSISTENT\",\"description\":\"Minimum sizes must not exceed maximum sizes.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-size\",\"request\":\"Open this dialog at 860 by 640 pixels.\",\"operationId\":\"dialog.size.set\",\"params\":{\"width\":\"860px\",\"height\":\"640px\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "83c34a0b28614a0c87a348dee4fffaac60080f6999adb4c70c94469541889b07",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 3,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.position.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set dialog position Effects: set-value. Anchor the dialog to the right side.\",\"scope\":\"layout\",\"target\":{\"kind\":\"position\",\"resolver\":\"praxis-dialog-position-fields\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"top\",\"bottom\",\"left\",\"right\"],\"semanticTerms\":[\"top\",\"bottom\",\"left\",\"right\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"config.position\"],\"validators\":[{\"validatorId\":\"position-values-safe\",\"level\":\"error\",\"code\":\"DIALOG_POSITION_VALUES_SAFE\",\"description\":\"Position values must be safe CSS size strings.\"},{\"validatorId\":\"position-not-conflicting\",\"level\":\"warning\",\"code\":\"DIALOG_POSITION_NOT_CONFLICTING\",\"description\":\"Conflicting position pairs should be explicit and intentional.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-position\",\"request\":\"Anchor the dialog to the right side.\",\"operationId\":\"dialog.position.set\",\"params\":{\"right\":\"24px\",\"top\":\"64px\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "f21fc8e8de7b164c710af42014132f21633a77c39940f62d038fb7dec280b799",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 4,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.backdrop.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set dialog backdrop Effects: merge-object. Use a backdrop with the default governed backdrop class.\",\"scope\":\"skin\",\"target\":{\"kind\":\"backdrop\",\"resolver\":\"praxis-dialog-backdrop-fields\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"hasBackdrop\",\"backdropClass\"],\"semanticTerms\":[\"hasBackdrop\",\"backdropClass\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"config.hasBackdrop\",\"config.backdropClass\"],\"validators\":[{\"validatorId\":\"backdrop-policy-explicit\",\"level\":\"error\",\"code\":\"DIALOG_BACKDROP_POLICY_EXPLICIT\",\"description\":\"Backdrop and backdrop-click behavior must be explicit when edited.\"},{\"validatorId\":\"backdrop-class-safe\",\"level\":\"error\",\"code\":\"DIALOG_BACKDROP_CLASS_SAFE\",\"description\":\"Backdrop classes must be serializable safe class values.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-backdrop\",\"request\":\"Use a backdrop with the default governed backdrop class.\",\"operationId\":\"dialog.backdrop.set\",\"params\":{\"hasBackdrop\":true,\"backdropClass\":\"pdx-dialog-backdrop\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "ba58cd7babf58c80816882c394f86977e5dd57b7393c480ef2c397f2195b264e",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 5,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.closePolicy.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set dialog close policy Effects: merge-object. Make this destructive confirm require explicit button close. Let a destructive dialog close on accidental backdrop click with no confirmation.\",\"scope\":\"accessibility\",\"target\":{\"kind\":\"closePolicy\",\"resolver\":\"praxis-dialog-close-policy-fields\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"disableClose\",\"closeOnBackdropClick\",\"closeOnNavigation\",\"restoreFocus\",\"autoFocus\",\"autoFocusedElement\"],\"semanticTerms\":[\"disableClose\",\"closeOnBackdropClick\",\"closeOnNavigation\",\"restoreFocus\",\"autoFocus\",\"autoFocusedElement\"]},\"effects\":[\"merge-object\"],\"affectedPaths\":[\"config.disableClose\",\"config.closeOnBackdropClick\",\"config.closeOnNavigation\",\"config.restoreFocus\",\"config.autoFocus\",\"config.autoFocusedElement\"],\"validators\":[{\"validatorId\":\"close-policy-explicit\",\"level\":\"error\",\"code\":\"DIALOG_CLOSE_POLICY_EXPLICIT\",\"description\":\"Close behavior must explicitly describe ESC, backdrop and navigation semantics.\"},{\"validatorId\":\"unsafe-close-confirmed-when-needed\",\"level\":\"error\",\"code\":\"DIALOG_UNSAFE_CLOSE_CONFIRMED\",\"description\":\"Disabling safe close affordances or enabling unsafe dismissal requires confirmation.\"},{\"validatorId\":\"restore-focus-preserved\",\"level\":\"error\",\"code\":\"DIALOG_RESTORE_FOCUS_PRESERVED\",\"description\":\"restoreFocus must stay enabled unless intentionally changed with confirmation.\"},{\"validatorId\":\"alertdialog-focus-preserved\",\"level\":\"error\",\"code\":\"DIALOG_ALERTDIALOG_FOCUS_PRESERVED\",\"description\":\"alertdialog focus behavior must keep primary action or configured focus target reachable.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-close-policy\",\"request\":\"Make this destructive confirm require explicit button close.\",\"operationId\":\"dialog.closePolicy.set\",\"params\":{\"disableClose\":true,\"closeOnBackdropClick\":false,\"restoreFocus\":true},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-unsafe-close\",\"request\":\"Let a destructive dialog close on accidental backdrop click with no confirmation.\",\"operationId\":\"dialog.closePolicy.set\",\"params\":{\"closeOnBackdropClick\":true,\"disableClose\":false,\"restoreFocus\":false},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "ba2fe1a5941a705f9c6c4571aa0fe65ed1e5fe40a7a0bb77307af4f89a012f75",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 6,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"dialog.preset.apply\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Apply dialog preset Effects: compile-domain-patch. Apply the danger confirm preset.\",\"scope\":\"global\",\"target\":{\"kind\":\"preset\",\"resolver\":\"praxis-dialog-global-preset-by-type-variant\",\"required\":false},\"inputContract\":{\"required\":[\"dialogType\"],\"properties\":[\"dialogType\",\"variant\",\"localConfig\"],\"semanticTerms\":[\"dialogType\",\"variant\",\"localConfig\",\"confirm\",\"alert\",\"prompt\",\"custom\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"config\",\"variant\"],\"validators\":[{\"validatorId\":\"preset-exists\",\"level\":\"error\",\"code\":\"DIALOG_PRESET_EXISTS\",\"description\":\"Preset type and variant must exist in PRAXIS_DIALOG_GLOBAL_PRESETS or be host-provided.\"},{\"validatorId\":\"preset-merge-order-preserved\",\"level\":\"error\",\"code\":\"DIALOG_PRESET_MERGE_ORDER_PRESERVED\",\"description\":\"Preset merge order must remain type -> variant -> local config.\"},{\"validatorId\":\"accessibility-label-preserved\",\"level\":\"error\",\"code\":\"DIALOG_ACCESSIBILITY_LABEL_PRESERVED\",\"description\":\"Dialog or alertdialog must keep an accessible title or aria label.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"apply-danger-preset\",\"request\":\"Apply the danger confirm preset.\",\"operationId\":\"dialog.preset.apply\",\"params\":{\"dialogType\":\"confirm\",\"variant\":\"danger\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "cccb1937556d91844deefe7ad223fe578b444e698e99381da4dfb473e8975849",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 7,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"childHost.configure\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Configure dialog child host Effects: compile-domain-patch. Host the dynamic page component with customization enabled.\",\"scope\":\"templating\",\"target\":{\"kind\":\"childHost\",\"resolver\":\"praxis-dialog-child-component-or-template-host\",\"required\":false},\"inputContract\":{\"required\":[\"contentType\"],\"properties\":[\"contentType\",\"componentId\",\"templateId\",\"inputs\",\"data\",\"childManifestComponentId\"],\"semanticTerms\":[\"contentType\",\"componentId\",\"templateId\",\"inputs\",\"data\",\"childManifestComponentId\",\"component\",\"template\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"content\",\"componentId\",\"inputs\",\"data\"],\"validators\":[{\"validatorId\":\"child-host-registered\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_HOST_REGISTERED\",\"description\":\"Child component/template must resolve through ComponentMetadataRegistry or dialog registries.\"},{\"validatorId\":\"child-config-delegates-to-child-manifest\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_CONFIG_DELEGATES\",\"description\":\"Child component config edits must be delegated to the child authoring manifest.\"},{\"validatorId\":\"child-inputs-serializable\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_INPUTS_SERIALIZABLE\",\"description\":\"Child inputs/data persisted by authoring must be serializable safe values.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"configure-child-host\",\"request\":\"Host the dynamic page component with customization enabled.\",\"operationId\":\"childHost.configure\",\"params\":{\"contentType\":\"component\",\"componentId\":\"praxis-dynamic-page\",\"inputs\":{\"enableCustomization\":true}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "9f97aee2f83decfa9dde722042d81b9545a93016ffaa90f704a5612ae47365e0",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 8,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"childOperation.delegate\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Delegate operation to child manifest Effects: compile-domain-patch. Change the table column inside the dialog. Directly patch the child table config from the dialog shell manifest.\",\"scope\":\"templating\",\"target\":{\"kind\":\"childHost\",\"resolver\":\"praxis-dialog-child-component-or-template-host\",\"required\":true},\"inputContract\":{\"required\":[\"childManifestComponentId\",\"operationId\",\"params\"],\"properties\":[\"childManifestComponentId\",\"operationId\",\"target\",\"params\"],\"semanticTerms\":[\"childManifestComponentId\",\"operationId\",\"target\",\"params\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"inputs\",\"data\"],\"validators\":[{\"validatorId\":\"child-manifest-resolvable\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_MANIFEST_RESOLVABLE\",\"description\":\"Delegated child operation must resolve a child component authoring manifest.\"},{\"validatorId\":\"child-operation-authorized\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_OPERATION_AUTHORIZED\",\"description\":\"Delegated child operation must be declared by the child manifest.\"},{\"validatorId\":\"child-config-delegates-to-child-manifest\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_CONFIG_DELEGATES\",\"description\":\"Child component config edits must be delegated to the child authoring manifest.\"},{\"validatorId\":\"dialog-shell-boundary-preserved\",\"level\":\"error\",\"code\":\"DIALOG_SHELL_BOUNDARY_PRESERVED\",\"description\":\"Dialog shell operations must not rewrite child component semantics directly.\"}],\"preconditions\":[\"child-host-configured\",\"child-manifest-resolved\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"delegate-child-config\",\"request\":\"Change the table column inside the dialog.\",\"operationId\":\"childOperation.delegate\",\"params\":{\"childManifestComponentId\":\"praxis-table\",\"operationId\":\"column.label.set\",\"params\":{\"field\":\"name\",\"label\":\"Name\"}},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-child-shell-mix\",\"request\":\"Directly patch the child table config from the dialog shell manifest.\",\"operationId\":\"childOperation.delegate\",\"params\":{\"childManifestComponentId\":\"\",\"operationId\":\"patch-raw-child-config\",\"params\":{}},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "ce39866fd1b20d7f266e0dcd4c710e7ece04da59e44b56637de00a84e2a7fd0f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 9,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"identity\"}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "5a44d453324eed77cd1b2e5d642585f13254a79d9520e3d8b2c9c6a30ca805db",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 10,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"config\",\"type\":\"PraxisDialogConfig\",\"description\":\"Canonical shell configuration consumed by PraxisDialog.open and tag mode.\"},{\"name\":\"content\",\"type\":\"ComponentType | TemplateRef | DialogContentDescriptor\",\"description\":\"Dialog child host content. Child semantics remain owned by the child component manifest.\"},{\"name\":\"variant\",\"type\":\"string\",\"description\":\"Optional global preset variant merged after dialog type presets and before local config.\"},{\"name\":\"componentId\",\"type\":\"string\",\"description\":\"Component metadata or dialog registry id used by global dialog open actions.\"},{\"name\":\"inputs\",\"type\":\"Record<string, unknown>\",\"description\":\"Inputs applied to the child component after opening the dialog.\"}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "2a01fc6b44cb8f514f46255c529b4b60dfa43c9c35379b7aa9b31e8a6fb5f6e2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 11,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"dialogShell\",\"resolver\":\"praxis-dialog-config-root\",\"description\":\"Top-level PraxisDialogConfig shell fields such as title, role, actions and theme.\"},{\"kind\":\"size\",\"resolver\":\"praxis-dialog-size-fields\",\"description\":\"Width, height, min/max size fields on PraxisDialogConfig.\"},{\"kind\":\"position\",\"resolver\":\"praxis-dialog-position-fields\",\"description\":\"Overlay position fields top, bottom, left and right.\"},{\"kind\":\"backdrop\",\"resolver\":\"praxis-dialog-backdrop-fields\",\"description\":\"Backdrop enablement and backdrop class semantics.\"},{\"kind\":\"closePolicy\",\"resolver\":\"praxis-dialog-close-policy-fields\",\"description\":\"disableClose, closeOnBackdropClick, closeOnNavigation, restoreFocus and autofocus behavior.\"},{\"kind\":\"preset\",\"resolver\":\"praxis-dialog-global-preset-by-type-variant\",\"description\":\"Type and variant presets merged through PRAXIS_DIALOG_GLOBAL_PRESETS.\"},{\"kind\":\"childHost\",\"resolver\":\"praxis-dialog-child-component-or-template-host\",\"description\":\"Component/template registry child host and input/data envelope.\"}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "78efb09293d910d567993777869d7af9b55288d946f79db021209ae8e53ff5a1",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 12,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"dialog.shell.set\",\"title\":\"Set dialog shell fields\",\"scope\":\"global\",\"targetKind\":\"dialogShell\",\"target\":{\"kind\":\"dialogShell\",\"resolver\":\"praxis-dialog-config-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"title\":{\"type\":\"string\"},\"titleIcon\":{\"type\":\"string\"},\"ariaRole\":{\"enum\":[\"dialog\",\"alertdialog\"]},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelledBy\":{\"type\":\"string\"},\"ariaDescribedBy\":{\"type\":\"string\"},\"themeColor\":{\"enum\":[\"primary\",\"light\",\"dark\"]},\"actionsLayout\":{\"enum\":[\"start\",\"center\",\"end\",\"stretched\"]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"config\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"accessibility-label-preserved\",\"aria-role-valid\",\"shell-fields-supported\",\"dialog-round-trip\"],\"affectedPaths\":[\"config.title\",\"config.titleIcon\",\"config.ariaRole\",\"config.ariaLabel\",\"config.ariaLabelledBy\",\"config.ariaDescribedBy\",\"config.themeColor\",\"config.actionsLayout\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"dialog.size.set\",\"title\":\"Set dialog size\",\"scope\":\"layout\",\"targetKind\":\"size\",\"target\":{\"kind\":\"size\",\"resolver\":\"praxis-dialog-size-fields\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"width\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"height\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"minWidth\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"maxWidth\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"minHeight\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]},\"maxHeight\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"number\"}]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"config\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"size-values-safe\",\"size-min-max-consistent\",\"dialog-round-trip\"],\"affectedPaths\":[\"config.width\",\"config.height\",\"config.minWidth\",\"config.maxWidth\",\"config.minHeight\",\"config.maxHeight\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"dialog.position.set\",\"title\":\"Set dialog position\",\"scope\":\"layout\",\"targetKind\":\"position\",\"target\":{\"kind\":\"position\",\"resolver\":\"praxis-dialog-position-fields\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"top\":{\"type\":\"string\"},\"bottom\":{\"type\":\"string\"},\"left\":{\"type\":\"string\"},\"right\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"config.position\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"position-values-safe\",\"position-not-conflicting\",\"dialog-round-trip\"],\"affectedPaths\":[\"config.position\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"dialog.backdrop.set\",\"title\":\"Set dialog backdrop\",\"scope\":\"skin\",\"targetKind\":\"backdrop\",\"target\":{\"kind\":\"backdrop\",\"resolver\":\"praxis-dialog-backdrop-fields\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"hasBackdrop\":{\"type\":\"boolean\"},\"backdropClass\":{\"oneOf\":[{\"type\":\"string\"},{\"type\":\"array\"},{\"type\":\"object\"}]}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"config\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"backdrop-policy-explicit\",\"backdrop-class-safe\",\"dialog-round-trip\"],\"affectedPaths\":[\"config.hasBackdrop\",\"config.backdropClass\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"dialog.closePolicy.set\",\"title\":\"Set dialog close policy\",\"scope\":\"accessibility\",\"targetKind\":\"closePolicy\",\"target\":{\"kind\":\"closePolicy\",\"resolver\":\"praxis-dialog-close-policy-fields\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"disableClose\":{\"type\":\"boolean\"},\"closeOnBackdropClick\":{\"type\":\"boolean\"},\"closeOnNavigation\":{\"type\":\"boolean\"},\"restoreFocus\":{\"type\":\"boolean\"},\"autoFocus\":{\"type\":\"boolean\"},\"autoFocusedElement\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-object\",\"path\":\"config\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"close-policy-explicit\",\"unsafe-close-confirmed-when-needed\",\"restore-focus-preserved\",\"alertdialog-focus-preserved\",\"dialog-round-trip\"],\"affectedPaths\":[\"config.disableClose\",\"config.closeOnBackdropClick\",\"config.closeOnNavigation\",\"config.restoreFocus\",\"config.autoFocus\",\"config.autoFocusedElement\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"confirmation-collected\"]},{\"operationId\":\"dialog.preset.apply\",\"title\":\"Apply dialog preset\",\"scope\":\"global\",\"targetKind\":\"preset\",\"target\":{\"kind\":\"preset\",\"resolver\":\"praxis-dialog-global-preset-by-type-variant\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"dialogType\"],\"properties\":{\"dialogType\":{\"enum\":[\"confirm\",\"alert\",\"prompt\",\"custom\"]},\"variant\":{\"type\":\"string\"},\"localConfig\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"dialog-preset-apply\",\"handlerContract\":{\"reads\":[\"PRAXIS_DIALOG_GLOBAL_PRESETS\",\"config\",\"variant\"],\"writes\":[\"config\",\"variant\"],\"identityKeys\":[\"dialogType\",\"variant\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"dialogType\"],\"properties\":{\"dialogType\":{\"enum\":[\"confirm\",\"alert\",\"prompt\",\"custom\"]},\"variant\":{\"type\":\"string\"},\"localConfig\":{\"type\":\"object\"}}},\"failureModes\":[\"preset-not-found\",\"variant-not-found\",\"preset-merge-order-invalid\",\"accessibility-regression\"],\"description\":\"Applies the canonical merge order type preset -> variant -> local config without mutating child component semantics.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"preset-exists\",\"preset-merge-order-preserved\",\"accessibility-label-preserved\",\"dialog-round-trip\"],\"affectedPaths\":[\"config\",\"variant\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"childHost.configure\",\"title\":\"Configure dialog child host\",\"scope\":\"templating\",\"targetKind\":\"childHost\",\"target\":{\"kind\":\"childHost\",\"resolver\":\"praxis-dialog-child-component-or-template-host\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"contentType\"],\"properties\":{\"contentType\":{\"enum\":[\"component\",\"template\"]},\"componentId\":{\"type\":\"string\"},\"templateId\":{\"type\":\"string\"},\"inputs\":{\"type\":\"object\"},\"data\":{},\"childManifestComponentId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"dialog-child-host-configure\",\"handlerContract\":{\"reads\":[\"ComponentMetadataRegistry\",\"PRAXIS_DIALOG_CONTENT_REGISTRY\",\"PRAXIS_DIALOG_TEMPLATE_REGISTRY\",\"content\",\"componentId\",\"inputs\",\"data\"],\"writes\":[\"content\",\"componentId\",\"inputs\",\"data\"],\"identityKeys\":[\"componentId\",\"templateId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"contentType\"],\"properties\":{\"contentType\":{\"enum\":[\"component\",\"template\"]},\"componentId\":{\"type\":\"string\"},\"templateId\":{\"type\":\"string\"},\"inputs\":{\"type\":\"object\"},\"data\":{},\"childManifestComponentId\":{\"type\":\"string\"}}},\"failureModes\":[\"component-not-registered\",\"template-not-registered\",\"child-inputs-not-serializable\",\"child-manifest-required\"],\"description\":\"Configures which component/template is hosted in the dialog and serializable host inputs; child config fields remain delegated to the child manifest.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"child-host-registered\",\"child-config-delegates-to-child-manifest\",\"child-inputs-serializable\",\"dialog-round-trip\"],\"affectedPaths\":[\"content\",\"componentId\",\"inputs\",\"data\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "baebffd420daa8a25f92f628142984b6998ac2c4dc969e304a6fe34946ff9961",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 13,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"childOperation.delegate\",\"title\":\"Delegate operation to child manifest\",\"scope\":\"templating\",\"targetKind\":\"childHost\",\"target\":{\"kind\":\"childHost\",\"resolver\":\"praxis-dialog-child-component-or-template-host\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"childManifestComponentId\",\"operationId\",\"params\"],\"properties\":{\"childManifestComponentId\":{\"type\":\"string\"},\"operationId\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"params\":{\"type\":\"object\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"dialog-child-operation-delegate\",\"handlerContract\":{\"reads\":[\"childManifestComponentId\",\"operationId\",\"params\",\"componentRegistry.authoringManifest\"],\"writes\":[\"inputs\",\"data\"],\"identityKeys\":[\"childManifestComponentId\",\"operationId\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"childManifestComponentId\",\"operationId\",\"params\"],\"properties\":{\"childManifestComponentId\":{\"type\":\"string\"},\"operationId\":{\"type\":\"string\"},\"target\":{\"type\":\"string\"},\"params\":{\"type\":\"object\"}}},\"failureModes\":[\"child-manifest-not-found\",\"child-operation-not-authorized\",\"child-operation-validation-failed\",\"dialog-shell-child-boundary-violation\"],\"description\":\"Delegates child component configuration edits to the child authoring manifest before projecting the validated patch into the dialog child host inputs/data envelope.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"child-manifest-resolvable\",\"child-operation-authorized\",\"child-config-delegates-to-child-manifest\",\"dialog-shell-boundary-preserved\"],\"affectedPaths\":[\"inputs\",\"data\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"child-host-configured\",\"child-manifest-resolved\"]}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "8099bef9aa4665cd5e7c57081be9c478146f26e9f9cfd3df1bc86b7494c50a88",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 14,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"accessibility-label-preserved\",\"level\":\"error\",\"code\":\"DIALOG_ACCESSIBILITY_LABEL_PRESERVED\",\"description\":\"Dialog or alertdialog must keep an accessible title or aria label.\"},{\"validatorId\":\"aria-role-valid\",\"level\":\"error\",\"code\":\"DIALOG_ARIA_ROLE_VALID\",\"description\":\"ariaRole must be dialog or alertdialog.\"},{\"validatorId\":\"shell-fields-supported\",\"level\":\"error\",\"code\":\"DIALOG_SHELL_FIELDS_SUPPORTED\",\"description\":\"Shell edits must target supported PraxisDialogConfig fields.\"},{\"validatorId\":\"size-values-safe\",\"level\":\"error\",\"code\":\"DIALOG_SIZE_VALUES_SAFE\",\"description\":\"Size values must be finite numbers or safe CSS size strings.\"},{\"validatorId\":\"size-min-max-consistent\",\"level\":\"error\",\"code\":\"DIALOG_SIZE_MIN_MAX_CONSISTENT\",\"description\":\"Minimum sizes must not exceed maximum sizes.\"},{\"validatorId\":\"position-values-safe\",\"level\":\"error\",\"code\":\"DIALOG_POSITION_VALUES_SAFE\",\"description\":\"Position values must be safe CSS size strings.\"},{\"validatorId\":\"position-not-conflicting\",\"level\":\"warning\",\"code\":\"DIALOG_POSITION_NOT_CONFLICTING\",\"description\":\"Conflicting position pairs should be explicit and intentional.\"},{\"validatorId\":\"backdrop-policy-explicit\",\"level\":\"error\",\"code\":\"DIALOG_BACKDROP_POLICY_EXPLICIT\",\"description\":\"Backdrop and backdrop-click behavior must be explicit when edited.\"},{\"validatorId\":\"backdrop-class-safe\",\"level\":\"error\",\"code\":\"DIALOG_BACKDROP_CLASS_SAFE\",\"description\":\"Backdrop classes must be serializable safe class values.\"},{\"validatorId\":\"close-policy-explicit\",\"level\":\"error\",\"code\":\"DIALOG_CLOSE_POLICY_EXPLICIT\",\"description\":\"Close behavior must explicitly describe ESC, backdrop and navigation semantics.\"},{\"validatorId\":\"unsafe-close-confirmed-when-needed\",\"level\":\"error\",\"code\":\"DIALOG_UNSAFE_CLOSE_CONFIRMED\",\"description\":\"Disabling safe close affordances or enabling unsafe dismissal requires confirmation.\"},{\"validatorId\":\"restore-focus-preserved\",\"level\":\"error\",\"code\":\"DIALOG_RESTORE_FOCUS_PRESERVED\",\"description\":\"restoreFocus must stay enabled unless intentionally changed with confirmation.\"},{\"validatorId\":\"alertdialog-focus-preserved\",\"level\":\"error\",\"code\":\"DIALOG_ALERTDIALOG_FOCUS_PRESERVED\",\"description\":\"alertdialog focus behavior must keep primary action or configured focus target reachable.\"},{\"validatorId\":\"preset-exists\",\"level\":\"error\",\"code\":\"DIALOG_PRESET_EXISTS\",\"description\":\"Preset type and variant must exist in PRAXIS_DIALOG_GLOBAL_PRESETS or be host-provided.\"},{\"validatorId\":\"preset-merge-order-preserved\",\"level\":\"error\",\"code\":\"DIALOG_PRESET_MERGE_ORDER_PRESERVED\",\"description\":\"Preset merge order must remain type -> variant -> local config.\"},{\"validatorId\":\"child-host-registered\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_HOST_REGISTERED\",\"description\":\"Child component/template must resolve through ComponentMetadataRegistry or dialog registries.\"},{\"validatorId\":\"child-config-delegates-to-child-manifest\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_CONFIG_DELEGATES\",\"description\":\"Child component config edits must be delegated to the child authoring manifest.\"},{\"validatorId\":\"child-inputs-serializable\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_INPUTS_SERIALIZABLE\",\"description\":\"Child inputs/data persisted by authoring must be serializable safe values.\"},{\"validatorId\":\"child-manifest-resolvable\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_MANIFEST_RESOLVABLE\",\"description\":\"Delegated child operation must resolve a child component authoring manifest.\"},{\"validatorId\":\"child-operation-authorized\",\"level\":\"error\",\"code\":\"DIALOG_CHILD_OPERATION_AUTHORIZED\",\"description\":\"Delegated child operation must be declared by the child manifest.\"},{\"validatorId\":\"dialog-shell-boundary-preserved\",\"level\":\"error\",\"code\":\"DIALOG_SHELL_BOUNDARY_PRESERVED\",\"description\":\"Dialog shell operations must not rewrite child component semantics directly.\"},{\"validatorId\":\"dialog-round-trip\",\"level\":\"error\",\"code\":\"DIALOG_ROUND_TRIP\",\"description\":\"Service/tag mode must preserve shell config through open, close, afterClosed and host persistence.\"}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "eb3add49360f8a684c21585401133905b8ab6547ff2db32f34de73a7fe04d90f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 15,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"PraxisDialogConfig is the canonical shell config; child component config remains owned by the child manifest.\",\"Preset application must preserve merge order: type preset, then variant, then local config.\",\"Close policy edits must keep accessibility, focus trap, ESC/backdrop behavior and restoreFocus explicit.\",\"Dialog host operations must resolve component/template ids through governed registries instead of ad hoc overlays.\"]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "755649f16997bb032560c90d9e4a9d8f90f98f47bb8535eec0908ce1f2a0c1e9",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 16,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-dialog\",\"ownerPackage\":\"@praxisui/dialog\",\"configSchemaId\":\"PraxisDialogConfig\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"set-size\",\"request\":\"Open this dialog at 860 by 640 pixels.\",\"operationId\":\"dialog.size.set\",\"params\":{\"width\":\"860px\",\"height\":\"640px\"},\"isPositive\":true},{\"id\":\"set-position\",\"request\":\"Anchor the dialog to the right side.\",\"operationId\":\"dialog.position.set\",\"params\":{\"right\":\"24px\",\"top\":\"64px\"},\"isPositive\":true},{\"id\":\"set-backdrop\",\"request\":\"Use a backdrop with the default governed backdrop class.\",\"operationId\":\"dialog.backdrop.set\",\"params\":{\"hasBackdrop\":true,\"backdropClass\":\"pdx-dialog-backdrop\"},\"isPositive\":true},{\"id\":\"set-close-policy\",\"request\":\"Make this destructive confirm require explicit button close.\",\"operationId\":\"dialog.closePolicy.set\",\"params\":{\"disableClose\":true,\"closeOnBackdropClick\":false,\"restoreFocus\":true},\"isPositive\":true},{\"id\":\"apply-danger-preset\",\"request\":\"Apply the danger confirm preset.\",\"operationId\":\"dialog.preset.apply\",\"params\":{\"dialogType\":\"confirm\",\"variant\":\"danger\"},\"isPositive\":true},{\"id\":\"configure-child-host\",\"request\":\"Host the dynamic page component with customization enabled.\",\"operationId\":\"childHost.configure\",\"params\":{\"contentType\":\"component\",\"componentId\":\"praxis-dynamic-page\",\"inputs\":{\"enableCustomization\":true}},\"isPositive\":true},{\"id\":\"delegate-child-config\",\"request\":\"Change the table column inside the dialog.\",\"operationId\":\"childOperation.delegate\",\"params\":{\"childManifestComponentId\":\"praxis-table\",\"operationId\":\"column.label.set\",\"params\":{\"field\":\"name\",\"label\":\"Name\"}},\"isPositive\":true},{\"id\":\"set-shell-label\",\"request\":\"Set the dialog title and alertdialog role.\",\"operationId\":\"dialog.shell.set\",\"params\":{\"title\":\"Delete record\",\"ariaRole\":\"alertdialog\"},\"isPositive\":true},{\"id\":\"reject-child-shell-mix\",\"request\":\"Directly patch the child table config from the dialog shell manifest.\",\"operationId\":\"childOperation.delegate\",\"params\":{\"childManifestComponentId\":\"\",\"operationId\":\"patch-raw-child-config\",\"params\":{}},\"isPositive\":false},{\"id\":\"reject-inaccessible-alert\",\"request\":\"Make an alertdialog with no title or aria label.\",\"operationId\":\"dialog.shell.set\",\"params\":{\"ariaRole\":\"alertdialog\",\"title\":\"\"},\"isPositive\":false},{\"id\":\"reject-unsafe-close\",\"request\":\"Let a destructive dialog close on accidental backdrop click with no confirmation.\",\"operationId\":\"dialog.closePolicy.set\",\"params\":{\"closeOnBackdropClick\":true,\"disableClose\":false,\"restoreFocus\":false},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-dialog/src/lib/ai/praxis-dialog-authoring-manifest.ts",
          "contentHash": "7ac02b6b620dccc665ecf254994eb369221c28e61e4d4de4506d4696e01eaa59",
          "sourceKind": "component_definition",
          "sourceId": "praxis-dialog",
          "corpusVersion": "1.0.0"
        }
      ]
    }
  },
  "note": "Package-scoped Praxis component registry for source-free agent discovery. Use the canonical ingestion registry for cross-package aggregate analysis."
}
