{
  "schemaVersion": "1.0.0",
  "generatedAt": "2026-09-07T00:54:55.301Z",
  "packageName": "@praxisui/rich-content",
  "packageVersion": "9.0.67",
  "sourceRegistry": "praxis-component-registry-ingestion",
  "sourceRegistryVersion": "1.0.0",
  "componentCount": 1,
  "components": {
    "praxis-rich-content": {
      "id": "praxis-rich-content",
      "description": "Renderer canonico de RichContentDocument para blocos editoriais, cards, grupos de metricas, media blocks, timelines e primitives de apresentacao.",
      "inputs": [
        {
          "name": "document",
          "type": "RichContentDocument | null",
          "required": false,
          "description": "Documento canonico praxis.rich-content renderizado pelo componente.",
          "label": "Rich content document",
          "default": {
            "kind": "praxis.rich-content",
            "version": "1.0.0",
            "nodes": [
              {
                "type": "card",
                "title": "Rich content",
                "content": [
                  {
                    "type": "text",
                    "text": "Configure este bloco com um RichContentDocument canonico."
                  },
                  {
                    "type": "badge",
                    "label": "praxis.rich-content"
                  }
                ]
              }
            ]
          }
        },
        {
          "name": "nodes",
          "type": "RichBlockNode[] | null",
          "required": false,
          "description": "Lista direta de nodes quando o host ja controla o envelope do documento.",
          "label": "Nodes"
        },
        {
          "name": "context",
          "type": "JsonLogicDataRecord | null",
          "required": false,
          "description": "Contexto usado para resolver Json Logic, expressoes e bindings dos nodes.",
          "label": "Context"
        },
        {
          "name": "hostCapabilities",
          "type": "RichBlockHostCapabilities | null",
          "required": false,
          "description": "Capacidades mediadas pelo host para presets, dados, actions e embeds governados.",
          "label": "Host capabilities"
        },
        {
          "name": "layout",
          "type": "'block' | 'inline'",
          "required": false,
          "description": "Modo de renderizacao do documento: bloco ou inline.",
          "label": "Layout",
          "default": "block"
        },
        {
          "name": "rootClassName",
          "type": "string",
          "required": false,
          "description": "Classe CSS aplicada ao root do renderer para surfaces de host.",
          "label": "Root class"
        }
      ],
      "outputs": [],
      "configSchemaId": null,
      "selector": "praxis-rich-content",
      "friendlyName": "Praxis Rich Content",
      "icon": "dashboard_customize",
      "tags": [
        "widget",
        "rich-content",
        "editorial",
        "presentation",
        "cards",
        "timeline"
      ],
      "lib": "@praxisui/rich-content",
      "layoutHints": {
        "recommendedCols": 6,
        "recommendedRows": 3,
        "minCols": 2,
        "minRows": 1
      },
      "ports": [
        {
          "id": "document",
          "label": "Rich Content Document",
          "direction": "input",
          "semanticKind": "config-fragment",
          "description": "Documento editorial canonico materializado por composicao declarativa.",
          "schema": {
            "id": "RichContentDocument",
            "kind": "ts-type",
            "ref": "RichContentDocument"
          },
          "compatibility": {
            "acceptsSemanticKinds": [
              "config-fragment"
            ],
            "schemaMode": "structural"
          },
          "exposure": {
            "public": true,
            "group": "data"
          }
        },
        {
          "id": "context",
          "label": "View Context",
          "direction": "input",
          "semanticKind": "view-context",
          "description": "Governed runtime context used to resolve Json Logic, expressions and bindings without mutating the authored document.",
          "schema": {
            "id": "JsonLogicDataRecord",
            "kind": "ts-type",
            "ref": "JsonLogicDataRecord"
          },
          "compatibility": {
            "acceptsSemanticKinds": [
              "view-context"
            ],
            "schemaMode": "structural"
          },
          "exposure": {
            "public": true,
            "group": "data"
          }
        }
      ],
      "configEditor": {
        "component": "[ref:PraxisRichContentConfigEditor]",
        "title": "Configurar rich content"
      },
      "insertionPresets": [
        {
          "id": "editorial-card",
          "label": "Editorial card",
          "description": "Starter card with title, text and badge.",
          "icon": "dashboard",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "card",
                  "title": "Editorial card",
                  "content": [
                    {
                      "type": "text",
                      "text": "Add editorial context here."
                    },
                    {
                      "type": "badge",
                      "label": "Praxis"
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "callout-guidance",
          "label": "Guidance callout",
          "description": "Starter callout for instructions and attention states.",
          "icon": "info",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "callout",
                  "tone": "info",
                  "title": "Guidance",
                  "message": "Review the context before continuing."
                }
              ]
            }
          }
        },
        {
          "id": "cta-group",
          "label": "CTA group",
          "description": "Governed call-to-action cluster for next steps and host-mediated flows.",
          "icon": "ads_click",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "ctaGroup",
                  "title": "Next steps",
                  "subtitle": "Choose the governed action for this record.",
                  "message": "Use a semantic CTA cluster instead of custom host markup.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Approve",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.start"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request changes",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.requestChanges"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "knowledge-surface",
          "label": "Knowledge surface",
          "description": "Starter composition with record summary and disclosure.",
          "icon": "lightbulb",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "recordSummary",
                  "title": "Employee summary",
                  "fields": [
                    {
                      "label": "Department",
                      "value": "People Operations"
                    },
                    {
                      "label": "Manager",
                      "value": "Ana Silva"
                    }
                  ]
                },
                {
                  "type": "disclosure",
                  "title": "Additional details",
                  "content": [
                    {
                      "type": "text",
                      "text": "Use this area for governed guidance."
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "lookup-card",
          "label": "Lookup card",
          "description": "Governed lookup summary with primary host-mediated action.",
          "icon": "person_search",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "employee.lookup.open"
                  },
                  "fields": [
                    {
                      "label": "Department",
                      "value": "People Operations",
                      "hint": "Resolved from lookup"
                    },
                    {
                      "label": "Manager",
                      "value": "Ana Silva"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Replace",
                      "variant": "stroked",
                      "action": {
                        "actionId": "employee.lookup.replace"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "related-record",
          "label": "Related record",
          "description": "Semantic related-record summary with optional governed primary action.",
          "icon": "account_tree",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "relatedRecord",
                  "title": "Manager",
                  "relationLabel": "Reports to",
                  "subtitle": "Ana Silva",
                  "meta": "People Operations",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "employee.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Department",
                      "value": "People Operations",
                      "hint": "Resolved from the related record"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Replace",
                      "variant": "stroked",
                      "action": {
                        "actionId": "employee.manager.replace"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "action-card",
          "label": "Action card",
          "description": "Governed editorial card with a primary host-mediated CTA.",
          "icon": "bolt",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "actionCard",
                  "title": "Review approval package",
                  "subtitle": "Host-mediated workflow",
                  "message": "Use governed actions for flows such as inspect, approve or launch without embedding handlers in the document.",
                  "ctaLabel": "Inspect package",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.package.inspect"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Escalate",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.package.escalate"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "approval-decision-surface",
          "label": "Approval decision surface",
          "description": "Domain starter for approval workbenches with KPIs, related approver context and governed decisions.",
          "icon": "approval",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Approval signals",
                  "subtitle": "Portable approval metrics for governed decision surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Amount",
                      "value": "$128k",
                      "caption": "Capex threshold",
                      "icon": "payments"
                    },
                    {
                      "label": "SLA",
                      "value": "18h",
                      "caption": "Time remaining",
                      "icon": "schedule"
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Assigned approver",
                  "relationLabel": "Current owner",
                  "subtitle": "Mira Drax",
                  "meta": "Finance governance",
                  "ctaLabel": "Open approver",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Approval lane",
                      "value": "Finance / P0",
                      "hint": "Resolved from the approval assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Reassign",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.owner.reassign"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Decision",
                  "subtitle": "Governed approval outcomes",
                  "message": "Use canonical rich-content actions for approve, request changes or escalate.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Approve",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.decision.approve"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request changes",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.decision.requestChanges"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "approval-review-surface",
          "label": "Approval review surface",
          "description": "Domain starter for approval review workbenches with queue metrics, selected request context and governed escalation actions.",
          "icon": "fact_check",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Review signals",
                  "subtitle": "Portable approval review metrics for governed workbenches.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Pending",
                      "value": "12",
                      "caption": "Requests in queue",
                      "icon": "pending_actions"
                    },
                    {
                      "label": "Escalations",
                      "value": "3",
                      "caption": "Needs leadership input",
                      "icon": "warning"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected request",
                  "status": "resolved",
                  "subtitle": "APR-4096",
                  "meta": "Vendor onboarding exception",
                  "ctaLabel": "Open request",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.review.open"
                  },
                  "fields": [
                    {
                      "label": "Risk",
                      "value": "High",
                      "hint": "Resolved from the current review queue context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.review.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Review views",
                  "subtitle": "Portable editorial tabs for summary and evidence.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep approval review rationale and evidence notes inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "evidence",
                      "label": "Evidence",
                      "icon": "inventory_2",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Portfolio",
                              "value": "Vendor operations"
                            },
                            {
                              "label": "Escalation rule",
                              "value": "Escalate requests above $250k or policy exceptions."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Escalation owner",
                  "relationLabel": "Review lead",
                  "subtitle": "Noah Hart",
                  "meta": "Operations governance",
                  "ctaLabel": "Open owner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.review.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Coverage",
                      "value": "Vendor onboarding / P1",
                      "hint": "Resolved from the review assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Reassign",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.review.owner.reassign"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Review actions",
                  "subtitle": "Governed approval review outcomes",
                  "message": "Use canonical rich-content actions for approve, escalate or request evidence.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Approve review",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.review.approve"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request evidence",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.review.requestEvidence"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate approval case",
                  "subtitle": "Leadership review",
                  "message": "Use actionCard when the approval host needs a governed escalation flow without embedding handlers in the document.",
                  "meta": "Queue priority",
                  "ctaLabel": "Escalate case",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.review.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.review.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "approval-audit-surface",
          "label": "Approval audit surface",
          "description": "Domain starter for approval audit workbenches with compliance signals, evidence context and governed remediation actions.",
          "icon": "policy",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Audit signals",
                  "subtitle": "Portable approval audit metrics for governed compliance surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Exceptions",
                      "value": "4",
                      "caption": "Open policy deviations",
                      "icon": "gpp_maybe"
                    },
                    {
                      "label": "SLA",
                      "value": "6h",
                      "caption": "Time to evidence lock",
                      "icon": "schedule"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected audit case",
                  "status": "resolved",
                  "subtitle": "AUD-771",
                  "meta": "Expense delegation exception",
                  "ctaLabel": "Open case",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.audit.case.open"
                  },
                  "fields": [
                    {
                      "label": "Severity",
                      "value": "Critical",
                      "hint": "Resolved from the current audit queue context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open evidence packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.audit.packet.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Audit views",
                  "subtitle": "Portable editorial tabs for evidence and policy context.",
                  "appearance": "underline",
                  "defaultTabId": "evidence",
                  "items": [
                    {
                      "id": "evidence",
                      "label": "Evidence",
                      "icon": "inventory_2",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep audit evidence, exception notes and remediation criteria inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "policy",
                      "label": "Policy",
                      "icon": "policy",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Control family",
                              "value": "Delegation of authority"
                            },
                            {
                              "label": "Remediation rule",
                              "value": "Lock the packet and route to compliance whenever the policy owner is unresolved."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Compliance owner",
                  "relationLabel": "Audit lead",
                  "subtitle": "Priya Nunes",
                  "meta": "Internal controls",
                  "ctaLabel": "Open owner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.audit.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Control area",
                      "value": "Finance / delegation",
                      "hint": "Resolved from the audit assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Assign reviewer",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.audit.owner.assignReviewer"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Audit actions",
                  "subtitle": "Governed audit and remediation outcomes",
                  "message": "Use canonical rich-content actions for lock, remediate or request evidence.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Lock packet",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.audit.packet.lock"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request remediation",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.audit.remediation.request"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate compliance review",
                  "subtitle": "Policy breach workflow",
                  "message": "Use actionCard when the approval host needs a governed audit escalation flow without embedding handlers in the document.",
                  "meta": "Compliance escalation",
                  "ctaLabel": "Escalate audit",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.audit.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open evidence packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.audit.packet.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "approval-sla-triage-surface",
          "label": "Approval SLA triage surface",
          "description": "Domain starter for approval SLA triage workbenches with breach signals, queue ownership and governed triage actions.",
          "icon": "timer",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Triage signals",
                  "subtitle": "Portable approval SLA metrics for governed queue triage surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Breaches",
                      "value": "5",
                      "caption": "Past SLA threshold",
                      "icon": "timer_off"
                    },
                    {
                      "label": "P1 queue",
                      "value": "11",
                      "caption": "High-priority cases",
                      "icon": "priority_high"
                    },
                    {
                      "label": "Median age",
                      "value": "9h",
                      "caption": "Queue latency",
                      "icon": "schedule"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected queue case",
                  "status": "resolved",
                  "subtitle": "SLA-221",
                  "meta": "Procurement contract escalation",
                  "ctaLabel": "Open case",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.sla.case.open"
                  },
                  "fields": [
                    {
                      "label": "Priority",
                      "value": "P1",
                      "hint": "Resolved from the current queue triage context."
                    },
                    {
                      "label": "SLA state",
                      "value": "Breach in progress"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open queue packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.sla.packet.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Triage views",
                  "subtitle": "Portable editorial tabs for queue summary and SLA policy context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep queue rationale, breach context and reassignment notes inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "policy",
                      "label": "Policy",
                      "icon": "policy",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Triage rule",
                              "value": "Escalate any P1 request above the SLA threshold or any queue with missing owner coverage."
                            },
                            {
                              "label": "Evidence source",
                              "value": "SLA board snapshot, owner rota and approval event history."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Queue owner",
                  "relationLabel": "Triage lead",
                  "subtitle": "Helena Costa",
                  "meta": "Approval operations",
                  "ctaLabel": "Open owner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.sla.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Coverage",
                      "value": "Procurement / P1 / EMEA",
                      "hint": "Resolved from the queue triage assignment."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Rebalance queue",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.sla.queue.rebalance"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Triage actions",
                  "subtitle": "Governed SLA triage outcomes",
                  "message": "Use canonical rich-content actions for queue triage, owner handoff and SLA intervention.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Start triage",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.sla.triage.start"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request owner update",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.sla.owner.requestUpdate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate SLA breach",
                  "subtitle": "Operations escalation",
                  "message": "Use actionCard when the approval host needs a governed escalation flow for unresolved SLA breaches or queue ownership gaps.",
                  "meta": "Queue priority",
                  "ctaLabel": "Escalate breach",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.sla.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open queue packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.sla.packet.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "approval-delegation-exception-surface",
          "label": "Approval delegation exception surface",
          "description": "Domain starter for approval delegation and exception workbenches with substitute coverage, policy context and governed exception actions.",
          "icon": "rule",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Delegation signals",
                  "subtitle": "Portable approval metrics for exception coverage and substitute approver decisions.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Blocked approvals",
                      "value": "7",
                      "caption": "Awaiting delegate",
                      "icon": "block"
                    },
                    {
                      "label": "Coverage gaps",
                      "value": "3",
                      "caption": "Policy exceptions",
                      "icon": "rule"
                    },
                    {
                      "label": "Aging risk",
                      "value": "High",
                      "caption": "48h threshold",
                      "icon": "priority_high"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected exception",
                  "status": "resolved",
                  "subtitle": "EXC-418",
                  "meta": "Unavailable approver coverage",
                  "ctaLabel": "Open exception",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.delegation.exception.open"
                  },
                  "fields": [
                    {
                      "label": "Policy lane",
                      "value": "Procurement approval / substitute required",
                      "hint": "Resolved from the active approval delegation context."
                    },
                    {
                      "label": "Exception state",
                      "value": "Delegate nomination pending"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open exception packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.delegation.packet.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Exception views",
                  "subtitle": "Portable editorial tabs for delegation rationale, policy and audit context.",
                  "appearance": "underline",
                  "defaultTabId": "coverage",
                  "items": [
                    {
                      "id": "coverage",
                      "label": "Coverage",
                      "icon": "groups",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep substitute coverage rationale, approver availability and delegation notes inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "policy",
                      "label": "Policy",
                      "icon": "policy",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Delegation rule",
                              "value": "Require a qualified substitute when the primary approver is unavailable and the request age crosses the policy threshold."
                            },
                            {
                              "label": "Audit source",
                              "value": "Delegation matrix, approval event history and exception justification."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Proposed delegate",
                  "relationLabel": "Substitute approver",
                  "subtitle": "Marina Lopes",
                  "meta": "Procurement governance",
                  "ctaLabel": "Open delegate",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.delegation.delegate.open"
                  },
                  "fields": [
                    {
                      "label": "Delegation scope",
                      "value": "Procurement contracts up to BRL 250k",
                      "hint": "Resolved from the approval delegation matrix."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Review delegate fit",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.delegation.delegate.reviewFit"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Delegation actions",
                  "subtitle": "Governed approval exception outcomes",
                  "message": "Use canonical rich-content actions for delegate nomination, exception approval and owner follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Approve delegation",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "approval.delegation.approve"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request alternate delegate",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.delegation.requestAlternate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate delegation exception",
                  "subtitle": "Approval continuity",
                  "message": "Use actionCard when the approval host needs a governed escalation for unresolved delegation coverage gaps.",
                  "meta": "Exception escalation",
                  "ctaLabel": "Escalate exception",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "approval.delegation.exception.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open exception packet",
                      "variant": "stroked",
                      "action": {
                        "actionId": "approval.delegation.packet.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "employee-insight-surface",
          "label": "Employee insight surface",
          "description": "Domain starter for HR workbenches with employee KPIs, reporting context and governed follow-up actions.",
          "icon": "badge",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Workforce signals",
                  "subtitle": "Portable HR metrics for employee insight surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Tenure",
                      "value": "4.2y",
                      "caption": "Current employee",
                      "icon": "schedule"
                    },
                    {
                      "label": "Performance",
                      "value": "Exceeds",
                      "caption": "Last review cycle",
                      "icon": "military_tech"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "employee.lookup.open"
                  },
                  "fields": [
                    {
                      "label": "Department",
                      "value": "People Operations",
                      "hint": "Resolved from the current employee context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "employee.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Reporting manager",
                  "relationLabel": "Manager",
                  "subtitle": "Ana Silva",
                  "meta": "People leadership",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "employee.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Org unit",
                      "value": "People Operations",
                      "hint": "Resolved from the reporting chain."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Plan 1:1",
                      "variant": "stroked",
                      "action": {
                        "actionId": "employee.manager.planOneOnOne"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Guided actions",
                  "subtitle": "Governed HR follow-up actions",
                  "message": "Use canonical rich-content actions for reviews, promotion planning and retention follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Start review",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "employee.review.start"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Plan promotion",
                      "variant": "stroked",
                      "action": {
                        "actionId": "employee.promotion.plan"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-performance-review-surface",
          "label": "HR performance review surface",
          "description": "Domain starter for HR performance review workbenches with review signals, calibrated context and governed review actions.",
          "icon": "military_tech",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Review signals",
                  "subtitle": "Portable performance review metrics for governed calibration surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Cycle",
                      "value": "Q2",
                      "caption": "Review period",
                      "icon": "event_note"
                    },
                    {
                      "label": "Calibration",
                      "value": "2",
                      "caption": "Pending panels",
                      "icon": "rule"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-320",
                  "meta": "Performance review",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.review.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Current rating",
                      "value": "Exceeds",
                      "hint": "Resolved from the review workspace context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.review.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Review views",
                  "subtitle": "Portable editorial tabs for review summary and calibration context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep review notes, promotion signals and calibration rationale inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "calibration",
                      "label": "Calibration",
                      "icon": "balance",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Calibration rule",
                              "value": "Escalate any rating change above one band or any compensation impact requiring leadership review."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Manager notes, peer input and cycle summary."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Review manager",
                  "relationLabel": "Manager",
                  "subtitle": "Ana Silva",
                  "meta": "People leadership",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.review.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Review lane",
                      "value": "People operations / calibration",
                      "hint": "Resolved from the review assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule calibration",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.review.manager.scheduleCalibration"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Review actions",
                  "subtitle": "Governed performance review outcomes",
                  "message": "Use canonical rich-content actions for confirm, adjust or request calibration follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm review",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.review.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request calibration follow-up",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.review.calibration.followUp"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate review case",
                  "subtitle": "Performance review governance",
                  "message": "Use actionCard when the HR host needs a governed review escalation flow without embedding handlers in the document.",
                  "meta": "Calibration escalation",
                  "ctaLabel": "Escalate review",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.review.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.review.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-compensation-review-surface",
          "label": "HR compensation review surface",
          "description": "Domain starter for HR compensation review workbenches with budget signals, reward partner context and governed compensation actions.",
          "icon": "payments",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Compensation signals",
                  "subtitle": "Portable compensation metrics for governed reward review surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Cycle",
                      "value": "Q2",
                      "caption": "Comp review window",
                      "icon": "event_note"
                    },
                    {
                      "label": "Budget",
                      "value": "18%",
                      "caption": "Pool remaining",
                      "icon": "payments"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-440",
                  "meta": "Compensation review",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.comp.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Proposed increase",
                      "value": "8%",
                      "hint": "Resolved from the current compensation review context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.comp.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Compensation views",
                  "subtitle": "Portable editorial tabs for proposal summary and budget context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep reward notes, market context and proposal rationale inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "budget",
                      "label": "Budget",
                      "icon": "account_balance_wallet",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Budget rule",
                              "value": "Escalate any compensation proposal above the approved budget lane or any exception requiring leadership approval."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Reward matrix, manager notes and market range snapshot."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Reward partner",
                  "relationLabel": "Partner",
                  "subtitle": "Nadia Costa",
                  "meta": "Rewards and mobility",
                  "ctaLabel": "Open partner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.comp.partner.open"
                  },
                  "fields": [
                    {
                      "label": "Budget lane",
                      "value": "Reward council / compensation",
                      "hint": "Resolved from the current compensation review assignment."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule comp review",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.comp.partner.scheduleReview"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Compensation actions",
                  "subtitle": "Governed HR compensation outcomes",
                  "message": "Use semantic compensation actions instead of host-authored proposal button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm comp proposal",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.comp.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request budget follow-up",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.comp.budget.followUp"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate compensation case",
                  "subtitle": "Rewards exception",
                  "message": "Use actionCard when the HR host needs a governed reward escalation or compensation exception flow.",
                  "meta": "Compensation review",
                  "ctaLabel": "Escalate compensation",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.comp.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.comp.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-promotion-review-surface",
          "label": "HR promotion review surface",
          "description": "Domain starter for HR promotion review workbenches with readiness signals, sponsor context and governed promotion actions.",
          "icon": "north_star",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Promotion signals",
                  "subtitle": "Portable promotion metrics for governed readiness review surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Cycle",
                      "value": "Q2",
                      "caption": "Promotion window",
                      "icon": "event_note"
                    },
                    {
                      "label": "Readiness",
                      "value": "Ready now",
                      "caption": "Current recommendation",
                      "icon": "trending_up"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-512",
                  "meta": "Promotion review",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.promotion.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Target role",
                      "value": "Staff Product Manager",
                      "hint": "Resolved from the current promotion review context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.promotion.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Promotion views",
                  "subtitle": "Portable editorial tabs for readiness summary and sponsor context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep promotion notes, readiness signals and calibration rationale inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "sponsor",
                      "label": "Sponsor",
                      "icon": "groups",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Promotion rule",
                              "value": "Escalate any readiness change that requires panel approval or role leveling exception."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Manager notes, impact summary and sponsor feedback."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Promotion sponsor",
                  "relationLabel": "Sponsor",
                  "subtitle": "Helena Souza",
                  "meta": "Leadership sponsor",
                  "ctaLabel": "Open sponsor",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.promotion.sponsor.open"
                  },
                  "fields": [
                    {
                      "label": "Promotion lane",
                      "value": "Leadership council / role leveling",
                      "hint": "Resolved from the current promotion review assignment."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule sponsor review",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.promotion.sponsor.scheduleReview"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Promotion actions",
                  "subtitle": "Governed HR promotion outcomes",
                  "message": "Use semantic promotion actions instead of host-authored readiness button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm promotion plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.promotion.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request sponsor follow-up",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.promotion.sponsor.followUp"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate promotion case",
                  "subtitle": "Readiness exception",
                  "message": "Use actionCard when the HR host needs a governed promotion escalation or leveling exception flow.",
                  "meta": "Promotion review",
                  "ctaLabel": "Escalate promotion",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.promotion.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.promotion.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-offboarding-surface",
          "label": "HR offboarding surface",
          "description": "Domain starter for HR offboarding workbenches with exit signals, transition ownership and governed departure actions.",
          "icon": "exit_to_app",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Exit signals",
                  "subtitle": "Portable offboarding metrics for governed HR departure workbenches.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Notice",
                      "value": "14d",
                      "caption": "Departure window",
                      "icon": "event_busy"
                    },
                    {
                      "label": "Coverage",
                      "value": "3",
                      "caption": "Open handoffs",
                      "icon": "handover"
                    },
                    {
                      "label": "Risk",
                      "value": "Moderate",
                      "caption": "Knowledge transfer",
                      "icon": "warning"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-640",
                  "meta": "Offboarding review",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.offboarding.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Last day",
                      "value": "2026-05-12",
                      "hint": "Resolved from the current offboarding workspace context."
                    },
                    {
                      "label": "Reason",
                      "value": "Voluntary departure"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.offboarding.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Offboarding views",
                  "subtitle": "Portable editorial tabs for transition summary and compliance context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep departure rationale, handoff progress and exit readiness inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "compliance",
                      "label": "Compliance",
                      "icon": "policy",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Asset rule",
                              "value": "Escalate any missing asset return or access closure before the final payroll checkpoint."
                            },
                            {
                              "label": "Knowledge transfer",
                              "value": "Document ownership transitions and successor coverage inside the same governed surface."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Transition owner",
                  "relationLabel": "HR partner",
                  "subtitle": "Marina Costa",
                  "meta": "People operations",
                  "ctaLabel": "Open owner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.offboarding.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Checklist lane",
                      "value": "Exit compliance / access revocation",
                      "hint": "Resolved from the offboarding assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Plan exit interview",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.offboarding.exitInterview.plan"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Offboarding actions",
                  "subtitle": "Governed HR departure outcomes",
                  "message": "Use semantic offboarding actions instead of host-authored departure button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm offboarding plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.offboarding.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request handoff update",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.offboarding.handoff.requestUpdate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate departure risk",
                  "subtitle": "Knowledge transfer or compliance risk",
                  "message": "Use actionCard when the HR host needs a governed escalation for unresolved exit blockers or access closure risks.",
                  "meta": "Offboarding review",
                  "ctaLabel": "Escalate risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.offboarding.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.offboarding.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-succession-planning-surface",
          "label": "HR succession planning surface",
          "description": "Domain starter for HR succession planning workbenches with readiness signals, successor sponsorship and governed succession actions.",
          "icon": "account_tree",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Succession signals",
                  "subtitle": "Portable succession metrics for governed HR planning workbenches.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Bench",
                      "value": "2",
                      "caption": "Ready successors",
                      "icon": "groups"
                    },
                    {
                      "label": "Risk",
                      "value": "Moderate",
                      "caption": "Coverage continuity",
                      "icon": "warning"
                    },
                    {
                      "label": "Window",
                      "value": "90d",
                      "caption": "Planning horizon",
                      "icon": "schedule"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Target role",
                  "status": "resolved",
                  "subtitle": "Principal Platform Lead",
                  "meta": "Succession planning",
                  "ctaLabel": "Open successor plan",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.succession.plan.open"
                  },
                  "fields": [
                    {
                      "label": "Current incumbent",
                      "value": "Patricia Almeida",
                      "hint": "Resolved from the current succession workspace context."
                    },
                    {
                      "label": "Readiness",
                      "value": "Ready in < 6 months"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.succession.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Succession views",
                  "subtitle": "Portable editorial tabs for readiness summary and pipeline context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep succession rationale, readiness notes and pipeline context inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "pipeline",
                      "label": "Pipeline",
                      "icon": "account_tree",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Planning rule",
                              "value": "Escalate any succession gap with no ready-now successor or no sponsor alignment in the current cycle."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Performance history, promotion outlook and sponsor alignment notes."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Succession sponsor",
                  "relationLabel": "Sponsor",
                  "subtitle": "Helena Souza",
                  "meta": "Leadership sponsor",
                  "ctaLabel": "Open sponsor",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.succession.sponsor.open"
                  },
                  "fields": [
                    {
                      "label": "Planning lane",
                      "value": "Leadership council / critical roles",
                      "hint": "Resolved from the current succession planning assignment."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule sponsor sync",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.succession.sponsor.scheduleSync"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Succession actions",
                  "subtitle": "Governed HR succession outcomes",
                  "message": "Use semantic succession actions instead of host-authored planning button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm succession plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.succession.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request readiness follow-up",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.succession.readiness.followUp"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate succession gap",
                  "subtitle": "Coverage or sponsor risk",
                  "message": "Use actionCard when the HR host needs a governed escalation for unresolved succession gaps or sponsor exceptions.",
                  "meta": "Succession planning",
                  "ctaLabel": "Escalate gap",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.succession.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.succession.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-leave-absence-surface",
          "label": "HR leave and absence surface",
          "description": "Domain starter for HR leave and absence workbenches with coverage signals, partner context and governed leave actions.",
          "icon": "event_available",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Leave signals",
                  "subtitle": "Portable leave and absence metrics for governed HR coverage workbenches.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Window",
                      "value": "12d",
                      "caption": "Approved leave",
                      "icon": "calendar_month"
                    },
                    {
                      "label": "Coverage",
                      "value": "1",
                      "caption": "Open handoff",
                      "icon": "groups"
                    },
                    {
                      "label": "Return",
                      "value": "2026-06-08",
                      "caption": "Expected return",
                      "icon": "event_available"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-708",
                  "meta": "Leave tracking",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.leave.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Leave type",
                      "value": "Parental leave",
                      "hint": "Resolved from the current leave and absence workspace context."
                    },
                    {
                      "label": "Coverage owner",
                      "value": "Carla Mendes"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.leave.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Leave views",
                  "subtitle": "Portable editorial tabs for leave summary and compliance context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep leave rationale, coverage notes and return planning inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "compliance",
                      "label": "Compliance",
                      "icon": "policy",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Policy rule",
                              "value": "Escalate any leave extension or missing coverage handoff before payroll and access deadlines."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Leave policy snapshot, manager notes and return-to-work checklist."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Coverage partner",
                  "relationLabel": "HR partner",
                  "subtitle": "Mariana Torres",
                  "meta": "People operations",
                  "ctaLabel": "Open partner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.leave.partner.open"
                  },
                  "fields": [
                    {
                      "label": "Coverage lane",
                      "value": "Leave compliance / backfill coordination",
                      "hint": "Resolved from the current leave assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule return sync",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.leave.return.scheduleSync"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Leave actions",
                  "subtitle": "Governed HR leave outcomes",
                  "message": "Use semantic leave actions instead of host-authored absence button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm leave plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.leave.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request coverage update",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.leave.coverage.requestUpdate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate leave risk",
                  "subtitle": "Coverage or compliance risk",
                  "message": "Use actionCard when the HR host needs a governed escalation for unresolved leave blockers or return planning risks.",
                  "meta": "Leave tracking",
                  "ctaLabel": "Escalate leave risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.leave.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.leave.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "hr-internal-mobility-surface",
          "label": "HR internal mobility surface",
          "description": "Domain starter for HR internal mobility workbenches with readiness signals, target role context and governed mobility actions.",
          "icon": "swap_horiz",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Mobility signals",
                  "subtitle": "Portable internal mobility metrics for governed HR transition workbenches.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Readiness",
                      "value": "87",
                      "caption": "Mobility score",
                      "icon": "monitoring"
                    },
                    {
                      "label": "Open roles",
                      "value": "2",
                      "caption": "Matched opportunities",
                      "icon": "workspaces"
                    },
                    {
                      "label": "Window",
                      "value": "Q3",
                      "caption": "Target move",
                      "icon": "calendar_month"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected employee",
                  "status": "resolved",
                  "subtitle": "EMP-903",
                  "meta": "Internal mobility",
                  "ctaLabel": "Open employee",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.mobility.employee.open"
                  },
                  "fields": [
                    {
                      "label": "Current role",
                      "value": "Senior Product Analyst",
                      "hint": "Resolved from the current internal mobility workspace context."
                    },
                    {
                      "label": "Manager",
                      "value": "Lucas Almeida"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.mobility.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Mobility views",
                  "subtitle": "Portable editorial tabs for fit, readiness and governance context.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep readiness rationale, target role notes and move risks inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "fit",
                      "label": "Fit",
                      "icon": "checklist",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Fit rule",
                              "value": "Escalate any mobility move that changes compensation band or leaves critical coverage gaps unresolved."
                            },
                            {
                              "label": "Evidence source",
                              "value": "Career matrix, calibration notes and manager alignment summary."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Target role",
                  "relationLabel": "Role opportunity",
                  "subtitle": "Staff Product Manager",
                  "meta": "Digital experience",
                  "ctaLabel": "Open role",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.mobility.role.open"
                  },
                  "fields": [
                    {
                      "label": "Mobility lane",
                      "value": "Product leadership",
                      "hint": "Resolved from the current mobility assignment."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule panel review",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.mobility.panel.schedule"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Mobility actions",
                  "subtitle": "Governed HR mobility outcomes",
                  "message": "Use semantic mobility actions instead of host-authored transition button bars.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Start mobility review",
                      "icon": "task_alt",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "hr.mobility.review.start"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request manager alignment",
                      "icon": "forum",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.mobility.manager.requestAlignment"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate mobility risk",
                  "subtitle": "EMP-903",
                  "message": "Use actionCard when the HR host needs a governed escalation for unresolved mobility blockers or retention risks.",
                  "meta": "Internal mobility",
                  "ctaLabel": "Escalate mobility risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "hr.mobility.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "hr.mobility.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "onboarding-journey-surface",
          "label": "Onboarding journey surface",
          "description": "Domain starter for onboarding workbenches with journey signals, assigned owner context and governed next-step actions.",
          "icon": "person_add",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Onboarding signals",
                  "subtitle": "Portable onboarding metrics for governed journey surfaces.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Day",
                      "value": "D+3",
                      "caption": "Journey progress",
                      "icon": "event"
                    },
                    {
                      "label": "Tasks left",
                      "value": "5",
                      "caption": "Pending checklist items",
                      "icon": "task_alt"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected hire",
                  "status": "resolved",
                  "ctaLabel": "Open hire",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.hire.open"
                  },
                  "fields": [
                    {
                      "label": "Department",
                      "value": "Platform Engineering",
                      "hint": "Resolved from the onboarding journey context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Assigned buddy",
                  "relationLabel": "Buddy",
                  "subtitle": "Marina Costa",
                  "meta": "Engineering enablement",
                  "ctaLabel": "Open buddy",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.buddy.open"
                  },
                  "fields": [
                    {
                      "label": "Welcome track",
                      "value": "Platform foundation",
                      "hint": "Resolved from the current onboarding plan."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule intro",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.buddy.scheduleIntro"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Journey actions",
                  "subtitle": "Governed onboarding follow-up actions",
                  "message": "Use canonical rich-content actions for checklist, equipment and manager coordination flows.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Start checklist",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "onboarding.checklist.start"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request equipment",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.equipment.request"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "onboarding-readiness-surface",
          "label": "Onboarding readiness surface",
          "description": "Domain starter for onboarding readiness workbenches with first-week signals, equipment context and governed readiness actions.",
          "icon": "checklist",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Readiness signals",
                  "subtitle": "Portable onboarding readiness metrics for governed first-week operations.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Checklist",
                      "value": "82%",
                      "caption": "Tasks completed",
                      "icon": "checklist"
                    },
                    {
                      "label": "Equipment",
                      "value": "2",
                      "caption": "Pending deliveries",
                      "icon": "laptop_mac"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected hire",
                  "status": "resolved",
                  "subtitle": "ONB-512",
                  "meta": "First-week readiness",
                  "ctaLabel": "Open hire",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.readiness.hire.open"
                  },
                  "fields": [
                    {
                      "label": "Start date",
                      "value": "Monday",
                      "hint": "Resolved from the readiness context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.readiness.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Readiness views",
                  "subtitle": "Portable editorial tabs for readiness and blockers.",
                  "appearance": "underline",
                  "defaultTabId": "readiness",
                  "items": [
                    {
                      "id": "readiness",
                      "label": "Readiness",
                      "icon": "task_alt",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep first-week readiness notes, blockers and operational evidence inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "blockers",
                      "label": "Blockers",
                      "icon": "warning",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Pending item",
                              "value": "Badge access and laptop delivery"
                            },
                            {
                              "label": "Readiness rule",
                              "value": "Escalate any blocker that still exists by day two or blocks manager onboarding milestones."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Assigned manager",
                  "relationLabel": "Manager",
                  "subtitle": "Helena Souza",
                  "meta": "Engineering leadership",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.readiness.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Week one plan",
                      "value": "Platform immersion",
                      "hint": "Resolved from the readiness assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule check-in",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.readiness.manager.scheduleCheckIn"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Readiness actions",
                  "subtitle": "Governed onboarding readiness outcomes",
                  "message": "Use canonical rich-content actions for unblock, confirm or request equipment follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm readiness",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "onboarding.readiness.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request equipment follow-up",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.readiness.equipment.followUp"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate onboarding blocker",
                  "subtitle": "First-week operations",
                  "message": "Use actionCard when the onboarding host needs a governed blocker escalation flow without embedding handlers in the document.",
                  "meta": "Operational escalation",
                  "ctaLabel": "Escalate blocker",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.readiness.blocker.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.readiness.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "onboarding-manager-follow-up-surface",
          "label": "Onboarding manager follow-up surface",
          "description": "Domain starter for onboarding manager follow-up workbenches with follow-up signals, manager context and governed follow-up actions.",
          "icon": "supervisor_account",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Follow-up signals",
                  "subtitle": "Portable onboarding follow-up metrics for governed manager check-ins.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Check-ins",
                      "value": "3",
                      "caption": "Scheduled this month",
                      "icon": "event_note"
                    },
                    {
                      "label": "Open blockers",
                      "value": "2",
                      "caption": "Needs manager action",
                      "icon": "warning"
                    },
                    {
                      "label": "Sentiment",
                      "value": "7.8",
                      "caption": "Latest pulse",
                      "icon": "sentiment_satisfied"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected hire",
                  "status": "resolved",
                  "subtitle": "ONB-680",
                  "meta": "Manager follow-up",
                  "ctaLabel": "Open hire",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.followup.hire.open"
                  },
                  "fields": [
                    {
                      "label": "Current focus",
                      "value": "First 30-day goals",
                      "hint": "Resolved from the manager follow-up context."
                    },
                    {
                      "label": "Latest pulse",
                      "value": "Needs role clarity"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.followup.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Follow-up views",
                  "subtitle": "Portable editorial tabs for manager notes and blockers.",
                  "appearance": "underline",
                  "defaultTabId": "summary",
                  "items": [
                    {
                      "id": "summary",
                      "label": "Summary",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep manager follow-up notes, pulse observations and enablement actions inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "blockers",
                      "label": "Blockers",
                      "icon": "warning",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Open blocker",
                              "value": "Role expectations and stakeholder map still need clarification."
                            },
                            {
                              "label": "Follow-up rule",
                              "value": "Escalate any blocker still unresolved after the second manager follow-up or any sentiment drop below 7."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Assigned manager",
                  "relationLabel": "Manager",
                  "subtitle": "Helena Souza",
                  "meta": "Engineering leadership",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.followup.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Follow-up lane",
                      "value": "30-day coaching plan",
                      "hint": "Resolved from the follow-up assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule manager sync",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.followup.manager.scheduleSync"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Follow-up actions",
                  "subtitle": "Governed onboarding follow-up outcomes",
                  "message": "Use canonical rich-content actions for check-ins, coaching and follow-up remediation.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm follow-up plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "onboarding.followup.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request coaching update",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.followup.coaching.requestUpdate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate onboarding risk",
                  "subtitle": "Manager follow-up",
                  "message": "Use actionCard when the onboarding host needs a governed escalation for unresolved manager follow-up risks.",
                  "meta": "Manager escalation",
                  "ctaLabel": "Escalate follow-up risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.followup.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.followup.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "onboarding-equipment-access-recovery-surface",
          "label": "Onboarding equipment and access recovery surface",
          "description": "Domain starter for onboarding equipment and access recovery workbenches with recovery signals, access owner context and governed remediation actions.",
          "icon": "vpn_key",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Recovery signals",
                  "subtitle": "Portable onboarding recovery metrics for governed equipment and access remediation.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Open blockers",
                      "value": "3",
                      "caption": "Access and device issues",
                      "icon": "warning"
                    },
                    {
                      "label": "Critical apps",
                      "value": "2",
                      "caption": "Still missing",
                      "icon": "apps"
                    },
                    {
                      "label": "Recovery SLA",
                      "value": "6h",
                      "caption": "Time to restore",
                      "icon": "schedule"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected hire",
                  "status": "resolved",
                  "subtitle": "ONB-741",
                  "meta": "Equipment and access recovery",
                  "ctaLabel": "Open hire",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.recovery.hire.open"
                  },
                  "fields": [
                    {
                      "label": "Primary blocker",
                      "value": "VPN and SSO provisioning",
                      "hint": "Resolved from the equipment and access recovery context."
                    },
                    {
                      "label": "Device state",
                      "value": "Laptop delivered / account pending"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.recovery.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Recovery views",
                  "subtitle": "Portable editorial tabs for recovery status and blocker details.",
                  "appearance": "underline",
                  "defaultTabId": "status",
                  "items": [
                    {
                      "id": "status",
                      "label": "Status",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep access status, recovery notes and remediation evidence inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "blockers",
                      "label": "Blockers",
                      "icon": "warning",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Missing access",
                              "value": "SSO, analytics workspace and VPN group mapping."
                            },
                            {
                              "label": "Recovery rule",
                              "value": "Escalate any access or device blocker still unresolved after the first business day or any blocker affecting payroll, identity or secure access."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Access owner",
                  "relationLabel": "Ops owner",
                  "subtitle": "Marcos Lima",
                  "meta": "IT operations",
                  "ctaLabel": "Open owner",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.recovery.owner.open"
                  },
                  "fields": [
                    {
                      "label": "Recovery lane",
                      "value": "Identity and device setup",
                      "hint": "Resolved from the recovery assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule recovery sync",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.recovery.owner.scheduleSync"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Recovery actions",
                  "subtitle": "Governed onboarding recovery outcomes",
                  "message": "Use canonical rich-content actions for remediation, access recovery and device follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm recovery plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "onboarding.recovery.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request access reset",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.recovery.access.reset"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate recovery risk",
                  "subtitle": "Day-one recovery",
                  "message": "Use actionCard when the onboarding host needs a governed escalation for unresolved access or equipment blockers.",
                  "meta": "Recovery escalation",
                  "ctaLabel": "Escalate recovery risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.recovery.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.recovery.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "onboarding-day-30-coaching-surface",
          "label": "Onboarding day-30 coaching surface",
          "description": "Domain starter for onboarding day-30 coaching workbenches with coaching signals, manager context and governed development actions.",
          "icon": "psychology",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Day-30 coaching signals",
                  "subtitle": "Portable onboarding metrics for coaching, confidence and first-month outcomes.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Confidence",
                      "value": "8.1",
                      "caption": "Self-reported pulse",
                      "icon": "psychology"
                    },
                    {
                      "label": "Open goals",
                      "value": "4",
                      "caption": "Needs manager review",
                      "icon": "flag"
                    },
                    {
                      "label": "Coaching risk",
                      "value": "Medium",
                      "caption": "Role clarity and stakeholder map",
                      "icon": "report"
                    }
                  ]
                },
                {
                  "type": "lookupCard",
                  "title": "Selected hire",
                  "status": "resolved",
                  "subtitle": "ONB-830",
                  "meta": "Day-30 coaching",
                  "ctaLabel": "Open hire",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.day30.hire.open"
                  },
                  "fields": [
                    {
                      "label": "Coaching focus",
                      "value": "Role clarity and first-month delivery plan",
                      "hint": "Resolved from the day-30 coaching context."
                    },
                    {
                      "label": "Current pulse",
                      "value": "Needs stakeholder alignment"
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.day30.dossier.open"
                      }
                    }
                  ]
                },
                {
                  "type": "tabs",
                  "title": "Coaching views",
                  "subtitle": "Portable editorial tabs for coaching notes, blockers and next steps.",
                  "appearance": "underline",
                  "defaultTabId": "goals",
                  "items": [
                    {
                      "id": "goals",
                      "label": "Goals",
                      "icon": "flag",
                      "content": [
                        {
                          "type": "text",
                          "text": "Keep day-30 goals, first-month outcomes and coaching notes inside the same RichContentDocument."
                        }
                      ]
                    },
                    {
                      "id": "blockers",
                      "label": "Blockers",
                      "icon": "warning",
                      "content": [
                        {
                          "type": "keyValueList",
                          "layout": "stacked",
                          "items": [
                            {
                              "label": "Coaching blocker",
                              "value": "Stakeholder map and role expectations need a manager-led reset."
                            },
                            {
                              "label": "Coaching rule",
                              "value": "Escalate when day-30 confidence drops below target or when two coaching goals remain unowned after manager review."
                            }
                          ]
                        }
                      ]
                    }
                  ]
                },
                {
                  "type": "relatedRecord",
                  "title": "Coaching owner",
                  "relationLabel": "Manager",
                  "subtitle": "Helena Souza",
                  "meta": "Engineering leadership",
                  "ctaLabel": "Open manager",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.day30.manager.open"
                  },
                  "fields": [
                    {
                      "label": "Coaching lane",
                      "value": "First-month development plan",
                      "hint": "Resolved from the day-30 coaching assignment context."
                    }
                  ],
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Schedule coaching sync",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.day30.manager.scheduleSync"
                      }
                    }
                  ]
                },
                {
                  "type": "ctaGroup",
                  "title": "Coaching actions",
                  "subtitle": "Governed day-30 coaching outcomes",
                  "message": "Use canonical rich-content actions for coaching plan confirmation and manager follow-up.",
                  "layout": "split",
                  "actions": [
                    {
                      "type": "actionButton",
                      "label": "Confirm coaching plan",
                      "variant": "raised",
                      "color": "primary",
                      "action": {
                        "actionId": "onboarding.day30.coaching.confirm"
                      }
                    },
                    {
                      "type": "actionButton",
                      "label": "Request goal update",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.day30.goals.requestUpdate"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Escalate coaching risk",
                  "subtitle": "Day-30 coaching",
                  "message": "Use actionCard when the onboarding host needs a governed escalation for unresolved first-month coaching risks.",
                  "meta": "Coaching escalation",
                  "ctaLabel": "Escalate coaching risk",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "onboarding.day30.coaching.escalate"
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Open dossier",
                      "variant": "stroked",
                      "action": {
                        "actionId": "onboarding.day30.dossier.open"
                      }
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "corporate-information-surface",
          "label": "Corporate information surface",
          "description": "Enterprise starter for SAP-like record details with KPIs, dates, currency, notes, progress, timeline and governed decision context.",
          "icon": "business_center",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "recordSummary",
                  "title": "Purchase order OC-4500128391",
                  "subtitle": "Companhia Global de Servicos S.A.",
                  "meta": "Aguardando aprovacao fiscal",
                  "fields": [
                    {
                      "label": "CNPJ fornecedor",
                      "value": "12.345.678/0001-99"
                    },
                    {
                      "label": "CPF solicitante",
                      "value": "990.000.000-47"
                    },
                    {
                      "label": "Prioridade",
                      "value": "Alta"
                    }
                  ]
                },
                {
                  "type": "statGroup",
                  "title": "Operational signals",
                  "subtitle": "Dense indicators for enterprise work queues.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Valor liquido",
                      "value": "R$ 1.268.114,52",
                      "caption": "Apos impostos e estorno",
                      "icon": "payments",
                      "tone": "success"
                    },
                    {
                      "label": "SLA restante",
                      "value": "18,5h",
                      "caption": "Sem atraso",
                      "icon": "schedule",
                      "tone": "info"
                    },
                    {
                      "label": "Risco",
                      "value": "Medio",
                      "caption": "Retencao fiscal pendente",
                      "icon": "gpp_maybe",
                      "tone": "warning"
                    }
                  ]
                },
                {
                  "type": "propertySheet",
                  "title": "Calendario e valores",
                  "columns": 2,
                  "items": [
                    {
                      "label": "Competencia",
                      "value": "04/2026"
                    },
                    {
                      "label": "Emissao",
                      "value": "28/04/2026"
                    },
                    {
                      "label": "Vencimento",
                      "value": "30 de maio de 2026"
                    },
                    {
                      "label": "Ultima atualizacao",
                      "value": "02/05/2026 16:45"
                    },
                    {
                      "label": "Valor bruto",
                      "value": "R$ 1.389.420,75"
                    },
                    {
                      "label": "Imposto retido",
                      "value": "R$ 121.306,23"
                    }
                  ]
                },
                {
                  "type": "keyValueList",
                  "title": "Notas e listas corporativas",
                  "layout": "stacked",
                  "items": [
                    {
                      "label": "Centros de custo",
                      "value": "1100 - Operacoes Brasil, 2200 - TI Corporativa, 3300 - Facilities",
                      "badge": "rateio"
                    },
                    {
                      "label": "Aprovadores",
                      "value": "Gerencia financeira, Controladoria, Juridico tributario",
                      "badge": "3 niveis"
                    },
                    {
                      "label": "Observacao",
                      "value": "Contrato com retencao fiscal e aprovacao em multiplos niveis.",
                      "badge": "nota"
                    }
                  ]
                },
                {
                  "type": "progress",
                  "label": "Completude de aprovacao",
                  "valueExpr": "${row.approvalProgress}",
                  "max": 100,
                  "showPercent": true
                },
                {
                  "type": "timeline",
                  "title": "Historico operacional",
                  "orientation": "horizontal",
                  "order": "normal",
                  "position": "alternate",
                  "connectorVariant": "dashed",
                  "connectorColor": "neutral",
                  "markerVariant": "number",
                  "markerColor": "primary",
                  "markerStyle": "filled",
                  "emphasis": "strong",
                  "density": "comfortable",
                  "textAppearance": "prominent",
                  "items": [
                    {
                      "id": "created",
                      "title": "Documento criado",
                      "subtitle": "Importado da NF-e e associado ao contrato.",
                      "opposite": "28/04/2026",
                      "badge": "origem",
                      "markerColor": "info"
                    },
                    {
                      "id": "tax-review",
                      "title": "Analise fiscal",
                      "subtitle": "Retencao e rateio em validacao.",
                      "opposite": "02/05/2026",
                      "badge": "pendente",
                      "markerColor": "warning"
                    },
                    {
                      "id": "approval",
                      "title": "Aprovacao final",
                      "subtitle": "Pronto para decisao governada.",
                      "opposite": "SLA 18,5h",
                      "badge": "proximo",
                      "markerColor": "success",
                      "markerStyle": "outlined"
                    }
                  ]
                },
                {
                  "type": "decisionPackage",
                  "title": "Decision package",
                  "subtitle": "Fiscal approval",
                  "summary": "Approve, request evidence or escalate from a governed host action.",
                  "status": "simulated",
                  "owner": "Controladoria",
                  "policySource": "Fiscal retention policy",
                  "version": "2026.05",
                  "confidence": 82,
                  "risk": "medium",
                  "lastReviewed": "2026-05-02",
                  "primaryAction": {
                    "type": "actionButton",
                    "label": "Approve package",
                    "variant": "raised",
                    "color": "primary",
                    "action": {
                      "actionId": "purchaseOrder.approval.approve"
                    }
                  },
                  "secondaryActions": [
                    {
                      "type": "actionButton",
                      "label": "Request evidence",
                      "variant": "stroked",
                      "action": {
                        "actionId": "purchaseOrder.approval.requestEvidence"
                      }
                    }
                  ]
                },
                {
                  "type": "actionCard",
                  "title": "Open governed workflow",
                  "subtitle": "Host-mediated operation",
                  "message": "Use actionCard for SAP-like enterprise flows that need audit, permission checks and contextual dispatch.",
                  "meta": "surface.open",
                  "ctaLabel": "Open detail",
                  "variant": "raised",
                  "color": "primary",
                  "action": {
                    "actionId": "purchaseOrder.detail.open"
                  }
                }
              ]
            },
            "context": {
              "row": {
                "approvalProgress": 58
              }
            }
          }
        },
        {
          "id": "stat-group",
          "label": "Stat group",
          "description": "Semantic metric group for dashboards, summaries and compact knowledge surfaces.",
          "icon": "query_stats",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "statGroup",
                  "title": "Key metrics",
                  "subtitle": "Monitor the most relevant indicators.",
                  "layout": "grid",
                  "items": [
                    {
                      "label": "Active employees",
                      "value": "128",
                      "caption": "Updated today",
                      "icon": "groups",
                      "tone": "info"
                    },
                    {
                      "label": "Approvals pending",
                      "value": "7",
                      "caption": "Requires follow-up",
                      "icon": "pending_actions",
                      "tone": "warning"
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "timeline-surface",
          "label": "Timeline surface",
          "description": "Portable lifecycle surface with horizontal timeline defaults and governed milestone metadata.",
          "icon": "timeline",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "timeline",
                  "title": "Lifecycle timeline",
                  "orientation": "horizontal",
                  "order": "normal",
                  "position": "alternate",
                  "connectorVariant": "dashed",
                  "connectorColor": "neutral",
                  "markerVariant": "number",
                  "markerColor": "primary",
                  "markerStyle": "filled",
                  "emphasis": "strong",
                  "density": "comfortable",
                  "textAppearance": "prominent",
                  "items": [
                    {
                      "id": "intake",
                      "title": "Intake",
                      "subtitle": "Capture the initial context and ownership.",
                      "opposite": "1. Intake",
                      "badge": "start",
                      "markerColor": "info"
                    },
                    {
                      "id": "review",
                      "title": "Review",
                      "subtitle": "Validate status, evidence and policy constraints.",
                      "opposite": "2. Review",
                      "badge": "governed",
                      "markerColor": "warning",
                      "connectorVariant": "dashed"
                    },
                    {
                      "id": "complete",
                      "title": "Complete",
                      "subtitle": "Publish the outcome and keep the history portable.",
                      "opposite": "3. Complete",
                      "badge": "done",
                      "markerColor": "success",
                      "markerStyle": "outlined"
                    }
                  ]
                }
              ]
            }
          }
        },
        {
          "id": "tabs-surface",
          "label": "Tabs surface",
          "description": "Semantic tabbed surface for portable multi-panel editorial content.",
          "icon": "tab",
          "inputs": {
            "document": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": [
                {
                  "type": "tabs",
                  "title": "Employee workspace",
                  "subtitle": "Switch between portable views without host tab markup.",
                  "appearance": "underline",
                  "defaultTabId": "overview",
                  "items": [
                    {
                      "id": "overview",
                      "label": "Overview",
                      "icon": "dashboard",
                      "content": [
                        {
                          "type": "text",
                          "text": "High-level summary for the selected record."
                        }
                      ]
                    },
                    {
                      "id": "history",
                      "label": "History",
                      "badge": "3",
                      "content": [
                        {
                          "type": "timeline",
                          "title": "Recent changes",
                          "items": []
                        }
                      ]
                    }
                  ]
                }
              ]
            }
          }
        }
      ],
      "source": "projects/praxis-rich-content/src/lib/praxis-rich-content.metadata.ts",
      "exportName": "PRAXIS_RICH_CONTENT_COMPONENT_METADATA",
      "authoringManifest": {
        "schemaVersion": "1.0.0",
        "componentId": "praxis-rich-content",
        "ownerPackage": "@praxisui/rich-content",
        "configSchemaId": "RichContentDocument",
        "manifestVersion": "1.0.0",
        "runtimeInputs": [
          {
            "name": "document",
            "type": "RichContentDocument | null",
            "description": "Canonical praxis.rich-content document rendered by the component."
          },
          {
            "name": "nodes",
            "type": "RichBlockNode[] | null",
            "description": "Direct node list used only when the host controls the document envelope."
          },
          {
            "name": "context",
            "type": "JsonLogicDataRecord | null",
            "description": "External context used by expression paths and Json Logic rules."
          },
          {
            "name": "hostCapabilities",
            "type": "RichBlockHostCapabilities | null",
            "description": "Host-mediated preset, action, action confirmation, data and embed capabilities; functions are not serialized in public contracts."
          },
          {
            "name": "layout",
            "type": "'block' | 'inline'",
            "allowedValues": [
              "block",
              "inline"
            ],
            "description": "Renderer layout mode."
          },
          {
            "name": "rootClassName",
            "type": "string",
            "description": "CSS class applied to the renderer root."
          }
        ],
        "editableTargets": [
          {
            "kind": "document",
            "resolver": "rich-content-document-root",
            "description": "The canonical RichContentDocument input envelope."
          },
          {
            "kind": "block",
            "resolver": "rich-block-by-id-or-index",
            "description": "A top-level document.nodes[] block with stable id preferred over index."
          },
          {
            "kind": "text",
            "resolver": "rich-text-node-by-id-or-path",
            "description": "Text-bearing nodes, including text, badge, metric, progress, card and timeline labels."
          },
          {
            "kind": "link",
            "resolver": "rich-link-node-by-id-or-path",
            "description": "Canonical link node with label, href, target and rel."
          },
          {
            "kind": "media",
            "resolver": "rich-media-node-by-id-or-path",
            "description": "Image, avatar image and mediaBlock child nodes."
          },
          {
            "kind": "timeline",
            "resolver": "rich-timeline-node-by-id-or-path",
            "description": "Timeline nodes with visual placement, connector, marker and semantic appearance settings."
          },
          {
            "kind": "timelineItem",
            "resolver": "rich-timeline-item-by-block-id-and-item-id",
            "description": "Timeline items nested inside timeline nodes; stable item id is preferred over index."
          },
          {
            "kind": "metadata",
            "resolver": "rich-block-common-metadata",
            "description": "Common node metadata such as testId, className, visibleWhen and safe style."
          },
          {
            "kind": "preset",
            "resolver": "rich-block-preset-ref",
            "description": "Preset nodes resolved through PRAXIS_RICH_BLOCK_PRESETS or hostCapabilities.resolvePreset."
          },
          {
            "kind": "sanitizationPolicy",
            "resolver": "rich-content-validation-policy",
            "description": "Document validation policy enforced by validateRichContentDocument."
          },
          {
            "kind": "display",
            "resolver": "rich-content-layout-and-root-class",
            "description": "Layout and rootClassName runtime inputs."
          }
        ],
        "operations": [
          {
            "operationId": "document.set",
            "title": "Set rich content document",
            "scope": "global",
            "targetKind": "document",
            "target": {
              "kind": "document",
              "resolver": "rich-content-document-root",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "kind",
                "version",
                "nodes"
              ],
              "properties": {
                "kind": {
                  "const": "praxis.rich-content"
                },
                "version": {
                  "const": "1.0.0"
                },
                "context": {
                  "type": "object"
                },
                "nodes": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "document"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "document-shape-canonical",
              "document-version-supported",
              "node-types-supported",
              "unsafe-url-rejected",
              "unsafe-style-rejected",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "block.add",
            "title": "Add rich content block",
            "scope": "templating",
            "targetKind": "block",
            "target": {
              "kind": "block",
              "resolver": "document-nodes-array",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "type"
              ],
              "properties": {
                "type": {
                  "enum": [
                    "text",
                    "icon",
                    "image",
                    "link",
                    "badge",
                    "avatar",
                    "metric",
                    "progress",
                    "actionButton",
                    "compose",
                    "card",
                    "callout",
                    "ctaGroup",
                    "keyValueList",
                    "emptyState",
                    "propertySheet",
                    "statGroup",
                    "tabs",
                    "recordSummary",
                    "lookupResult",
                    "lookupCard",
                    "relatedRecord",
                    "actionCard",
                    "decisionPackage",
                    "collapsibleCard",
                    "disclosure",
                    "accordion",
                    "formLauncher",
                    "mediaBlock",
                    "timeline",
                    "preset"
                  ]
                },
                "node": {
                  "type": "object"
                },
                "afterBlockId": {
                  "type": "string"
                },
                "beforeBlockId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-block-add",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]"
                  ],
                  "writes": [
                    "document.nodes[]"
                  ],
                  "identityKeys": [
                    "document.nodes[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "type"
                    ],
                    "properties": {
                      "type": {
                        "enum": [
                          "text",
                          "icon",
                          "image",
                          "link",
                          "badge",
                          "avatar",
                          "metric",
                          "progress",
                          "actionButton",
                          "compose",
                          "card",
                          "callout",
                          "ctaGroup",
                          "keyValueList",
                          "emptyState",
                          "propertySheet",
                          "statGroup",
                          "tabs",
                          "recordSummary",
                          "lookupResult",
                          "lookupCard",
                          "relatedRecord",
                          "actionCard",
                          "decisionPackage",
                          "collapsibleCard",
                          "disclosure",
                          "accordion",
                          "formLauncher",
                          "mediaBlock",
                          "timeline",
                          "preset"
                        ]
                      },
                      "node": {
                        "type": "object"
                      },
                      "afterBlockId": {
                        "type": "string"
                      },
                      "beforeBlockId": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "unsupported-node-type",
                    "duplicate-node-id",
                    "invalid-node-shape",
                    "unsafe-url",
                    "unsafe-style"
                  ],
                  "description": "Creates a supported RichBlockNode, validates it with validateRichContentDocument semantics and inserts it by stable neighbor id when provided."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "node-types-supported",
              "block-id-unique",
              "document-shape-canonical",
              "unsafe-url-rejected",
              "unsafe-style-rejected",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "block.update",
            "title": "Update rich content block fields",
            "scope": "templating",
            "targetKind": "block",
            "target": {
              "kind": "block",
              "resolver": "rich-block-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "id": {
                  "type": "string"
                },
                "testId": {
                  "type": "string"
                },
                "className": {
                  "type": "string"
                },
                "style": {
                  "type": "object"
                },
                "visibleWhen": {
                  "type": "object"
                },
                "disabledWhen": {
                  "type": "object"
                },
                "loadWhen": {
                  "type": "object"
                },
                "classWhen": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "styleWhen": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "requiresCapabilities": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "capabilityMode": {
                  "enum": [
                    "all",
                    "any"
                  ]
                },
                "text": {
                  "type": "string"
                },
                "textExpr": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "labelExpr": {
                  "type": "string"
                },
                "href": {
                  "type": "string"
                },
                "target": {
                  "enum": [
                    "_self",
                    "_blank"
                  ]
                },
                "rel": {
                  "type": "string"
                },
                "src": {
                  "type": "string"
                },
                "alt": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "titleExpr": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "subtitleExpr": {
                  "type": "string"
                },
                "relationLabel": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "summaryExpr": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "ctaLabel": {
                  "type": "string"
                },
                "caption": {
                  "type": "string"
                },
                "emptyText": {
                  "type": "string"
                },
                "errorText": {
                  "type": "string"
                },
                "status": {
                  "enum": [
                    "idle",
                    "resolved",
                    "empty",
                    "error",
                    "draft",
                    "simulated",
                    "approved",
                    "published",
                    "superseded",
                    "reverted"
                  ]
                },
                "statusExpr": {
                  "type": "string"
                },
                "owner": {
                  "type": "string"
                },
                "ownerExpr": {
                  "type": "string"
                },
                "policySource": {
                  "type": "string"
                },
                "policySourceExpr": {
                  "type": "string"
                },
                "version": {
                  "type": "string"
                },
                "versionExpr": {
                  "type": "string"
                },
                "confidence": {
                  "type": "number"
                },
                "confidenceExpr": {
                  "type": "string"
                },
                "risk": {
                  "enum": [
                    "low",
                    "medium",
                    "high",
                    "critical"
                  ]
                },
                "riskExpr": {
                  "type": "string"
                },
                "lastReviewed": {
                  "type": "string"
                },
                "lastReviewedExpr": {
                  "type": "string"
                },
                "supersedes": {
                  "type": "string"
                },
                "supersedesExpr": {
                  "type": "string"
                },
                "evidence": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "appearance": {
                  "enum": [
                    "plain",
                    "card",
                    "underline",
                    "pills"
                  ]
                },
                "variant": {
                  "enum": [
                    "basic",
                    "raised",
                    "stroked",
                    "flat",
                    "plain",
                    "outlined",
                    "elevated",
                    "filled",
                    "transparent"
                  ]
                },
                "tone": {
                  "enum": [
                    "neutral",
                    "info",
                    "success",
                    "warning",
                    "danger"
                  ]
                },
                "size": {
                  "enum": [
                    "sm",
                    "md",
                    "lg"
                  ]
                },
                "density": {},
                "orientation": {},
                "loading": {
                  "type": "boolean"
                },
                "loadingExpr": {
                  "type": "string"
                },
                "active": {
                  "type": "boolean"
                },
                "activeExpr": {
                  "type": "string"
                },
                "defaultTabId": {
                  "type": "string"
                },
                "order": {
                  "enum": [
                    "normal",
                    "reverse"
                  ]
                },
                "position": {
                  "enum": [
                    "left",
                    "right",
                    "alternate",
                    "alternate-reverse"
                  ]
                },
                "connectorVariant": {
                  "enum": [
                    "solid",
                    "dashed",
                    "none"
                  ]
                },
                "connectorColor": {
                  "enum": [
                    "primary",
                    "secondary",
                    "tertiary",
                    "success",
                    "warning",
                    "error",
                    "info",
                    "neutral"
                  ]
                },
                "markerVariant": {
                  "enum": [
                    "dot",
                    "icon",
                    "number"
                  ]
                },
                "markerColor": {
                  "enum": [
                    "primary",
                    "secondary",
                    "tertiary",
                    "success",
                    "warning",
                    "error",
                    "info",
                    "neutral"
                  ]
                },
                "markerStyle": {
                  "enum": [
                    "filled",
                    "outlined"
                  ]
                },
                "emphasis": {
                  "enum": [
                    "subtle",
                    "standard",
                    "strong",
                    "hero"
                  ]
                },
                "textAppearance": {
                  "enum": [
                    "default",
                    "prominent",
                    "eyebrow",
                    "label"
                  ]
                },
                "icon": {
                  "type": "string"
                },
                "formId": {
                  "type": "string"
                },
                "columns": {
                  "enum": [
                    1,
                    2
                  ]
                },
                "layout": {
                  "enum": [
                    "stacked",
                    "inline",
                    "split",
                    "grid"
                  ]
                },
                "action": {
                  "type": "object"
                },
                "actions": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "primaryAction": {
                  "type": "object"
                },
                "secondaryActions": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "media": {
                  "type": "object",
                  "properties": {
                    "kind": {
                      "enum": [
                        "image",
                        "video",
                        "icon",
                        "avatar"
                      ]
                    },
                    "src": {
                      "type": "string"
                    },
                    "srcExpr": {
                      "type": "string"
                    },
                    "alt": {
                      "type": "string"
                    },
                    "altExpr": {
                      "type": "string"
                    },
                    "icon": {
                      "type": "string"
                    },
                    "label": {
                      "type": "string"
                    },
                    "labelExpr": {
                      "type": "string"
                    },
                    "placement": {
                      "enum": [
                        "top",
                        "leading",
                        "trailing",
                        "background"
                      ]
                    },
                    "aspectRatio": {
                      "type": "string"
                    }
                  }
                },
                "headerAction": {
                  "type": "object"
                },
                "interaction": {
                  "type": "object",
                  "properties": {
                    "mode": {
                      "enum": [
                        "none",
                        "action",
                        "selectable"
                      ]
                    },
                    "action": {
                      "type": "object"
                    },
                    "selected": {
                      "type": "boolean"
                    },
                    "selectedExpr": {
                      "type": "string"
                    }
                  }
                },
                "accessibility": {
                  "type": "object",
                  "properties": {
                    "role": {
                      "enum": [
                        "article",
                        "group",
                        "button"
                      ]
                    },
                    "ariaLabel": {
                      "type": "string"
                    },
                    "ariaLabelExpr": {
                      "type": "string"
                    },
                    "ariaLabelledBy": {
                      "type": "string"
                    },
                    "ariaDescribedBy": {
                      "type": "string"
                    }
                  }
                },
                "fields": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "items": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "header": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "body": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "footer": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "aside": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "node-types-supported",
              "unsafe-url-rejected",
              "unsafe-style-rejected",
              "expression-path-safe",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]",
              "document.nodes[].id",
              "document.nodes[].testId",
              "document.nodes[].className",
              "document.nodes[].style",
              "document.nodes[].visibleWhen",
              "document.nodes[].disabledWhen",
              "document.nodes[].loadWhen",
              "document.nodes[].classWhen",
              "document.nodes[].styleWhen",
              "document.nodes[].requiresCapabilities",
              "document.nodes[].capabilityMode",
              "document.nodes[].text",
              "document.nodes[].textExpr",
              "document.nodes[].label",
              "document.nodes[].labelExpr",
              "document.nodes[].href",
              "document.nodes[].target",
              "document.nodes[].rel",
              "document.nodes[].src",
              "document.nodes[].alt",
              "document.nodes[].title",
              "document.nodes[].titleExpr",
              "document.nodes[].subtitle",
              "document.nodes[].subtitleExpr",
              "document.nodes[].relationLabel",
              "document.nodes[].message",
              "document.nodes[].summary",
              "document.nodes[].summaryExpr",
              "document.nodes[].description",
              "document.nodes[].ctaLabel",
              "document.nodes[].caption",
              "document.nodes[].emptyText",
              "document.nodes[].errorText",
              "document.nodes[].status",
              "document.nodes[].statusExpr",
              "document.nodes[].owner",
              "document.nodes[].ownerExpr",
              "document.nodes[].policySource",
              "document.nodes[].policySourceExpr",
              "document.nodes[].version",
              "document.nodes[].versionExpr",
              "document.nodes[].confidence",
              "document.nodes[].confidenceExpr",
              "document.nodes[].risk",
              "document.nodes[].riskExpr",
              "document.nodes[].lastReviewed",
              "document.nodes[].lastReviewedExpr",
              "document.nodes[].supersedes",
              "document.nodes[].supersedesExpr",
              "document.nodes[].evidence",
              "document.nodes[].appearance",
              "document.nodes[].variant",
              "document.nodes[].tone",
              "document.nodes[].size",
              "document.nodes[].density",
              "document.nodes[].orientation",
              "document.nodes[].loading",
              "document.nodes[].loadingExpr",
              "document.nodes[].active",
              "document.nodes[].activeExpr",
              "document.nodes[].defaultTabId",
              "document.nodes[].position",
              "document.nodes[].connectorVariant",
              "document.nodes[].connectorColor",
              "document.nodes[].markerVariant",
              "document.nodes[].markerColor",
              "document.nodes[].markerStyle",
              "document.nodes[].icon",
              "document.nodes[].formId",
              "document.nodes[].columns",
              "document.nodes[].layout",
              "document.nodes[].action",
              "document.nodes[].actions",
              "document.nodes[].primaryAction",
              "document.nodes[].secondaryActions",
              "document.nodes[].media",
              "document.nodes[].headerAction",
              "document.nodes[].interaction",
              "document.nodes[].accessibility",
              "document.nodes[].fields",
              "document.nodes[].items[]",
              "document.nodes[].header",
              "document.nodes[].body",
              "document.nodes[].footer",
              "document.nodes[].aside"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "block.remove",
            "title": "Remove rich content block",
            "scope": "templating",
            "targetKind": "block",
            "target": {
              "kind": "block",
              "resolver": "rich-block-by-id-or-index",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "properties": {
                "blockId": {
                  "type": "string"
                },
                "replacementBlockId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "remove-by-key",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "block-exists",
              "destructive-removal-confirmed",
              "document-not-empty-when-required",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists",
              "confirmation-collected"
            ]
          },
          {
            "operationId": "block.order.set",
            "title": "Reorder rich content blocks",
            "scope": "templating",
            "targetKind": "block",
            "target": {
              "kind": "block",
              "resolver": "rich-block-by-id-or-index",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "blockId"
              ],
              "properties": {
                "blockId": {
                  "type": "string"
                },
                "beforeBlockId": {
                  "type": "string"
                },
                "afterBlockId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "reorder-by-key",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "block-order-deterministic",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "text.update",
            "title": "Update rich content text",
            "scope": "templating",
            "targetKind": "text",
            "target": {
              "kind": "text",
              "resolver": "rich-text-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "text": {
                  "type": "string"
                },
                "textExpr": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "labelExpr": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "relationLabel": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                },
                "summary": {
                  "type": "string"
                },
                "description": {
                  "type": "string"
                },
                "ctaLabel": {
                  "type": "string"
                },
                "emptyText": {
                  "type": "string"
                },
                "errorText": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "text-target-supports-field",
              "expression-path-safe",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].text",
              "document.nodes[].textExpr",
              "document.nodes[].label",
              "document.nodes[].labelExpr",
              "document.nodes[].title",
              "document.nodes[].subtitle",
              "document.nodes[].relationLabel",
              "document.nodes[].message",
              "document.nodes[].summary",
              "document.nodes[].description",
              "document.nodes[].ctaLabel",
              "document.nodes[].emptyText",
              "document.nodes[].errorText"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "link.add",
            "title": "Add link block",
            "scope": "templating",
            "targetKind": "link",
            "target": {
              "kind": "link",
              "resolver": "document-nodes-array",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "label",
                "href"
              ],
              "properties": {
                "id": {
                  "type": "string"
                },
                "label": {
                  "type": "string"
                },
                "labelExpr": {
                  "type": "string"
                },
                "href": {
                  "type": "string"
                },
                "target": {
                  "enum": [
                    "_self",
                    "_blank"
                  ]
                },
                "rel": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "append-unique",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "link-url-safe",
              "link-policy-explicit",
              "node-types-supported",
              "block-id-unique",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]",
              "document.nodes[].href",
              "document.nodes[].target",
              "document.nodes[].rel"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "link.remove",
            "title": "Remove link from rich content",
            "scope": "templating",
            "targetKind": "link",
            "target": {
              "kind": "link",
              "resolver": "rich-link-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "properties": {
                "linkId": {
                  "type": "string"
                },
                "preserveLabelAsText": {
                  "type": "boolean"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-link-remove",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].id",
                    "document.nodes[].type",
                    "document.nodes[].label"
                  ],
                  "writes": [
                    "document.nodes[]"
                  ],
                  "identityKeys": [
                    "document.nodes[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "properties": {
                      "linkId": {
                        "type": "string"
                      },
                      "preserveLabelAsText": {
                        "type": "boolean"
                      }
                    }
                  },
                  "failureModes": [
                    "link-not-found",
                    "ambiguous-link-target",
                    "replacement-text-invalid"
                  ],
                  "description": "Removes a link node by stable id or path and optionally replaces it with a text node containing the prior link label."
                }
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "link-target-exists",
              "destructive-removal-confirmed",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-link-exists",
              "confirmation-collected"
            ]
          },
          {
            "operationId": "preset.apply",
            "title": "Apply rich block preset",
            "scope": "templating",
            "targetKind": "preset",
            "target": {
              "kind": "preset",
              "resolver": "rich-block-preset-ref",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "ref"
              ],
              "properties": {
                "ref": {
                  "type": "object"
                },
                "inputs": {
                  "type": "object"
                },
                "replaceBlockId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-preset-apply",
                "handlerContract": {
                  "reads": [
                    "PRAXIS_RICH_BLOCK_PRESETS",
                    "hostCapabilities.resolvePreset",
                    "document.nodes[]"
                  ],
                  "writes": [
                    "document.nodes[]"
                  ],
                  "identityKeys": [
                    "ref.kind",
                    "ref.namespace",
                    "ref.presetId",
                    "ref.version"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "ref"
                    ],
                    "properties": {
                      "ref": {
                        "type": "object"
                      },
                      "inputs": {
                        "type": "object"
                      },
                      "replaceBlockId": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "preset-not-found",
                    "preset-kind-invalid",
                    "preset-document-invalid",
                    "preset-cycle-detected"
                  ],
                  "description": "Resolves a rich-block preset through the governed registry/host mediation and inserts or replaces a preset reference without serializing functions."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "preset-ref-valid",
              "preset-exists-or-host-mediated",
              "host-capabilities-serializable",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[]",
              "document.nodes[].ref",
              "document.nodes[].inputs"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized"
            ]
          },
          {
            "operationId": "metadata.update",
            "title": "Update rich block metadata",
            "scope": "templating",
            "targetKind": "metadata",
            "target": {
              "kind": "metadata",
              "resolver": "rich-block-by-id-or-index",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "blockId": {
                  "type": "string"
                },
                "testId": {
                  "type": "string"
                },
                "className": {
                  "type": "string"
                },
                "visibleWhen": {
                  "type": "object"
                },
                "disabledWhen": {
                  "type": "object"
                },
                "loadWhen": {
                  "type": "object"
                },
                "classWhen": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "styleWhen": {
                  "type": "array",
                  "items": {
                    "type": "object"
                  }
                },
                "style": {
                  "type": "object"
                },
                "requiresCapabilities": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "capabilityMode": {
                  "enum": [
                    "all",
                    "any"
                  ]
                }
              }
            },
            "effects": [
              {
                "kind": "merge-by-key",
                "path": "document.nodes[]",
                "key": "id"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "class-name-safe",
              "visible-when-json-logic",
              "unsafe-style-rejected",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].testId",
              "document.nodes[].className",
              "document.nodes[].visibleWhen",
              "document.nodes[].disabledWhen",
              "document.nodes[].loadWhen",
              "document.nodes[].classWhen",
              "document.nodes[].styleWhen",
              "document.nodes[].style",
              "document.nodes[].requiresCapabilities",
              "document.nodes[].capabilityMode"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "mediaBlock.update",
            "title": "Update media block fields",
            "scope": "templating",
            "targetKind": "media",
            "target": {
              "kind": "media",
              "resolver": "rich-media-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "minProperties": 1,
              "properties": {
                "blockId": {
                  "type": "string"
                },
                "avatarName": {
                  "type": "string"
                },
                "avatarImageSrc": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "titleExpr": {
                  "type": "string"
                },
                "subtitle": {
                  "type": "string"
                },
                "subtitleExpr": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-media-block-update",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].id",
                    "document.nodes[].type"
                  ],
                  "writes": [
                    "document.nodes[].avatar",
                    "document.nodes[].title",
                    "document.nodes[].subtitle"
                  ],
                  "identityKeys": [
                    "document.nodes[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "minProperties": 1,
                    "properties": {
                      "blockId": {
                        "type": "string"
                      },
                      "avatarName": {
                        "type": "string"
                      },
                      "avatarImageSrc": {
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      },
                      "titleExpr": {
                        "type": "string"
                      },
                      "subtitle": {
                        "type": "string"
                      },
                      "subtitleExpr": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "media-block-not-found",
                    "target-not-media-block",
                    "unsafe-url",
                    "invalid-text-node"
                  ],
                  "description": "Updates the structured mediaBlock avatar/title/subtitle fields while preserving meta and trailing content for advanced JSON authoring."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "media-block-target-valid",
              "unsafe-url-rejected",
              "expression-path-safe",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].avatar",
              "document.nodes[].title",
              "document.nodes[].subtitle"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "timeline.node.update",
            "title": "Update timeline display settings",
            "scope": "templating",
            "targetKind": "timeline",
            "target": {
              "kind": "timeline",
              "resolver": "rich-timeline-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "timelineBlockId"
              ],
              "minProperties": 2,
              "properties": {
                "timelineBlockId": {
                  "type": "string"
                },
                "orientation": {
                  "enum": [
                    "vertical",
                    "horizontal"
                  ]
                },
                "order": {
                  "enum": [
                    "normal",
                    "reverse"
                  ]
                },
                "position": {
                  "enum": [
                    "left",
                    "right",
                    "alternate",
                    "alternate-reverse"
                  ]
                },
                "connectorVariant": {
                  "enum": [
                    "solid",
                    "dashed",
                    "none"
                  ]
                },
                "connectorColor": {
                  "enum": [
                    "primary",
                    "secondary",
                    "tertiary",
                    "success",
                    "warning",
                    "error",
                    "info",
                    "neutral"
                  ]
                },
                "markerVariant": {
                  "enum": [
                    "dot",
                    "icon",
                    "number"
                  ]
                },
                "markerColor": {
                  "enum": [
                    "primary",
                    "secondary",
                    "tertiary",
                    "success",
                    "warning",
                    "error",
                    "info",
                    "neutral"
                  ]
                },
                "markerStyle": {
                  "enum": [
                    "filled",
                    "outlined"
                  ]
                },
                "emphasis": {
                  "enum": [
                    "subtle",
                    "standard",
                    "strong",
                    "hero"
                  ]
                },
                "density": {
                  "enum": [
                    "compact",
                    "comfortable",
                    "spacious"
                  ]
                },
                "textAppearance": {
                  "enum": [
                    "default",
                    "prominent",
                    "eyebrow",
                    "label"
                  ]
                },
                "title": {
                  "type": "string"
                },
                "titleExpr": {
                  "type": "string"
                },
                "emptyText": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-timeline-node-update",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].id",
                    "document.nodes[].type"
                  ],
                  "writes": [
                    "document.nodes[].orientation",
                    "document.nodes[].order",
                    "document.nodes[].position",
                    "document.nodes[].connectorVariant",
                    "document.nodes[].connectorColor",
                    "document.nodes[].markerVariant",
                    "document.nodes[].markerColor",
                    "document.nodes[].markerStyle",
                    "document.nodes[].emphasis",
                    "document.nodes[].density",
                    "document.nodes[].textAppearance",
                    "document.nodes[].title",
                    "document.nodes[].titleExpr",
                    "document.nodes[].emptyText"
                  ],
                  "identityKeys": [
                    "document.nodes[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "timelineBlockId"
                    ],
                    "minProperties": 2,
                    "properties": {
                      "timelineBlockId": {
                        "type": "string"
                      },
                      "orientation": {
                        "enum": [
                          "vertical",
                          "horizontal"
                        ]
                      },
                      "order": {
                        "enum": [
                          "normal",
                          "reverse"
                        ]
                      },
                      "position": {
                        "enum": [
                          "left",
                          "right",
                          "alternate",
                          "alternate-reverse"
                        ]
                      },
                      "connectorVariant": {
                        "enum": [
                          "solid",
                          "dashed",
                          "none"
                        ]
                      },
                      "connectorColor": {
                        "enum": [
                          "primary",
                          "secondary",
                          "tertiary",
                          "success",
                          "warning",
                          "error",
                          "info",
                          "neutral"
                        ]
                      },
                      "markerVariant": {
                        "enum": [
                          "dot",
                          "icon",
                          "number"
                        ]
                      },
                      "markerColor": {
                        "enum": [
                          "primary",
                          "secondary",
                          "tertiary",
                          "success",
                          "warning",
                          "error",
                          "info",
                          "neutral"
                        ]
                      },
                      "markerStyle": {
                        "enum": [
                          "filled",
                          "outlined"
                        ]
                      },
                      "emphasis": {
                        "enum": [
                          "subtle",
                          "standard",
                          "strong",
                          "hero"
                        ]
                      },
                      "density": {
                        "enum": [
                          "compact",
                          "comfortable",
                          "spacious"
                        ]
                      },
                      "textAppearance": {
                        "enum": [
                          "default",
                          "prominent",
                          "eyebrow",
                          "label"
                        ]
                      },
                      "title": {
                        "type": "string"
                      },
                      "titleExpr": {
                        "type": "string"
                      },
                      "emptyText": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "timeline-not-found",
                    "unsupported-timeline-setting",
                    "invalid-timeline-setting"
                  ],
                  "description": "Updates timeline node display and semantic appearance settings while preserving timeline items and the canonical RichTimelineNode shape."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "timeline-target-valid",
              "timeline-setting-supported",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].orientation",
              "document.nodes[].order",
              "document.nodes[].position",
              "document.nodes[].connectorVariant",
              "document.nodes[].connectorColor",
              "document.nodes[].markerVariant",
              "document.nodes[].markerColor",
              "document.nodes[].markerStyle",
              "document.nodes[].emphasis",
              "document.nodes[].density",
              "document.nodes[].textAppearance",
              "document.nodes[].title",
              "document.nodes[].titleExpr",
              "document.nodes[].emptyText"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "timeline.item.add",
            "title": "Add timeline item",
            "scope": "templating",
            "targetKind": "timelineItem",
            "target": {
              "kind": "timelineItem",
              "resolver": "rich-timeline-node-by-id-or-path",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "timelineBlockId",
                "item"
              ],
              "properties": {
                "timelineBlockId": {
                  "type": "string"
                },
                "item": {},
                "afterItemId": {
                  "type": "string"
                },
                "beforeItemId": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-timeline-item-add",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].items[]"
                  ],
                  "writes": [
                    "document.nodes[].items[]"
                  ],
                  "identityKeys": [
                    "document.nodes[].id",
                    "document.nodes[].items[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "timelineBlockId",
                      "item"
                    ],
                    "properties": {
                      "timelineBlockId": {
                        "type": "string"
                      },
                      "item": {},
                      "afterItemId": {
                        "type": "string"
                      },
                      "beforeItemId": {
                        "type": "string"
                      }
                    }
                  },
                  "failureModes": [
                    "timeline-not-found",
                    "duplicate-timeline-item-id",
                    "invalid-timeline-item"
                  ],
                  "description": "Adds a timeline item to a timeline node using stable timeline and item ids when present; array index is a resolver fallback only."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "timeline-target-valid",
              "timeline-item-valid",
              "timeline-item-id-unique",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].items[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists"
            ]
          },
          {
            "operationId": "timeline.item.update",
            "title": "Update timeline item",
            "scope": "templating",
            "targetKind": "timelineItem",
            "target": {
              "kind": "timelineItem",
              "resolver": "rich-timeline-item-by-block-id-and-item-id",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "timelineBlockId"
              ],
              "minProperties": 2,
              "properties": {
                "timelineBlockId": {
                  "type": "string"
                },
                "itemId": {
                  "type": "string"
                },
                "itemIndex": {
                  "type": "number"
                },
                "field": {
                  "enum": [
                    "title",
                    "titleExpr",
                    "subtitle",
                    "subtitleExpr",
                    "meta",
                    "metaExpr",
                    "opposite",
                    "oppositeExpr",
                    "icon",
                    "iconExpr",
                    "badge",
                    "badgeExpr",
                    "markerColor",
                    "markerStyle",
                    "connectorColor",
                    "connectorVariant"
                  ]
                },
                "value": {
                  "type": "string"
                },
                "patch": {
                  "type": "object",
                  "minProperties": 1,
                  "properties": {
                    "id": {
                      "type": "string"
                    },
                    "title": {
                      "type": "string"
                    },
                    "titleExpr": {
                      "type": "string"
                    },
                    "subtitle": {
                      "type": "string"
                    },
                    "subtitleExpr": {
                      "type": "string"
                    },
                    "meta": {
                      "type": "string"
                    },
                    "metaExpr": {
                      "type": "string"
                    },
                    "opposite": {
                      "type": "string"
                    },
                    "oppositeExpr": {
                      "type": "string"
                    },
                    "icon": {
                      "type": "string"
                    },
                    "iconExpr": {
                      "type": "string"
                    },
                    "badge": {
                      "type": "string"
                    },
                    "badgeExpr": {
                      "type": "string"
                    },
                    "markerColor": {
                      "enum": [
                        "primary",
                        "secondary",
                        "tertiary",
                        "success",
                        "warning",
                        "error",
                        "info",
                        "neutral"
                      ]
                    },
                    "markerStyle": {
                      "enum": [
                        "filled",
                        "outlined"
                      ]
                    },
                    "connectorColor": {
                      "enum": [
                        "primary",
                        "secondary",
                        "tertiary",
                        "success",
                        "warning",
                        "error",
                        "info",
                        "neutral"
                      ]
                    },
                    "connectorVariant": {
                      "enum": [
                        "solid",
                        "dashed",
                        "none"
                      ]
                    }
                  }
                }
              },
              "anyOf": [
                {
                  "required": [
                    "field",
                    "value"
                  ]
                },
                {
                  "required": [
                    "patch"
                  ]
                }
              ],
              "allOf": [
                {
                  "if": {
                    "properties": {
                      "field": {
                        "enum": [
                          "markerColor",
                          "connectorColor"
                        ]
                      }
                    },
                    "required": [
                      "field"
                    ]
                  },
                  "then": {
                    "properties": {
                      "value": {
                        "enum": [
                          "primary",
                          "secondary",
                          "tertiary",
                          "success",
                          "warning",
                          "error",
                          "info",
                          "neutral"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "field": {
                        "const": "markerStyle"
                      }
                    },
                    "required": [
                      "field"
                    ]
                  },
                  "then": {
                    "properties": {
                      "value": {
                        "enum": [
                          "filled",
                          "outlined"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "field": {
                        "const": "connectorVariant"
                      }
                    },
                    "required": [
                      "field"
                    ]
                  },
                  "then": {
                    "properties": {
                      "value": {
                        "enum": [
                          "solid",
                          "dashed",
                          "none"
                        ]
                      }
                    }
                  }
                },
                {
                  "if": {
                    "properties": {
                      "field": {
                        "enum": [
                          "title",
                          "titleExpr",
                          "subtitle",
                          "subtitleExpr",
                          "meta",
                          "metaExpr",
                          "opposite",
                          "oppositeExpr",
                          "icon",
                          "iconExpr",
                          "badge",
                          "badgeExpr"
                        ]
                      }
                    },
                    "required": [
                      "field"
                    ]
                  },
                  "then": {
                    "properties": {
                      "value": {
                        "type": "string"
                      }
                    }
                  }
                }
              ]
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-timeline-item-update",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].items[]"
                  ],
                  "writes": [
                    "document.nodes[].items[]"
                  ],
                  "identityKeys": [
                    "document.nodes[].id",
                    "document.nodes[].items[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "timelineBlockId"
                    ],
                    "minProperties": 2,
                    "properties": {
                      "timelineBlockId": {
                        "type": "string"
                      },
                      "itemId": {
                        "type": "string"
                      },
                      "itemIndex": {
                        "type": "number"
                      },
                      "field": {
                        "enum": [
                          "title",
                          "titleExpr",
                          "subtitle",
                          "subtitleExpr",
                          "meta",
                          "metaExpr",
                          "opposite",
                          "oppositeExpr",
                          "icon",
                          "iconExpr",
                          "badge",
                          "badgeExpr",
                          "markerColor",
                          "markerStyle",
                          "connectorColor",
                          "connectorVariant"
                        ]
                      },
                      "value": {
                        "type": "string"
                      },
                      "patch": {
                        "type": "object",
                        "minProperties": 1,
                        "properties": {
                          "id": {
                            "type": "string"
                          },
                          "title": {
                            "type": "string"
                          },
                          "titleExpr": {
                            "type": "string"
                          },
                          "subtitle": {
                            "type": "string"
                          },
                          "subtitleExpr": {
                            "type": "string"
                          },
                          "meta": {
                            "type": "string"
                          },
                          "metaExpr": {
                            "type": "string"
                          },
                          "opposite": {
                            "type": "string"
                          },
                          "oppositeExpr": {
                            "type": "string"
                          },
                          "icon": {
                            "type": "string"
                          },
                          "iconExpr": {
                            "type": "string"
                          },
                          "badge": {
                            "type": "string"
                          },
                          "badgeExpr": {
                            "type": "string"
                          },
                          "markerColor": {
                            "enum": [
                              "primary",
                              "secondary",
                              "tertiary",
                              "success",
                              "warning",
                              "error",
                              "info",
                              "neutral"
                            ]
                          },
                          "markerStyle": {
                            "enum": [
                              "filled",
                              "outlined"
                            ]
                          },
                          "connectorColor": {
                            "enum": [
                              "primary",
                              "secondary",
                              "tertiary",
                              "success",
                              "warning",
                              "error",
                              "info",
                              "neutral"
                            ]
                          },
                          "connectorVariant": {
                            "enum": [
                              "solid",
                              "dashed",
                              "none"
                            ]
                          }
                        }
                      }
                    },
                    "anyOf": [
                      {
                        "required": [
                          "field",
                          "value"
                        ]
                      },
                      {
                        "required": [
                          "patch"
                        ]
                      }
                    ],
                    "allOf": [
                      {
                        "if": {
                          "properties": {
                            "field": {
                              "enum": [
                                "markerColor",
                                "connectorColor"
                              ]
                            }
                          },
                          "required": [
                            "field"
                          ]
                        },
                        "then": {
                          "properties": {
                            "value": {
                              "enum": [
                                "primary",
                                "secondary",
                                "tertiary",
                                "success",
                                "warning",
                                "error",
                                "info",
                                "neutral"
                              ]
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "field": {
                              "const": "markerStyle"
                            }
                          },
                          "required": [
                            "field"
                          ]
                        },
                        "then": {
                          "properties": {
                            "value": {
                              "enum": [
                                "filled",
                                "outlined"
                              ]
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "field": {
                              "const": "connectorVariant"
                            }
                          },
                          "required": [
                            "field"
                          ]
                        },
                        "then": {
                          "properties": {
                            "value": {
                              "enum": [
                                "solid",
                                "dashed",
                                "none"
                              ]
                            }
                          }
                        }
                      },
                      {
                        "if": {
                          "properties": {
                            "field": {
                              "enum": [
                                "title",
                                "titleExpr",
                                "subtitle",
                                "subtitleExpr",
                                "meta",
                                "metaExpr",
                                "opposite",
                                "oppositeExpr",
                                "icon",
                                "iconExpr",
                                "badge",
                                "badgeExpr"
                              ]
                            }
                          },
                          "required": [
                            "field"
                          ]
                        },
                        "then": {
                          "properties": {
                            "value": {
                              "type": "string"
                            }
                          }
                        }
                      }
                    ]
                  },
                  "failureModes": [
                    "timeline-not-found",
                    "timeline-item-not-found",
                    "unsupported-timeline-field",
                    "invalid-timeline-item"
                  ],
                  "description": "Updates a timeline item by stable item id when available, preserving the item object shape accepted by RichTimelineItem."
                }
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "block-exists",
              "timeline-target-valid",
              "timeline-item-exists",
              "timeline-item-field-supported",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].items[].title",
              "document.nodes[].items[].titleExpr",
              "document.nodes[].items[].subtitle",
              "document.nodes[].items[].subtitleExpr",
              "document.nodes[].items[].meta",
              "document.nodes[].items[].metaExpr",
              "document.nodes[].items[].opposite",
              "document.nodes[].items[].oppositeExpr",
              "document.nodes[].items[].icon",
              "document.nodes[].items[].iconExpr",
              "document.nodes[].items[].badge",
              "document.nodes[].items[].badgeExpr",
              "document.nodes[].items[].markerColor",
              "document.nodes[].items[].markerStyle",
              "document.nodes[].items[].connectorColor",
              "document.nodes[].items[].connectorVariant"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-block-exists",
              "target-timeline-item-exists"
            ]
          },
          {
            "operationId": "timeline.item.remove",
            "title": "Remove timeline item",
            "scope": "templating",
            "targetKind": "timelineItem",
            "target": {
              "kind": "timelineItem",
              "resolver": "rich-timeline-item-by-block-id-and-item-id",
              "ambiguityPolicy": "fail",
              "required": true
            },
            "inputSchema": {
              "type": "object",
              "required": [
                "timelineBlockId"
              ],
              "properties": {
                "timelineBlockId": {
                  "type": "string"
                },
                "itemId": {
                  "type": "string"
                },
                "itemIndex": {
                  "type": "number"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-timeline-item-remove",
                "handlerContract": {
                  "reads": [
                    "document.nodes[]",
                    "document.nodes[].items[]"
                  ],
                  "writes": [
                    "document.nodes[].items[]"
                  ],
                  "identityKeys": [
                    "document.nodes[].id",
                    "document.nodes[].items[].id"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "required": [
                      "timelineBlockId"
                    ],
                    "properties": {
                      "timelineBlockId": {
                        "type": "string"
                      },
                      "itemId": {
                        "type": "string"
                      },
                      "itemIndex": {
                        "type": "number"
                      }
                    }
                  },
                  "failureModes": [
                    "timeline-not-found",
                    "timeline-item-not-found",
                    "ambiguous-timeline-item"
                  ],
                  "description": "Removes a timeline item from a timeline node after explicit confirmation; stable item id is preferred over index."
                }
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "timeline-target-valid",
              "timeline-item-exists",
              "destructive-removal-confirmed",
              "document-shape-canonical",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document.nodes[].items[]"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "target-timeline-item-exists",
              "confirmation-collected"
            ]
          },
          {
            "operationId": "sanitizationPolicy.set",
            "title": "Set rich content sanitization policy",
            "scope": "global",
            "targetKind": "sanitizationPolicy",
            "target": {
              "kind": "sanitizationPolicy",
              "resolver": "rich-content-validation-policy",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "properties": {
                "allowHtml": {
                  "const": false
                },
                "allowedUrlProtocols": {
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                },
                "allowImageDataUrls": {
                  "type": "boolean"
                },
                "maxNodeDepth": {
                  "type": "number"
                },
                "maxNodeCount": {
                  "type": "number"
                }
              }
            },
            "effects": [
              {
                "kind": "compile-domain-patch",
                "handler": "rich-content-sanitization-policy",
                "handlerContract": {
                  "reads": [
                    "document",
                    "validateRichContentDocument"
                  ],
                  "writes": [
                    "document"
                  ],
                  "identityKeys": [
                    "document.kind",
                    "document.version"
                  ],
                  "inputSchema": {
                    "type": "object",
                    "properties": {
                      "allowHtml": {
                        "const": false
                      },
                      "allowedUrlProtocols": {
                        "type": "array",
                        "items": {
                          "type": "string"
                        }
                      },
                      "allowImageDataUrls": {
                        "type": "boolean"
                      },
                      "maxNodeDepth": {
                        "type": "number"
                      },
                      "maxNodeCount": {
                        "type": "number"
                      }
                    }
                  },
                  "failureModes": [
                    "html-not-supported",
                    "unsafe-protocol",
                    "max-depth-too-high",
                    "max-node-count-too-high"
                  ],
                  "description": "Validates requested policy against the fixed validator guardrails; rich-content authoring remains structured JSON and does not allow arbitrary HTML."
                }
              }
            ],
            "destructive": true,
            "requiresConfirmation": true,
            "validators": [
              "sanitization-policy-explicit",
              "unsafe-html-rejected",
              "unsafe-url-rejected",
              "security-change-confirmed",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "document"
            ],
            "submissionImpact": "config-only",
            "preconditions": [
              "config-initialized",
              "confirmation-collected"
            ]
          },
          {
            "operationId": "display.mode.set",
            "title": "Set rich content display mode",
            "scope": "global",
            "targetKind": "display",
            "target": {
              "kind": "display",
              "resolver": "rich-content-layout-and-root-class",
              "ambiguityPolicy": "fail",
              "required": false
            },
            "inputSchema": {
              "type": "object",
              "properties": {
                "layout": {
                  "enum": [
                    "block",
                    "inline"
                  ]
                },
                "rootClassName": {
                  "type": "string"
                }
              }
            },
            "effects": [
              {
                "kind": "set-value",
                "path": "layout"
              },
              {
                "kind": "set-value",
                "path": "rootClassName"
              }
            ],
            "destructive": false,
            "requiresConfirmation": false,
            "validators": [
              "layout-valid",
              "root-class-safe",
              "editor-runtime-round-trip"
            ],
            "affectedPaths": [
              "layout",
              "rootClassName"
            ],
            "submissionImpact": "visual-only",
            "preconditions": [
              "config-initialized"
            ]
          }
        ],
        "validators": [
          {
            "validatorId": "document-shape-canonical",
            "level": "error",
            "code": "PRC001",
            "description": "Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array."
          },
          {
            "validatorId": "document-version-supported",
            "level": "error",
            "code": "PRC002",
            "description": "Only document version 1.0.0 is supported."
          },
          {
            "validatorId": "node-types-supported",
            "level": "error",
            "code": "PRC003",
            "description": "Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML."
          },
          {
            "validatorId": "block-id-unique",
            "level": "warning",
            "code": "PRC004",
            "description": "Stable block ids should be unique when present; operations should prefer ids over array indexes."
          },
          {
            "validatorId": "block-exists",
            "level": "error",
            "code": "PRC005",
            "description": "Target block must exist before patching, reordering or removing it."
          },
          {
            "validatorId": "block-order-deterministic",
            "level": "error",
            "code": "PRC006",
            "description": "Block ordering must use stable ids or explicit before/after placement and not rely on transient generated indexes."
          },
          {
            "validatorId": "destructive-removal-confirmed",
            "level": "error",
            "code": "PRC007",
            "description": "Block and link removal are destructive and require confirmation."
          },
          {
            "validatorId": "document-not-empty-when-required",
            "level": "warning",
            "code": "PRC008",
            "description": "Removal should not leave an empty document unless the user explicitly requested an empty rich content document."
          },
          {
            "validatorId": "text-target-supports-field",
            "level": "error",
            "code": "PRC009",
            "description": "Text updates may only target fields supported by the selected node type."
          },
          {
            "validatorId": "expression-path-safe",
            "level": "warning",
            "code": "PRC010",
            "description": "Expression paths must remain simple context paths or Json Logic expressions, not string DSL code."
          },
          {
            "validatorId": "link-url-safe",
            "level": "error",
            "code": "PRC011",
            "description": "Link href values must reject javascript:, vbscript:, file: and unsafe data URLs."
          },
          {
            "validatorId": "link-policy-explicit",
            "level": "error",
            "code": "PRC012",
            "description": "Links must declare safe target/rel behavior; _blank links default to noopener noreferrer."
          },
          {
            "validatorId": "link-target-exists",
            "level": "error",
            "code": "PRC013",
            "description": "Link removal must resolve an existing link node by stable id or path."
          },
          {
            "validatorId": "unsafe-url-rejected",
            "level": "error",
            "code": "PRC014",
            "description": "Image, avatar and link URL fields must reject unsafe protocols and null bytes."
          },
          {
            "validatorId": "unsafe-style-rejected",
            "level": "error",
            "code": "PRC015",
            "description": "Inline style values must reject script, import, binding and data URL expressions."
          },
          {
            "validatorId": "unsafe-html-rejected",
            "level": "error",
            "code": "PRC016",
            "description": "Rich-content authoring must remain structured document JSON and must not accept arbitrary HTML/script patches."
          },
          {
            "validatorId": "sanitization-policy-explicit",
            "level": "error",
            "code": "PRC017",
            "description": "Security policy requests must keep HTML disabled and URL/style guardrails explicit."
          },
          {
            "validatorId": "security-change-confirmed",
            "level": "error",
            "code": "PRC018",
            "description": "Sanitization policy changes require explicit confirmation."
          },
          {
            "validatorId": "preset-ref-valid",
            "level": "error",
            "code": "PRC019",
            "description": "Preset refs must use kind rich-block plus namespace, presetId and optional version."
          },
          {
            "validatorId": "preset-exists-or-host-mediated",
            "level": "error",
            "code": "PRC020",
            "description": "Preset application must resolve through PRAXIS_RICH_BLOCK_PRESETS or a host-mediated resolver."
          },
          {
            "validatorId": "host-capabilities-serializable",
            "level": "error",
            "code": "PRC021",
            "description": "Public contracts must not serialize host capability functions; only refs and inputs are persisted."
          },
          {
            "validatorId": "layout-valid",
            "level": "error",
            "code": "PRC022",
            "description": "Layout must be block or inline."
          },
          {
            "validatorId": "root-class-safe",
            "level": "warning",
            "code": "PRC023",
            "description": "rootClassName must contain safe CSS class tokens."
          },
          {
            "validatorId": "editor-runtime-round-trip",
            "level": "error",
            "code": "PRC024",
            "description": "Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName."
          },
          {
            "validatorId": "class-name-safe",
            "level": "error",
            "code": "PRC025",
            "description": "Node className values must contain safe CSS class tokens."
          },
          {
            "validatorId": "visible-when-json-logic",
            "level": "error",
            "code": "PRC026",
            "description": "visibleWhen must be a Json Logic expression object and not a string DSL."
          },
          {
            "validatorId": "media-block-target-valid",
            "level": "error",
            "code": "PRC027",
            "description": "Media operations must target a mediaBlock node and preserve structured avatar/text child nodes."
          },
          {
            "validatorId": "timeline-target-valid",
            "level": "error",
            "code": "PRC028",
            "description": "Timeline item operations must target a timeline node with an items array."
          },
          {
            "validatorId": "timeline-item-valid",
            "level": "error",
            "code": "PRC029",
            "description": "Timeline items must be objects matching RichTimelineItem fields."
          },
          {
            "validatorId": "timeline-item-id-unique",
            "level": "warning",
            "code": "PRC030",
            "description": "Timeline item ids should be unique inside a timeline node when present."
          },
          {
            "validatorId": "timeline-item-exists",
            "level": "error",
            "code": "PRC031",
            "description": "Timeline item updates and removals must resolve an existing item by stable id or explicit fallback index."
          },
          {
            "validatorId": "timeline-item-field-supported",
            "level": "error",
            "code": "PRC032",
            "description": "Timeline item updates may only target supported RichTimelineItem fields."
          },
          {
            "validatorId": "timeline-setting-supported",
            "level": "error",
            "code": "PRC033",
            "description": "Timeline display settings must use supported position, connector, marker, emphasis, density and text appearance enum values."
          }
        ],
        "roundTripRequirements": [
          "The editor must produce the same widget input envelope consumed by page-builder: inputs.document, inputs.layout and inputs.rootClassName.",
          "Rich content must remain structured RichContentDocument JSON; arbitrary HTML and script URL patches are rejected before persistence.",
          "Block identity should prefer document.nodes[].id; array index is a resolver fallback only and cannot be the canonical identity for generated patches.",
          "Link authoring uses canonical link nodes with safe href/target/rel instead of markdown or raw HTML embedded in text nodes.",
          "MediaBlock, timeline node appearance, timeline item, metadata, visibleWhen and safe style authoring use the same structured paths exposed by the visual config editor.",
          "Preset authoring persists only rich-block refs and inputs; host capability functions remain runtime-mediated and are not serialized."
        ],
        "examples": [
          {
            "id": "set-empty-document",
            "request": "Start with an empty rich content document.",
            "operationId": "document.set",
            "params": {
              "kind": "praxis.rich-content",
              "version": "1.0.0",
              "nodes": []
            },
            "isPositive": true
          },
          {
            "id": "add-text-block",
            "request": "Add a text block saying Welcome.",
            "operationId": "block.add",
            "params": {
              "type": "text",
              "node": {
                "id": "welcome",
                "type": "text",
                "text": "Welcome"
              }
            },
            "isPositive": true
          },
          {
            "id": "remove-obsolete-block",
            "request": "Remove the obsolete block.",
            "operationId": "block.remove",
            "target": "obsolete",
            "params": {
              "blockId": "obsolete"
            },
            "isPositive": true
          },
          {
            "id": "move-summary-before-details",
            "request": "Move summary before details.",
            "operationId": "block.order.set",
            "target": "summary",
            "params": {
              "blockId": "summary",
              "beforeBlockId": "details"
            },
            "isPositive": true
          },
          {
            "id": "update-title-text",
            "request": "Change the hero title to Customer overview.",
            "operationId": "text.update",
            "target": "hero-title",
            "params": {
              "text": "Customer overview"
            },
            "isPositive": true
          },
          {
            "id": "add-docs-link",
            "request": "Add a link to the documentation.",
            "operationId": "link.add",
            "params": {
              "id": "docs-link",
              "label": "Documentation",
              "href": "/docs",
              "target": "_self"
            },
            "isPositive": true
          },
          {
            "id": "reject-script-link",
            "request": "Add a link to javascript:alert(1).",
            "operationId": "link.add",
            "params": {
              "label": "Bad link",
              "href": "javascript:alert(1)"
            },
            "isPositive": false
          },
          {
            "id": "remove-docs-link",
            "request": "Remove the documentation link but keep its label as text.",
            "operationId": "link.remove",
            "target": "docs-link",
            "params": {
              "linkId": "docs-link",
              "preserveLabelAsText": true
            },
            "isPositive": true
          },
          {
            "id": "apply-profile-preset",
            "request": "Apply the profile summary rich-block preset.",
            "operationId": "preset.apply",
            "params": {
              "ref": {
                "kind": "rich-block",
                "namespace": "praxis.rich-content",
                "presetId": "profile-summary",
                "version": "1.0.0"
              }
            },
            "isPositive": true
          },
          {
            "id": "show-only-active-row",
            "request": "Show the status block only when row.active is true.",
            "operationId": "metadata.update",
            "target": "status",
            "params": {
              "blockId": "status",
              "visibleWhen": {
                "===": [
                  {
                    "var": "row.active"
                  },
                  true
                ]
              }
            },
            "isPositive": true
          },
          {
            "id": "update-media-title",
            "request": "Update the profile media block title and avatar name.",
            "operationId": "mediaBlock.update",
            "target": "profile-media",
            "params": {
              "blockId": "profile-media",
              "avatarName": "Ana Silva",
              "title": "Profile summary"
            },
            "isPositive": true
          },
          {
            "id": "make-timeline-prominent",
            "request": "Make the activity timeline read as a prominent hero process.",
            "operationId": "timeline.node.update",
            "target": "activity",
            "params": {
              "timelineBlockId": "activity",
              "emphasis": "hero",
              "density": "comfortable",
              "textAppearance": "prominent"
            },
            "isPositive": true
          },
          {
            "id": "add-created-timeline-item",
            "request": "Add a Created item to the activity timeline.",
            "operationId": "timeline.item.add",
            "target": "activity",
            "params": {
              "timelineBlockId": "activity",
              "item": {
                "id": "created",
                "title": "Created",
                "badge": "Done"
              }
            },
            "isPositive": true
          },
          {
            "id": "reject-unknown-timeline-field",
            "request": "Set a custom script field on a timeline item.",
            "operationId": "timeline.item.update",
            "target": "activity.created",
            "params": {
              "timelineBlockId": "activity",
              "itemId": "created",
              "field": "script",
              "value": "alert(1)"
            },
            "isPositive": false
          },
          {
            "id": "reject-html-policy",
            "request": "Allow arbitrary HTML in this rich content document.",
            "operationId": "sanitizationPolicy.set",
            "params": {
              "allowHtml": true
            },
            "isPositive": false
          },
          {
            "id": "compact-inline-layout",
            "request": "Render this rich content inline with root class status-line.",
            "operationId": "display.mode.set",
            "params": {
              "layout": "inline",
              "rootClassName": "status-line"
            },
            "isPositive": true
          }
        ]
      },
      "chunks": [
        {
          "chunkIndex": 0,
          "chunkKind": "summary",
          "content": "Component ID: praxis-rich-content\nSelector: praxis-rich-content\nFriendly Name: Praxis Rich Content\nDescription: Renderer canonico de RichContentDocument para blocos editoriais, cards, grupos de metricas, media blocks, timelines e primitives de apresentacao.\nLib/Package: @praxisui/rich-content\nTags: widget, rich-content, editorial, presentation, cards, timeline\nInputs:\n  - document (RichContentDocument | null)\n  - nodes (RichBlockNode[] | null)\n  - context (JsonLogicDataRecord | null)\n  - hostCapabilities (RichBlockHostCapabilities | null)\n  - layout ('block' | 'inline')\n  - rootClassName (string)\nInsertion Presets:\n  - editorial-card: Editorial card - Starter card with title, text and badge.\n  - callout-guidance: Guidance callout - Starter callout for instructions and attention states.\n  - cta-group: CTA group - Governed call-to-action cluster for next steps and host-mediated flows.\n  - knowledge-surface: Knowledge surface - Starter composition with record summary and disclosure.\n  - lookup-card: Lookup card - Governed lookup summary with primary host-mediated action.\n  - related-record: Related record - Semantic related-record summary with optional governed primary action.\n  - action-card: Action card - Governed editorial card with a primary host-mediated CTA.\n  - approval-decision-surface: Approval decision surface - Domain starter for approval workbenches with KPIs, related approver context and governed decisions.\n  - approval-review-surface: Approval review surface - Domain starter for approval review workbenches with queue metrics, selected request context and governed escalation actions.\n  - approval-audit-surface: Approval audit surface - Domain starter for approval audit workbenches with compliance signals, evidence context and governed remediation actions.\n  - approval-sla-triage-surface: Approval SLA triage surface - Domain starter for approval SLA triage workbenches with breach signals, queue ownership and governed triage actions.\n  - approval-delegation-exception-surface: Approval delegation exception surface - Domain starter for approval delegation and exception workbenches with substitute coverage, policy context and governed exception actions.\n  - employee-insight-surface: Employee insight surface - Domain starter for HR workbenches with employee KPIs, reporting context and governed follow-up actions.\n  - hr-performance-review-surface: HR performance review surface - Domain starter for HR performance review workbenches with review signals, calibrated context and governed review actions.\n  - hr-compensation-review-surface: HR compensation review surface - Domain starter for HR compensation review workbenches with budget signals, reward partner context and governed compensation actions.\n  - hr-promotion-review-surface: HR promotion review surface - Domain starter for HR promotion review workbenches with readiness signals, sponsor context and governed promotion actions.\n  - hr-offboarding-surface: HR offboarding surface - Domain starter for HR offboarding workbenches with exit signals, transition ownership and governed departure actions.\n  - hr-succession-planning-surface: HR succession planning surface - Domain starter for HR succession planning workbenches with readiness signals, successor sponsorship and governed succession actions.\n  - hr-leave-absence-surface: HR leave and absence surface - Domain starter for HR leave and absence workbenches with coverage signals, partner context and governed leave actions.\n  - hr-internal-mobility-surface: HR internal mobility surface - Domain starter for HR internal mobility workbenches with readiness signals, target role context and governed mobility actions.\n  - onboarding-journey-surface: Onboarding journey surface - Domain starter for onboarding workbenches with journey signals, assigned owner context and governed next-step actions.\n  - onboarding-readiness-surface: Onboarding readiness surface - Domain starter for onboarding readiness workbenches with first-week signals, equipment context and governed readiness actions.\n  - onboarding-manager-follow-up-surface: Onboarding manager follow-up surface - Domain starter for onboarding manager follow-up workbenches with follow-up signals, manager context and governed follow-up actions.\n  - onboarding-equipment-access-recovery-surface: Onboarding equipment and access recovery surface - Domain starter for onboarding equipment and access recovery workbenches with recovery signals, access owner context and governed remediation actions.\n  - onboarding-day-30-coaching-surface: Onboarding day-30 coaching surface - Domain starter for onboarding day-30 coaching workbenches with coaching signals, manager context and governed development actions.\n  - corporate-information-surface: Corporate information surface - Enterprise starter for SAP-like record details with KPIs, dates, currency, notes, progress, timeline and governed decision context.\n  - stat-group: Stat group - Semantic metric group for dashboards, summaries and compact knowledge surfaces.\n  - timeline-surface: Timeline surface - Portable lifecycle surface with horizontal timeline defaults and governed milestone metadata.\n  - tabs-surface: Tabs surface - Semantic tabbed surface for portable multi-panel editorial content.\n",
          "sourcePointer": "projects/praxis-rich-content/src/lib/praxis-rich-content.metadata.ts",
          "contentHash": "f2fa5516a86a328300aab41ca0b4a9d741da1cac808471d2d8e4aabcb4af0361",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 1,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"document.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set rich content document Effects: set-value. Start with an empty rich content document.\",\"scope\":\"global\",\"target\":{\"kind\":\"document\",\"resolver\":\"rich-content-document-root\",\"required\":false},\"inputContract\":{\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":[\"kind\",\"version\",\"context\",\"nodes\"],\"semanticTerms\":[\"kind\",\"version\",\"context\",\"nodes\",\"praxis.rich-content\",\"1.0.0\"]},\"effects\":[\"set-value\"],\"affectedPaths\":[\"document\"],\"validators\":[{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"document-version-supported\",\"level\":\"error\",\"code\":\"PRC002\",\"description\":\"Only document version 1.0.0 is supported.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"set-empty-document\",\"request\":\"Start with an empty rich content document.\",\"operationId\":\"document.set\",\"params\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[]},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "86d4f24bd91836a91e28f837fb6ab60f1a096e6aa12d3194ce216489b380854f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 2,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"block.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add rich content block Effects: compile-domain-patch. Add a text block saying Welcome.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"required\":false},\"inputContract\":{\"required\":[\"type\"],\"properties\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\"],\"semanticTerms\":[\"type\",\"node\",\"afterBlockId\",\"beforeBlockId\",\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"block-id-unique\",\"level\":\"warning\",\"code\":\"PRC004\",\"description\":\"Stable block ids should be unique when present; operations should prefer ids over array indexes.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-text-block\",\"request\":\"Add a text block saying Welcome.\",\"operationId\":\"block.add\",\"params\":{\"type\":\"text\",\"node\":{\"id\":\"welcome\",\"type\":\"text\",\"text\":\"Welcome\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "6394f73cdec265d3e423099b8739dc80ad0672400a4a501e1963ba50a5536ec2",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 3,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"block.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update rich content block fields Effects: merge-by-key.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\",\"interaction\",\"accessibility\",\"fields\",\"items\",\"header\",\"body\",\"footer\",\"aside\"],\"semanticTerms\":[\"id\",\"testId\",\"className\",\"style\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"requiresCapabilities\",\"capabilityMode\",\"text\",\"textExpr\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"src\",\"alt\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"relationLabel\",\"message\",\"summary\",\"summaryExpr\",\"description\",\"ctaLabel\",\"caption\",\"emptyText\",\"errorText\",\"status\",\"statusExpr\",\"owner\",\"ownerExpr\",\"policySource\",\"policySourceExpr\",\"version\",\"versionExpr\",\"confidence\",\"confidenceExpr\",\"risk\",\"riskExpr\",\"lastReviewed\",\"lastReviewedExpr\",\"supersedes\",\"supersedesExpr\",\"evidence\",\"appearance\",\"variant\",\"tone\",\"size\",\"density\",\"orientation\",\"loading\",\"loadingExpr\",\"active\",\"activeExpr\",\"defaultTabId\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"textAppearance\",\"icon\",\"formId\",\"columns\",\"layout\",\"action\",\"actions\",\"primaryAction\",\"secondaryActions\",\"media\",\"headerAction\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "730982b97848f50fd19e89f97e0d252d3ad518c4644b2b81a7454703402d7348",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 4,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"block.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove rich content block Effects: remove-by-key. Remove the obsolete block.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-by-id-or-index\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"blockId\",\"replacementBlockId\"],\"semanticTerms\":[\"blockId\",\"replacementBlockId\"]},\"effects\":[\"remove-by-key\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"PRC007\",\"description\":\"Block and link removal are destructive and require confirmation.\"},{\"validatorId\":\"document-not-empty-when-required\",\"level\":\"warning\",\"code\":\"PRC008\",\"description\":\"Removal should not leave an empty document unless the user explicitly requested an empty rich content document.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"remove-obsolete-block\",\"request\":\"Remove the obsolete block.\",\"operationId\":\"block.remove\",\"target\":\"obsolete\",\"params\":{\"blockId\":\"obsolete\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "ab697cf235d218c089a0d2a1e8772f1fed9b2af90b925dfaa96132433f98432f",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 5,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"block.order.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Reorder rich content blocks Effects: reorder-by-key. Move summary before details.\",\"scope\":\"templating\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-by-id-or-index\",\"required\":true},\"inputContract\":{\"required\":[\"blockId\"],\"properties\":[\"blockId\",\"beforeBlockId\",\"afterBlockId\"],\"semanticTerms\":[\"blockId\",\"beforeBlockId\",\"afterBlockId\"]},\"effects\":[\"reorder-by-key\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"block-order-deterministic\",\"level\":\"error\",\"code\":\"PRC006\",\"description\":\"Block ordering must use stable ids or explicit before/after placement and not rely on transient generated indexes.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"move-summary-before-details\",\"request\":\"Move summary before details.\",\"operationId\":\"block.order.set\",\"target\":\"summary\",\"params\":{\"blockId\":\"summary\",\"beforeBlockId\":\"details\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "368269ce1eceb9709670c63082555c6e9effdb1cbdcb91f6c37ff3b4c55e1e81",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 6,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"text.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update rich content text Effects: merge-by-key. Change the hero title to Customer overview.\",\"scope\":\"templating\",\"target\":{\"kind\":\"text\",\"resolver\":\"rich-text-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"text\",\"textExpr\",\"label\",\"labelExpr\",\"title\",\"subtitle\",\"relationLabel\",\"message\",\"summary\",\"description\",\"ctaLabel\",\"emptyText\",\"errorText\"],\"semanticTerms\":[\"text\",\"textExpr\",\"label\",\"labelExpr\",\"title\",\"subtitle\",\"relationLabel\",\"message\",\"summary\",\"description\",\"ctaLabel\",\"emptyText\",\"errorText\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].title\",\"document.nodes[].subtitle\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"text-target-supports-field\",\"level\":\"error\",\"code\":\"PRC009\",\"description\":\"Text updates may only target fields supported by the selected node type.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"update-title-text\",\"request\":\"Change the hero title to Customer overview.\",\"operationId\":\"text.update\",\"target\":\"hero-title\",\"params\":{\"text\":\"Customer overview\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "d3cbfeea0ec49dfb9876931e1e3de36c305f69c408c8f65e96d869acc82143f8",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 7,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"link.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add link block Effects: append-unique. Add a link to the documentation. Add a link to javascript:alert(1).\",\"scope\":\"templating\",\"target\":{\"kind\":\"link\",\"resolver\":\"document-nodes-array\",\"required\":false},\"inputContract\":{\"required\":[\"label\",\"href\"],\"properties\":[\"id\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\"],\"semanticTerms\":[\"id\",\"label\",\"labelExpr\",\"href\",\"target\",\"rel\",\"_self\",\"_blank\"]},\"effects\":[\"append-unique\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\"],\"validators\":[{\"validatorId\":\"link-url-safe\",\"level\":\"error\",\"code\":\"PRC011\",\"description\":\"Link href values must reject javascript:, vbscript:, file: and unsafe data URLs.\"},{\"validatorId\":\"link-policy-explicit\",\"level\":\"error\",\"code\":\"PRC012\",\"description\":\"Links must declare safe target/rel behavior; _blank links default to noopener noreferrer.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"block-id-unique\",\"level\":\"warning\",\"code\":\"PRC004\",\"description\":\"Stable block ids should be unique when present; operations should prefer ids over array indexes.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-docs-link\",\"request\":\"Add a link to the documentation.\",\"operationId\":\"link.add\",\"params\":{\"id\":\"docs-link\",\"label\":\"Documentation\",\"href\":\"/docs\",\"target\":\"_self\"},\"isPositive\":true}],\"negativeExamples\":[{\"id\":\"reject-script-link\",\"request\":\"Add a link to javascript:alert(1).\",\"operationId\":\"link.add\",\"params\":{\"label\":\"Bad link\",\"href\":\"javascript:alert(1)\"},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "df28a9fdeb41f8aeadcac0b5ff49bb17010f8e2bf81d8e55b52805a521dd11c6",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 8,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"link.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove link from rich content Effects: compile-domain-patch. Remove the documentation link but keep its label as text.\",\"scope\":\"templating\",\"target\":{\"kind\":\"link\",\"resolver\":\"rich-link-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"linkId\",\"preserveLabelAsText\"],\"semanticTerms\":[\"linkId\",\"preserveLabelAsText\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[]\"],\"validators\":[{\"validatorId\":\"link-target-exists\",\"level\":\"error\",\"code\":\"PRC013\",\"description\":\"Link removal must resolve an existing link node by stable id or path.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"PRC007\",\"description\":\"Block and link removal are destructive and require confirmation.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-link-exists\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"remove-docs-link\",\"request\":\"Remove the documentation link but keep its label as text.\",\"operationId\":\"link.remove\",\"target\":\"docs-link\",\"params\":{\"linkId\":\"docs-link\",\"preserveLabelAsText\":true},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "e41f2726fd8e39433f5cb7949ea48c671fac622fbc91cd275050aa3310dc77bb",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 9,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"preset.apply\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Apply rich block preset Effects: compile-domain-patch. Apply the profile summary rich-block preset.\",\"scope\":\"templating\",\"target\":{\"kind\":\"preset\",\"resolver\":\"rich-block-preset-ref\",\"required\":false},\"inputContract\":{\"required\":[\"ref\"],\"properties\":[\"ref\",\"inputs\",\"replaceBlockId\"],\"semanticTerms\":[\"ref\",\"inputs\",\"replaceBlockId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].ref\",\"document.nodes[].inputs\"],\"validators\":[{\"validatorId\":\"preset-ref-valid\",\"level\":\"error\",\"code\":\"PRC019\",\"description\":\"Preset refs must use kind rich-block plus namespace, presetId and optional version.\"},{\"validatorId\":\"preset-exists-or-host-mediated\",\"level\":\"error\",\"code\":\"PRC020\",\"description\":\"Preset application must resolve through PRAXIS_RICH_BLOCK_PRESETS or a host-mediated resolver.\"},{\"validatorId\":\"host-capabilities-serializable\",\"level\":\"error\",\"code\":\"PRC021\",\"description\":\"Public contracts must not serialize host capability functions; only refs and inputs are persisted.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"apply-profile-preset\",\"request\":\"Apply the profile summary rich-block preset.\",\"operationId\":\"preset.apply\",\"params\":{\"ref\":{\"kind\":\"rich-block\",\"namespace\":\"praxis.rich-content\",\"presetId\":\"profile-summary\",\"version\":\"1.0.0\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "771968330d66d06a2b88ca78a2494f94139263d54081d13f5b22728523a90855",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 10,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"metadata.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update rich block metadata Effects: merge-by-key. Show the status block only when row.active is true.\",\"scope\":\"templating\",\"target\":{\"kind\":\"metadata\",\"resolver\":\"rich-block-by-id-or-index\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"blockId\",\"testId\",\"className\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"style\",\"requiresCapabilities\",\"capabilityMode\"],\"semanticTerms\":[\"blockId\",\"testId\",\"className\",\"visibleWhen\",\"disabledWhen\",\"loadWhen\",\"classWhen\",\"styleWhen\",\"style\",\"requiresCapabilities\",\"capabilityMode\",\"all\",\"any\"]},\"effects\":[\"merge-by-key\"],\"affectedPaths\":[\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].style\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"class-name-safe\",\"level\":\"error\",\"code\":\"PRC025\",\"description\":\"Node className values must contain safe CSS class tokens.\"},{\"validatorId\":\"visible-when-json-logic\",\"level\":\"error\",\"code\":\"PRC026\",\"description\":\"visibleWhen must be a Json Logic expression object and not a string DSL.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"show-only-active-row\",\"request\":\"Show the status block only when row.active is true.\",\"operationId\":\"metadata.update\",\"target\":\"status\",\"params\":{\"blockId\":\"status\",\"visibleWhen\":{\"===\":[{\"var\":\"row.active\"},true]}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "3689171519a5881dda7c507c11304d25730b1d39d3fd8167b3ee7a741e5d15ec",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 11,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"mediaBlock.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update media block fields Effects: compile-domain-patch. Update the profile media block title and avatar name.\",\"scope\":\"templating\",\"target\":{\"kind\":\"media\",\"resolver\":\"rich-media-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[],\"properties\":[\"blockId\",\"avatarName\",\"avatarImageSrc\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\"],\"semanticTerms\":[\"blockId\",\"avatarName\",\"avatarImageSrc\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[].avatar\",\"document.nodes[].title\",\"document.nodes[].subtitle\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"media-block-target-valid\",\"level\":\"error\",\"code\":\"PRC027\",\"description\":\"Media operations must target a mediaBlock node and preserve structured avatar/text child nodes.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"update-media-title\",\"request\":\"Update the profile media block title and avatar name.\",\"operationId\":\"mediaBlock.update\",\"target\":\"profile-media\",\"params\":{\"blockId\":\"profile-media\",\"avatarName\":\"Ana Silva\",\"title\":\"Profile summary\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "81684fb5f13f87de0d3fb48e3831235d73567516080cfd122c90ec08fc2f19f3",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 12,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"timeline.node.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update timeline display settings Effects: compile-domain-patch. Make the activity timeline read as a prominent hero process.\",\"scope\":\"templating\",\"target\":{\"kind\":\"timeline\",\"resolver\":\"rich-timeline-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[\"timelineBlockId\"],\"properties\":[\"timelineBlockId\",\"orientation\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"density\",\"textAppearance\",\"title\",\"titleExpr\",\"emptyText\"],\"semanticTerms\":[\"timelineBlockId\",\"orientation\",\"order\",\"position\",\"connectorVariant\",\"connectorColor\",\"markerVariant\",\"markerColor\",\"markerStyle\",\"emphasis\",\"density\",\"textAppearance\",\"title\",\"titleExpr\",\"emptyText\",\"vertical\",\"horizontal\",\"normal\",\"reverse\",\"left\",\"right\",\"alternate\",\"alternate-reverse\",\"solid\",\"dashed\",\"none\",\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\",\"dot\",\"icon\",\"number\",\"filled\",\"outlined\",\"subtle\",\"standard\",\"strong\",\"hero\",\"compact\",\"comfortable\",\"spacious\",\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[].orientation\",\"document.nodes[].order\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].emphasis\",\"document.nodes[].density\",\"document.nodes[].textAppearance\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].emptyText\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"timeline-target-valid\",\"level\":\"error\",\"code\":\"PRC028\",\"description\":\"Timeline item operations must target a timeline node with an items array.\"},{\"validatorId\":\"timeline-setting-supported\",\"level\":\"error\",\"code\":\"PRC033\",\"description\":\"Timeline display settings must use supported position, connector, marker, emphasis, density and text appearance enum values.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"make-timeline-prominent\",\"request\":\"Make the activity timeline read as a prominent hero process.\",\"operationId\":\"timeline.node.update\",\"target\":\"activity\",\"params\":{\"timelineBlockId\":\"activity\",\"emphasis\":\"hero\",\"density\":\"comfortable\",\"textAppearance\":\"prominent\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "286254eb33cadf3d7a23f77d502309a6866758ffaeaf14b10e97f8aa5a35cd08",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 13,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"timeline.item.add\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Add timeline item Effects: compile-domain-patch. Add a Created item to the activity timeline.\",\"scope\":\"templating\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-node-by-id-or-path\",\"required\":true},\"inputContract\":{\"required\":[\"timelineBlockId\",\"item\"],\"properties\":[\"timelineBlockId\",\"item\",\"afterItemId\",\"beforeItemId\"],\"semanticTerms\":[\"timelineBlockId\",\"item\",\"afterItemId\",\"beforeItemId\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[].items[]\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"timeline-target-valid\",\"level\":\"error\",\"code\":\"PRC028\",\"description\":\"Timeline item operations must target a timeline node with an items array.\"},{\"validatorId\":\"timeline-item-valid\",\"level\":\"error\",\"code\":\"PRC029\",\"description\":\"Timeline items must be objects matching RichTimelineItem fields.\"},{\"validatorId\":\"timeline-item-id-unique\",\"level\":\"warning\",\"code\":\"PRC030\",\"description\":\"Timeline item ids should be unique inside a timeline node when present.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"add-created-timeline-item\",\"request\":\"Add a Created item to the activity timeline.\",\"operationId\":\"timeline.item.add\",\"target\":\"activity\",\"params\":{\"timelineBlockId\":\"activity\",\"item\":{\"id\":\"created\",\"title\":\"Created\",\"badge\":\"Done\"}},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "76e1969ea06f4e3da936da3248b87a8f369a032de7ba55a73a1aa56357ec70be",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 14,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"timeline.item.update\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Update timeline item Effects: compile-domain-patch. Set a custom script field on a timeline item.\",\"scope\":\"templating\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-item-by-block-id-and-item-id\",\"required\":true},\"inputContract\":{\"required\":[\"timelineBlockId\"],\"properties\":[\"timelineBlockId\",\"itemId\",\"itemIndex\",\"field\",\"value\",\"patch\"],\"semanticTerms\":[\"timelineBlockId\",\"itemId\",\"itemIndex\",\"field\",\"value\",\"patch\",\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"meta\",\"metaExpr\",\"opposite\",\"oppositeExpr\",\"icon\",\"iconExpr\",\"badge\",\"badgeExpr\",\"markerColor\",\"markerStyle\",\"connectorColor\",\"connectorVariant\",\"patch.id\",\"patch.title\",\"patch.titleExpr\",\"patch.subtitle\",\"patch.subtitleExpr\",\"patch.meta\",\"patch.metaExpr\",\"patch.opposite\",\"patch.oppositeExpr\",\"patch.icon\",\"patch.iconExpr\",\"patch.badge\",\"patch.badgeExpr\",\"patch.markerColor\",\"patch.markerStyle\",\"patch.connectorColor\",\"patch.connectorVariant\",\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\",\"filled\",\"outlined\",\"solid\",\"dashed\",\"none\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[].items[].title\",\"document.nodes[].items[].titleExpr\",\"document.nodes[].items[].subtitle\",\"document.nodes[].items[].subtitleExpr\",\"document.nodes[].items[].meta\",\"document.nodes[].items[].metaExpr\",\"document.nodes[].items[].opposite\",\"document.nodes[].items[].oppositeExpr\",\"document.nodes[].items[].icon\",\"document.nodes[].items[].iconExpr\",\"document.nodes[].items[].badge\",\"document.nodes[].items[].badgeExpr\",\"document.nodes[].items[].markerColor\",\"document.nodes[].items[].markerStyle\",\"document.nodes[].items[].connectorColor\",\"document.nodes[].items[].connectorVariant\"],\"validators\":[{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"timeline-target-valid\",\"level\":\"error\",\"code\":\"PRC028\",\"description\":\"Timeline item operations must target a timeline node with an items array.\"},{\"validatorId\":\"timeline-item-exists\",\"level\":\"error\",\"code\":\"PRC031\",\"description\":\"Timeline item updates and removals must resolve an existing item by stable id or explicit fallback index.\"},{\"validatorId\":\"timeline-item-field-supported\",\"level\":\"error\",\"code\":\"PRC032\",\"description\":\"Timeline item updates may only target supported RichTimelineItem fields.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-block-exists\",\"target-timeline-item-exists\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[{\"id\":\"reject-unknown-timeline-field\",\"request\":\"Set a custom script field on a timeline item.\",\"operationId\":\"timeline.item.update\",\"target\":\"activity.created\",\"params\":{\"timelineBlockId\":\"activity\",\"itemId\":\"created\",\"field\":\"script\",\"value\":\"alert(1)\"},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "391c06c85b4c4256c00d40d6741c70be635d836de6a292e9cf2b99110f0937b1",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 15,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"timeline.item.remove\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Remove timeline item Effects: compile-domain-patch.\",\"scope\":\"templating\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-item-by-block-id-and-item-id\",\"required\":true},\"inputContract\":{\"required\":[\"timelineBlockId\"],\"properties\":[\"timelineBlockId\",\"itemId\",\"itemIndex\"],\"semanticTerms\":[\"timelineBlockId\",\"itemId\",\"itemIndex\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document.nodes[].items[]\"],\"validators\":[{\"validatorId\":\"timeline-target-valid\",\"level\":\"error\",\"code\":\"PRC028\",\"description\":\"Timeline item operations must target a timeline node with an items array.\"},{\"validatorId\":\"timeline-item-exists\",\"level\":\"error\",\"code\":\"PRC031\",\"description\":\"Timeline item updates and removals must resolve an existing item by stable id or explicit fallback index.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"PRC007\",\"description\":\"Block and link removal are destructive and require confirmation.\"},{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"target-timeline-item-exists\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "04b4a48be6a957b13aa8f6b73211e5c57bd4e7f993449dea69e83ccdd427cff7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 16,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"sanitizationPolicy.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set rich content sanitization policy Effects: compile-domain-patch. Allow arbitrary HTML in this rich content document.\",\"scope\":\"global\",\"target\":{\"kind\":\"sanitizationPolicy\",\"resolver\":\"rich-content-validation-policy\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"allowHtml\",\"allowedUrlProtocols\",\"allowImageDataUrls\",\"maxNodeDepth\",\"maxNodeCount\"],\"semanticTerms\":[\"allowHtml\",\"allowedUrlProtocols\",\"allowImageDataUrls\",\"maxNodeDepth\",\"maxNodeCount\",\"false\"]},\"effects\":[\"compile-domain-patch\"],\"affectedPaths\":[\"document\"],\"validators\":[{\"validatorId\":\"sanitization-policy-explicit\",\"level\":\"error\",\"code\":\"PRC017\",\"description\":\"Security policy requests must keep HTML disabled and URL/style guardrails explicit.\"},{\"validatorId\":\"unsafe-html-rejected\",\"level\":\"error\",\"code\":\"PRC016\",\"description\":\"Rich-content authoring must remain structured document JSON and must not accept arbitrary HTML/script patches.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"security-change-confirmed\",\"level\":\"error\",\"code\":\"PRC018\",\"description\":\"Sanitization policy changes require explicit confirmation.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\",\"confirmation-collected\"],\"submissionImpact\":\"config-only\",\"presentationAffordances\":[],\"positiveExamples\":[],\"negativeExamples\":[{\"id\":\"reject-html-policy\",\"request\":\"Allow arbitrary HTML in this rich content document.\",\"operationId\":\"sanitizationPolicy.set\",\"params\":{\"allowHtml\":true},\"isPositive\":false}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "592ec804ff1fa8fb073e0abf2c75f32908805f0487253fcd5173f601ffeebd96",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 17,
          "chunkKind": "authoring_manifest",
          "content": "{\"operationId\":\"display.mode.set\",\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operation_card\",\"semanticSummary\":\"Set rich content display mode Effects: set-value, set-value. Render this rich content inline with root class status-line.\",\"scope\":\"global\",\"target\":{\"kind\":\"display\",\"resolver\":\"rich-content-layout-and-root-class\",\"required\":false},\"inputContract\":{\"required\":[],\"properties\":[\"layout\",\"rootClassName\"],\"semanticTerms\":[\"layout\",\"rootClassName\",\"block\",\"inline\"]},\"effects\":[\"set-value\",\"set-value\"],\"affectedPaths\":[\"layout\",\"rootClassName\"],\"validators\":[{\"validatorId\":\"layout-valid\",\"level\":\"error\",\"code\":\"PRC022\",\"description\":\"Layout must be block or inline.\"},{\"validatorId\":\"root-class-safe\",\"level\":\"warning\",\"code\":\"PRC023\",\"description\":\"rootClassName must contain safe CSS class tokens.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"}],\"preconditions\":[\"config-initialized\"],\"submissionImpact\":\"visual-only\",\"presentationAffordances\":[],\"positiveExamples\":[{\"id\":\"compact-inline-layout\",\"request\":\"Render this rich content inline with root class status-line.\",\"operationId\":\"display.mode.set\",\"params\":{\"layout\":\"inline\",\"rootClassName\":\"status-line\"},\"isPositive\":true}],\"negativeExamples\":[]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "9aedd64332e9d6ffb950069257bb89d258175784db99780b63c4e54f59c605a7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 18,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"identity\"}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "1a9d0b8a44eb732c0bd9a954e84d8068220e6661f22cf6d83f72a237c5a2f906",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 19,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"runtimeInputs\",\"runtimeInputs\":[{\"name\":\"document\",\"type\":\"RichContentDocument | null\",\"description\":\"Canonical praxis.rich-content document rendered by the component.\"},{\"name\":\"nodes\",\"type\":\"RichBlockNode[] | null\",\"description\":\"Direct node list used only when the host controls the document envelope.\"},{\"name\":\"context\",\"type\":\"JsonLogicDataRecord | null\",\"description\":\"External context used by expression paths and Json Logic rules.\"},{\"name\":\"hostCapabilities\",\"type\":\"RichBlockHostCapabilities | null\",\"description\":\"Host-mediated preset, action, action confirmation, data and embed capabilities; functions are not serialized in public contracts.\"},{\"name\":\"layout\",\"type\":\"'block' | 'inline'\",\"allowedValues\":[\"block\",\"inline\"],\"description\":\"Renderer layout mode.\"},{\"name\":\"rootClassName\",\"type\":\"string\",\"description\":\"CSS class applied to the renderer root.\"}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "45d96fd455a919bbde2da0164edf87695ae43db035360636839d2372729de52c",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 20,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"editableTargets\",\"editableTargets\":[{\"kind\":\"document\",\"resolver\":\"rich-content-document-root\",\"description\":\"The canonical RichContentDocument input envelope.\"},{\"kind\":\"block\",\"resolver\":\"rich-block-by-id-or-index\",\"description\":\"A top-level document.nodes[] block with stable id preferred over index.\"},{\"kind\":\"text\",\"resolver\":\"rich-text-node-by-id-or-path\",\"description\":\"Text-bearing nodes, including text, badge, metric, progress, card and timeline labels.\"},{\"kind\":\"link\",\"resolver\":\"rich-link-node-by-id-or-path\",\"description\":\"Canonical link node with label, href, target and rel.\"},{\"kind\":\"media\",\"resolver\":\"rich-media-node-by-id-or-path\",\"description\":\"Image, avatar image and mediaBlock child nodes.\"},{\"kind\":\"timeline\",\"resolver\":\"rich-timeline-node-by-id-or-path\",\"description\":\"Timeline nodes with visual placement, connector, marker and semantic appearance settings.\"},{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-item-by-block-id-and-item-id\",\"description\":\"Timeline items nested inside timeline nodes; stable item id is preferred over index.\"},{\"kind\":\"metadata\",\"resolver\":\"rich-block-common-metadata\",\"description\":\"Common node metadata such as testId, className, visibleWhen and safe style.\"},{\"kind\":\"preset\",\"resolver\":\"rich-block-preset-ref\",\"description\":\"Preset nodes resolved through PRAXIS_RICH_BLOCK_PRESETS or hostCapabilities.resolvePreset.\"},{\"kind\":\"sanitizationPolicy\",\"resolver\":\"rich-content-validation-policy\",\"description\":\"Document validation policy enforced by validateRichContentDocument.\"},{\"kind\":\"display\",\"resolver\":\"rich-content-layout-and-root-class\",\"description\":\"Layout and rootClassName runtime inputs.\"}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "5c8309a331696ec1055addad23abb37c472318af5e1dbd4390531ff8bf0c6eac",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 21,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"document.set\",\"title\":\"Set rich content document\",\"scope\":\"global\",\"targetKind\":\"document\",\"target\":{\"kind\":\"document\",\"resolver\":\"rich-content-document-root\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"kind\",\"version\",\"nodes\"],\"properties\":{\"kind\":{\"const\":\"praxis.rich-content\"},\"version\":{\"const\":\"1.0.0\"},\"context\":{\"type\":\"object\"},\"nodes\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"document\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"document-shape-canonical\",\"document-version-supported\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"block.add\",\"title\":\"Add rich content block\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"document-nodes-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-block-add\",\"handlerContract\":{\"reads\":[\"document.nodes[]\"],\"writes\":[\"document.nodes[]\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"type\"],\"properties\":{\"type\":{\"enum\":[\"text\",\"icon\",\"image\",\"link\",\"badge\",\"avatar\",\"metric\",\"progress\",\"actionButton\",\"compose\",\"card\",\"callout\",\"ctaGroup\",\"keyValueList\",\"emptyState\",\"propertySheet\",\"statGroup\",\"tabs\",\"recordSummary\",\"lookupResult\",\"lookupCard\",\"relatedRecord\",\"actionCard\",\"decisionPackage\",\"collapsibleCard\",\"disclosure\",\"accordion\",\"formLauncher\",\"mediaBlock\",\"timeline\",\"preset\"]},\"node\":{\"type\":\"object\"},\"afterBlockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"}}},\"failureModes\":[\"unsupported-node-type\",\"duplicate-node-id\",\"invalid-node-shape\",\"unsafe-url\",\"unsafe-style\"],\"description\":\"Creates a supported RichBlockNode, validates it with validateRichContentDocument semantics and inserts it by stable neighbor id when provided.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"node-types-supported\",\"block-id-unique\",\"document-shape-canonical\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "9a2c3729529b0b2748a7122f93fa7159df2e840cef9bad660bdb0e2d3375c7c7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 22,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"block.update\",\"title\":\"Update rich content block fields\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"testId\":{\"type\":\"string\"},\"className\":{\"type\":\"string\"},\"style\":{\"type\":\"object\"},\"visibleWhen\":{\"type\":\"object\"},\"disabledWhen\":{\"type\":\"object\"},\"loadWhen\":{\"type\":\"object\"},\"classWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"styleWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"requiresCapabilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"capabilityMode\":{\"enum\":[\"all\",\"any\"]},\"text\":{\"type\":\"string\"},\"textExpr\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_self\",\"_blank\"]},\"rel\":{\"type\":\"string\"},\"src\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"},\"relationLabel\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"summaryExpr\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ctaLabel\":{\"type\":\"string\"},\"caption\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"},\"errorText\":{\"type\":\"string\"},\"status\":{\"enum\":[\"idle\",\"resolved\",\"empty\",\"error\",\"draft\",\"simulated\",\"approved\",\"published\",\"superseded\",\"reverted\"]},\"statusExpr\":{\"type\":\"string\"},\"owner\":{\"type\":\"string\"},\"ownerExpr\":{\"type\":\"string\"},\"policySource\":{\"type\":\"string\"},\"policySourceExpr\":{\"type\":\"string\"},\"version\":{\"type\":\"string\"},\"versionExpr\":{\"type\":\"string\"},\"confidence\":{\"type\":\"number\"},\"confidenceExpr\":{\"type\":\"string\"},\"risk\":{\"enum\":[\"low\",\"medium\",\"high\",\"critical\"]},\"riskExpr\":{\"type\":\"string\"},\"lastReviewed\":{\"type\":\"string\"},\"lastReviewedExpr\":{\"type\":\"string\"},\"supersedes\":{\"type\":\"string\"},\"supersedesExpr\":{\"type\":\"string\"},\"evidence\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"appearance\":{\"enum\":[\"plain\",\"card\",\"underline\",\"pills\"]},\"variant\":{\"enum\":[\"basic\",\"raised\",\"stroked\",\"flat\",\"plain\",\"outlined\",\"elevated\",\"filled\",\"transparent\"]},\"tone\":{\"enum\":[\"neutral\",\"info\",\"success\",\"warning\",\"danger\"]},\"size\":{\"enum\":[\"sm\",\"md\",\"lg\"]},\"density\":{},\"orientation\":{},\"loading\":{\"type\":\"boolean\"},\"loadingExpr\":{\"type\":\"string\"},\"active\":{\"type\":\"boolean\"},\"activeExpr\":{\"type\":\"string\"},\"defaultTabId\":{\"type\":\"string\"},\"order\":{\"enum\":[\"normal\",\"reverse\"]},\"position\":{\"enum\":[\"left\",\"right\",\"alternate\",\"alternate-reverse\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerVariant\":{\"enum\":[\"dot\",\"icon\",\"number\"]},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"emphasis\":{\"enum\":[\"subtle\",\"standard\",\"strong\",\"hero\"]},\"textAppearance\":{\"enum\":[\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"icon\":{\"type\":\"string\"},\"formId\":{\"type\":\"string\"},\"columns\":{\"enum\":[1,2]},\"layout\":{\"enum\":[\"stacked\",\"inline\",\"split\",\"grid\"]},\"action\":{\"type\":\"object\"},\"actions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"primaryAction\":{\"type\":\"object\"},\"secondaryActions\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"media\":{\"type\":\"object\",\"properties\":{\"kind\":{\"enum\":[\"image\",\"video\",\"icon\",\"avatar\"]},\"src\":{\"type\":\"string\"},\"srcExpr\":{\"type\":\"string\"},\"alt\":{\"type\":\"string\"},\"altExpr\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"placement\":{\"enum\":[\"top\",\"leading\",\"trailing\",\"background\"]},\"aspectRatio\":{\"type\":\"string\"}}},\"headerAction\":{\"type\":\"object\"},\"interaction\":{\"type\":\"object\",\"properties\":{\"mode\":{\"enum\":[\"none\",\"action\",\"selectable\"]},\"action\":{\"type\":\"object\"},\"selected\":{\"type\":\"boolean\"},\"selectedExpr\":{\"type\":\"string\"}}},\"accessibility\":{\"type\":\"object\",\"properties\":{\"role\":{\"enum\":[\"article\",\"group\",\"button\"]},\"ariaLabel\":{\"type\":\"string\"},\"ariaLabelExpr\":{\"type\":\"string\"},\"ariaLabelledBy\":{\"type\":\"string\"},\"ariaDescribedBy\":{\"type\":\"string\"}}},\"fields\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"items\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"header\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"body\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"footer\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"aside\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"node-types-supported\",\"unsafe-url-rejected\",\"unsafe-style-rejected\",\"expression-path-safe\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].style\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\",\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\",\"document.nodes[].src\",\"document.nodes[].alt\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].subtitle\",\"document.nodes[].subtitleExpr\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].summaryExpr\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].caption\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\",\"document.nodes[].status\",\"document.nodes[].statusExpr\",\"document.nodes[].owner\",\"document.nodes[].ownerExpr\",\"document.nodes[].policySource\",\"document.nodes[].policySourceExpr\",\"document.nodes[].version\",\"document.nodes[].versionExpr\",\"document.nodes[].confidence\",\"document.nodes[].confidenceExpr\",\"document.nodes[].risk\",\"document.nodes[].riskExpr\",\"document.nodes[].lastReviewed\",\"document.nodes[].lastReviewedExpr\",\"document.nodes[].supersedes\",\"document.nodes[].supersedesExpr\",\"document.nodes[].evidence\",\"document.nodes[].appearance\",\"document.nodes[].variant\",\"document.nodes[].tone\",\"document.nodes[].size\",\"document.nodes[].density\",\"document.nodes[].orientation\",\"document.nodes[].loading\",\"document.nodes[].loadingExpr\",\"document.nodes[].active\",\"document.nodes[].activeExpr\",\"document.nodes[].defaultTabId\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].icon\",\"document.nodes[].formId\",\"document.nodes[].columns\",\"document.nodes[].layout\",\"document.nodes[].action\",\"document.nodes[].actions\",\"document.nodes[].primaryAction\",\"document.nodes[].secondaryActions\",\"document.nodes[].media\",\"document.nodes[].headerAction\",\"document.nodes[].interaction\",\"document.nodes[].accessibility\",\"document.nodes[].fields\",\"document.nodes[].items[]\",\"document.nodes[].header\",\"document.nodes[].body\",\"document.nodes[].footer\",\"document.nodes[].aside\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "db1981239f8451e3fa37e658f979137c9197f6fa424c04690a2b898be7f625ff",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 23,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"block.remove\",\"title\":\"Remove rich content block\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-by-id-or-index\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"blockId\":{\"type\":\"string\"},\"replacementBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"remove-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"block-exists\",\"destructive-removal-confirmed\",\"document-not-empty-when-required\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\",\"confirmation-collected\"]},{\"operationId\":\"block.order.set\",\"title\":\"Reorder rich content blocks\",\"scope\":\"templating\",\"targetKind\":\"block\",\"target\":{\"kind\":\"block\",\"resolver\":\"rich-block-by-id-or-index\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"blockId\"],\"properties\":{\"blockId\":{\"type\":\"string\"},\"beforeBlockId\":{\"type\":\"string\"},\"afterBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"reorder-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"block-order-deterministic\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]},{\"operationId\":\"text.update\",\"title\":\"Update rich content text\",\"scope\":\"templating\",\"targetKind\":\"text\",\"target\":{\"kind\":\"text\",\"resolver\":\"rich-text-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"text\":{\"type\":\"string\"},\"textExpr\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"relationLabel\":{\"type\":\"string\"},\"message\":{\"type\":\"string\"},\"summary\":{\"type\":\"string\"},\"description\":{\"type\":\"string\"},\"ctaLabel\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"},\"errorText\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"text-target-supports-field\",\"expression-path-safe\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].text\",\"document.nodes[].textExpr\",\"document.nodes[].label\",\"document.nodes[].labelExpr\",\"document.nodes[].title\",\"document.nodes[].subtitle\",\"document.nodes[].relationLabel\",\"document.nodes[].message\",\"document.nodes[].summary\",\"document.nodes[].description\",\"document.nodes[].ctaLabel\",\"document.nodes[].emptyText\",\"document.nodes[].errorText\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]},{\"operationId\":\"link.add\",\"title\":\"Add link block\",\"scope\":\"templating\",\"targetKind\":\"link\",\"target\":{\"kind\":\"link\",\"resolver\":\"document-nodes-array\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"label\",\"href\"],\"properties\":{\"id\":{\"type\":\"string\"},\"label\":{\"type\":\"string\"},\"labelExpr\":{\"type\":\"string\"},\"href\":{\"type\":\"string\"},\"target\":{\"enum\":[\"_self\",\"_blank\"]},\"rel\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"append-unique\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"link-url-safe\",\"link-policy-explicit\",\"node-types-supported\",\"block-id-unique\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].href\",\"document.nodes[].target\",\"document.nodes[].rel\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]},{\"operationId\":\"link.remove\",\"title\":\"Remove link from rich content\",\"scope\":\"templating\",\"targetKind\":\"link\",\"target\":{\"kind\":\"link\",\"resolver\":\"rich-link-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"linkId\":{\"type\":\"string\"},\"preserveLabelAsText\":{\"type\":\"boolean\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-link-remove\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].type\",\"document.nodes[].label\"],\"writes\":[\"document.nodes[]\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"linkId\":{\"type\":\"string\"},\"preserveLabelAsText\":{\"type\":\"boolean\"}}},\"failureModes\":[\"link-not-found\",\"ambiguous-link-target\",\"replacement-text-invalid\"],\"description\":\"Removes a link node by stable id or path and optionally replaces it with a text node containing the prior link label.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"link-target-exists\",\"destructive-removal-confirmed\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-link-exists\",\"confirmation-collected\"]},{\"operationId\":\"preset.apply\",\"title\":\"Apply rich block preset\",\"scope\":\"templating\",\"targetKind\":\"preset\",\"target\":{\"kind\":\"preset\",\"resolver\":\"rich-block-preset-ref\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"required\":[\"ref\"],\"properties\":{\"ref\":{\"type\":\"object\"},\"inputs\":{\"type\":\"object\"},\"replaceBlockId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-preset-apply\",\"handlerContract\":{\"reads\":[\"PRAXIS_RICH_BLOCK_PRESETS\",\"hostCapabilities.resolvePreset\",\"document.nodes[]\"],\"writes\":[\"document.nodes[]\"],\"identityKeys\":[\"ref.kind\",\"ref.namespace\",\"ref.presetId\",\"ref.version\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"ref\"],\"properties\":{\"ref\":{\"type\":\"object\"},\"inputs\":{\"type\":\"object\"},\"replaceBlockId\":{\"type\":\"string\"}}},\"failureModes\":[\"preset-not-found\",\"preset-kind-invalid\",\"preset-document-invalid\",\"preset-cycle-detected\"],\"description\":\"Resolves a rich-block preset through the governed registry/host mediation and inserts or replaces a preset reference without serializing functions.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"preset-ref-valid\",\"preset-exists-or-host-mediated\",\"host-capabilities-serializable\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[]\",\"document.nodes[].ref\",\"document.nodes[].inputs\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "de3079807ac8c32a24eb0c0a25ac23b7b04b84fa0810ec1ec3c5676070546e80",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 24,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"metadata.update\",\"title\":\"Update rich block metadata\",\"scope\":\"templating\",\"targetKind\":\"metadata\",\"target\":{\"kind\":\"metadata\",\"resolver\":\"rich-block-by-id-or-index\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"blockId\":{\"type\":\"string\"},\"testId\":{\"type\":\"string\"},\"className\":{\"type\":\"string\"},\"visibleWhen\":{\"type\":\"object\"},\"disabledWhen\":{\"type\":\"object\"},\"loadWhen\":{\"type\":\"object\"},\"classWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"styleWhen\":{\"type\":\"array\",\"items\":{\"type\":\"object\"}},\"style\":{\"type\":\"object\"},\"requiresCapabilities\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"capabilityMode\":{\"enum\":[\"all\",\"any\"]}}},\"effects\":[{\"kind\":\"merge-by-key\",\"path\":\"document.nodes[]\",\"key\":\"id\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"class-name-safe\",\"visible-when-json-logic\",\"unsafe-style-rejected\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].testId\",\"document.nodes[].className\",\"document.nodes[].visibleWhen\",\"document.nodes[].disabledWhen\",\"document.nodes[].loadWhen\",\"document.nodes[].classWhen\",\"document.nodes[].styleWhen\",\"document.nodes[].style\",\"document.nodes[].requiresCapabilities\",\"document.nodes[].capabilityMode\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]},{\"operationId\":\"mediaBlock.update\",\"title\":\"Update media block fields\",\"scope\":\"templating\",\"targetKind\":\"media\",\"target\":{\"kind\":\"media\",\"resolver\":\"rich-media-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"blockId\":{\"type\":\"string\"},\"avatarName\":{\"type\":\"string\"},\"avatarImageSrc\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-media-block-update\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].type\"],\"writes\":[\"document.nodes[].avatar\",\"document.nodes[].title\",\"document.nodes[].subtitle\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"blockId\":{\"type\":\"string\"},\"avatarName\":{\"type\":\"string\"},\"avatarImageSrc\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"}}},\"failureModes\":[\"media-block-not-found\",\"target-not-media-block\",\"unsafe-url\",\"invalid-text-node\"],\"description\":\"Updates the structured mediaBlock avatar/title/subtitle fields while preserving meta and trailing content for advanced JSON authoring.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"media-block-target-valid\",\"unsafe-url-rejected\",\"expression-path-safe\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].avatar\",\"document.nodes[].title\",\"document.nodes[].subtitle\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]},{\"operationId\":\"timeline.node.update\",\"title\":\"Update timeline display settings\",\"scope\":\"templating\",\"targetKind\":\"timeline\",\"target\":{\"kind\":\"timeline\",\"resolver\":\"rich-timeline-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"minProperties\":2,\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"orientation\":{\"enum\":[\"vertical\",\"horizontal\"]},\"order\":{\"enum\":[\"normal\",\"reverse\"]},\"position\":{\"enum\":[\"left\",\"right\",\"alternate\",\"alternate-reverse\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerVariant\":{\"enum\":[\"dot\",\"icon\",\"number\"]},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"emphasis\":{\"enum\":[\"subtle\",\"standard\",\"strong\",\"hero\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]},\"textAppearance\":{\"enum\":[\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-timeline-node-update\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].id\",\"document.nodes[].type\"],\"writes\":[\"document.nodes[].orientation\",\"document.nodes[].order\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].emphasis\",\"document.nodes[].density\",\"document.nodes[].textAppearance\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].emptyText\"],\"identityKeys\":[\"document.nodes[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"minProperties\":2,\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"orientation\":{\"enum\":[\"vertical\",\"horizontal\"]},\"order\":{\"enum\":[\"normal\",\"reverse\"]},\"position\":{\"enum\":[\"left\",\"right\",\"alternate\",\"alternate-reverse\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerVariant\":{\"enum\":[\"dot\",\"icon\",\"number\"]},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"emphasis\":{\"enum\":[\"subtle\",\"standard\",\"strong\",\"hero\"]},\"density\":{\"enum\":[\"compact\",\"comfortable\",\"spacious\"]},\"textAppearance\":{\"enum\":[\"default\",\"prominent\",\"eyebrow\",\"label\"]},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"emptyText\":{\"type\":\"string\"}}},\"failureModes\":[\"timeline-not-found\",\"unsupported-timeline-setting\",\"invalid-timeline-setting\"],\"description\":\"Updates timeline node display and semantic appearance settings while preserving timeline items and the canonical RichTimelineNode shape.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"timeline-target-valid\",\"timeline-setting-supported\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].orientation\",\"document.nodes[].order\",\"document.nodes[].position\",\"document.nodes[].connectorVariant\",\"document.nodes[].connectorColor\",\"document.nodes[].markerVariant\",\"document.nodes[].markerColor\",\"document.nodes[].markerStyle\",\"document.nodes[].emphasis\",\"document.nodes[].density\",\"document.nodes[].textAppearance\",\"document.nodes[].title\",\"document.nodes[].titleExpr\",\"document.nodes[].emptyText\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "6dd3b2f3261b937ac5cc52c6150647ff9384350303a01c8daa92978f4eb8187b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 25,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"timeline.item.add\",\"title\":\"Add timeline item\",\"scope\":\"templating\",\"targetKind\":\"timelineItem\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-node-by-id-or-path\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\",\"item\"],\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"item\":{},\"afterItemId\":{\"type\":\"string\"},\"beforeItemId\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-timeline-item-add\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].items[]\"],\"writes\":[\"document.nodes[].items[]\"],\"identityKeys\":[\"document.nodes[].id\",\"document.nodes[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\",\"item\"],\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"item\":{},\"afterItemId\":{\"type\":\"string\"},\"beforeItemId\":{\"type\":\"string\"}}},\"failureModes\":[\"timeline-not-found\",\"duplicate-timeline-item-id\",\"invalid-timeline-item\"],\"description\":\"Adds a timeline item to a timeline node using stable timeline and item ids when present; array index is a resolver fallback only.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"timeline-target-valid\",\"timeline-item-valid\",\"timeline-item-id-unique\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].items[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\"]},{\"operationId\":\"timeline.item.update\",\"title\":\"Update timeline item\",\"scope\":\"templating\",\"targetKind\":\"timelineItem\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-item-by-block-id-and-item-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"minProperties\":2,\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"itemId\":{\"type\":\"string\"},\"itemIndex\":{\"type\":\"number\"},\"field\":{\"enum\":[\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"meta\",\"metaExpr\",\"opposite\",\"oppositeExpr\",\"icon\",\"iconExpr\",\"badge\",\"badgeExpr\",\"markerColor\",\"markerStyle\",\"connectorColor\",\"connectorVariant\"]},\"value\":{\"type\":\"string\"},\"patch\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"},\"meta\":{\"type\":\"string\"},\"metaExpr\":{\"type\":\"string\"},\"opposite\":{\"type\":\"string\"},\"oppositeExpr\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"iconExpr\":{\"type\":\"string\"},\"badge\":{\"type\":\"string\"},\"badgeExpr\":{\"type\":\"string\"},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]}}}},\"anyOf\":[{\"required\":[\"field\",\"value\"]},{\"required\":[\"patch\"]}],\"allOf\":[{\"if\":{\"properties\":{\"field\":{\"enum\":[\"markerColor\",\"connectorColor\"]}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]}}}},{\"if\":{\"properties\":{\"field\":{\"const\":\"markerStyle\"}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"filled\",\"outlined\"]}}}},{\"if\":{\"properties\":{\"field\":{\"const\":\"connectorVariant\"}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"solid\",\"dashed\",\"none\"]}}}},{\"if\":{\"properties\":{\"field\":{\"enum\":[\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"meta\",\"metaExpr\",\"opposite\",\"oppositeExpr\",\"icon\",\"iconExpr\",\"badge\",\"badgeExpr\"]}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"type\":\"string\"}}}}]},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-timeline-item-update\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].items[]\"],\"writes\":[\"document.nodes[].items[]\"],\"identityKeys\":[\"document.nodes[].id\",\"document.nodes[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"minProperties\":2,\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"itemId\":{\"type\":\"string\"},\"itemIndex\":{\"type\":\"number\"},\"field\":{\"enum\":[\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"meta\",\"metaExpr\",\"opposite\",\"oppositeExpr\",\"icon\",\"iconExpr\",\"badge\",\"badgeExpr\",\"markerColor\",\"markerStyle\",\"connectorColor\",\"connectorVariant\"]},\"value\":{\"type\":\"string\"},\"patch\":{\"type\":\"object\",\"minProperties\":1,\"properties\":{\"id\":{\"type\":\"string\"},\"title\":{\"type\":\"string\"},\"titleExpr\":{\"type\":\"string\"},\"subtitle\":{\"type\":\"string\"},\"subtitleExpr\":{\"type\":\"string\"},\"meta\":{\"type\":\"string\"},\"metaExpr\":{\"type\":\"string\"},\"opposite\":{\"type\":\"string\"},\"oppositeExpr\":{\"type\":\"string\"},\"icon\":{\"type\":\"string\"},\"iconExpr\":{\"type\":\"string\"},\"badge\":{\"type\":\"string\"},\"badgeExpr\":{\"type\":\"string\"},\"markerColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"markerStyle\":{\"enum\":[\"filled\",\"outlined\"]},\"connectorColor\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]},\"connectorVariant\":{\"enum\":[\"solid\",\"dashed\",\"none\"]}}}},\"anyOf\":[{\"required\":[\"field\",\"value\"]},{\"required\":[\"patch\"]}],\"allOf\":[{\"if\":{\"properties\":{\"field\":{\"enum\":[\"markerColor\",\"connectorColor\"]}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"primary\",\"secondary\",\"tertiary\",\"success\",\"warning\",\"error\",\"info\",\"neutral\"]}}}},{\"if\":{\"properties\":{\"field\":{\"const\":\"markerStyle\"}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"filled\",\"outlined\"]}}}},{\"if\":{\"properties\":{\"field\":{\"const\":\"connectorVariant\"}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"enum\":[\"solid\",\"dashed\",\"none\"]}}}},{\"if\":{\"properties\":{\"field\":{\"enum\":[\"title\",\"titleExpr\",\"subtitle\",\"subtitleExpr\",\"meta\",\"metaExpr\",\"opposite\",\"oppositeExpr\",\"icon\",\"iconExpr\",\"badge\",\"badgeExpr\"]}},\"required\":[\"field\"]},\"then\":{\"properties\":{\"value\":{\"type\":\"string\"}}}}]},\"failureModes\":[\"timeline-not-found\",\"timeline-item-not-found\",\"unsupported-timeline-field\",\"invalid-timeline-item\"],\"description\":\"Updates a timeline item by stable item id when available, preserving the item object shape accepted by RichTimelineItem.\"}}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"block-exists\",\"timeline-target-valid\",\"timeline-item-exists\",\"timeline-item-field-supported\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].items[].title\",\"document.nodes[].items[].titleExpr\",\"document.nodes[].items[].subtitle\",\"document.nodes[].items[].subtitleExpr\",\"document.nodes[].items[].meta\",\"document.nodes[].items[].metaExpr\",\"document.nodes[].items[].opposite\",\"document.nodes[].items[].oppositeExpr\",\"document.nodes[].items[].icon\",\"document.nodes[].items[].iconExpr\",\"document.nodes[].items[].badge\",\"document.nodes[].items[].badgeExpr\",\"document.nodes[].items[].markerColor\",\"document.nodes[].items[].markerStyle\",\"document.nodes[].items[].connectorColor\",\"document.nodes[].items[].connectorVariant\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-block-exists\",\"target-timeline-item-exists\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "1fa9b504dfa4d93e00e232e174f15f8a620d813e07fb65a57356a420f22a0fa9",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 26,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"operations\",\"operations\":[{\"operationId\":\"timeline.item.remove\",\"title\":\"Remove timeline item\",\"scope\":\"templating\",\"targetKind\":\"timelineItem\",\"target\":{\"kind\":\"timelineItem\",\"resolver\":\"rich-timeline-item-by-block-id-and-item-id\",\"ambiguityPolicy\":\"fail\",\"required\":true},\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"itemId\":{\"type\":\"string\"},\"itemIndex\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-timeline-item-remove\",\"handlerContract\":{\"reads\":[\"document.nodes[]\",\"document.nodes[].items[]\"],\"writes\":[\"document.nodes[].items[]\"],\"identityKeys\":[\"document.nodes[].id\",\"document.nodes[].items[].id\"],\"inputSchema\":{\"type\":\"object\",\"required\":[\"timelineBlockId\"],\"properties\":{\"timelineBlockId\":{\"type\":\"string\"},\"itemId\":{\"type\":\"string\"},\"itemIndex\":{\"type\":\"number\"}}},\"failureModes\":[\"timeline-not-found\",\"timeline-item-not-found\",\"ambiguous-timeline-item\"],\"description\":\"Removes a timeline item from a timeline node after explicit confirmation; stable item id is preferred over index.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"timeline-target-valid\",\"timeline-item-exists\",\"destructive-removal-confirmed\",\"document-shape-canonical\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document.nodes[].items[]\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"target-timeline-item-exists\",\"confirmation-collected\"]},{\"operationId\":\"sanitizationPolicy.set\",\"title\":\"Set rich content sanitization policy\",\"scope\":\"global\",\"targetKind\":\"sanitizationPolicy\",\"target\":{\"kind\":\"sanitizationPolicy\",\"resolver\":\"rich-content-validation-policy\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"allowHtml\":{\"const\":false},\"allowedUrlProtocols\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"allowImageDataUrls\":{\"type\":\"boolean\"},\"maxNodeDepth\":{\"type\":\"number\"},\"maxNodeCount\":{\"type\":\"number\"}}},\"effects\":[{\"kind\":\"compile-domain-patch\",\"handler\":\"rich-content-sanitization-policy\",\"handlerContract\":{\"reads\":[\"document\",\"validateRichContentDocument\"],\"writes\":[\"document\"],\"identityKeys\":[\"document.kind\",\"document.version\"],\"inputSchema\":{\"type\":\"object\",\"properties\":{\"allowHtml\":{\"const\":false},\"allowedUrlProtocols\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}},\"allowImageDataUrls\":{\"type\":\"boolean\"},\"maxNodeDepth\":{\"type\":\"number\"},\"maxNodeCount\":{\"type\":\"number\"}}},\"failureModes\":[\"html-not-supported\",\"unsafe-protocol\",\"max-depth-too-high\",\"max-node-count-too-high\"],\"description\":\"Validates requested policy against the fixed validator guardrails; rich-content authoring remains structured JSON and does not allow arbitrary HTML.\"}}],\"destructive\":true,\"requiresConfirmation\":true,\"validators\":[\"sanitization-policy-explicit\",\"unsafe-html-rejected\",\"unsafe-url-rejected\",\"security-change-confirmed\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"document\"],\"submissionImpact\":\"config-only\",\"preconditions\":[\"config-initialized\",\"confirmation-collected\"]},{\"operationId\":\"display.mode.set\",\"title\":\"Set rich content display mode\",\"scope\":\"global\",\"targetKind\":\"display\",\"target\":{\"kind\":\"display\",\"resolver\":\"rich-content-layout-and-root-class\",\"ambiguityPolicy\":\"fail\",\"required\":false},\"inputSchema\":{\"type\":\"object\",\"properties\":{\"layout\":{\"enum\":[\"block\",\"inline\"]},\"rootClassName\":{\"type\":\"string\"}}},\"effects\":[{\"kind\":\"set-value\",\"path\":\"layout\"},{\"kind\":\"set-value\",\"path\":\"rootClassName\"}],\"destructive\":false,\"requiresConfirmation\":false,\"validators\":[\"layout-valid\",\"root-class-safe\",\"editor-runtime-round-trip\"],\"affectedPaths\":[\"layout\",\"rootClassName\"],\"submissionImpact\":\"visual-only\",\"preconditions\":[\"config-initialized\"]}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "d0f36683ce7f9308771abfd01770489d88c9b53bb2d5ed21750a73d9103c471d",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 27,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"validators\",\"validators\":[{\"validatorId\":\"document-shape-canonical\",\"level\":\"error\",\"code\":\"PRC001\",\"description\":\"Documents must satisfy RichContentDocument with kind praxis.rich-content, version 1.0.0 and a nodes array.\"},{\"validatorId\":\"document-version-supported\",\"level\":\"error\",\"code\":\"PRC002\",\"description\":\"Only document version 1.0.0 is supported.\"},{\"validatorId\":\"node-types-supported\",\"level\":\"error\",\"code\":\"PRC003\",\"description\":\"Nodes must use supported rich-content node types, including link as a structured node rather than arbitrary HTML.\"},{\"validatorId\":\"block-id-unique\",\"level\":\"warning\",\"code\":\"PRC004\",\"description\":\"Stable block ids should be unique when present; operations should prefer ids over array indexes.\"},{\"validatorId\":\"block-exists\",\"level\":\"error\",\"code\":\"PRC005\",\"description\":\"Target block must exist before patching, reordering or removing it.\"},{\"validatorId\":\"block-order-deterministic\",\"level\":\"error\",\"code\":\"PRC006\",\"description\":\"Block ordering must use stable ids or explicit before/after placement and not rely on transient generated indexes.\"},{\"validatorId\":\"destructive-removal-confirmed\",\"level\":\"error\",\"code\":\"PRC007\",\"description\":\"Block and link removal are destructive and require confirmation.\"},{\"validatorId\":\"document-not-empty-when-required\",\"level\":\"warning\",\"code\":\"PRC008\",\"description\":\"Removal should not leave an empty document unless the user explicitly requested an empty rich content document.\"},{\"validatorId\":\"text-target-supports-field\",\"level\":\"error\",\"code\":\"PRC009\",\"description\":\"Text updates may only target fields supported by the selected node type.\"},{\"validatorId\":\"expression-path-safe\",\"level\":\"warning\",\"code\":\"PRC010\",\"description\":\"Expression paths must remain simple context paths or Json Logic expressions, not string DSL code.\"},{\"validatorId\":\"link-url-safe\",\"level\":\"error\",\"code\":\"PRC011\",\"description\":\"Link href values must reject javascript:, vbscript:, file: and unsafe data URLs.\"},{\"validatorId\":\"link-policy-explicit\",\"level\":\"error\",\"code\":\"PRC012\",\"description\":\"Links must declare safe target/rel behavior; _blank links default to noopener noreferrer.\"},{\"validatorId\":\"link-target-exists\",\"level\":\"error\",\"code\":\"PRC013\",\"description\":\"Link removal must resolve an existing link node by stable id or path.\"},{\"validatorId\":\"unsafe-url-rejected\",\"level\":\"error\",\"code\":\"PRC014\",\"description\":\"Image, avatar and link URL fields must reject unsafe protocols and null bytes.\"},{\"validatorId\":\"unsafe-style-rejected\",\"level\":\"error\",\"code\":\"PRC015\",\"description\":\"Inline style values must reject script, import, binding and data URL expressions.\"},{\"validatorId\":\"unsafe-html-rejected\",\"level\":\"error\",\"code\":\"PRC016\",\"description\":\"Rich-content authoring must remain structured document JSON and must not accept arbitrary HTML/script patches.\"},{\"validatorId\":\"sanitization-policy-explicit\",\"level\":\"error\",\"code\":\"PRC017\",\"description\":\"Security policy requests must keep HTML disabled and URL/style guardrails explicit.\"},{\"validatorId\":\"security-change-confirmed\",\"level\":\"error\",\"code\":\"PRC018\",\"description\":\"Sanitization policy changes require explicit confirmation.\"},{\"validatorId\":\"preset-ref-valid\",\"level\":\"error\",\"code\":\"PRC019\",\"description\":\"Preset refs must use kind rich-block plus namespace, presetId and optional version.\"},{\"validatorId\":\"preset-exists-or-host-mediated\",\"level\":\"error\",\"code\":\"PRC020\",\"description\":\"Preset application must resolve through PRAXIS_RICH_BLOCK_PRESETS or a host-mediated resolver.\"},{\"validatorId\":\"host-capabilities-serializable\",\"level\":\"error\",\"code\":\"PRC021\",\"description\":\"Public contracts must not serialize host capability functions; only refs and inputs are persisted.\"},{\"validatorId\":\"layout-valid\",\"level\":\"error\",\"code\":\"PRC022\",\"description\":\"Layout must be block or inline.\"},{\"validatorId\":\"root-class-safe\",\"level\":\"warning\",\"code\":\"PRC023\",\"description\":\"rootClassName must contain safe CSS class tokens.\"},{\"validatorId\":\"editor-runtime-round-trip\",\"level\":\"error\",\"code\":\"PRC024\",\"description\":\"Config editor, Settings Panel payload and runtime renderer must preserve document structure, layout and rootClassName.\"},{\"validatorId\":\"class-name-safe\",\"level\":\"error\",\"code\":\"PRC025\",\"description\":\"Node className values must contain safe CSS class tokens.\"},{\"validatorId\":\"visible-when-json-logic\",\"level\":\"error\",\"code\":\"PRC026\",\"description\":\"visibleWhen must be a Json Logic expression object and not a string DSL.\"},{\"validatorId\":\"media-block-target-valid\",\"level\":\"error\",\"code\":\"PRC027\",\"description\":\"Media operations must target a mediaBlock node and preserve structured avatar/text child nodes.\"},{\"validatorId\":\"timeline-target-valid\",\"level\":\"error\",\"code\":\"PRC028\",\"description\":\"Timeline item operations must target a timeline node with an items array.\"},{\"validatorId\":\"timeline-item-valid\",\"level\":\"error\",\"code\":\"PRC029\",\"description\":\"Timeline items must be objects matching RichTimelineItem fields.\"},{\"validatorId\":\"timeline-item-id-unique\",\"level\":\"warning\",\"code\":\"PRC030\",\"description\":\"Timeline item ids should be unique inside a timeline node when present.\"},{\"validatorId\":\"timeline-item-exists\",\"level\":\"error\",\"code\":\"PRC031\",\"description\":\"Timeline item updates and removals must resolve an existing item by stable id or explicit fallback index.\"},{\"validatorId\":\"timeline-item-field-supported\",\"level\":\"error\",\"code\":\"PRC032\",\"description\":\"Timeline item updates may only target supported RichTimelineItem fields.\"},{\"validatorId\":\"timeline-setting-supported\",\"level\":\"error\",\"code\":\"PRC033\",\"description\":\"Timeline display settings must use supported position, connector, marker, emphasis, density and text appearance enum values.\"}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "45906a044bc04a614e8ad1fcaeadb6542db97922dd0f3497164712920a8e3f16",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 28,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"roundTripRequirements\",\"roundTripRequirements\":[\"The editor must produce the same widget input envelope consumed by page-builder: inputs.document, inputs.layout and inputs.rootClassName.\",\"Rich content must remain structured RichContentDocument JSON; arbitrary HTML and script URL patches are rejected before persistence.\",\"Block identity should prefer document.nodes[].id; array index is a resolver fallback only and cannot be the canonical identity for generated patches.\",\"Link authoring uses canonical link nodes with safe href/target/rel instead of markdown or raw HTML embedded in text nodes.\",\"MediaBlock, timeline node appearance, timeline item, metadata, visibleWhen and safe style authoring use the same structured paths exposed by the visual config editor.\",\"Preset authoring persists only rich-block refs and inputs; host capability functions remain runtime-mediated and are not serialized.\"]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "11ad0440a4142b2ff043dfc31987a1841414a0dc75769b89980233fe5f66f46b",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 29,
          "chunkKind": "authoring_manifest",
          "content": "{\"schemaVersion\":\"1.0.0\",\"manifestVersion\":\"1.0.0\",\"componentId\":\"praxis-rich-content\",\"ownerPackage\":\"@praxisui/rich-content\",\"configSchemaId\":\"RichContentDocument\",\"chunkSection\":\"examples\",\"examples\":[{\"id\":\"set-empty-document\",\"request\":\"Start with an empty rich content document.\",\"operationId\":\"document.set\",\"params\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[]},\"isPositive\":true},{\"id\":\"add-text-block\",\"request\":\"Add a text block saying Welcome.\",\"operationId\":\"block.add\",\"params\":{\"type\":\"text\",\"node\":{\"id\":\"welcome\",\"type\":\"text\",\"text\":\"Welcome\"}},\"isPositive\":true},{\"id\":\"remove-obsolete-block\",\"request\":\"Remove the obsolete block.\",\"operationId\":\"block.remove\",\"target\":\"obsolete\",\"params\":{\"blockId\":\"obsolete\"},\"isPositive\":true},{\"id\":\"move-summary-before-details\",\"request\":\"Move summary before details.\",\"operationId\":\"block.order.set\",\"target\":\"summary\",\"params\":{\"blockId\":\"summary\",\"beforeBlockId\":\"details\"},\"isPositive\":true},{\"id\":\"update-title-text\",\"request\":\"Change the hero title to Customer overview.\",\"operationId\":\"text.update\",\"target\":\"hero-title\",\"params\":{\"text\":\"Customer overview\"},\"isPositive\":true},{\"id\":\"add-docs-link\",\"request\":\"Add a link to the documentation.\",\"operationId\":\"link.add\",\"params\":{\"id\":\"docs-link\",\"label\":\"Documentation\",\"href\":\"/docs\",\"target\":\"_self\"},\"isPositive\":true},{\"id\":\"reject-script-link\",\"request\":\"Add a link to javascript:alert(1).\",\"operationId\":\"link.add\",\"params\":{\"label\":\"Bad link\",\"href\":\"javascript:alert(1)\"},\"isPositive\":false},{\"id\":\"remove-docs-link\",\"request\":\"Remove the documentation link but keep its label as text.\",\"operationId\":\"link.remove\",\"target\":\"docs-link\",\"params\":{\"linkId\":\"docs-link\",\"preserveLabelAsText\":true},\"isPositive\":true},{\"id\":\"apply-profile-preset\",\"request\":\"Apply the profile summary rich-block preset.\",\"operationId\":\"preset.apply\",\"params\":{\"ref\":{\"kind\":\"rich-block\",\"namespace\":\"praxis.rich-content\",\"presetId\":\"profile-summary\",\"version\":\"1.0.0\"}},\"isPositive\":true},{\"id\":\"show-only-active-row\",\"request\":\"Show the status block only when row.active is true.\",\"operationId\":\"metadata.update\",\"target\":\"status\",\"params\":{\"blockId\":\"status\",\"visibleWhen\":{\"===\":[{\"var\":\"row.active\"},true]}},\"isPositive\":true},{\"id\":\"update-media-title\",\"request\":\"Update the profile media block title and avatar name.\",\"operationId\":\"mediaBlock.update\",\"target\":\"profile-media\",\"params\":{\"blockId\":\"profile-media\",\"avatarName\":\"Ana Silva\",\"title\":\"Profile summary\"},\"isPositive\":true},{\"id\":\"make-timeline-prominent\",\"request\":\"Make the activity timeline read as a prominent hero process.\",\"operationId\":\"timeline.node.update\",\"target\":\"activity\",\"params\":{\"timelineBlockId\":\"activity\",\"emphasis\":\"hero\",\"density\":\"comfortable\",\"textAppearance\":\"prominent\"},\"isPositive\":true},{\"id\":\"add-created-timeline-item\",\"request\":\"Add a Created item to the activity timeline.\",\"operationId\":\"timeline.item.add\",\"target\":\"activity\",\"params\":{\"timelineBlockId\":\"activity\",\"item\":{\"id\":\"created\",\"title\":\"Created\",\"badge\":\"Done\"}},\"isPositive\":true},{\"id\":\"reject-unknown-timeline-field\",\"request\":\"Set a custom script field on a timeline item.\",\"operationId\":\"timeline.item.update\",\"target\":\"activity.created\",\"params\":{\"timelineBlockId\":\"activity\",\"itemId\":\"created\",\"field\":\"script\",\"value\":\"alert(1)\"},\"isPositive\":false},{\"id\":\"reject-html-policy\",\"request\":\"Allow arbitrary HTML in this rich content document.\",\"operationId\":\"sanitizationPolicy.set\",\"params\":{\"allowHtml\":true},\"isPositive\":false},{\"id\":\"compact-inline-layout\",\"request\":\"Render this rich content inline with root class status-line.\",\"operationId\":\"display.mode.set\",\"params\":{\"layout\":\"inline\",\"rootClassName\":\"status-line\"},\"isPositive\":true}]}",
          "sourcePointer": "projects/praxis-rich-content/src/lib/ai/praxis-rich-content-authoring-manifest.ts",
          "contentHash": "ad58ba2be25fa7d0e4eb9f9435229b744d51442712663f54bc6dfedb2b3d18a5",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "corpusVersion": "1.0.0"
        },
        {
          "chunkIndex": 30,
          "chunkKind": "recipe",
          "content": "{\"_comment\":\"Recipe for @praxisui/rich-content. Use RichContentDocument for governed presentation, policy notes, operational summaries, host-mediated action cards, timelines and AI-readable explanations.\",\"templateMeta\":{\"registryKey\":\"praxis-rich-content\",\"variantId\":\"knowledge-surface\",\"description\":\"Cria superfícies editoriais portáveis com RichContentDocument, incluindo blocos governados como actionCard, lookupCard e formLauncher.\",\"useWhen\":\"Create reusable rich presentation surfaces and governed editorial action surfaces that can be embedded in Dynamic Page, Tabs, Dialog, Stepper, List expansion or Page Builder.\",\"examplePrompts\":[\"create a rich content policy card\",\"show operational notes with metrics and timeline\",\"generate a reusable knowledge surface for agents\",\"create a governed action card for a host-mediated workflow\",\"show a related record summary with governed action\"]},\"authoringGuidance\":[\"Use document.kind \\\"praxis.rich-content\\\" and version \\\"1.0.0\\\".\",\"Use document.nodes for block layout surfaces and nodes for inline compact status surfaces.\",\"Use context plus *Expr properties when text, badges, metrics or progress should resolve from host state.\",\"Use actionButton, lookupCard, relatedRecord, formLauncher or actionCard when the host must mediate an action instead of embedding handlers in the document.\",\"Use action.confirmMessage when the workflow requires confirmation; the host must provide hostCapabilities.confirmAction and the runtime fails closed without dispatch if confirmation is rejected or unavailable.\",\"Use card variant/tone/size/orientation/media/interaction when the authoring intent is a semantic surface, not a host-authored wrapper.\",\"Use rich-content for presentation and explanation only; use table, list or dynamic-form for editable business data.\",\"Prefer portable nodes such as card, callout, recordSummary, relatedRecord, actionCard, compose, text, icon, badge, metric, progress, mediaBlock, avatar and timeline.\"],\"inputs\":{\"layout\":\"block\",\"rootClassName\":\"mission-knowledge-surface\",\"context\":{\"mission\":{\"name\":\"Operation Dawn Gate\",\"owner\":\"Ariadne Ops\",\"readiness\":82,\"risk\":\"Elevated\",\"region\":\"South Atlantic\"},\"policy\":{\"owner\":\"Platform Governance\",\"version\":\"2026.04\",\"source\":\"Quickstart reference contract\"}},\"document\":{\"kind\":\"praxis.rich-content\",\"version\":\"1.0.0\",\"nodes\":[{\"type\":\"card\",\"titleExpr\":\"${mission.name}\",\"subtitleExpr\":\"${policy.source}\",\"variant\":\"elevated\",\"tone\":\"info\",\"size\":\"lg\",\"orientation\":\"horizontal\",\"media\":{\"kind\":\"icon\",\"icon\":\"psychology\",\"label\":\"AI-authored semantic decision surface\",\"placement\":\"leading\"},\"accessibility\":{\"role\":\"article\",\"ariaLabel\":\"Mission knowledge surface\"},\"content\":[{\"type\":\"compose\",\"wrap\":true,\"gap\":\"sm\",\"items\":[{\"type\":\"badge\",\"labelExpr\":\"${mission.region}\"},{\"type\":\"badge\",\"labelExpr\":\"${mission.risk}\"},{\"type\":\"badge\",\"labelExpr\":\"${policy.version}\"}]},{\"type\":\"text\",\"text\":\"Use rich content when the page needs governed explanation, operational notes or agent-readable context without inventing a one-off Angular template.\"},{\"type\":\"compose\",\"wrap\":true,\"gap\":\"lg\",\"items\":[{\"type\":\"metric\",\"label\":\"Readiness\",\"valueExpr\":\"${mission.readiness}\",\"captionExpr\":\"${mission.owner}\"},{\"type\":\"progress\",\"label\":\"Execution confidence\",\"valueExpr\":\"${mission.readiness}\",\"max\":100}]}]},{\"type\":\"mediaBlock\",\"avatar\":{\"type\":\"avatar\",\"initials\":\"AI\",\"name\":\"AI recipe\"},\"title\":{\"type\":\"text\",\"text\":\"Agent authoring note\"},\"subtitle\":{\"type\":\"text\",\"text\":\"Rich content is presentation metadata. Use it for policy, summaries, timelines and explanations; use forms and tables for editable business data.\"},\"meta\":{\"type\":\"badge\",\"label\":\"copyable JSON\"},\"trailing\":[{\"type\":\"icon\",\"icon\":\"psychology\",\"ariaLabel\":\"AI ready\"}]},{\"type\":\"relatedRecord\",\"title\":\"Related approval owner\",\"subtitleExpr\":\"${policy.owner}\",\"relationLabel\":\"Policy owner\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Open related owner\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"fields\":[{\"label\":\"Source\",\"valueExpr\":\"${policy.source}\",\"hint\":\"Resolved from the same portable document context.\"}],\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate owner review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"actionCard\",\"title\":\"Open governed briefing\",\"subtitleExpr\":\"${policy.owner}\",\"message\":\"Use actionCard when the host must run a governed workflow from a portable editorial document.\",\"metaExpr\":\"${policy.version}\",\"ctaLabel\":\"Inspect briefing\",\"variant\":\"raised\",\"color\":\"primary\",\"action\":{\"actionId\":\"briefing.inspect\",\"confirmMessage\":\"Confirm opening the governed briefing package?\"},\"secondaryActions\":[{\"type\":\"actionButton\",\"label\":\"Escalate review\",\"variant\":\"stroked\",\"action\":{\"actionId\":\"briefing.escalate\"}}]},{\"type\":\"timeline\",\"title\":\"Knowledge lifecycle\",\"orientation\":\"horizontal\",\"order\":\"reverse\",\"position\":\"alternate\",\"connectorVariant\":\"dashed\",\"markerVariant\":\"number\",\"items\":[{\"icon\":\"schema\",\"title\":\"Contract discovered\",\"subtitle\":\"Read source metadata and decide whether the surface is data, action or explanation.\",\"meta\":\"schemas.filtered + recipes\",\"opposite\":\"1. Discover\",\"badge\":\"source\"},{\"icon\":\"article\",\"title\":\"Briefing authored\",\"subtitle\":\"Render cards, metrics, progress and guidance with one RichContentDocument.\",\"meta\":\"praxis-rich-content\",\"opposite\":\"2. Author\",\"badge\":\"runtime\"},{\"icon\":\"open_in_new\",\"title\":\"Surface reused\",\"subtitle\":\"Embed the same document in a tab, dialog, stepper, list expansion or dashboard cell.\",\"meta\":\"Dynamic Page composition\",\"opposite\":\"3. Reuse\",\"badge\":\"portable\"}]}]}},\"inlineExample\":{\"layout\":\"inline\",\"context\":{\"status\":{\"label\":\"Governed knowledge surface\",\"phase\":\"Reusable\"}},\"nodes\":[{\"type\":\"icon\",\"icon\":\"verified\",\"ariaLabel\":\"Verified\"},{\"type\":\"text\",\"textExpr\":\"${status.label}\"},{\"type\":\"badge\",\"labelExpr\":\"${status.phase}\"}]}}",
          "sourcePointer": "examples/ai-recipes/praxis-rich-content.json",
          "contentHash": "d281ad36c6e3352b062e5eb7b98a037f6c75fb7d2c063fc5f71e893ed77e1dc7",
          "sourceKind": "component_definition",
          "sourceId": "praxis-rich-content",
          "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."
}
