[{"data":1,"prerenderedAt":2086},["ShallowReactive",2],{"navigation":3,"/chat/card-catalog":879,"/chat/card-catalog-surround":2081},[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":841,"body":881,"description":2074,"extension":2075,"links":2076,"meta":2077,"navigation":2078,"path":842,"seo":2079,"stem":843,"__hash__":2080},"docs/24.chat/19.card-catalog.md",{"type":882,"value":883,"toc":2040},"minimark",[884,916,921,1010,1014,1093,1097,1102,1146,1181,1185,1188,1201,1242,1246,1255,1260,1269,1273,1277,1280,1330,1335,1345,1350,1355,1360,1365,1370,1373,1378,1381,1386,1402,1406,1415,1419,1438,1463,1468,1474,1499,1503,1522,1608,1611,1615,1621,1670,1680,1685,1693,1697,1704,1728,1733,1736,1760,1767,1785,1896,1899,1907,1951,1963,1967,1976,1980],[885,886,887,888,892,893,899,900,903,904,907,908,910,911,915],"p",{},"A card is one JSON object, the same everywhere: DGI returns it as ",[889,890,891],"code",{},"ui"," from ",[894,895,896],"a",{"href":838},[889,897,898],{},"dgi.chat.turn",", and a Buzz actor posts it inside its ",[889,901,902],{},"buzz-ui"," block (",[894,905,906],{"href":821},"Option C","). This page lists every renderer, what it draws, and the answers it sends. Structured chat is part of ",[894,909,851],{"href":59}," and is ",[912,913,914],"strong",{},"Alpha",".",[917,918,920],"h2",{"id":919},"rules-for-every-card","Rules for every card",[922,923,924,931,949,959,987,1004],"ul",{},[925,926,927,930],"li",{},[912,928,929],{},"Built in code, never by a model."," DGI builds each card from its typed output and from the full result of the read. Chart and KPI numbers come from data.",[925,932,933,936,937,940,941,944,945,948],{},[912,934,935],{},"Views are chosen by the shape of the data."," Jev picks the view from what the read returned: a record becomes a ",[889,938,939],{},"detail",", a long list a ",[889,942,943],{},"datagrid",", nodes and edges a ",[889,946,947],{},"dag",". An explicit request (\"as a chart\"), a form, a confirm or a build always wins.",[925,950,951,954,955,958],{},[912,952,953],{},"Offered actions only."," A card sends an action only when its ",[889,956,957],{},"actions"," list offers it. Otherwise the control shows disabled, or not at all.",[925,960,961,964,965,968,969,972,973,972,976,972,979,982,983,986],{},[912,962,963],{},"Opaque refs, never ids."," Rows, nodes, tables, related lists, saved queries and timeline items carry a ",[889,966,967],{},"ref"," such as ",[889,970,971],{},"r1",", ",[889,974,975],{},"n2",[889,977,978],{},"t3",[889,980,981],{},"rel1"," or ",[889,984,985],{},"sq1",". The client sends it back and never draws it. What it stands for stays on the server.",[925,988,989,992,993,972,996,999,1000,1003],{},[912,990,991],{},"Prompts and views."," ",[889,994,995],{},"form",[889,997,998],{},"confirm"," and ",[889,1001,1002],{},"select"," are prompts: answered once, within 30 minutes. Every other card is a view: it never expires in the client, and nothing sent from it consumes it.",[925,1005,1006,1009],{},[912,1007,1008],{},"Unknown renderer: show the text."," The text that comes with a card always stands on its own.",[917,1011,1013],{"id":1012},"where-each-card-is-drawn","Where each card is drawn",[1015,1016,1017,1030],"table",{},[1018,1019,1020],"thead",{},[1021,1022,1023,1027],"tr",{},[1024,1025,1026],"th",{},"Client",[1024,1028,1029],{},"Cards",[1031,1032,1033,1054,1072],"tbody",{},[1021,1034,1035,1043],{},[1036,1037,1038,1039,1042],"td",{},"Hosted chat page (",[894,1040,1041],{"href":812},"Option A",")",[1036,1044,1045,1046,1049,1050,1053],{},"All of them. The newer views need the current page: run ",[889,1047,1048],{},"buzz.space.publish-chat"," (with ",[889,1051,1052],{},"also_site_slug: true"," when people use the slug address) after an upgrade",[1021,1055,1056,1065],{},[1036,1057,1058,1061,1062,1042],{},[889,1059,1060],{},"\u003CBuzzChat>"," (",[894,1063,1064],{"href":816},"Option B",[1036,1066,1067,1068,1071],{},"All of them from ",[889,1069,1070],{},"@ltinteg/app-component-chat"," 0.9.0. Earlier versions draw the newer views as text",[1021,1073,1074,1082],{},[1036,1075,1076,1077,972,1079,1042],{},"Your own client (",[894,1078,906],{"href":821},[894,1080,1081],{"href":838},"Option D",[1036,1083,1084,1085,1088,1089,1092],{},"What you implement. ",[889,1086,1087],{},"document"," is returned by ",[889,1090,1091],{},"dgi.chat.*"," only",[917,1094,1096],{"id":1095},"prompts","Prompts",[1098,1099,1100],"h3",{"id":995},[889,1101,995],{},[885,1103,1104,1105,972,1108,972,1111,972,1114,972,1117,972,1120,972,1123,972,1126,972,1128,972,1131,972,1134,1137,1138,1141,1142,1145],{},"Asks for the typed inputs of a workflow. Field types: ",[889,1106,1107],{},"text",[889,1109,1110],{},"textarea",[889,1112,1113],{},"number",[889,1115,1116],{},"email",[889,1118,1119],{},"url",[889,1121,1122],{},"date",[889,1124,1125],{},"time",[889,1127,1002],{},[889,1129,1130],{},"multiselect",[889,1132,1133],{},"boolean",[889,1135,1136],{},"file",". Required fields are marked, and submit stays disabled until they are filled. Long forms become a wizard (",[889,1139,1140],{},"pending_input.steps",", \"Step n of m\"), and a form can open in a dialog (",[889,1143,1144],{},"surface: \"modal\"","). A file field uploads through the chat's own media host and submits the resulting https URL.",[1015,1147,1148,1158],{},[1018,1149,1150],{},[1021,1151,1152,1155],{},[1024,1153,1154],{},"The person can",[1024,1156,1157],{},"Sends",[1031,1159,1160,1171],{},[1021,1161,1162,1165],{},[1036,1163,1164],{},"Fill and submit",[1036,1166,1167,1170],{},[889,1168,1169],{},"submit"," with the values. Empty fields are left out; booleans are always sent",[1021,1172,1173,1176],{},[1036,1174,1175],{},"Cancel",[1036,1177,1178],{},[889,1179,1180],{},"cancel",[1098,1182,1183],{"id":998},[889,1184,998],{},[885,1186,1187],{},"Shows a proposed change before it runs: a one-line summary, the workflow, and its inputs as plain labels. A destructive action is styled as a warning.",[885,1189,1190,1193,1194,1197,1198,915],{},[912,1191,1192],{},"With a diff."," Every update-style proposal carries ",[889,1195,1196],{},"pending_action.diff",": the current values (read with the matching get workflow, as the caller, when one exists) next to the proposed ones. The card shows the diff in place of the plain input list. Without a matching get, the diff says the current values were not read. Ids and fields named like a secret never show. The diff is display only: the confirm still runs the stored input and its ",[889,1199,1200],{},"action_input_hash",[1015,1202,1203,1211],{},[1018,1204,1205],{},[1021,1206,1207,1209],{},[1024,1208,1154],{},[1024,1210,1157],{},[1031,1212,1213,1223,1231],{},[1021,1214,1215,1218],{},[1036,1216,1217],{},"Confirm",[1036,1219,1220,1222],{},[889,1221,998],{},". The server runs its own stored copy; values are ignored",[1021,1224,1225,1227],{},[1036,1226,1175],{},[1036,1228,1229],{},[889,1230,1180],{},[1021,1232,1233,1236],{},[1036,1234,1235],{},"Edit, when offered",[1036,1237,1238,1241],{},[889,1239,1240],{},"edit"," with the changed inputs. DGI proposes again on a new card, with a new hash",[1098,1243,1244],{"id":1002},[889,1245,1002],{},[885,1247,1248,1249,1251,1252,915],{},"Pick one option, drawn as buttons or a dropdown. Sends ",[889,1250,1002],{}," with ",[889,1253,1254],{},"{value, label, prompt?}",[1098,1256,1258],{"id":1257},"actionlist",[889,1259,1257],{},[885,1261,1262,1263,1265,1266,915],{},"A list of items, each with a title, a subtitle and its own buttons. Sends ",[889,1264,1002],{}," with the item's index as ",[889,1267,1268],{},"item",[917,1270,1272],{"id":1271},"views","Views",[1098,1274,1275],{"id":1015},[889,1276,1015],{},[885,1278,1279],{},"Rows from a read, with a toolbar (Refresh, and Live in the Buzz chat) and up to 4 row actions per row, such as Details, Comment or Assign. On a narrow card each row gets a menu instead of inline buttons.",[1015,1281,1282,1290],{},[1018,1283,1284],{},[1021,1285,1286,1288],{},[1024,1287,1154],{},[1024,1289,1157],{},[1031,1291,1292,1303,1316],{},[1021,1293,1294,1297],{},[1036,1295,1296],{},"Refresh",[1036,1298,1299,1302],{},[889,1300,1301],{},"refresh",". The card is rewritten in place",[1021,1304,1305,1308],{},[1036,1306,1307],{},"Live, Stop (Buzz chat only)",[1036,1309,1310,972,1313],{},[889,1311,1312],{},"live",[889,1314,1315],{},"stop",[1021,1317,1318,1321],{},[1036,1319,1320],{},"Press a row action",[1036,1322,1323,1251,1326,1329],{},[889,1324,1325],{},"row_action",[889,1327,1328],{},"{row, action}",". A read shows its view; a write asks with a form or proposes a confirm",[1098,1331,1333],{"id":1332},"chart",[889,1334,1332],{},[885,1336,1337,1338,1340,1341,999,1343,915],{},"A bar, line or pie chart, drawn inline, with a legend and a hidden data table for screen readers. At most 6 series and 60 points. A read with a time column, one to six number columns and 3 to 60 rows becomes a line chart by itself. Bar and pie charts keep the top points (12 by default) and group the rest as \"Other\". Card actions: ",[889,1339,1301],{},", and in the Buzz chat ",[889,1342,1312],{},[889,1344,1315],{},[1098,1346,1348],{"id":1347},"kpi",[889,1349,1347],{},[885,1351,1352,1353,915],{},"Up to 8 tiles, each with a value, a unit, a delta and a trend arrow (up, down or flat). A total that hits the read's own limit is labeled as capped, for example \"Total (capped at 500)\". Card actions as for ",[889,1354,1332],{},[1098,1356,1358],{"id":1357},"logs",[889,1359,1357],{},[885,1361,1362,1363,915],{},"Monospace text, scrollable, with a copy button. At most 12,000 characters. Card actions as for ",[889,1364,1332],{},[1098,1366,1368],{"id":1367},"run",[889,1369,1367],{},[885,1371,1372],{},"A live card for a workflow run DGI started in this conversation, usually right after a confirm: status, current state, steps and times. It updates in place until the run ends. A failure shows a short code, never the error text or the run's data. It accepts no answer.",[1098,1374,1376],{"id":1375},"link",[889,1377,1375],{},[885,1379,1380],{},"One button that opens an https address in a new tab, for example to set up a connection in the console. Only addresses on the organization console are posted. It accepts no answer.",[1098,1382,1384],{"id":1383},"composition",[889,1385,1383],{},[885,1387,1388,1389,1392,1393,1396,1397,1049,1399,1401],{},"The step list of a composition you are editing, with actions per step and for the whole plan. It appears only for replies that run as an organization member with ",[889,1390,1391],{},"compose"," on. When the steps carry ",[889,1394,1395],{},"edges",", the plan draws as a diagram, with a switch back to the list. Step and plan actions send ",[889,1398,1002],{},[889,1400,1268],{}," for a step's action).",[1098,1403,1404],{"id":1087},[889,1405,1087],{},[885,1407,1408,1409,1411,1412,1414],{},"The turn's markdown ",[889,1410,1107],{},", presented as a card, for answers that are a document rather than data. Returned by ",[889,1413,1091],{},". It accepts no answer.",[1098,1416,1417],{"id":947},[889,1418,947],{},[885,1420,1421,1422,972,1425,972,1428,972,1431,972,1434,1437],{},"A workflow diagram: nodes with a status (",[889,1423,1424],{},"pending",[889,1426,1427],{},"running",[889,1429,1430],{},"succeeded",[889,1432,1433],{},"failed",[889,1435,1436],{},"skipped","), edges with optional labels, laid out left to right or top to bottom. The client supports pan, zoom and fit. At most 200 nodes and 600 edges; the rest is counted. DGI draws it from a run's DAG (with each step's status), a composition plan, or any read that returns nodes and edges.",[1015,1439,1440,1448],{},[1018,1441,1442],{},[1021,1443,1444,1446],{},[1024,1445,1154],{},[1024,1447,1157],{},[1031,1449,1450],{},[1021,1451,1452,1455],{},[1036,1453,1454],{},"Pick a node, when offered",[1036,1456,1457,1251,1459,1462],{},[889,1458,1002],{},[889,1460,1461],{},"{node: \"\u003Cref>\"}",". DGI opens what the node stands for",[1098,1464,1466],{"id":1465},"schema",[889,1467,1465],{},[885,1469,1470,1471,915],{},"An entity diagram: each table as a field list with primary and foreign key markers, and each foreign key as an edge. At most 60 tables and 40 fields per table. DGI draws it from reads that return tables with fields, such as ",[889,1472,1473],{},"data.appdata.structure.query",[1015,1475,1476,1484],{},[1018,1477,1478],{},[1021,1479,1480,1482],{},[1024,1481,1154],{},[1024,1483,1157],{},[1031,1485,1486],{},[1021,1487,1488,1491],{},[1036,1489,1490],{},"Pick a table",[1036,1492,1493,1251,1495,1498],{},[889,1494,1002],{},[889,1496,1497],{},"{node: \"\u003Ctable ref>\"}",". A table usually opens its records",[1098,1500,1501],{"id":943},[889,1502,943],{},[885,1504,1505,1506,972,1508,972,1510,972,1512,972,1515,972,1518,1521],{},"A grid paged by the server, for results larger than a table shows (more than 50 rows) or reads that page themselves. Columns are typed (",[889,1507,1107],{},[889,1509,1113],{},[889,1511,1122],{},[889,1513,1514],{},"bool",[889,1516,1517],{},"json",[889,1519,1520],{},"badge",") and each says whether it is sortable and filterable. 50 rows a page, at most 500 rows and 40 columns per page. The client offers copy cell and a CSV export of the current page.",[1015,1523,1524,1532],{},[1018,1525,1526],{},[1021,1527,1528,1530],{},[1024,1529,1154],{},[1024,1531,1157],{},[1031,1533,1534,1547,1563,1576,1597],{},[1021,1535,1536,1539],{},[1036,1537,1538],{},"Sort by a sortable column",[1036,1540,1541,1251,1544],{},[889,1542,1543],{},"query",[889,1545,1546],{},"{sort: {key, dir}}",[1021,1548,1549,1552],{},[1036,1550,1551],{},"Filter a filterable column",[1036,1553,1554,1251,1556,1061,1559,1562],{},[889,1555,1543],{},[889,1557,1558],{},"{filters: {column: text}}",[889,1560,1561],{},"{}"," clears)",[1021,1564,1565,1568],{},[1036,1566,1567],{},"Go to the next or previous page",[1036,1569,1570,1251,1572,1575],{},[889,1571,1543],{},[889,1573,1574],{},"{cursor}",", a cursor the card issued",[1021,1577,1578,1581],{},[1036,1579,1580],{},"Open a row",[1036,1582,1583,1584,1587,1588,1591,1592,1251,1594],{},"The row action whose ",[889,1585,1586],{},"key"," is ",[889,1589,1590],{},"open",": ",[889,1593,1325],{},[889,1595,1596],{},"{row, action, ref}",[1021,1598,1599,1602],{},[1036,1600,1601],{},"Press another row action",[1036,1603,1604,1251,1606],{},[889,1605,1325],{},[889,1607,1596],{},[885,1609,1610],{},"Sorting, filtering and paging never happen in the client: the server re-runs the stored read and rewrites the card in place. A total that hit a cap reads \"N of 1,000+\".",[1098,1612,1613],{"id":1543},[889,1614,1543],{},[885,1616,1617,1618,1620],{},"A read-only SQL console over AppData, for organization members only. The statement editor sits above the result, drawn as a ",[889,1619,943],{}," with its own paging. It always shows a \"Read-only\" badge; a console that is not read-only is never drawn.",[1015,1622,1623,1631],{},[1018,1624,1625],{},[1021,1626,1627,1629],{},[1024,1628,1154],{},[1024,1630,1157],{},[1031,1632,1633,1646,1658],{},[1021,1634,1635,1638],{},[1036,1636,1637],{},"Run the statement",[1036,1639,1640,1251,1642,1645],{},[889,1641,1169],{},[889,1643,1644],{},"{statement}",", their own text, up to 16,384 characters",[1021,1647,1648,1651],{},[1036,1649,1650],{},"Pick a saved query",[1036,1652,1653,1251,1655],{},[889,1654,1002],{},[889,1656,1657],{},"{saved: \"\u003Cref>\"}",[1021,1659,1660,1663],{},[1036,1661,1662],{},"Sort, filter or page the result",[1036,1664,1665,1667,1668],{},[889,1666,1543],{},", as on a ",[889,1669,943],{},[885,1671,1672,1673,1676,1677,915],{},"DGI never runs SQL a model wrote. When a model or Jev tries to start the query workflow, the console opens with the statement filled in, ",[912,1674,1675],{},"not run",". A statement runs only when the person presses Run or picks a saved query. A refused or failed statement comes back on the card as ",[889,1678,1679],{},"error",[1098,1681,1683],{"id":1682},"diff",[889,1684,1682],{},[885,1686,1687,1688,1690,1691,915],{},"Before and after, per field: the removed value struck through, the added one highlighted, numbers with their delta, and unchanged fields collapsed. At most 100 fields. It accepts no answer. The same shape appears inside a ",[889,1689,998],{}," card as ",[889,1692,1196],{},[1098,1694,1695],{"id":939},[889,1696,939],{},[885,1698,1699,1700,1703],{},"One record: a title, a subtitle, up to 8 badges, up to 20 sections of labeled fields, and up to 20 related lists with a count. DGI draws it for a single record, such as the result of a ",[889,1701,1702],{},"*.get"," read.",[1015,1705,1706,1714],{},[1018,1707,1708],{},[1021,1709,1710,1712],{},[1024,1711,1154],{},[1024,1713,1157],{},[1031,1715,1716],{},[1021,1717,1718,1721],{},[1036,1719,1720],{},"Open a related list",[1036,1722,1723,1251,1725],{},[889,1724,1002],{},[889,1726,1727],{},"{related: \"\u003Cref>\"}",[1098,1729,1731],{"id":1730},"timeline",[889,1732,1730],{},[885,1734,1735],{},"A waterfall: bars on a relative time axis, nested by depth (0 to 8), each with a status. An item still running draws to the end of the window. At most 300 items. DGI draws it from reads that return spans or steps with a start and an end, such as a trace.",[1015,1737,1738,1746],{},[1018,1739,1740],{},[1021,1741,1742,1744],{},[1024,1743,1154],{},[1024,1745,1157],{},[1031,1747,1748],{},[1021,1749,1750,1753],{},[1036,1751,1752],{},"Pick an item",[1036,1754,1755,1251,1757],{},[889,1756,1002],{},[889,1758,1759],{},"{item: \"\u003Cref>\"}",[917,1761,1763,1764,1766],{"id":1762},"view-controls-and-the-query-action","View controls and the ",[889,1765,1543],{}," action",[885,1768,1769,1770,972,1772,972,1774,972,1776,972,1778,1780,1781,1784],{},"A read card (",[889,1771,1015],{},[889,1773,1332],{},[889,1775,1347],{},[889,1777,943],{},[889,1779,1730],{},") can carry ",[889,1782,1783],{},"controls",", drawn as a compact bar under the title. DGI adds a control only for an input the read itself declares:",[1015,1786,1787,1804],{},[1018,1788,1789],{},[1021,1790,1791,1794,1799,1802],{},[1024,1792,1793],{},"Control",[1024,1795,1796],{},[889,1797,1798],{},"kind",[1024,1800,1801],{},"Appears for",[1024,1803,1157],{},[1031,1805,1806,1838,1859,1881],{},[1021,1807,1808,1811,1816,1832],{},[1036,1809,1810],{},"Date range",[1036,1812,1813],{},[889,1814,1815],{},"date_range",[1036,1817,1818,1819,999,1822,1825,1826,999,1829,1042],{},"A ",[889,1820,1821],{},"since",[889,1823,1824],{},"until"," pair (or ",[889,1827,1828],{},"from",[889,1830,1831],{},"to",[1036,1833,1834,1837],{},[889,1835,1836],{},"{params: {\u003Ckey>: {from, to}}}",", in order, at most 366 days",[1021,1839,1840,1843,1848,1854],{},[1036,1841,1842],{},"Relative range",[1036,1844,1845],{},[889,1846,1847],{},"segmented",[1036,1849,1850,1851,1853],{},"A lone ",[889,1852,1821],{},": 24h, 7d, 30d or 90d, recomputed at every rerun",[1036,1855,1856],{},[889,1857,1858],{},"{params: {\u003Ckey>: \"\u003Cvalue>\"}}",[1021,1860,1861,1864,1871,1878],{},[1036,1862,1863],{},"Segmented or chips",[1036,1865,1866,972,1868],{},[889,1867,1847],{},[889,1869,1870],{},"chips",[1036,1872,1873,1874,1877],{},"An enum input such as ",[889,1875,1876],{},"status"," (segmented includes All)",[1036,1879,1880],{},"A string, or the full list for chips",[1021,1882,1883,1886,1890,1893],{},[1036,1884,1885],{},"Group by",[1036,1887,1888],{},[889,1889,1847],{},[1036,1891,1892],{},"A chart or KPI",[1036,1894,1895],{},"The field to group by",[885,1897,1898],{},"At most 6 controls of 12 options each.",[885,1900,1901,1902,1906],{},"Every change sends the ",[912,1903,1904],{},[889,1905,1543],{}," card action. Its rules:",[922,1908,1909,1916,1939,1942,1945],{},[925,1910,1911,1912,1915],{},"It never consumes the card. The server answers by rewriting the same card in place (same ",[889,1913,1914],{},"ui_id","), like a refresh.",[925,1917,1918,1919,992,1922,982,1925,1928,1929,972,1932,982,1935,1938],{},"Everything is checked against the stored card: a sort key must be a sortable column and ",[889,1920,1921],{},"dir",[889,1923,1924],{},"asc",[889,1926,1927],{},"desc","; a filter key a filterable column (up to 200 characters); a cursor one this card issued for its current page; a param key one of the card's controls and its value one of that control's options. Anything else is refused (",[889,1930,1931],{},"ui_field_invalid",[889,1933,1934],{},"ui_field_unknown",[889,1936,1937],{},"ui_action_not_offered",").",[925,1940,1941],{},"The read is re-run with only those values. A read that pages itself gets the offset or cursor, and its own sort and filters when it declares them. Any other read is fetched whole and DGI sorts, filters and pages it, 50 rows a page.",[925,1943,1944],{},"The card's columns, controls and row actions never move on a rerun.",[925,1946,1947,1948,1938],{},"At most one query every 2 seconds per card (",[889,1949,1950],{},"ui_rate_limited",[885,1952,1953,1954,1956,1957,1960,1961,915],{},"Living Surfaces take the same ",[889,1955,1543],{}," action through ",[889,1958,1959],{},"dgi.surface.tick"," signals. See ",[894,1962,846],{"href":847},[917,1964,1966],{"id":1965},"ask-your-ai-assistant","Ask your AI assistant",[1968,1969,1974],"pre",{"className":1970,"code":1972,"filename":1095,"language":1107,"meta":1973},[1971],"language-text","Using https://docs.orkestia.dev/raw/chat/card-catalog.md, write a React renderer for the datagrid card that sends the query action for sort, filter and paging and never sorts locally.\n\nWhich card will DGI return for the output of ticket.get, and what can the person do with it?\n\nList every card that can be answered more than once, and explain why a confirm cannot.\n","",[889,1975,1972],{"__ignoreMap":1973},[917,1977,1979],{"id":1978},"for-ai-agents","For AI agents",[1015,1981,1982,1992],{},[1018,1983,1984],{},[1021,1985,1986,1989],{},[1024,1987,1988],{},"Rule",[1024,1990,1991],{},"Detail",[1031,1993,1994,2002,2010,2021,2029],{},[1021,1995,1996,1999],{},[1036,1997,1998],{},"Draw",[1036,2000,2001],{},"Treat every value in a card as untrusted text. Never render markdown or HTML inside a card, and open only https links",[1021,2003,2004,2007],{},[1036,2005,2006],{},"Refs",[1036,2008,2009],{},"Send refs back unchanged. Never display them, and never put an id in their place",[1021,2011,2012,2015],{},[1036,2013,2014],{},"Query",[1036,2016,2017,2018,2020],{},"Use the ",[889,2019,1543],{}," action for sort, filter, paging and controls. Never sort or filter a server-paged grid in the client",[1021,2022,2023,2026],{},[1036,2024,2025],{},"SQL",[1036,2027,2028],{},"Never run a statement for the user. Fill the console and let the person press Run",[1021,2030,2031,2034],{},[1036,2032,2033],{},"Confirms",[1036,2035,2036,2037,2039],{},"A confirm card runs only when the person presses Confirm. A ",[889,2038,1682],{}," is display only",{"title":1973,"searchDepth":2041,"depth":2042,"links":2043},1,2,[2044,2045,2046,2053,2070,2072,2073],{"id":919,"depth":2042,"text":920},{"id":1012,"depth":2042,"text":1013},{"id":1095,"depth":2042,"text":1096,"children":2047},[2048,2050,2051,2052],{"id":995,"depth":2049,"text":995},3,{"id":998,"depth":2049,"text":998},{"id":1002,"depth":2049,"text":1002},{"id":1257,"depth":2049,"text":1257},{"id":1271,"depth":2042,"text":1272,"children":2054},[2055,2056,2057,2058,2059,2060,2061,2062,2063,2064,2065,2066,2067,2068,2069],{"id":1015,"depth":2049,"text":1015},{"id":1332,"depth":2049,"text":1332},{"id":1347,"depth":2049,"text":1347},{"id":1357,"depth":2049,"text":1357},{"id":1367,"depth":2049,"text":1367},{"id":1375,"depth":2049,"text":1375},{"id":1383,"depth":2049,"text":1383},{"id":1087,"depth":2049,"text":1087},{"id":947,"depth":2049,"text":947},{"id":1465,"depth":2049,"text":1465},{"id":943,"depth":2049,"text":943},{"id":1543,"depth":2049,"text":1543},{"id":1682,"depth":2049,"text":1682},{"id":939,"depth":2049,"text":939},{"id":1730,"depth":2049,"text":1730},{"id":1762,"depth":2042,"text":2071},"View controls and the query action",{"id":1965,"depth":2042,"text":1966},{"id":1978,"depth":2042,"text":1979},"Every structured chat card DGI can return, what it shows and what the person can do with it. Forms, confirms with a diff, tables, charts, KPI tiles, logs, runs, links, compositions, documents, and the DAG, schema, datagrid, query console, diff, detail and timeline views, plus view controls and the query action","md",null,{},{"icon":844},{"title":841,"description":2074},"gcrymEHWhyRaLDIqBYwEhGym3j-w3Tat8mOJSuihTq0",[2082,2084],{"title":837,"path":838,"stem":839,"description":2083,"icon":181,"children":-1},"Put DGI's structured chat in any web app, mobile app, support widget or backend with four workflows. Save a profile, send a turn, answer the card, and read the card contract as JSON Schema. Jev first, the LLM off by default, and every write behind a stored confirm",{"title":846,"path":847,"stem":848,"description":2085,"icon":849,"children":-1},"A page of live cards that DGI grows, keeps current and retires by itself. Create, tick, signal, read, list, archive and crystallize a surface with dgi.surface.*, set its policy, run its heartbeat, and follow its patch stream over a WebSocket",1790354064522]