[{"data":1,"prerenderedAt":2472},["ShallowReactive",2],{"navigation":3,"/chat/option-c-custom-client":879,"/chat/option-c-custom-client-surround":2467},[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":820,"body":881,"description":2460,"extension":2461,"links":2462,"meta":2463,"navigation":2464,"path":821,"seo":2465,"stem":822,"__hash__":2466},"docs/24.chat/14.option-c-custom-client.md",{"type":882,"value":883,"toc":2430},"minimark",[884,904,919,924,963,970,973,983,986,1042,1056,1239,1249,1252,1257,1262,1337,1386,1390,1394,1469,1478,1482,1489,1525,1530,1542,1547,1555,1560,1571,1576,1591,1596,1608,1613,1631,1635,1645,1650,1660,1664,1698,1712,1716,1726,1732,1734,1768,2027,2045,2049,2052,2170,2179,2183,2193,2219,2225,2229,2232,2259,2266,2270,2277,2281,2293,2299,2331,2334,2338,2345,2349,2426],[885,886,887,888,895,896,898,899,903],"p",{},"Every structured card is an ordinary chat message (Nostr kind 9) that carries a JSON block in its text and one tag. A client that knows the contract draws the card; a client that does not shows the text, which always stands on its own. This page is the contract, version 1 (with its additive revisions 1.1, 1.2 and 1.3). The same card object is what ",[889,890,891],"a",{"href":838},[892,893,894],"code",{},"dgi.chat.turn"," returns outside the chat. Structured chat is part of ",[889,897,851],{"href":59}," and is ",[900,901,902],"strong",{},"Alpha",".",[885,905,906,907,910,911,914,915,918],{},"You still configure the actor as in ",[889,908,909],{"href":812},"Option A",", and your client connects the person to the relay as in ",[889,912,913],{"href":816},"Option B",": bootstrap, the ",[892,916,917],{},"open"," entry point, then the relay with the person's own key.",[920,921,923],"h2",{"id":922},"rules-that-do-not-change","Rules that do not change",[925,926,927,937,951,957],"ul",{},[928,929,930,936],"li",{},[900,931,932,935],{},[892,933,934],{},"v"," is 1."," Revisions add optional keys only. Ignore keys you do not know.",[928,938,939,942,943,946,947,950],{},[900,940,941],{},"Draw a card only from an attached actor."," Resolve the author from the verified ",[892,944,945],{},"event.pubkey"," through the member list, and draw ",[892,948,949],{},"buzz-ui"," only when that member is an attached actor. The same block from a person is text.",[928,952,953,956],{},[900,954,955],{},"The server never trusts the block."," It checks every answer against the card it stored when it posted it. Your client decides how things look, never what is accepted.",[928,958,959,962],{},[900,960,961],{},"Unknown renderer: show the text."," Everything a person needs is also in the message text above the block.",[920,964,966,967,969],{"id":965},"actor-to-chat-the-buzz-ui-block","Actor to chat: the ",[892,968,949],{}," block",[885,971,972],{},"The message text is a human-readable line, then a fenced block:",[974,975,981],"pre",{"className":976,"code":978,"language":979,"meta":980},[977],"language-text","Here are the open tickets.\n\n```buzz-ui\n{\"v\":1,\"ui_id\":\"\u003C32 hex>\",\"renderer\":\"table\",\"title\":\"Open tickets\",\n \"for\":\"\u003Cauthor public key, 64 hex>\",\"for_end_user\":\"\u003Cend user uuid>\",\n \"render\":{...},\"actions\":[\"refresh\",\"row_action\",\"live\"],\n \"context\":[{\"slot\":\"project\",\"label\":\"Website\"}],\n \"expires_at\":\"2026-09-24T18:30:00Z\"}\n```\n","text","",[892,982,978],{"__ignoreMap":980},[885,984,985],{},"and the tag:",[974,987,991],{"className":988,"code":989,"language":990,"meta":980,"style":980},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","[\"buzz-ui\", \"1\", \"\u003Crenderer>\", \"\u003Cui_id>\"]\n","json",[892,992,993],{"__ignoreMap":980},[994,995,998,1002,1005,1008,1010,1013,1016,1019,1021,1023,1025,1028,1030,1032,1034,1037,1039],"span",{"class":996,"line":997},"line",1,[994,999,1001],{"class":1000},"sMK4o","[",[994,1003,1004],{"class":1000},"\"",[994,1006,949],{"class":1007},"sfazB",[994,1009,1004],{"class":1000},[994,1011,1012],{"class":1000},",",[994,1014,1015],{"class":1000}," \"",[994,1017,1018],{"class":1007},"1",[994,1020,1004],{"class":1000},[994,1022,1012],{"class":1000},[994,1024,1015],{"class":1000},[994,1026,1027],{"class":1007},"\u003Crenderer>",[994,1029,1004],{"class":1000},[994,1031,1012],{"class":1000},[994,1033,1015],{"class":1000},[994,1035,1036],{"class":1007},"\u003Cui_id>",[994,1038,1004],{"class":1000},[994,1040,1041],{"class":1000},"]\n",[885,1043,1044,1045,1047,1048,1051,1052,1055],{},"The tag and the block must agree on ",[892,1046,934],{},", ",[892,1049,1050],{},"ui_id"," and ",[892,1053,1054],{},"renderer",". Otherwise ignore the block.",[1057,1058,1059,1072],"table",{},[1060,1061,1062],"thead",{},[1063,1064,1065,1069],"tr",{},[1066,1067,1068],"th",{},"Key",[1066,1070,1071],{},"Meaning",[1073,1074,1075,1085,1098,1108,1121,1135,1148,1158,1201,1215,1229],"tbody",{},[1063,1076,1077,1082],{},[1078,1079,1080],"td",{},[892,1081,1050],{},[1078,1083,1084],{},"The card's id. Every answer names it",[1063,1086,1087,1091],{},[1078,1088,1089],{},[892,1090,1054],{},[1078,1092,1093,1094],{},"Which card to draw. See ",[889,1095,1097],{"href":1096},"#renderers","Renderers",[1063,1099,1100,1105],{},[1078,1101,1102],{},[892,1103,1104],{},"title",[1078,1106,1107],{},"Card heading",[1063,1109,1110,1118],{},[1078,1111,1112,1047,1115],{},[892,1113,1114],{},"for",[892,1116,1117],{},"for_end_user",[1078,1119,1120],{},"The person the card answers. Draw it read-only for anyone else, with a note such as \"This card is for Ana\". The server refuses anyone else anyway",[1063,1122,1123,1128],{},[1078,1124,1125],{},[892,1126,1127],{},"pending_input",[1078,1129,1130,1131,1134],{},"A form (renderer ",[892,1132,1133],{},"form",")",[1063,1136,1137,1142],{},[1078,1138,1139],{},[892,1140,1141],{},"pending_action",[1078,1143,1144,1145,1134],{},"A proposal (renderer ",[892,1146,1147],{},"confirm",[1063,1149,1150,1155],{},[1078,1151,1152],{},[892,1153,1154],{},"render",[1078,1156,1157],{},"The view (every other renderer)",[1063,1159,1160,1165],{},[1078,1161,1162],{},[892,1163,1164],{},"actions",[1078,1166,1167,1168,1047,1170,1047,1173,1176,1177,1047,1180,1047,1183,1047,1186,1047,1189,1192,1193,1196,1197,1200],{},"What the card offers: ",[892,1169,1147],{},[892,1171,1172],{},"cancel",[892,1174,1175],{},"edit"," on a confirm card; ",[892,1178,1179],{},"refresh",[892,1181,1182],{},"row_action",[892,1184,1185],{},"live",[892,1187,1188],{},"stop",[892,1190,1191],{},"query"," on a read card; ",[892,1194,1195],{},"select"," or ",[892,1198,1199],{},"submit"," on the views that open something or run a statement",[1063,1202,1203,1208],{},[1078,1204,1205],{},[892,1206,1207],{},"context",[1078,1209,1210,1211,1214],{},"Up to 8 chips ",[892,1212,1213],{},"{slot, label}"," to draw under the message. Labels only, never ids",[1063,1216,1217,1222],{},[1078,1218,1219],{},[892,1220,1221],{},"controls",[1078,1223,1224,1225],{},"Up to 6 view controls on a read card (v1.3). See ",[889,1226,1228],{"href":1227},"/chat/card-catalog#view-controls-and-the-query-action","View controls",[1063,1230,1231,1236],{},[1078,1232,1233],{},[892,1234,1235],{},"expires_at",[1078,1237,1238],{},"After this, draw the card disabled. A card that offers card actions (refresh, live) never expires in the client",[885,1240,1241,1242,1244,1245,1248],{},"The whole message stays under 63 KiB. A block too large loses ",[892,1243,1154],{}," first, then ",[892,1246,1247],{},"pending_action.plan","; a form or proposal that still does not fit is posted as text.",[920,1250,1097],{"id":1251},"renderers",[1253,1254,1255],"h3",{"id":1133},[892,1256,1133],{},[885,1258,1259,1261],{},[892,1260,1127],{},":",[1057,1263,1264,1272],{},[1060,1265,1266],{},[1063,1267,1268,1270],{},[1066,1269,1068],{},[1066,1271,1071],{},[1073,1273,1274,1284,1294,1311,1323],{},[1063,1275,1276,1281],{},[1078,1277,1278],{},[892,1279,1280],{},"promptMessage",[1078,1282,1283],{},"The question above the form",[1063,1285,1286,1291],{},[1078,1287,1288],{},[892,1289,1290],{},"workflowType",[1078,1292,1293],{},"The workflow the values are for. Display only",[1063,1295,1296,1301],{},[1078,1297,1298],{},[892,1299,1300],{},"surface",[1078,1302,1303,1306,1307,1310],{},[892,1304,1305],{},"inline"," (default) or ",[892,1308,1309],{},"modal",": draw a button that opens the form in a dialog",[1063,1312,1313,1318],{},[1078,1314,1315],{},[892,1316,1317],{},"fields",[1078,1319,1320],{},[892,1321,1322],{},"[{key, label, type, required, placeholder, description, options, ...}]",[1063,1324,1325,1330],{},[1078,1326,1327],{},[892,1328,1329],{},"steps",[1078,1331,1332,1333,1336],{},"Optional wizard pages ",[892,1334,1335],{},"[{title, fields:[key]}]",". Submit once, at the end",[885,1338,1339,1340,1343,1344,1047,1346,1047,1349,1047,1352,1047,1355,1047,1358,1047,1361,1047,1364,1047,1366,1047,1369,1047,1372,1375,1376,1378,1379,1051,1382,1385],{},"Field ",[892,1341,1342],{},"type",": ",[892,1345,979],{},[892,1347,1348],{},"textarea",[892,1350,1351],{},"number",[892,1353,1354],{},"email",[892,1356,1357],{},"url",[892,1359,1360],{},"date",[892,1362,1363],{},"time",[892,1365,1195],{},[892,1367,1368],{},"multiselect",[892,1370,1371],{},"boolean",[892,1373,1374],{},"file",". A ",[892,1377,1374],{}," field may carry ",[892,1380,1381],{},"accept",[892,1383,1384],{},"max_bytes","; upload the file through the chat's own media upload on the space relay and submit the resulting https URL. A URL on any other host is refused.",[1253,1387,1388],{"id":1147},[892,1389,1147],{},[885,1391,1392,1261],{},[892,1393,1141],{},[1057,1395,1396,1404],{},[1060,1397,1398],{},[1063,1399,1400,1402],{},[1066,1401,1068],{},[1066,1403,1071],{},[1073,1405,1406,1416,1425,1435,1448],{},[1063,1407,1408,1413],{},[1078,1409,1410],{},[892,1411,1412],{},"summary",[1078,1414,1415],{},"One line: what will happen",[1063,1417,1418,1422],{},[1078,1419,1420],{},[892,1421,1290],{},[1078,1423,1424],{},"The workflow that will run",[1063,1426,1427,1432],{},[1078,1428,1429],{},[892,1430,1431],{},"input",[1078,1433,1434],{},"The inputs it will run with",[1063,1436,1437,1442],{},[1078,1438,1439],{},[892,1440,1441],{},"destructive",[1078,1443,1444,1447],{},[892,1445,1446],{},"true",": style the Confirm button as a warning",[1063,1449,1450,1455],{},[1078,1451,1452],{},[892,1453,1454],{},"plan",[1078,1456,1457,1460,1461,1464,1465,1468],{},[892,1458,1459],{},"{summary, inputs:[{key, value, field_label}]}",": draw ",[892,1462,1463],{},"field_label = value"," rows, up to 8. ",[892,1466,1467],{},"plan.summary"," is a good card title",[885,1470,1471,1472,1474,1475,1477],{},"Offer the buttons listed in the block's ",[892,1473,1164],{},": Confirm, Cancel, and Edit when ",[892,1476,1175],{}," is listed.",[1253,1479,1480],{"id":1057},[892,1481,1057],{},[885,1483,1484,1343,1486,903],{},[892,1485,1154],{},[892,1487,1488],{},"{title, columns, rows, row_actions?, empty?, refreshed_at?, live?}",[925,1490,1491,1509,1519],{},[928,1492,1493,1496,1497,1500,1501,1504,1505,1508],{},[892,1494,1495],{},"columns"," are strings or ",[892,1498,1499],{},"{key, label}",". ",[892,1502,1503],{},"rows"," are arrays, ",[892,1506,1507],{},"{cells}",", or objects read by column key.",[928,1510,1511,1514,1515,1518],{},[892,1512,1513],{},"row_actions"," is ",[892,1516,1517],{},"[{label}]",", up to 4: draw them on each row. Labels only; the server keeps each row's id and what each action runs.",[928,1520,1521,1524],{},[892,1522,1523],{},"empty"," is the text for no rows.",[1253,1526,1528],{"id":1527},"chart",[892,1529,1527],{},[885,1531,1532,1343,1534,1537,1538,1541],{},[892,1533,1154],{},[892,1535,1536],{},"{chart: \"bar\"|\"line\"|\"pie\", title, x:[label], series:[{name, values:[number]}], unit?, source?, as_of?}",". At most 6 series and 60 points. ",[892,1539,1540],{},"null"," is a gap.",[1253,1543,1545],{"id":1544},"kpi",[892,1546,1544],{},[885,1548,1549,1343,1551,1554],{},[892,1550,1154],{},[892,1552,1553],{},"{title?, tiles:[{label, value, unit?, delta?, trend?: \"up\"|\"down\"|\"flat\", source?, as_of?}]}",". At most 8 tiles.",[1253,1556,1558],{"id":1557},"logs",[892,1559,1557],{},[885,1561,1562,1343,1564,1500,1567,1570],{},[892,1563,1154],{},[892,1565,1566],{},"{title, content, language?, truncated?}",[892,1568,1569],{},"content"," is at most 12,000 characters. Draw it monospace, scrollable, with a copy button.",[1253,1572,1574],{"id":1573},"link",[892,1575,1573],{},[885,1577,1578,1343,1580,1583,1584,1586,1587,1590],{},[892,1579,1154],{},[892,1581,1582],{},"{title, description, url, label}",". One button that opens ",[892,1585,1357],{}," in a new tab. The server posts only https URLs on the organization console (",[892,1588,1589],{},"https://app.orkestia.dev",", or your space's console origin). Anything else arrives as text. Check it again in your client.",[1253,1592,1594],{"id":1593},"run",[892,1595,1593],{},[885,1597,1598,1343,1600,1603,1604,1607],{},[892,1599,1154],{},[892,1601,1602],{},"{workflow_id, workflow_type, title, status: \"running\"|\"success\"|\"failed\"|\"cancelled\", state, steps:[{name, status, started_at?, finished_at?}], started_at, updated_at, failure_reason?}",". A live card for a run DGI started in this conversation. The server rewrites it in place until the run ends. ",[892,1605,1606],{},"failure_reason"," is a short code, never an error text.",[1253,1609,1611],{"id":1610},"composition",[892,1612,1610],{},[885,1614,1615,1343,1617,1620,1621,1624,1625,1627,1628,903],{},[892,1616,1154],{},[892,1618,1619],{},"{title, composition_ref, steps:[{ref, workflow_type, label, inputs, actions?}], actions:[{label, prompt}]}",". Only for replies that run as an organization member with ",[892,1622,1623],{},"compose"," on. Step and plan actions answer as ",[892,1626,1195],{}," with the action's ",[892,1629,1630],{},"prompt",[1253,1632,1633],{"id":1195},[892,1634,1195],{},[885,1636,1637,1343,1639,1642,1643,903],{},[892,1638,1154],{},[892,1640,1641],{},"{title, options:[{value, label, prompt?}], field?}",". Answer with ",[892,1644,1195],{},[1253,1646,1648],{"id":1647},"actionlist",[892,1649,1647],{},[885,1651,1652,1343,1654,1642,1657,1659],{},[892,1653,1154],{},[892,1655,1656],{},"{title, items:[{title, subtitle?, actions:[{value, label, prompt?}]}]}",[892,1658,1195],{}," and the item index.",[1253,1661,1663],{"id":1662},"the-v13-views","The v1.3 views",[885,1665,1666,1047,1669,1047,1672,1047,1675,1047,1677,1047,1680,1051,1683,1686,1687,1690,1691,1693,1694,1697],{},[892,1667,1668],{},"dag",[892,1670,1671],{},"schema",[892,1673,1674],{},"datagrid",[892,1676,1191],{},[892,1678,1679],{},"diff",[892,1681,1682],{},"detail",[892,1684,1685],{},"timeline"," were added in revision 1.3, together with ",[892,1688,1689],{},"pending_action.diff"," on confirm cards and view ",[892,1692,1221],{},". Their fields and interactions are in the ",[889,1695,1696],{"href":842},"card catalog",". They are views: they never expire, and nothing sent from them consumes the card.",[885,1699,1700,1701,1047,1703,1047,1705,1047,1707,1047,1709,1711],{},"Read-only views (",[892,1702,1557],{},[892,1704,1593],{},[892,1706,1527],{},[892,1708,1544],{},[892,1710,1573],{}," and the v1.3 views) accept no answer, except the card actions below and the picks the v1.3 views offer.",[920,1713,1715],{"id":1714},"person-to-actor-answers","Person to actor: answers",[885,1717,1718,1719,1722,1723,1725],{},"An answer is a kind-9 message ",[900,1720,1721],{},"threaded under the card"," (NIP-10 reply to the card event), with a ",[892,1724,885],{}," tag for the actor, an echo line for any client, and a fenced block:",[974,1727,1730],{"className":1728,"code":1729,"language":979,"meta":980},[977],"Sent: Title = Login page broken, Priority = High\n\n```buzz-ui-response\n{\"v\":1,\"ui_id\":\"\u003Cthe card's ui_id>\",\"action\":\"submit\",\"values\":{\"title\":\"Login page broken\",\"priority\":\"priority\"}}\n```\n",[892,1731,1729],{"__ignoreMap":980},[885,1733,985],{},[974,1735,1737],{"className":988,"code":1736,"language":990,"meta":980,"style":980},"[\"buzz-ui-response\", \"1\", \"\u003Cui_id>\"]\n",[892,1738,1739],{"__ignoreMap":980},[994,1740,1741,1743,1745,1748,1750,1752,1754,1756,1758,1760,1762,1764,1766],{"class":996,"line":997},[994,1742,1001],{"class":1000},[994,1744,1004],{"class":1000},[994,1746,1747],{"class":1007},"buzz-ui-response",[994,1749,1004],{"class":1000},[994,1751,1012],{"class":1000},[994,1753,1015],{"class":1000},[994,1755,1018],{"class":1007},[994,1757,1004],{"class":1000},[994,1759,1012],{"class":1000},[994,1761,1015],{"class":1000},[994,1763,1036],{"class":1007},[994,1765,1004],{"class":1000},[994,1767,1041],{"class":1000},[1057,1769,1770,1788],{},[1060,1771,1772],{},[1063,1773,1774,1777,1780,1785],{},[1066,1775,1776],{},"Action",[1066,1778,1779],{},"On",[1066,1781,1782],{},[892,1783,1784],{},"values",[1066,1786,1787],{},"What happens",[1073,1789,1790,1804,1823,1839,1857,1881,1908,1925,1941,1956,1972,2004],{},[1063,1791,1792,1796,1798,1801],{},[1078,1793,1794],{},[892,1795,1199],{},[1078,1797,1133],{},[1078,1799,1800],{},"The field values. Leave empty fields out; always send booleans",[1078,1802,1803],{},"DGI continues with the values: a proposal, or another question",[1063,1805,1806,1810,1812,1817],{},[1078,1807,1808],{},[892,1809,1147],{},[1078,1811,1147],{},[1078,1813,1814],{},[892,1815,1816],{},"{}",[1078,1818,1819,1820,1822],{},"The stored proposal runs. Your ",[892,1821,1784],{}," are ignored: the server uses its own copy",[1063,1824,1825,1829,1832,1836],{},[1078,1826,1827],{},[892,1828,1172],{},[1078,1830,1831],{},"form, confirm",[1078,1833,1834],{},[892,1835,1816],{},[1078,1837,1838],{},"DGI acknowledges and runs nothing",[1063,1840,1841,1845,1848,1854],{},[1078,1842,1843],{},[892,1844,1175],{},[1078,1846,1847],{},"confirm, when offered",[1078,1849,1850,1851,1853],{},"Changed inputs, keys of the proposal's ",[892,1852,1431],{}," only",[1078,1855,1856],{},"DGI re-proposes on a new card with the new values",[1063,1858,1859,1863,1866,1878],{},[1078,1860,1861],{},[892,1862,1195],{},[1078,1864,1865],{},"select, table (v1 row actions), actionlist, composition",[1078,1867,1868,1871,1872,1196,1875],{},[892,1869,1870],{},"{value, label, prompt?}"," plus ",[892,1873,1874],{},"row",[892,1876,1877],{},"item",[1078,1879,1880],{},"DGI continues with the pick",[1063,1882,1883,1887,1890,1905],{},[1078,1884,1885],{},[892,1886,1195],{},[1078,1888,1889],{},"dag, schema, timeline, detail, query console (v1.3)",[1078,1891,1892,1047,1895,1047,1898,1196,1901,1904],{},[892,1893,1894],{},"{node}",[892,1896,1897],{},"{item}",[892,1899,1900],{},"{related}",[892,1902,1903],{},"{saved}",", a ref from the card",[1078,1906,1907],{},"DGI opens what the ref stands for. The card is not consumed",[1063,1909,1910,1914,1917,1922],{},[1078,1911,1912],{},[892,1913,1199],{},[1078,1915,1916],{},"query console (v1.3)",[1078,1918,1919],{},[892,1920,1921],{},"{statement}",[1078,1923,1924],{},"The statement runs read-only and the console is rewritten in place",[1063,1926,1927,1931,1934,1938],{},[1078,1928,1929],{},[892,1930,1179],{},[1078,1932,1933],{},"read card",[1078,1935,1936],{},[892,1937,1816],{},[1078,1939,1940],{},"The card is rewritten in place with fresh data",[1063,1942,1943,1947,1949,1953],{},[1078,1944,1945],{},[892,1946,1185],{},[1078,1948,1933],{},[1078,1950,1951],{},[892,1952,1816],{},[1078,1954,1955],{},"The card starts refreshing itself (60 s, for 30 min)",[1063,1957,1958,1962,1965,1969],{},[1078,1959,1960],{},[892,1961,1188],{},[1078,1963,1964],{},"live read card",[1078,1966,1967],{},[892,1968,1816],{},[1078,1970,1971],{},"Live updates stop",[1063,1973,1974,1978,1983,1993],{},[1078,1975,1976],{},[892,1977,1182],{},[1078,1979,1980,1981],{},"table or datagrid with ",[892,1982,1513],{},[1078,1984,1985,1988,1989,1992],{},[892,1986,1987],{},"{\"row\": i, \"action\": j}",", plus the row's ",[892,1990,1991],{},"ref"," on a datagrid",[1078,1994,1995,1996,1999,2000,2003],{},"Runs action ",[892,1997,1998],{},"j"," on row ",[892,2001,2002],{},"i",": a read shows a view, a write asks with a form or proposes a confirm card",[1063,2005,2006,2010,2016,2024],{},[1078,2007,2008],{},[892,2009,1191],{},[1078,2011,2012,2013,2015],{},"datagrid, query console, card with ",[892,2014,1221],{}," (v1.3)",[1078,2017,2018,1196,2021],{},[892,2019,2020],{},"{sort?, filters?, cursor?}",[892,2022,2023],{},"{params}",[1078,2025,2026],{},"The stored read runs again with only those values, and the card is rewritten in place",[885,2028,2029,1047,2031,1047,2033,1047,2035,2037,2038,2040,2041,2044],{},[892,2030,1179],{},[892,2032,1185],{},[892,2034,1188],{},[892,2036,1191],{}," and the console's ",[892,2039,1199],{}," come back as an ",[900,2042,2043],{},"edit of the card",", not as a new reply, so do not show a \"thinking\" indicator for them.",[1253,2046,2048],{"id":2047},"what-the-server-checks","What the server checks",[885,2050,2051],{},"Before anything runs, every answer must pass these checks against the card the server stored. A refusal posts a short line in the chat and consumes nothing, so the right person can still answer.",[1057,2053,2054,2064],{},[1060,2055,2056],{},[1063,2057,2058,2061],{},[1066,2059,2060],{},"Check",[1066,2062,2063],{},"Refusal",[1073,2065,2066,2081,2091,2101,2111,2121,2131,2147,2157],{},[1063,2067,2068,2076],{},[1078,2069,2070,2071,2073,2074],{},"Exactly one ",[892,2072,1747],{}," tag and one block, with the same ",[892,2075,1050],{},[1078,2077,2078],{},[892,2079,2080],{},"ui_response_malformed",[1063,2082,2083,2086],{},[1078,2084,2085],{},"The card exists, in this space, for this actor, and the answer comes from the channel the card was posted in",[1078,2087,2088],{},[892,2089,2090],{},"ui_unknown",[1063,2092,2093,2096],{},[1078,2094,2095],{},"Not answered before (forms and confirms are single-use)",[1078,2097,2098],{},[892,2099,2100],{},"ui_consumed",[1063,2102,2103,2106],{},[1078,2104,2105],{},"Not expired (forms and confirms expire after 30 minutes)",[1078,2107,2108],{},[892,2109,2110],{},"ui_expired",[1063,2112,2113,2116],{},[1078,2114,2115],{},"From the person the card was issued to",[1078,2117,2118],{},[892,2119,2120],{},"ui_wrong_author",[1063,2122,2123,2126],{},[1078,2124,2125],{},"The action is one the card offers",[1078,2127,2128],{},[892,2129,2130],{},"ui_action_not_offered",[1063,2132,2133,2136],{},[1078,2134,2135],{},"No unknown field, every required one present, values typed right and within the offered options",[1078,2137,2138,1047,2141,1047,2144],{},[892,2139,2140],{},"ui_field_unknown",[892,2142,2143],{},"ui_field_required",[892,2145,2146],{},"ui_field_invalid",[1063,2148,2149,2152],{},[1078,2150,2151],{},"A confirm, when the responder limits who may confirm, comes from one of those people",[1078,2153,2154],{},[892,2155,2156],{},"ui_confirm_not_allowed",[1063,2158,2159,2165],{},[1078,2160,2161,2162,2164],{},"At most one refresh per card every 10 s, and one ",[892,2163,1191],{}," every 2 s",[1078,2166,2167],{},[892,2168,2169],{},"ui_rate_limited",[885,2171,2172,2175,2176,2178],{},[900,2173,2174],{},"Prose never confirms."," A typed \"yes\", or a ",[892,2177,1747],{}," block typed without the tag, is an ordinary message.",[920,2180,2182],{"id":2181},"in-place-edits-kind-40003","In-place edits (kind 40003)",[885,2184,2185,2186,1047,2189,2192],{},"The server changes a posted message by publishing a kind-40003 edit of it: ",[892,2187,2188],{},"[\"h\", \u003Cchannel>]",[892,2190,2191],{},"[\"e\", \u003Cmessage id>]",", content = the new text, block included. It uses edits for:",[925,2194,2195,2210,2216],{},[928,2196,2197,2198,2200,2201,1047,2203,1047,2206,2209],{},"a refreshed or live read card (same ",[892,2199,1050],{},", new ",[892,2202,1154],{},[892,2204,2205],{},"render.refreshed_at",[892,2207,2208],{},"render.live = {every_s, until}"," while live);",[928,2211,2212,2213,2215],{},"a ",[892,2214,1593],{}," card moving through its states;",[928,2217,2218],{},"the status line below.",[885,2220,2221,2222,2224],{},"Apply an edit only when its author is the message's author. Keep the card keyed by ",[892,2223,1050],{},", so the same card updates rather than a new one appearing. Do not mark these edits as \"edited\".",[920,2226,2228],{"id":2227},"quick-replies","Quick replies",[885,2230,2231],{},"An answer may carry up to five tags:",[974,2233,2235],{"className":988,"code":2234,"language":990,"meta":980,"style":980},"[\"buzz-quick-reply\", \"Blocked tickets\"]\n",[892,2236,2237],{"__ignoreMap":980},[994,2238,2239,2241,2243,2246,2248,2250,2252,2255,2257],{"class":996,"line":997},[994,2240,1001],{"class":1000},[994,2242,1004],{"class":1000},[994,2244,2245],{"class":1007},"buzz-quick-reply",[994,2247,1004],{"class":1000},[994,2249,1012],{"class":1000},[994,2251,1015],{"class":1000},[994,2253,2254],{"class":1007},"Blocked tickets",[994,2256,1004],{"class":1000},[994,2258,1041],{"class":1000},[885,2260,2261,2262,2265],{},"Draw each as a button under that message, in tag order, as text (never HTML). Tapping one posts the label ",[900,2263,2264],{},"verbatim"," as the person's own message, in the same thread, addressed to the actor. Show them only on the newest message of the thread, and hide them once the person writes. If the relay refuses a tagged answer, the platform re-posts it without client tags, so never treat missing buttons as a signal.",[920,2267,2269],{"id":2268},"the-status-line","The status line",[885,2271,2272,2273,2276],{},"While an actor works, it may post one message with the tag ",[892,2274,2275],{},"[\"buzz-status\", \"1\"]",", edit it a few times (kind 40003) with a short progress text, and delete it (kind 5) when the answer arrives. It is not a chat message: draw it as a subdued line where the thinking indicator sits, never count it as unread, never notify on it, never let it open a thread.",[920,2278,2280],{"id":2279},"slash-commands","Slash commands",[925,2282,2283],{},[928,2284,2285,2288,2289,2292],{},[900,2286,2287],{},"Load"," an actor's commands with the ",[892,2290,2291],{},"commands"," entry point from the chat bootstrap, as the signed-in person, with the actor's relay public key:",[974,2294,2297],{"className":2295,"code":2296,"language":979,"meta":980},[977],"start the workflow named in bootstrap.entrypoints.commands with {\"actor_public_key\": \"\u003C64 hex>\", \"locale\": \"en\"}\n→ {\"commands\": [{\"command\": \"ticket-search\", \"title\": \"Ticket: search\", \"description\": \"...\", \"kind\": \"read\"}, ...]}\n",[892,2298,2296],{"__ignoreMap":980},[925,2300,2301,2318],{},[928,2302,2303,2306,2307,2310,2311,1051,2314,2317],{},[900,2304,2305],{},"Show"," a palette when the draft starts with ",[892,2308,2309],{},"/",", filtered as the person types. Mark ",[892,2312,2313],{},"read",[892,2315,2316],{},"write"," commands.",[928,2319,2320,2323,2324,2327,2328,2330],{},[900,2321,2322],{},"Send"," the text ",[892,2325,2326],{},"/\u003Ccommand>"," as an ordinary message to that actor (",[892,2329,885],{}," tag). DGI maps it to the workflow: a read runs, a write asks for its inputs.",[885,2332,2333],{},"The list is empty for a person who cannot talk to that actor. It never contains workflow types or platform ids.",[920,2335,2337],{"id":2336},"ask-your-ai-assistant","Ask your AI assistant",[974,2339,2343],{"className":2340,"code":2341,"filename":2342,"language":979,"meta":980},[977],"Using https://docs.orkestia.dev/raw/chat/option-c-custom-client.md, write a TypeScript parser that extracts the buzz-ui block and tag from a kind 9 event and returns null unless they agree.\n\nWrite a function that builds a buzz-ui-response kind 9 event for a form submit, threaded under the card and addressed to the actor.\n\nList every refusal code a structured chat answer can get and what my client should show for each.\n","prompts",[892,2344,2341],{"__ignoreMap":980},[920,2346,2348],{"id":2347},"for-ai-agents","For AI agents",[1057,2350,2351,2361],{},[1060,2352,2353],{},[1063,2354,2355,2358],{},[1066,2356,2357],{},"Rule",[1066,2359,2360],{},"Detail",[1073,2362,2363,2378,2389,2400,2418],{},[1063,2364,2365,2368],{},[1078,2366,2367],{},"Parse",[1078,2369,2370,2371,1047,2373,1047,2375,2377],{},"Require the tag and the block to agree on ",[892,2372,934],{},[892,2374,1050],{},[892,2376,1054],{},". Ignore unknown keys. Fall back to text",[1063,2379,2380,2383],{},[1078,2381,2382],{},"Trust",[1078,2384,2385,2386,2388],{},"Draw cards only from attached actors, resolved from the verified signer. Never from tags or ",[892,2387,885],{}," claims",[1063,2390,2391,2394],{},[1078,2392,2393],{},"Answer",[1078,2395,2396,2397,2399],{},"Thread under the card, ",[892,2398,885],{}," the actor, one block, one tag. Never send a confirm from typed text",[1063,2401,2402,2405],{},[1078,2403,2404],{},"Card actions",[1078,2406,2407,1047,2409,1047,2411,1047,2413,1047,2415,2417],{},[892,2408,1179],{},[892,2410,1185],{},[892,2412,1188],{},[892,2414,1182],{},[892,2416,1191],{}," are not answers: the card stays open and updates in place",[1063,2419,2420,2423],{},[1078,2421,2422],{},"Secrets",[1078,2424,2425],{},"Cards never carry secrets or platform ids. Do not add them to answers either",[2427,2428,2429],"style",{},"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);}",{"title":980,"searchDepth":997,"depth":2431,"links":2432},2,[2433,2434,2436,2451,2454,2455,2456,2457,2458,2459],{"id":922,"depth":2431,"text":923},{"id":965,"depth":2431,"text":2435},"Actor to chat: the buzz-ui block",{"id":1251,"depth":2431,"text":1097,"children":2437},[2438,2440,2441,2442,2443,2444,2445,2446,2447,2448,2449,2450],{"id":1133,"depth":2439,"text":1133},3,{"id":1147,"depth":2439,"text":1147},{"id":1057,"depth":2439,"text":1057},{"id":1527,"depth":2439,"text":1527},{"id":1544,"depth":2439,"text":1544},{"id":1557,"depth":2439,"text":1557},{"id":1573,"depth":2439,"text":1573},{"id":1593,"depth":2439,"text":1593},{"id":1610,"depth":2439,"text":1610},{"id":1195,"depth":2439,"text":1195},{"id":1647,"depth":2439,"text":1647},{"id":1662,"depth":2439,"text":1663},{"id":1714,"depth":2431,"text":1715,"children":2452},[2453],{"id":2047,"depth":2439,"text":2048},{"id":2181,"depth":2431,"text":2182},{"id":2227,"depth":2431,"text":2228},{"id":2268,"depth":2431,"text":2269},{"id":2279,"depth":2431,"text":2280},{"id":2336,"depth":2431,"text":2337},{"id":2347,"depth":2431,"text":2348},"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","md",null,{},{"icon":823},{"title":820,"description":2460},"2V7AqxAnZ7BOAAFZvjUYT8kpreqW3c9jyxmIrw5i8lQ",[2468,2470],{"title":815,"path":816,"stem":817,"description":2469,"icon":818,"children":-1},"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",{"title":825,"path":826,"stem":827,"description":2471,"icon":394,"children":-1},"Every field of buzz.actor.set-responder, how the hybrid responder hands turns to Staff, how default_inputs pre-fill and narrow reads, and what each refusal code means",1790354063585]