[{"data":1,"prerenderedAt":2641},["ShallowReactive",2],{"navigation":3,"/chat/option-b-embed-component":879,"/chat/option-b-embed-component-surround":2636},[4,22,45,115,156,187,214,235,264,295,318,361,389,418,436,470,491,534,548,571,632,670,693,757,850],{"title":5,"path":6,"stem":7,"children":8,"icon":11},"Introduction","/introduction","01.introduction/1.index",[9,12,17],{"title":10,"path":6,"stem":7,"icon":11},"What is Orkestia?","i-lucide-sparkles",{"title":13,"path":14,"stem":15,"icon":16},"Core Philosophy","/introduction/core-philosophy","01.introduction/2.core-philosophy","i-lucide-shield-check",{"title":18,"path":19,"stem":20,"icon":21},"Key Benefits","/introduction/key-benefits","01.introduction/3.key-benefits","i-lucide-trophy",{"title":23,"path":24,"stem":25,"children":26,"icon":29},"Getting Started","/getting-started","02.getting-started/1.index",[27,30,35,40],{"title":28,"path":24,"stem":25,"icon":29},"Quick Start","i-lucide-rocket",{"title":31,"path":32,"stem":33,"icon":34},"Architecture Overview","/getting-started/architecture-overview","02.getting-started/2.architecture-overview","i-lucide-layout-dashboard",{"title":36,"path":37,"stem":38,"icon":39},"Concepts at a Glance","/getting-started/concepts","02.getting-started/3.concepts","i-lucide-list",{"title":41,"path":42,"stem":43,"icon":44},"Connect an AI Assistant","/getting-started/connect-an-ai-assistant","02.getting-started/4.connect-an-ai-assistant","i-lucide-bot",{"title":46,"path":47,"stem":48,"children":49,"icon":51},"Core Concepts","/concepts","03.concepts/01.index",[50,52,57,62,67,71,76,81,86,91,96,100,105,110],{"title":46,"path":47,"stem":48,"icon":51},"i-lucide-book-open",{"title":53,"path":54,"stem":55,"icon":56},"Workflows","/concepts/workflows","03.concepts/02.workflows","i-lucide-workflow",{"title":58,"path":59,"stem":60,"icon":61},"DGI — Dialog Generative Interface","/concepts/dgi","03.concepts/03.dgi","i-lucide-brain",{"title":63,"path":64,"stem":65,"icon":66},"Staff & AI Workforce Governance","/concepts/staff-governance","03.concepts/04.staff-governance","i-lucide-users-round",{"title":68,"path":69,"stem":70,"icon":44},"Agents — the execution substrate","/concepts/agents-platform","03.concepts/05.agents-platform",{"title":72,"path":73,"stem":74,"icon":75},"Runners & Execution Environments","/concepts/runners","03.concepts/06.runners","i-lucide-server-cog",{"title":77,"path":78,"stem":79,"icon":80},"Lumen Observability","/concepts/lumen","03.concepts/07.lumen","i-lucide-activity",{"title":82,"path":83,"stem":84,"icon":85},"Identity & Multi-Tenancy","/concepts/identity-multi-tenancy","03.concepts/08.identity-multi-tenancy","i-lucide-users",{"title":87,"path":88,"stem":89,"icon":90},"Billing, Pricing & Seats","/concepts/billing-and-seats","03.concepts/09.billing-and-seats","i-lucide-credit-card",{"title":92,"path":93,"stem":94,"icon":95},"App Data","/concepts/appdata","03.concepts/10.appdata","i-lucide-database",{"title":97,"path":98,"stem":99,"icon":61},"Engram","/concepts/engram","03.concepts/11.engram",{"title":101,"path":102,"stem":103,"icon":104},"DevKit","/concepts/devkit","03.concepts/12.devkit","i-lucide-terminal",{"title":106,"path":107,"stem":108,"icon":109},"App Host","/concepts/app-host","03.concepts/13.app-host","i-lucide-globe",{"title":111,"path":112,"stem":113,"icon":114},"Agent Exchange","/concepts/agent-exchange","03.concepts/14.agent-exchange","i-lucide-landmark",{"title":116,"path":117,"stem":118,"children":119,"icon":121},"Guides","/guides","04.guides/1.index",[120,122,127,132,137,142,147,151],{"title":116,"path":117,"stem":118,"icon":121},"i-lucide-compass",{"title":123,"path":124,"stem":125,"icon":126},"Building with DGI","/guides/building-with-dgi","04.guides/2.building-with-dgi","i-lucide-brain-circuit",{"title":128,"path":129,"stem":130,"icon":131},"Creating & Exposing Virtual Workflows","/guides/virtual-workflows","04.guides/4.virtual-workflows","i-lucide-blocks",{"title":133,"path":134,"stem":135,"icon":136},"Runner Management & Provisioning","/guides/runner-management","04.guides/5.runner-management","i-lucide-server",{"title":138,"path":139,"stem":140,"icon":141},"Security & Compliance","/guides/security-and-compliance","04.guides/7.security-and-compliance","i-lucide-shield",{"title":143,"path":144,"stem":145,"icon":146},"Tickets & Software Delivery","/guides/tickets-and-software-delivery","04.guides/8.tickets-and-software-delivery","i-lucide-ticket",{"title":148,"path":149,"stem":150},"Orkestia for AI-driven cloud infrastructure automation","/guides/cloud-automation-alternatives","04.guides/9.cloud-automation-alternatives",{"title":152,"path":153,"stem":154,"icon":155},"Typed decisions with TypeSafe","/guides/typed-decisions-with-typesafe","04.guides/9.typed-decisions-with-typesafe","i-lucide-git-branch",{"title":157,"path":158,"stem":159,"children":160,"icon":162},"Reference","/reference","05.reference/1.index",[161,163,168,173,177,182],{"title":157,"path":158,"stem":159,"icon":162},"i-lucide-library",{"title":164,"path":165,"stem":166,"icon":167},"Workflow Types & Registry","/reference/workflow-types-registry","05.reference/2.workflow-types-registry","i-lucide-list-tree",{"title":169,"path":170,"stem":171,"icon":172},"MCP Integration","/reference/mcp-integration","05.reference/3.mcp-integration","i-lucide-plug-zap",{"title":174,"path":175,"stem":176,"icon":104},"API & Tooling","/reference/api-tooling","05.reference/4.api-tooling",{"title":178,"path":179,"stem":180,"icon":181},"Integrations Catalog","/reference/integrations-catalog","05.reference/6.integrations-catalog","i-lucide-plug",{"title":183,"path":184,"stem":185,"icon":186},"Platform Services","/reference/platform-services","05.reference/7.platform-services","i-lucide-boxes",{"title":188,"path":189,"stem":190,"children":191,"icon":193},"Advanced Topics","/advanced","06.advanced/1.index",[192,194,199,204,209],{"title":188,"path":189,"stem":190,"icon":193},"i-lucide-flask-conical",{"title":195,"path":196,"stem":197,"icon":198},"Hybrid AI + Deterministic Execution","/advanced/hybrid-execution-model","06.advanced/2.hybrid-execution-model","i-lucide-git-merge",{"title":200,"path":201,"stem":202,"icon":203},"Drift Detection & Self-Healing","/advanced/drift-detection-self-healing","06.advanced/3.drift-detection-self-healing","i-lucide-heart-pulse",{"title":205,"path":206,"stem":207,"icon":208},"Governance & Approvals","/advanced/governance-and-approvals","06.advanced/4.governance-and-approvals","i-lucide-scale",{"title":210,"path":211,"stem":212,"icon":213},"Cost & Performance Optimization","/advanced/cost-and-performance","06.advanced/5.cost-and-performance","i-lucide-zap",{"title":215,"path":216,"stem":217,"children":218,"icon":220},"Operations","/operations","07.operations/1.index",[219,221,225,230],{"title":215,"path":216,"stem":217,"icon":220},"i-lucide-settings-2",{"title":222,"path":223,"stem":224,"icon":186},"Deployment Models","/operations/deployment-models","07.operations/2.deployment-models",{"title":226,"path":227,"stem":228,"icon":229},"Monitoring & Debugging","/operations/monitoring-and-debugging","07.operations/3.monitoring-and-debugging","i-lucide-bug",{"title":231,"path":232,"stem":233,"icon":234},"Best Practices","/operations/best-practices","07.operations/4.best-practices","i-lucide-check-check",{"title":236,"path":237,"stem":238,"children":239,"icon":241},"AWS Connections","/aws-connections","08.aws-connections/1.index",[240,242,245,250,255,260],{"title":236,"path":237,"stem":238,"icon":241},"i-simple-icons-amazonaws",{"title":23,"path":243,"stem":244,"icon":29},"/aws-connections/getting-started","08.aws-connections/2.getting-started",{"title":246,"path":247,"stem":248,"icon":249},"Setup Methods","/aws-connections/setup-methods","08.aws-connections/3.setup-methods","i-lucide-wrench",{"title":251,"path":252,"stem":253,"icon":254},"Managing Connections","/aws-connections/managing-connections","08.aws-connections/4.managing-connections","i-lucide-settings",{"title":256,"path":257,"stem":258,"icon":259},"Security Best Practices","/aws-connections/security-best-practices","08.aws-connections/5.security-best-practices","i-lucide-lock",{"title":261,"path":262,"stem":263,"icon":229},"Troubleshooting","/aws-connections/troubleshooting","08.aws-connections/6.troubleshooting",{"title":265,"path":266,"stem":267,"children":268,"icon":270},"Cloud Connections","/cloud-connections","09.cloud-connections/1.index",[269,271,276,281,286,291],{"title":265,"path":266,"stem":267,"icon":270},"i-lucide-cable",{"title":272,"path":273,"stem":274,"icon":275},"Google Cloud (GCP)","/cloud-connections/gcp","09.cloud-connections/2.gcp","i-simple-icons-googlecloud",{"title":277,"path":278,"stem":279,"icon":280},"Microsoft Azure","/cloud-connections/azure","09.cloud-connections/3.azure","i-simple-icons-microsoftazure",{"title":282,"path":283,"stem":284,"icon":285},"Magalu Cloud","/cloud-connections/magalu","09.cloud-connections/4.magalu","i-lucide-cloud",{"title":287,"path":288,"stem":289,"icon":290},"Kubernetes","/cloud-connections/kubernetes","09.cloud-connections/5.kubernetes","i-simple-icons-kubernetes",{"title":292,"path":293,"stem":294,"icon":208},"TypeSafe","/cloud-connections/typesafe","09.cloud-connections/6.typesafe",{"title":296,"path":297,"stem":298,"children":299,"icon":136},"DNS Providers","/dns-providers","10.dns-providers/1.index",[300,302,305,308,311,315],{"title":301,"path":297,"stem":298,"icon":136},"DNS Provider Connections",{"title":23,"path":303,"stem":304,"icon":29},"/dns-providers/getting-started","10.dns-providers/2.getting-started",{"title":246,"path":306,"stem":307,"icon":249},"/dns-providers/setup-methods","10.dns-providers/3.setup-methods",{"title":251,"path":309,"stem":310,"icon":254},"/dns-providers/managing-connections","10.dns-providers/4.managing-connections",{"title":312,"path":313,"stem":314,"icon":39},"Zones and Records","/dns-providers/zones-and-records","10.dns-providers/5.zones-and-records",{"title":261,"path":316,"stem":317,"icon":229},"/dns-providers/troubleshooting","10.dns-providers/6.troubleshooting",{"title":319,"path":320,"stem":321,"children":322,"icon":29},"Cloud Deploy","/cloud-deploy","11.cloud-deploy/01.index",[323,324,327,332,336,341,345,349,354,358],{"title":319,"path":320,"stem":321,"icon":29},{"title":23,"path":325,"stem":326,"icon":29},"/cloud-deploy/getting-started","11.cloud-deploy/02.getting-started",{"title":328,"path":329,"stem":330,"icon":331},"Creating a Site","/cloud-deploy/creating-a-site","11.cloud-deploy/03.creating-a-site","i-lucide-plus-circle",{"title":333,"path":334,"stem":335,"icon":34},"Site Overview and Deployments","/cloud-deploy/site-overview","11.cloud-deploy/04.site-overview",{"title":337,"path":338,"stem":339,"icon":340},"Deployment Progress and Success","/cloud-deploy/deployment-progress","11.cloud-deploy/05.deployment-progress","i-lucide-loader",{"title":342,"path":343,"stem":344,"icon":254},"Settings","/cloud-deploy/settings","11.cloud-deploy/06.settings",{"title":346,"path":347,"stem":348,"icon":109},"Custom Domains","/cloud-deploy/custom-domains","11.cloud-deploy/07.custom-domains",{"title":350,"path":351,"stem":352,"icon":353},"Resources, Releases, and Danger Zone","/cloud-deploy/resources-releases","11.cloud-deploy/08.resources-releases","i-lucide-package",{"title":355,"path":356,"stem":357,"icon":141},"Admin Dashboard","/cloud-deploy/admin-dashboard","11.cloud-deploy/09.admin-dashboard",{"title":261,"path":359,"stem":360,"icon":229},"/cloud-deploy/troubleshooting","11.cloud-deploy/10.troubleshooting",{"title":362,"path":363,"stem":364,"children":365,"icon":368},"User Onboarding","/user-onboarding","12.user-onboarding/1.index",[366,369,372,377,382,386],{"title":367,"path":363,"stem":364,"icon":368},"User Creation and Onboarding","i-lucide-user-plus",{"title":23,"path":370,"stem":371,"icon":29},"/user-onboarding/getting-started","12.user-onboarding/2.getting-started",{"title":373,"path":374,"stem":375,"icon":376},"Creating Your Organization","/user-onboarding/onboarding","12.user-onboarding/3.onboarding","i-lucide-building-2",{"title":378,"path":379,"stem":380,"icon":381},"Invitations","/user-onboarding/invitations","12.user-onboarding/4.invitations","i-lucide-mail",{"title":383,"path":384,"stem":385,"icon":254},"Managing Your Account","/user-onboarding/managing-account","12.user-onboarding/5.managing-account",{"title":261,"path":387,"stem":388,"icon":229},"/user-onboarding/troubleshooting","12.user-onboarding/6.troubleshooting",{"title":342,"path":390,"stem":391,"children":392,"icon":394},"/settings","13.settings/1.index",[393,395,400,404,409,413],{"title":342,"path":390,"stem":391,"icon":394},"i-lucide-sliders-horizontal",{"title":396,"path":397,"stem":398,"icon":399},"General Settings","/settings/general","13.settings/2.general","i-lucide-user",{"title":401,"path":402,"stem":403,"icon":85},"Members Settings","/settings/members","13.settings/3.members",{"title":405,"path":406,"stem":407,"icon":408},"Notifications Settings","/settings/notifications","13.settings/4.notifications","i-lucide-bell",{"title":410,"path":411,"stem":412,"icon":141},"Security Settings","/settings/security","13.settings/5.security",{"title":414,"path":415,"stem":416,"icon":417},"Signing Keys","/settings/keys","13.settings/6.keys","i-lucide-key-round",{"title":419,"path":420,"stem":421,"children":422,"icon":29},"App Enablement","/app-enablement","14.app-enablement/1.index",[423,424,428,432],{"title":419,"path":420,"stem":421,"icon":29},{"title":425,"path":426,"stem":427,"icon":417},"Sign in with Orkestia","/app-enablement/sign-in-with-orkestia","14.app-enablement/2.sign-in-with-orkestia",{"title":429,"path":430,"stem":431,"icon":95},"End-user data","/app-enablement/end-user-data","14.app-enablement/3.end-user-data",{"title":433,"path":434,"stem":435,"icon":131},"Compositions — use, invoke, share","/app-enablement/compositions","14.app-enablement/4.compositions",{"title":437,"path":438,"stem":439,"children":440,"icon":80},"Lumen","/lumen","15.lumen/1.index",[441,442,447,452,457,461,465],{"title":437,"path":438,"stem":439,"icon":80},{"title":443,"path":444,"stem":445,"icon":446},"Enable Lumen","/lumen/enable","15.lumen/2.enable","i-lucide-power",{"title":448,"path":449,"stem":450,"icon":451},"Send data","/lumen/send-data","15.lumen/3.send-data","i-lucide-upload",{"title":453,"path":454,"stem":455,"icon":456},"Collector","/lumen/collector","15.lumen/4.collector","i-lucide-container",{"title":458,"path":459,"stem":460,"icon":34},"Use Lumen","/lumen/observe","15.lumen/5.observe",{"title":462,"path":463,"stem":464,"icon":44},"Lumen MCP","/lumen/mcp","15.lumen/6.mcp",{"title":466,"path":467,"stem":468,"icon":469},"Query API","/lumen/query-api","15.lumen/7.query-api","i-lucide-search",{"title":471,"path":472,"stem":473,"children":474,"icon":476},"SDKs","/sdks","16.sdks/1.index",[475,477,482,487],{"title":471,"path":472,"stem":473,"icon":476},"i-lucide-code",{"title":478,"path":479,"stem":480,"icon":481},"Workflows SDK — Node / TypeScript","/sdks/workflows-nodejs","16.sdks/2.workflows-nodejs","i-lucide-file-ts",{"title":483,"path":484,"stem":485,"icon":486},"Workflows SDK — Python","/sdks/workflows-python","16.sdks/3.workflows-python","i-simple-icons-python",{"title":488,"path":489,"stem":490,"icon":417},"Auth SDK — Sign in with Orkestia","/sdks/auth","16.sdks/4.auth",{"title":92,"path":492,"stem":493,"children":494,"icon":95},"/appdata","17.appdata/1.index",[495,496,501,506,510,515,520,525,530],{"title":92,"path":492,"stem":493,"icon":95},{"title":497,"path":498,"stem":499,"icon":500},"Declare structures","/appdata/declare","17.appdata/2.declare","i-lucide-table",{"title":502,"path":503,"stem":504,"icon":505},"Records & Data API","/appdata/data-api","17.appdata/3.data-api","i-lucide-rows-3",{"title":507,"path":508,"stem":509,"icon":376},"Ownership & workspaces","/appdata/ownership","17.appdata/4.ownership",{"title":511,"path":512,"stem":513,"icon":514},"Expose App Data to end-users","/appdata/expose","17.appdata/5.expose","i-lucide-app-window",{"title":516,"path":517,"stem":518,"icon":519},"PostgREST HTTP","/appdata/postgrest","17.appdata/6.postgrest","i-lucide-unplug",{"title":521,"path":522,"stem":523,"icon":524},"Ordered append","/appdata/append","17.appdata/7.append","i-lucide-list-ordered",{"title":526,"path":527,"stem":528,"icon":529},"Databases and instances","/appdata/instances","17.appdata/8.instances","i-lucide-hard-drive",{"title":531,"path":532,"stem":533,"icon":104},"Query console and SQL","/appdata/query","17.appdata/9.query",{"title":97,"path":535,"stem":536,"children":537,"icon":61},"/engram","18.engram/1.index",[538,539,543],{"title":97,"path":535,"stem":536,"icon":61},{"title":540,"path":541,"stem":542,"icon":155},"Write & recall","/engram/write-recall","18.engram/2.write-recall",{"title":544,"path":545,"stem":546,"icon":547},"Field & feed","/engram/agent-memory","18.engram/3.agent-memory","i-lucide-radio",{"title":101,"path":549,"stem":550,"children":551,"icon":104},"/devkit","19.devkit/1.index",[552,553,558,562,567],{"title":101,"path":549,"stem":550,"icon":104},{"title":554,"path":555,"stem":556,"icon":557},"Install DevKit","/devkit/install","19.devkit/2.install","i-lucide-download",{"title":559,"path":560,"stem":561,"icon":519},"Hook redirect","/devkit/hooks","19.devkit/3.hooks",{"title":563,"path":564,"stem":565,"icon":566},"Local coding runner","/devkit/local-runner","19.devkit/4.local-runner","i-lucide-cpu",{"title":568,"path":569,"stem":570,"icon":131},"Compositions from DevKit","/devkit/compositions","19.devkit/5.compositions",{"title":572,"path":573,"stem":574,"children":575,"icon":44},"Staff & Agents","/staff-and-agents","20.staff-and-agents/01.index",[576,577,582,586,590,594,598,602,606,611,615,620,625,629],{"title":572,"path":573,"stem":574,"icon":44},{"title":578,"path":579,"stem":580,"icon":581},"Prerequisites","/staff-and-agents/prerequisites","20.staff-and-agents/02.prerequisites","i-lucide-list-checks",{"title":583,"path":584,"stem":585,"icon":368},"Hire an actor","/staff-and-agents/hire-an-actor","20.staff-and-agents/03.hire-an-actor",{"title":587,"path":588,"stem":589,"icon":34},"Console","/staff-and-agents/console","20.staff-and-agents/04.console",{"title":591,"path":592,"stem":593,"icon":11},"Configs, skills, and MCP","/staff-and-agents/configs-skills-mcp","20.staff-and-agents/05.configs-skills-mcp",{"title":595,"path":596,"stem":597,"icon":136},"Agent runner groups","/staff-and-agents/runner-groups","20.staff-and-agents/06.runner-groups",{"title":599,"path":600,"stem":601,"icon":16},"Governance","/staff-and-agents/governance","20.staff-and-agents/07.governance",{"title":603,"path":604,"stem":605,"icon":417},"Identity and tokens","/staff-and-agents/identity","20.staff-and-agents/08.identity",{"title":607,"path":608,"stem":609,"icon":610},"Memory and cost","/staff-and-agents/memory-and-cost","20.staff-and-agents/09.memory-and-cost","i-lucide-wallet",{"title":612,"path":613,"stem":614,"icon":155},"Coding agents","/staff-and-agents/coding-agents","20.staff-and-agents/10.coding-agents",{"title":616,"path":617,"stem":618,"icon":619},"Wire a repository for coding agents","/staff-and-agents/wire-a-repository","20.staff-and-agents/11.wire-a-repository","i-lucide-link",{"title":621,"path":622,"stem":623,"icon":624},"Run a ticket end to end","/staff-and-agents/run-a-ticket","20.staff-and-agents/12.run-a-ticket","i-lucide-play",{"title":626,"path":627,"stem":628,"icon":66},"Build a product team of actors","/staff-and-agents/build-a-product-team","20.staff-and-agents/13.build-a-product-team",{"title":261,"path":630,"stem":631,"icon":249},"/staff-and-agents/troubleshooting","20.staff-and-agents/14.troubleshooting",{"title":106,"path":633,"stem":634,"children":635,"icon":109},"/app-host","21.app-host/1.index",[636,637,641,644,649,653,658,662,666],{"title":106,"path":633,"stem":634,"icon":109},{"title":638,"path":639,"stem":640,"icon":514},"Your app and site","/app-host/your-app","21.app-host/2.your-app",{"title":92,"path":642,"stem":643,"icon":95},"/app-host/app-data","21.app-host/3.app-data",{"title":645,"path":646,"stem":647,"icon":648},"Website and process","/app-host/hosting","21.app-host/4.hosting","i-lucide-cloud-upload",{"title":650,"path":651,"stem":652,"icon":547},"Buzz","/app-host/buzz","21.app-host/5.buzz",{"title":654,"path":655,"stem":656,"icon":657},"Files","/app-host/files","21.app-host/6.files","i-lucide-folder",{"title":659,"path":660,"stem":661,"icon":109},"Your own domain","/app-host/your-domain","21.app-host/7.your-domain",{"title":663,"path":664,"stem":665,"icon":229},"Troubleshooting App Host","/app-host/troubleshooting","21.app-host/8.troubleshooting",{"title":667,"path":668,"stem":669,"icon":417},"Signing keys","/app-host/signing-keys","21.app-host/9.signing-keys",{"title":111,"path":671,"stem":672,"children":673,"icon":114},"/agent-exchange","22.agent-exchange/01.index",[674,675,678,682,686,690],{"title":111,"path":671,"stem":672,"icon":114},{"title":583,"path":676,"stem":677,"icon":368},"/agent-exchange/hire","22.agent-exchange/02.hire",{"title":679,"path":680,"stem":681,"icon":208},"List an actor","/agent-exchange/list","22.agent-exchange/03.list",{"title":683,"path":684,"stem":685,"icon":104},"Invoke & leases","/agent-exchange/invoke","22.agent-exchange/04.invoke",{"title":687,"path":688,"stem":689,"icon":141},"Settlement & trust","/agent-exchange/settlement","22.agent-exchange/05.settlement",{"title":53,"path":691,"stem":692,"icon":56},"/agent-exchange/workflows","22.agent-exchange/06.workflows",{"title":694,"path":695,"stem":696,"children":697,"icon":75},"Runners","/runners","23.runners/1.index",[698,700,704,709,713,717,721,726,730,734,738,741,745,749,753],{"title":699,"path":695,"stem":696,"icon":75},"Runner groups",{"title":701,"path":702,"stem":703,"icon":275},"Cloud Run","/runners/cloud-run","23.runners/10.cloud-run",{"title":705,"path":706,"stem":707,"icon":708},"DigitalOcean App Job","/runners/do-app-job","23.runners/11.do-app-job","i-simple-icons-digitalocean",{"title":710,"path":711,"stem":712,"icon":708},"DigitalOcean Droplet","/runners/do-droplet","23.runners/12.do-droplet",{"title":714,"path":715,"stem":716,"icon":285},"Magalu Cloud VM","/runners/magalu-vm","23.runners/13.magalu-vm",{"title":101,"path":718,"stem":719,"icon":720},"/runners/devkit","23.runners/14.devkit","i-lucide-laptop",{"title":722,"path":723,"stem":724,"icon":725},"Purposes & integrations","/runners/purposes","23.runners/16.purposes","i-lucide-layers",{"title":727,"path":728,"stem":729,"icon":241},"Fargate","/runners/fargate","23.runners/2.fargate",{"title":731,"path":732,"stem":733,"icon":241},"EC2 Auto Scaling","/runners/ec2-auto-scaling","23.runners/3.ec2-auto-scaling",{"title":735,"path":736,"stem":737,"icon":241},"EC2 VM","/runners/ec2-vm","23.runners/4.ec2-vm",{"title":287,"path":739,"stem":740,"icon":290},"/runners/kubernetes","23.runners/5.kubernetes",{"title":742,"path":743,"stem":744,"icon":280},"Azure Container Apps","/runners/azure-container-apps","23.runners/6.azure-container-apps",{"title":746,"path":747,"stem":748,"icon":280},"Azure VMSS","/runners/azure-vmss","23.runners/7.azure-vmss",{"title":750,"path":751,"stem":752,"icon":280},"Azure VM","/runners/azure-vm","23.runners/8.azure-vm",{"title":754,"path":755,"stem":756,"icon":275},"GCE","/runners/gce","23.runners/9.gce",{"title":758,"path":759,"stem":760,"children":761,"icon":763},"Chat","/chat","24.chat/01.index",[762,764,768,773,777,782,787,791,796,800,805,810,814,819,824,828,832,836,840,845],{"title":758,"path":759,"stem":760,"icon":763},"i-lucide-messages-square",{"title":765,"path":766,"stem":767,"icon":446},"Enable and publish","/chat/enable-and-publish","24.chat/02.enable-and-publish",{"title":769,"path":770,"stem":771,"icon":772},"Theme and customization","/chat/theme-and-customization","24.chat/03.theme-and-customization","i-lucide-palette",{"title":774,"path":775,"stem":776,"icon":85},"Members and moderation","/chat/members-and-moderation","24.chat/04.members-and-moderation",{"title":778,"path":779,"stem":780,"icon":781},"Channels","/chat/channels","24.chat/05.channels","i-lucide-hash",{"title":783,"path":784,"stem":785,"icon":786},"Using the chat","/chat/using-the-chat","24.chat/06.using-the-chat","i-lucide-message-circle",{"title":788,"path":789,"stem":790,"icon":44},"Actors in chat","/chat/actors-in-chat","24.chat/07.actors-in-chat",{"title":792,"path":793,"stem":794,"icon":795},"Internal support actor","/chat/internal-support-actor","24.chat/08.internal-support-actor","i-lucide-life-buoy",{"title":797,"path":798,"stem":799,"icon":104},"API and console","/chat/api-and-console","24.chat/09.api-and-console",{"title":801,"path":802,"stem":803,"icon":804},"Limits","/chat/limits","24.chat/10.limits","i-lucide-triangle-alert",{"title":806,"path":807,"stem":808,"icon":809},"Structured chat with DGI","/chat/structured-chat","24.chat/11.structured-chat","i-lucide-layout-list",{"title":811,"path":812,"stem":813,"icon":109},"Option A: hosted chat with DGI","/chat/option-a-hosted-chat","24.chat/12.option-a-hosted-chat",{"title":815,"path":816,"stem":817,"icon":818},"Option B: embed the chat component","/chat/option-b-embed-component","24.chat/13.option-b-embed-component","i-lucide-component",{"title":820,"path":821,"stem":822,"icon":823},"Option C: custom client (wire contract)","/chat/option-c-custom-client","24.chat/14.option-c-custom-client","i-lucide-braces",{"title":825,"path":826,"stem":827,"icon":394},"Responder configuration reference","/chat/responder-reference","24.chat/15.responder-reference",{"title":829,"path":830,"stem":831,"icon":547},"Cards, live updates and proactive posts","/chat/cards-live-and-proactive","24.chat/16.cards-live-and-proactive",{"title":833,"path":834,"stem":835,"icon":16},"Structured chat security model","/chat/structured-chat-security","24.chat/17.structured-chat-security",{"title":837,"path":838,"stem":839,"icon":181},"Option D: any app or API (dgi.chat)","/chat/option-d-chat-api","24.chat/18.option-d-chat-api",{"title":841,"path":842,"stem":843,"icon":844},"Card catalog","/chat/card-catalog","24.chat/19.card-catalog","i-lucide-layout-grid",{"title":846,"path":847,"stem":848,"icon":849},"Living Surfaces","/chat/living-surfaces","24.chat/20.living-surfaces","i-lucide-sprout",{"title":851,"path":852,"stem":853,"children":854,"icon":61},"DGI","/dgi","25.dgi/1.index",[855,857,862,866,870,874],{"title":856,"path":852,"stem":853,"icon":61},"What is DGI",{"title":858,"path":859,"stem":860,"icon":861},"How DGI works","/dgi/how-it-works","25.dgi/2.how-it-works","i-lucide-cog",{"title":863,"path":864,"stem":865,"icon":844},"Interfaces","/dgi/interfaces","25.dgi/3.interfaces",{"title":867,"path":868,"stem":869,"icon":29},"Quickstart","/dgi/quickstart","25.dgi/4.quickstart",{"title":871,"path":872,"stem":873,"icon":16},"Trust and safety","/dgi/trust-and-safety","25.dgi/5.trust-and-safety",{"title":875,"path":876,"stem":877,"icon":878},"FAQ","/dgi/faq","25.dgi/6.faq","i-lucide-circle-help",{"id":880,"title":815,"body":881,"description":2629,"extension":2630,"links":2631,"meta":2632,"navigation":2633,"path":816,"seo":2634,"stem":817,"__hash__":2635},"docs/24.chat/13.option-b-embed-component.md",{"type":882,"value":883,"toc":2617},"minimark",[884,910,919,926,931,934,1018,1021,1050,1054,1060,1281,1294,1298,1459,1462,1468,1881,1928,1935,1942,2008,2439,2464,2468,2478,2516,2520,2529,2533,2613],[885,886,887,888,892,893,896,897,900,901,904,905,909],"p",{},"The hosted chat page is built from one React component, ",[889,890,891],"code",{},"\u003CBuzzChat>",", in the package ",[889,894,895],{},"@ltinteg/app-component-chat"," (version 0.9.0 at the time of writing). Embedding it gives your app the same chat, with every structured card, the card toolbar, row actions and the ",[889,898,899],{},"/"," palette, inside your own screens. Structured chat is part of ",[902,903,851],"a",{"href":59}," and is ",[906,907,908],"strong",{},"Alpha",".",[911,912,913],"note",{},[885,914,915,918],{},[906,916,917],{},"The package is available on request during early access."," Contact us for package access. The rest of this page assumes you have it.",[885,920,921,922,925],{},"The actor side is configured exactly as in ",[902,923,924],{"href":812},"Option A",", steps 1 to 6 (you can skip publishing the hosted page). This page covers the client.",[927,928,930],"h2",{"id":929},"install","Install",[885,932,933],{},"Add the package you received to your app, together with its peers:",[935,936,937,953],"table",{},[938,939,940],"thead",{},[941,942,943,947,950],"tr",{},[944,945,946],"th",{},"Peer",[944,948,949],{},"Version",[944,951,952],{},"Why",[954,955,956,974,990,1005],"tbody",{},[941,957,958,968,971],{},[959,960,961,964,965],"td",{},[889,962,963],{},"react",", ",[889,966,967],{},"react-dom",[959,969,970],{},"19.2 or later",[959,972,973],{},"The component is React 19",[941,975,976,981,984],{},[959,977,978],{},[889,979,980],{},"@ltinteg/workflows-sdk",[959,982,983],{},"any",[959,985,986,987],{},"The client that starts the chat's entry points as the signed-in person. See ",[902,988,989],{"href":479},"Node SDK",[941,991,992,997,999],{},[959,993,994],{},[889,995,996],{},"@orkestia/auth",[959,998,983],{},[959,1000,1001,1002],{},"Signs the person in with your identity app. See ",[902,1003,1004],{"href":489},"Auth SDK",[941,1006,1007,1012,1015],{},[959,1008,1009],{},[889,1010,1011],{},"tailwindcss",[959,1013,1014],{},"4.2 or later, optional",[959,1016,1017],{},"Only if you extend the component's Tailwind preset",[885,1019,1020],{},"Import the stylesheet once:",[1022,1023,1028],"pre",{"className":1024,"code":1025,"language":1026,"meta":1027,"style":1027},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import '@ltinteg/app-component-chat/style.css'\n","ts","",[889,1029,1030],{"__ignoreMap":1027},[1031,1032,1035,1039,1043,1047],"span",{"class":1033,"line":1034},"line",1,[1031,1036,1038],{"class":1037},"s7zQu","import",[1031,1040,1042],{"class":1041},"sMK4o"," '",[1031,1044,1046],{"class":1045},"sfazB","@ltinteg/app-component-chat/style.css",[1031,1048,1049],{"class":1041},"'\n",[927,1051,1053],{"id":1052},"_1-sign-the-person-in","1. Sign the person in",[885,1055,1056,1057,1059],{},"Your end users sign in with your identity app, exactly as in ",[902,1058,425],{"href":426},". The session token is an ordinary end-user bearer token:",[1022,1061,1063],{"className":1024,"code":1062,"language":1026,"meta":1027,"style":1027},"import { createOrkestiaAuth } from '@orkestia/auth'\nimport { LtIntegWorkflowsClient } from '@ltinteg/workflows-sdk'\n\nconst auth = createOrkestiaAuth({ clientKey: CLIENT_KEY })\n\n// signIn() redirects to the hosted login; handleCallback() runs on your redirect page.\nconst session = auth.getSession() ?? await auth.handleCallback()\nif (!session) await auth.signIn()\n\nconst client = new LtIntegWorkflowsClient({ baseUrl: API_BASE_URL, token: session.token })\n",[889,1064,1065,1088,1108,1115,1153,1158,1165,1202,1229,1234],{"__ignoreMap":1027},[1031,1066,1067,1069,1072,1076,1079,1082,1084,1086],{"class":1033,"line":1034},[1031,1068,1038],{"class":1037},[1031,1070,1071],{"class":1041}," {",[1031,1073,1075],{"class":1074},"sTEyZ"," createOrkestiaAuth",[1031,1077,1078],{"class":1041}," }",[1031,1080,1081],{"class":1037}," from",[1031,1083,1042],{"class":1041},[1031,1085,996],{"class":1045},[1031,1087,1049],{"class":1041},[1031,1089,1091,1093,1095,1098,1100,1102,1104,1106],{"class":1033,"line":1090},2,[1031,1092,1038],{"class":1037},[1031,1094,1071],{"class":1041},[1031,1096,1097],{"class":1074}," LtIntegWorkflowsClient",[1031,1099,1078],{"class":1041},[1031,1101,1081],{"class":1037},[1031,1103,1042],{"class":1041},[1031,1105,980],{"class":1045},[1031,1107,1049],{"class":1041},[1031,1109,1111],{"class":1033,"line":1110},3,[1031,1112,1114],{"emptyLinePlaceholder":1113},true,"\n",[1031,1116,1118,1122,1125,1128,1131,1134,1137,1141,1144,1147,1150],{"class":1033,"line":1117},4,[1031,1119,1121],{"class":1120},"spNyl","const",[1031,1123,1124],{"class":1074}," auth ",[1031,1126,1127],{"class":1041},"=",[1031,1129,1075],{"class":1130},"s2Zo4",[1031,1132,1133],{"class":1074},"(",[1031,1135,1136],{"class":1041},"{",[1031,1138,1140],{"class":1139},"swJcz"," clientKey",[1031,1142,1143],{"class":1041},":",[1031,1145,1146],{"class":1074}," CLIENT_KEY ",[1031,1148,1149],{"class":1041},"}",[1031,1151,1152],{"class":1074},")\n",[1031,1154,1156],{"class":1033,"line":1155},5,[1031,1157,1114],{"emptyLinePlaceholder":1113},[1031,1159,1161],{"class":1033,"line":1160},6,[1031,1162,1164],{"class":1163},"sHwdD","// signIn() redirects to the hosted login; handleCallback() runs on your redirect page.\n",[1031,1166,1168,1170,1173,1175,1178,1180,1183,1186,1189,1192,1194,1196,1199],{"class":1033,"line":1167},7,[1031,1169,1121],{"class":1120},[1031,1171,1172],{"class":1074}," session ",[1031,1174,1127],{"class":1041},[1031,1176,1177],{"class":1074}," auth",[1031,1179,909],{"class":1041},[1031,1181,1182],{"class":1130},"getSession",[1031,1184,1185],{"class":1074},"() ",[1031,1187,1188],{"class":1041},"??",[1031,1190,1191],{"class":1037}," await",[1031,1193,1177],{"class":1074},[1031,1195,909],{"class":1041},[1031,1197,1198],{"class":1130},"handleCallback",[1031,1200,1201],{"class":1074},"()\n",[1031,1203,1205,1208,1211,1214,1217,1220,1222,1224,1227],{"class":1033,"line":1204},8,[1031,1206,1207],{"class":1037},"if",[1031,1209,1210],{"class":1074}," (",[1031,1212,1213],{"class":1041},"!",[1031,1215,1216],{"class":1074},"session) ",[1031,1218,1219],{"class":1037},"await",[1031,1221,1177],{"class":1074},[1031,1223,909],{"class":1041},[1031,1225,1226],{"class":1130},"signIn",[1031,1228,1201],{"class":1074},[1031,1230,1232],{"class":1033,"line":1231},9,[1031,1233,1114],{"emptyLinePlaceholder":1113},[1031,1235,1237,1239,1242,1244,1247,1249,1251,1253,1256,1258,1261,1264,1267,1269,1272,1274,1277,1279],{"class":1033,"line":1236},10,[1031,1238,1121],{"class":1120},[1031,1240,1241],{"class":1074}," client ",[1031,1243,1127],{"class":1041},[1031,1245,1246],{"class":1041}," new",[1031,1248,1097],{"class":1130},[1031,1250,1133],{"class":1074},[1031,1252,1136],{"class":1041},[1031,1254,1255],{"class":1139}," baseUrl",[1031,1257,1143],{"class":1041},[1031,1259,1260],{"class":1074}," API_BASE_URL",[1031,1262,1263],{"class":1041},",",[1031,1265,1266],{"class":1139}," token",[1031,1268,1143],{"class":1041},[1031,1270,1271],{"class":1074}," session",[1031,1273,909],{"class":1041},[1031,1275,1276],{"class":1074},"token ",[1031,1278,1149],{"class":1041},[1031,1280,1152],{"class":1074},[885,1282,1283,1286,1287,1290,1291,1293],{},[889,1284,1285],{},"CLIENT_KEY"," is your identity app's public client key. ",[889,1288,1289],{},"API_BASE_URL"," is the same workflow API address the ",[902,1292,471],{"href":472}," use.",[927,1295,1297],{"id":1296},"_2-bootstrap-the-chat","2. Bootstrap the chat",[1022,1299,1301],{"className":1024,"code":1300,"language":1026,"meta":1027,"style":1027},"import { fetchChatBootstrap, openBuzzSession, RelayConnection } from '@ltinteg/app-component-chat'\n\n// Public: the relay URL, the entry points your app exposes, the published theme, attachment limits.\nconst bootstrap = await fetchChatBootstrap(API_BASE_URL, CLIENT_KEY)\n\n// As the signed-in person: starts the `open` entry point and receives their chat key once.\nconst { session: chat, signer } = await openBuzzSession({ client, bootstrap })\n\n// The key lives only inside `signer`, in memory.\nconst connection = new RelayConnection({ relayUrl: chat.relayUrl, signer })\n",[889,1302,1303,1332,1336,1341,1362,1366,1371,1413,1417,1422],{"__ignoreMap":1027},[1031,1304,1305,1307,1309,1312,1314,1317,1319,1322,1324,1326,1328,1330],{"class":1033,"line":1034},[1031,1306,1038],{"class":1037},[1031,1308,1071],{"class":1041},[1031,1310,1311],{"class":1074}," fetchChatBootstrap",[1031,1313,1263],{"class":1041},[1031,1315,1316],{"class":1074}," openBuzzSession",[1031,1318,1263],{"class":1041},[1031,1320,1321],{"class":1074}," RelayConnection",[1031,1323,1078],{"class":1041},[1031,1325,1081],{"class":1037},[1031,1327,1042],{"class":1041},[1031,1329,895],{"class":1045},[1031,1331,1049],{"class":1041},[1031,1333,1334],{"class":1033,"line":1090},[1031,1335,1114],{"emptyLinePlaceholder":1113},[1031,1337,1338],{"class":1033,"line":1110},[1031,1339,1340],{"class":1163},"// Public: the relay URL, the entry points your app exposes, the published theme, attachment limits.\n",[1031,1342,1343,1345,1348,1350,1352,1354,1357,1359],{"class":1033,"line":1117},[1031,1344,1121],{"class":1120},[1031,1346,1347],{"class":1074}," bootstrap ",[1031,1349,1127],{"class":1041},[1031,1351,1191],{"class":1037},[1031,1353,1311],{"class":1130},[1031,1355,1356],{"class":1074},"(API_BASE_URL",[1031,1358,1263],{"class":1041},[1031,1360,1361],{"class":1074}," CLIENT_KEY)\n",[1031,1363,1364],{"class":1033,"line":1155},[1031,1365,1114],{"emptyLinePlaceholder":1113},[1031,1367,1368],{"class":1033,"line":1160},[1031,1369,1370],{"class":1163},"// As the signed-in person: starts the `open` entry point and receives their chat key once.\n",[1031,1372,1373,1375,1377,1379,1381,1384,1386,1389,1391,1394,1396,1398,1400,1402,1405,1407,1409,1411],{"class":1033,"line":1167},[1031,1374,1121],{"class":1120},[1031,1376,1071],{"class":1041},[1031,1378,1271],{"class":1139},[1031,1380,1143],{"class":1041},[1031,1382,1383],{"class":1074}," chat",[1031,1385,1263],{"class":1041},[1031,1387,1388],{"class":1074}," signer ",[1031,1390,1149],{"class":1041},[1031,1392,1393],{"class":1041}," =",[1031,1395,1191],{"class":1037},[1031,1397,1316],{"class":1130},[1031,1399,1133],{"class":1074},[1031,1401,1136],{"class":1041},[1031,1403,1404],{"class":1074}," client",[1031,1406,1263],{"class":1041},[1031,1408,1347],{"class":1074},[1031,1410,1149],{"class":1041},[1031,1412,1152],{"class":1074},[1031,1414,1415],{"class":1033,"line":1204},[1031,1416,1114],{"emptyLinePlaceholder":1113},[1031,1418,1419],{"class":1033,"line":1231},[1031,1420,1421],{"class":1163},"// The key lives only inside `signer`, in memory.\n",[1031,1423,1424,1426,1429,1431,1433,1435,1437,1439,1442,1444,1446,1448,1451,1453,1455,1457],{"class":1033,"line":1236},[1031,1425,1121],{"class":1120},[1031,1427,1428],{"class":1074}," connection ",[1031,1430,1127],{"class":1041},[1031,1432,1246],{"class":1041},[1031,1434,1321],{"class":1130},[1031,1436,1133],{"class":1074},[1031,1438,1136],{"class":1041},[1031,1440,1441],{"class":1139}," relayUrl",[1031,1443,1143],{"class":1041},[1031,1445,1383],{"class":1074},[1031,1447,909],{"class":1041},[1031,1449,1450],{"class":1074},"relayUrl",[1031,1452,1263],{"class":1041},[1031,1454,1388],{"class":1074},[1031,1456,1149],{"class":1041},[1031,1458,1152],{"class":1074},[885,1460,1461],{},"Nothing in the bootstrap is secret. The person's chat key never touches local storage, cookies or IndexedDB: a reload opens a new chat session.",[927,1463,1465,1466],{"id":1464},"_3-mount-buzzchat","3. Mount ",[889,1467,891],{},[1022,1469,1473],{"className":1470,"code":1471,"language":1472,"meta":1027,"style":1027},"language-tsx shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { useCallback, useMemo } from 'react'\nimport { BuzzChat, runEntrypoint, type BuzzMember } from '@ltinteg/app-component-chat'\n\nexport function SupportChat({ client, bootstrap, connection }) {\n  // Slash commands: the `commands` entry point, run as the signed-in person.\n  const commandsType = bootstrap.entrypoints['commands']\n  const loadCommands = useCallback(async (actor: BuzzMember) => {\n    return runEntrypoint({\n      client,\n      type: commandsType,\n      input: { actor_public_key: actor.publicKey }\n    })\n  }, [client, commandsType])\n\n  const stableBootstrap = useMemo(() => bootstrap, [bootstrap])\n\n  return (\n    \u003CBuzzChat\n      connection={connection}\n      client={client}\n      bootstrap={stableBootstrap}\n      theme={bootstrap.theme?.document}\n      loadCommands={commandsType ? loadCommands : undefined}\n    />\n  )\n}\n","tsx",[889,1474,1475,1499,1531,1535,1568,1573,1604,1638,1650,1658,1669,1695,1703,1722,1727,1757,1762,1771,1780,1795,1806,1819,1842,1864,1870,1876],{"__ignoreMap":1027},[1031,1476,1477,1479,1481,1484,1486,1489,1491,1493,1495,1497],{"class":1033,"line":1034},[1031,1478,1038],{"class":1037},[1031,1480,1071],{"class":1041},[1031,1482,1483],{"class":1074}," useCallback",[1031,1485,1263],{"class":1041},[1031,1487,1488],{"class":1074}," useMemo",[1031,1490,1078],{"class":1041},[1031,1492,1081],{"class":1037},[1031,1494,1042],{"class":1041},[1031,1496,963],{"class":1045},[1031,1498,1049],{"class":1041},[1031,1500,1501,1503,1505,1508,1510,1513,1515,1518,1521,1523,1525,1527,1529],{"class":1033,"line":1090},[1031,1502,1038],{"class":1037},[1031,1504,1071],{"class":1041},[1031,1506,1507],{"class":1074}," BuzzChat",[1031,1509,1263],{"class":1041},[1031,1511,1512],{"class":1074}," runEntrypoint",[1031,1514,1263],{"class":1041},[1031,1516,1517],{"class":1037}," type",[1031,1519,1520],{"class":1074}," BuzzMember",[1031,1522,1078],{"class":1041},[1031,1524,1081],{"class":1037},[1031,1526,1042],{"class":1041},[1031,1528,895],{"class":1045},[1031,1530,1049],{"class":1041},[1031,1532,1533],{"class":1033,"line":1110},[1031,1534,1114],{"emptyLinePlaceholder":1113},[1031,1536,1537,1540,1543,1546,1549,1552,1554,1557,1559,1562,1565],{"class":1033,"line":1117},[1031,1538,1539],{"class":1037},"export",[1031,1541,1542],{"class":1120}," function",[1031,1544,1545],{"class":1130}," SupportChat",[1031,1547,1548],{"class":1041},"({",[1031,1550,1404],{"class":1551},"sHdIc",[1031,1553,1263],{"class":1041},[1031,1555,1556],{"class":1551}," bootstrap",[1031,1558,1263],{"class":1041},[1031,1560,1561],{"class":1551}," connection",[1031,1563,1564],{"class":1041}," })",[1031,1566,1567],{"class":1041}," {\n",[1031,1569,1570],{"class":1033,"line":1155},[1031,1571,1572],{"class":1163},"  // Slash commands: the `commands` entry point, run as the signed-in person.\n",[1031,1574,1575,1578,1581,1583,1585,1587,1590,1593,1596,1599,1601],{"class":1033,"line":1160},[1031,1576,1577],{"class":1120},"  const",[1031,1579,1580],{"class":1074}," commandsType",[1031,1582,1393],{"class":1041},[1031,1584,1556],{"class":1074},[1031,1586,909],{"class":1041},[1031,1588,1589],{"class":1074},"entrypoints",[1031,1591,1592],{"class":1139},"[",[1031,1594,1595],{"class":1041},"'",[1031,1597,1598],{"class":1045},"commands",[1031,1600,1595],{"class":1041},[1031,1602,1603],{"class":1139},"]\n",[1031,1605,1606,1608,1611,1613,1615,1617,1620,1622,1625,1627,1630,1633,1636],{"class":1033,"line":1167},[1031,1607,1577],{"class":1120},[1031,1609,1610],{"class":1074}," loadCommands",[1031,1612,1393],{"class":1041},[1031,1614,1483],{"class":1130},[1031,1616,1133],{"class":1139},[1031,1618,1619],{"class":1120},"async",[1031,1621,1210],{"class":1041},[1031,1623,1624],{"class":1551},"actor",[1031,1626,1143],{"class":1041},[1031,1628,1520],{"class":1629},"sBMFI",[1031,1631,1632],{"class":1041},")",[1031,1634,1635],{"class":1120}," =>",[1031,1637,1567],{"class":1041},[1031,1639,1640,1643,1645,1647],{"class":1033,"line":1204},[1031,1641,1642],{"class":1037},"    return",[1031,1644,1512],{"class":1130},[1031,1646,1133],{"class":1139},[1031,1648,1649],{"class":1041},"{\n",[1031,1651,1652,1655],{"class":1033,"line":1231},[1031,1653,1654],{"class":1074},"      client",[1031,1656,1657],{"class":1041},",\n",[1031,1659,1660,1663,1665,1667],{"class":1033,"line":1236},[1031,1661,1662],{"class":1139},"      type",[1031,1664,1143],{"class":1041},[1031,1666,1580],{"class":1074},[1031,1668,1657],{"class":1041},[1031,1670,1672,1675,1677,1679,1682,1684,1687,1689,1692],{"class":1033,"line":1671},11,[1031,1673,1674],{"class":1139},"      input",[1031,1676,1143],{"class":1041},[1031,1678,1071],{"class":1041},[1031,1680,1681],{"class":1139}," actor_public_key",[1031,1683,1143],{"class":1041},[1031,1685,1686],{"class":1074}," actor",[1031,1688,909],{"class":1041},[1031,1690,1691],{"class":1074},"publicKey",[1031,1693,1694],{"class":1041}," }\n",[1031,1696,1698,1701],{"class":1033,"line":1697},12,[1031,1699,1700],{"class":1041},"    }",[1031,1702,1152],{"class":1139},[1031,1704,1706,1709,1712,1715,1717,1719],{"class":1033,"line":1705},13,[1031,1707,1708],{"class":1041},"  },",[1031,1710,1711],{"class":1139}," [",[1031,1713,1714],{"class":1074},"client",[1031,1716,1263],{"class":1041},[1031,1718,1580],{"class":1074},[1031,1720,1721],{"class":1139},"])\n",[1031,1723,1725],{"class":1033,"line":1724},14,[1031,1726,1114],{"emptyLinePlaceholder":1113},[1031,1728,1730,1732,1735,1737,1739,1741,1744,1746,1748,1750,1752,1755],{"class":1033,"line":1729},15,[1031,1731,1577],{"class":1120},[1031,1733,1734],{"class":1074}," stableBootstrap",[1031,1736,1393],{"class":1041},[1031,1738,1488],{"class":1130},[1031,1740,1133],{"class":1139},[1031,1742,1743],{"class":1041},"()",[1031,1745,1635],{"class":1120},[1031,1747,1556],{"class":1074},[1031,1749,1263],{"class":1041},[1031,1751,1711],{"class":1139},[1031,1753,1754],{"class":1074},"bootstrap",[1031,1756,1721],{"class":1139},[1031,1758,1760],{"class":1033,"line":1759},16,[1031,1761,1114],{"emptyLinePlaceholder":1113},[1031,1763,1765,1768],{"class":1033,"line":1764},17,[1031,1766,1767],{"class":1037},"  return",[1031,1769,1770],{"class":1139}," (\n",[1031,1772,1774,1777],{"class":1033,"line":1773},18,[1031,1775,1776],{"class":1041},"    \u003C",[1031,1778,1779],{"class":1629},"BuzzChat\n",[1031,1781,1783,1786,1789,1792],{"class":1033,"line":1782},19,[1031,1784,1785],{"class":1120},"      connection",[1031,1787,1788],{"class":1041},"={",[1031,1790,1791],{"class":1074},"connection",[1031,1793,1794],{"class":1041},"}\n",[1031,1796,1798,1800,1802,1804],{"class":1033,"line":1797},20,[1031,1799,1654],{"class":1120},[1031,1801,1788],{"class":1041},[1031,1803,1714],{"class":1074},[1031,1805,1794],{"class":1041},[1031,1807,1809,1812,1814,1817],{"class":1033,"line":1808},21,[1031,1810,1811],{"class":1120},"      bootstrap",[1031,1813,1788],{"class":1041},[1031,1815,1816],{"class":1074},"stableBootstrap",[1031,1818,1794],{"class":1041},[1031,1820,1822,1825,1827,1829,1831,1834,1837,1840],{"class":1033,"line":1821},22,[1031,1823,1824],{"class":1120},"      theme",[1031,1826,1788],{"class":1041},[1031,1828,1754],{"class":1074},[1031,1830,909],{"class":1041},[1031,1832,1833],{"class":1074},"theme",[1031,1835,1836],{"class":1041},"?.",[1031,1838,1839],{"class":1074},"document",[1031,1841,1794],{"class":1041},[1031,1843,1845,1848,1850,1853,1856,1859,1861],{"class":1033,"line":1844},23,[1031,1846,1847],{"class":1120},"      loadCommands",[1031,1849,1788],{"class":1041},[1031,1851,1852],{"class":1074},"commandsType ",[1031,1854,1855],{"class":1041},"?",[1031,1857,1858],{"class":1074}," loadCommands ",[1031,1860,1143],{"class":1041},[1031,1862,1863],{"class":1041}," undefined}\n",[1031,1865,1867],{"class":1033,"line":1866},24,[1031,1868,1869],{"class":1041},"    />\n",[1031,1871,1873],{"class":1033,"line":1872},25,[1031,1874,1875],{"class":1139},"  )\n",[1031,1877,1879],{"class":1033,"line":1878},26,[1031,1880,1794],{"class":1041},[1882,1883,1884,1892,1899],"ul",{},[1885,1886,1887,1891],"li",{},[906,1888,1889],{},[889,1890,1754],{}," must be a stable object (memoize it); the component depends on it.",[1885,1893,1894,1898],{},[906,1895,1896],{},[889,1897,1714],{}," turns on the member directory and every entry point the space exposes.",[1885,1900,1901,1906,1907,1909,1910,1912,1913,1916,1917,1921,1922,1924,1925,1927],{},[906,1902,1903],{},[889,1904,1905],{},"loadCommands"," turns on the ",[889,1908,899],{}," palette. It receives the actor the person is talking to and returns that actor's commands. The component caches the list per actor; a failed load is not cached. Keep the function memoized so there is one cache per session. When the bootstrap has no ",[889,1911,1598],{}," key, the space does not offer commands yet: re-run ",[889,1914,1915],{},"buzz.space.enable"," (see ",[902,1918,1920],{"href":1919},"/chat/option-a-hosted-chat#after-a-platform-upgrade","After a platform upgrade",") and leave ",[889,1923,1905],{}," out until then. Without it, ",[889,1926,899],{}," stays plain text.",[885,1929,1930,1931,1934],{},"Cards need nothing else. The component parses each actor message, draws the card with the built-in renderers, and sends the person's answers back as threaded replies. It draws a card ",[906,1932,1933],{},"only"," on a message the member list marks as an attached actor; the same block from a person stays text.",[927,1936,1938,1939,1632],{"id":1937},"_4-replace-or-add-renderers-uirenderers","4. Replace or add renderers (",[889,1940,1941],{},"uiRenderers",[885,1943,1944,1945,964,1948,964,1951,964,1954,964,1956,964,1959,964,1962,964,1965,964,1968,964,1971,964,1974,1977,1978,964,1981,964,1984,964,1987,964,1990,964,1993,1996,1997,2000,2001,2004,2005,2007],{},"Every card is drawn by a renderer keyed by name: ",[889,1946,1947],{},"form",[889,1949,1950],{},"confirm",[889,1952,1953],{},"select",[889,1955,935],{},[889,1957,1958],{},"actionlist",[889,1960,1961],{},"logs",[889,1963,1964],{},"run",[889,1966,1967],{},"chart",[889,1969,1970],{},"kpi",[889,1972,1973],{},"link",[889,1975,1976],{},"composition",", and since 0.9.0 ",[889,1979,1980],{},"dag",[889,1982,1983],{},"schema",[889,1985,1986],{},"datagrid",[889,1988,1989],{},"query",[889,1991,1992],{},"diff",[889,1994,1995],{},"detail"," and ",[889,1998,1999],{},"timeline",". The ",[902,2002,2003],{"href":842},"card catalog"," describes each one. Pass ",[889,2006,1941],{}," to replace one or add your own:",[1022,2009,2011],{"className":1470,"code":2010,"language":1472,"meta":1027,"style":1027},"import { BuzzChat, BuzzUiCardToolbar, type BuzzUiRendererProps } from '@ltinteg/app-component-chat'\n\nfunction MyKpi({ ui, disabled, sendUiResponse }: BuzzUiRendererProps) {\n  const tiles = (ui.render?.tiles as Array\u003C{ label: string, value: string | number, unit?: string }>) ?? []\n  return (\n    \u003Cdiv className=\"my-kpis\">\n      {tiles.map(t => \u003Cdiv key={t.label}>\u003Csmall>{t.label}\u003C/small>\u003Cstrong>{t.value}{t.unit}\u003C/strong>\u003C/div>)}\n      \u003Cbutton disabled={disabled} onClick={() => sendUiResponse({ action: 'refresh', values: {} }, { awaitReply: false })}>\n        Refresh\n      \u003C/button>\n    \u003C/div>\n  )\n}\n\n\u003CBuzzChat connection={connection} client={client} bootstrap={bootstrap} uiRenderers={{ kpi: MyKpi }} />\n",[889,2012,2013,2043,2047,2079,2156,2162,2185,2281,2356,2361,2370,2379,2383,2387,2391],{"__ignoreMap":1027},[1031,2014,2015,2017,2019,2021,2023,2026,2028,2030,2033,2035,2037,2039,2041],{"class":1033,"line":1034},[1031,2016,1038],{"class":1037},[1031,2018,1071],{"class":1041},[1031,2020,1507],{"class":1074},[1031,2022,1263],{"class":1041},[1031,2024,2025],{"class":1074}," BuzzUiCardToolbar",[1031,2027,1263],{"class":1041},[1031,2029,1517],{"class":1037},[1031,2031,2032],{"class":1074}," BuzzUiRendererProps",[1031,2034,1078],{"class":1041},[1031,2036,1081],{"class":1037},[1031,2038,1042],{"class":1041},[1031,2040,895],{"class":1045},[1031,2042,1049],{"class":1041},[1031,2044,2045],{"class":1033,"line":1090},[1031,2046,1114],{"emptyLinePlaceholder":1113},[1031,2048,2049,2052,2055,2057,2060,2062,2065,2067,2070,2073,2075,2077],{"class":1033,"line":1110},[1031,2050,2051],{"class":1120},"function",[1031,2053,2054],{"class":1130}," MyKpi",[1031,2056,1548],{"class":1041},[1031,2058,2059],{"class":1551}," ui",[1031,2061,1263],{"class":1041},[1031,2063,2064],{"class":1551}," disabled",[1031,2066,1263],{"class":1041},[1031,2068,2069],{"class":1551}," sendUiResponse",[1031,2071,2072],{"class":1041}," }:",[1031,2074,2032],{"class":1629},[1031,2076,1632],{"class":1041},[1031,2078,1567],{"class":1041},[1031,2080,2081,2083,2086,2088,2090,2093,2095,2098,2100,2103,2106,2109,2112,2115,2117,2120,2122,2125,2127,2129,2132,2135,2137,2140,2143,2145,2148,2151,2153],{"class":1033,"line":1117},[1031,2082,1577],{"class":1120},[1031,2084,2085],{"class":1074}," tiles",[1031,2087,1393],{"class":1041},[1031,2089,1210],{"class":1139},[1031,2091,2092],{"class":1074},"ui",[1031,2094,909],{"class":1041},[1031,2096,2097],{"class":1074},"render",[1031,2099,1836],{"class":1041},[1031,2101,2102],{"class":1074},"tiles",[1031,2104,2105],{"class":1037}," as",[1031,2107,2108],{"class":1629}," Array",[1031,2110,2111],{"class":1041},"\u003C{",[1031,2113,2114],{"class":1139}," label",[1031,2116,1143],{"class":1041},[1031,2118,2119],{"class":1629}," string",[1031,2121,1263],{"class":1041},[1031,2123,2124],{"class":1139}," value",[1031,2126,1143],{"class":1041},[1031,2128,2119],{"class":1629},[1031,2130,2131],{"class":1041}," |",[1031,2133,2134],{"class":1629}," number",[1031,2136,1263],{"class":1041},[1031,2138,2139],{"class":1139}," unit",[1031,2141,2142],{"class":1041},"?:",[1031,2144,2119],{"class":1629},[1031,2146,2147],{"class":1041}," }>",[1031,2149,2150],{"class":1139},") ",[1031,2152,1188],{"class":1041},[1031,2154,2155],{"class":1139}," []\n",[1031,2157,2158,2160],{"class":1033,"line":1155},[1031,2159,1767],{"class":1037},[1031,2161,1770],{"class":1139},[1031,2163,2164,2166,2169,2172,2174,2177,2180,2182],{"class":1033,"line":1160},[1031,2165,1776],{"class":1041},[1031,2167,2168],{"class":1139},"div",[1031,2170,2171],{"class":1120}," className",[1031,2173,1127],{"class":1041},[1031,2175,2176],{"class":1041},"\"",[1031,2178,2179],{"class":1045},"my-kpis",[1031,2181,2176],{"class":1041},[1031,2183,2184],{"class":1041},">\n",[1031,2186,2187,2190,2192,2194,2197,2199,2202,2204,2207,2209,2212,2214,2216,2218,2221,2224,2227,2230,2232,2234,2236,2239,2241,2244,2246,2248,2250,2252,2255,2258,2260,2262,2265,2267,2269,2272,2274,2277,2279],{"class":1033,"line":1167},[1031,2188,2189],{"class":1041},"      {",[1031,2191,2102],{"class":1074},[1031,2193,909],{"class":1041},[1031,2195,2196],{"class":1130},"map",[1031,2198,1133],{"class":1074},[1031,2200,2201],{"class":1551},"t",[1031,2203,1635],{"class":1120},[1031,2205,2206],{"class":1041}," \u003C",[1031,2208,2168],{"class":1139},[1031,2210,2211],{"class":1120}," key",[1031,2213,1788],{"class":1041},[1031,2215,2201],{"class":1074},[1031,2217,909],{"class":1041},[1031,2219,2220],{"class":1074},"label",[1031,2222,2223],{"class":1041},"}>\u003C",[1031,2225,2226],{"class":1139},"small",[1031,2228,2229],{"class":1041},">{",[1031,2231,2201],{"class":1074},[1031,2233,909],{"class":1041},[1031,2235,2220],{"class":1074},[1031,2237,2238],{"class":1041},"}\u003C/",[1031,2240,2226],{"class":1139},[1031,2242,2243],{"class":1041},">\u003C",[1031,2245,906],{"class":1139},[1031,2247,2229],{"class":1041},[1031,2249,2201],{"class":1074},[1031,2251,909],{"class":1041},[1031,2253,2254],{"class":1074},"value",[1031,2256,2257],{"class":1041},"}{",[1031,2259,2201],{"class":1074},[1031,2261,909],{"class":1041},[1031,2263,2264],{"class":1074},"unit",[1031,2266,2238],{"class":1041},[1031,2268,906],{"class":1139},[1031,2270,2271],{"class":1041},">\u003C/",[1031,2273,2168],{"class":1139},[1031,2275,2276],{"class":1041},">",[1031,2278,1632],{"class":1074},[1031,2280,1794],{"class":1041},[1031,2282,2283,2286,2289,2291,2293,2296,2299,2302,2305,2307,2309,2311,2313,2316,2318,2320,2323,2325,2327,2330,2332,2335,2338,2340,2343,2345,2349,2351,2353],{"class":1033,"line":1204},[1031,2284,2285],{"class":1041},"      \u003C",[1031,2287,2288],{"class":1139},"button",[1031,2290,2064],{"class":1120},[1031,2292,1788],{"class":1041},[1031,2294,2295],{"class":1074},"disabled",[1031,2297,2298],{"class":1041},"} ",[1031,2300,2301],{"class":1120},"onClick",[1031,2303,2304],{"class":1041},"={()",[1031,2306,1635],{"class":1120},[1031,2308,2069],{"class":1130},[1031,2310,1133],{"class":1074},[1031,2312,1136],{"class":1041},[1031,2314,2315],{"class":1139}," action",[1031,2317,1143],{"class":1041},[1031,2319,1042],{"class":1041},[1031,2321,2322],{"class":1045},"refresh",[1031,2324,1595],{"class":1041},[1031,2326,1263],{"class":1041},[1031,2328,2329],{"class":1139}," values",[1031,2331,1143],{"class":1041},[1031,2333,2334],{"class":1041}," {}",[1031,2336,2337],{"class":1041}," },",[1031,2339,1071],{"class":1041},[1031,2341,2342],{"class":1139}," awaitReply",[1031,2344,1143],{"class":1041},[1031,2346,2348],{"class":2347},"sfNiH"," false",[1031,2350,1078],{"class":1041},[1031,2352,1632],{"class":1074},[1031,2354,2355],{"class":1041},"}>\n",[1031,2357,2358],{"class":1033,"line":1231},[1031,2359,2360],{"class":1074},"        Refresh\n",[1031,2362,2363,2366,2368],{"class":1033,"line":1236},[1031,2364,2365],{"class":1041},"      \u003C/",[1031,2367,2288],{"class":1139},[1031,2369,2184],{"class":1041},[1031,2371,2372,2375,2377],{"class":1033,"line":1671},[1031,2373,2374],{"class":1041},"    \u003C/",[1031,2376,2168],{"class":1139},[1031,2378,2184],{"class":1041},[1031,2380,2381],{"class":1033,"line":1697},[1031,2382,1875],{"class":1139},[1031,2384,2385],{"class":1033,"line":1705},[1031,2386,1794],{"class":1041},[1031,2388,2389],{"class":1033,"line":1724},[1031,2390,1114],{"emptyLinePlaceholder":1113},[1031,2392,2393,2396,2399,2401,2403,2405,2407,2409,2411,2413,2415,2417,2419,2421,2423,2425,2428,2431,2433,2436],{"class":1033,"line":1729},[1031,2394,2395],{"class":1041},"\u003C",[1031,2397,2398],{"class":1629},"BuzzChat",[1031,2400,1561],{"class":1120},[1031,2402,1788],{"class":1041},[1031,2404,1791],{"class":1074},[1031,2406,2298],{"class":1041},[1031,2408,1714],{"class":1120},[1031,2410,1788],{"class":1041},[1031,2412,1714],{"class":1074},[1031,2414,2298],{"class":1041},[1031,2416,1754],{"class":1120},[1031,2418,1788],{"class":1041},[1031,2420,1754],{"class":1074},[1031,2422,2298],{"class":1041},[1031,2424,1941],{"class":1120},[1031,2426,2427],{"class":1041},"={{",[1031,2429,2430],{"class":1139}," kpi",[1031,2432,1143],{"class":1041},[1031,2434,2435],{"class":1074}," MyKpi ",[1031,2437,2438],{"class":1041},"}} />\n",[885,2440,2441,2442,2444,2445,2448,2449,2452,2453,2456,2457,2461,2462,909],{},"A renderer receives the parsed card (",[889,2443,2092],{},"), the person's earlier answer if any, whether it is expired or disabled, whether it is addressed to someone else, and ",[889,2446,2447],{},"sendUiResponse"," to answer. The server validates every answer against the card it stored, so a renderer cannot widen what a card accepts. A renderer name you do not register leaves the message as text. The built-in toolbar (",[889,2450,2451],{},"BuzzUiCardToolbar",") and row actions (",[889,2454,2455],{},"BuzzUiRowActions",") are exported so your renderer can place them. The fields of each card are listed in ",[902,2458,2460],{"href":2459},"/chat/option-c-custom-client#renderers","Option C"," and the ",[902,2463,2003],{"href":842},[927,2465,2467],{"id":2466},"_5-theme-it","5. Theme it",[885,2469,2470,2471,2473,2474,2477],{},"The component reads the same theme document as the hosted page (see ",[902,2472,769],{"href":770},"): brand, colors, radius, density, layout, copy and feature flags. The flag ",[889,2475,2476],{},"structured_ui"," (on by default) turns cards on; off, an actor's card shows as its text.",[885,2479,2480,2481,2484,2485,964,2488,964,2491,964,2494,964,2497,964,2500,964,2503,2506,2507,2509,2510,2513,2514,909],{},"For deeper changes, ",[889,2482,2483],{},"slots"," replaces parts of the chat with your own components: ",[889,2486,2487],{},"Header",[889,2489,2490],{},"ChannelListItem",[889,2492,2493],{},"MessageBubble",[889,2495,2496],{},"EmptyState",[889,2498,2499],{},"ActorBadge",[889,2501,2502],{},"ActorRail",[889,2504,2505],{},"MemberPanel",". A custom ",[889,2508,2493],{}," receives the drawn card as ",[889,2511,2512],{},"uiContent",", so you can place it or draw your own from ",[889,2515,2092],{},[927,2517,2519],{"id":2518},"ask-your-ai-assistant","Ask your AI assistant",[1022,2521,2527],{"className":2522,"code":2524,"filename":2525,"language":2526,"meta":1027},[2523],"language-text","I have the chat component package. Write a React page that signs the user in with @orkestia/auth, bootstraps the chat with fetchChatBootstrap and openBuzzSession, and mounts BuzzChat with loadCommands. Use https://docs.orkestia.dev/raw/chat/option-b-embed-component.md.\n\nWrite a custom uiRenderers entry for the table card that draws rows as cards on mobile and keeps the Refresh and row actions working.\n\nMy embedded chat shows actor cards as plain text. List what to check: the structured_ui flag, the actor's responder, and whether the message is from an attached actor.\n","prompts","text",[889,2528,2524],{"__ignoreMap":1027},[927,2530,2532],{"id":2531},"for-ai-agents","For AI agents",[935,2534,2535,2545],{},[938,2536,2537],{},[941,2538,2539,2542],{},[944,2540,2541],{},"Rule",[944,2543,2544],{},"Detail",[954,2546,2547,2555,2563,2575,2598],{},[941,2548,2549,2552],{},[959,2550,2551],{},"Package",[959,2553,2554],{},"Available on request during early access. Do not tell users to install it from a public registry",[941,2556,2557,2560],{},[959,2558,2559],{},"Tokens",[959,2561,2562],{},"The browser uses the end user's own token. Never put an organization token or API key in a client bundle",[941,2564,2565,2568],{},[959,2566,2567],{},"Keys",[959,2569,2570,2571,2574],{},"The chat key is revealed once to ",[889,2572,2573],{},"openBuzzSession"," and kept in memory. Do not persist it",[941,2576,2577,2580],{},[959,2578,2579],{},"Commands",[959,2581,2582,2583,2585,2586,2589,2590,2593,2594,2597],{},"Start the ",[889,2584,1598],{}," entry point from ",[889,2587,2588],{},"bootstrap.entrypoints",", with ",[889,2591,2592],{},"actor_public_key",". End users cannot start ",[889,2595,2596],{},"data.buzz.actor.commands"," directly",[941,2599,2600,2603],{},[959,2601,2602],{},"Renderers",[959,2604,2605,2606,2608,2609,2612],{},"Custom renderers answer with ",[889,2607,2447],{},". Do not post ",[889,2610,2611],{},"buzz-ui-response"," blocks by hand from a person's composer",[2614,2615,2616],"style",{},"html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfNiH, html code.shiki .sfNiH{--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC}",{"title":1027,"searchDepth":1034,"depth":1090,"links":2618},[2619,2620,2621,2622,2624,2626,2627,2628],{"id":929,"depth":1090,"text":930},{"id":1052,"depth":1090,"text":1053},{"id":1296,"depth":1090,"text":1297},{"id":1464,"depth":1090,"text":2623},"3. Mount \u003CBuzzChat>",{"id":1937,"depth":1090,"text":2625},"4. Replace or add renderers (uiRenderers)",{"id":2466,"depth":1090,"text":2467},{"id":2518,"depth":1090,"text":2519},{"id":2531,"depth":1090,"text":2532},"Put the Orkestia chat, with every structured card built in, inside your own React app. Install, sign the person in, bootstrap the chat, mount BuzzChat with loadCommands and uiRenderers, and theme it","md",null,{},{"icon":818},{"title":815,"description":2629},"n0CN9cDUqDLNU6v_BGXsj3XE7Wsm3EE0bjCCGcU3ipY",[2637,2639],{"title":811,"path":812,"stem":813,"description":2638,"icon":109,"children":-1},"Step by step, turn on structured chat on the hosted Orkestia chat page. Enable the space, seat and attach an actor, set its DGI responder, choose its reply principal, sync the bridge and republish after upgrades",{"title":820,"path":821,"stem":822,"description":2640,"icon":823,"children":-1},"Draw structured chat cards in your own chat client. The buzz-ui block and tag, every renderer and its fields, answers and card actions, server-side validation, in-place edits, quick replies, the status line and slash commands",1790354063566]