[{"data":1,"prerenderedAt":3411},["ShallowReactive",2],{"navigation":3,"/sdks/lumen-pulse":1197,"/sdks/lumen-pulse-surround":3406},[4,45,67,118,136,209,230],{"title":5,"path":6,"stem":7,"children":8,"icon":10},"Use it","/use","00.use/1.index",[9,11,16,21,26,30,35,40],{"title":5,"path":6,"stem":7,"icon":10},"i-lucide-list-checks",{"title":12,"path":13,"stem":14,"icon":15},"Run a workflow from an assistant","/use/run-from-an-assistant","00.use/2.run-from-an-assistant","i-lucide-bot",{"title":17,"path":18,"stem":19,"icon":20},"Connect a cloud and use it","/use/connect-a-cloud","00.use/3.connect-a-cloud","i-lucide-cloud",{"title":22,"path":23,"stem":24,"icon":25},"Put Orkestia in your app","/use/in-your-app","00.use/4.in-your-app","i-lucide-key-round",{"title":27,"path":28,"stem":29,"icon":15},"Stand up an actor","/use/stand-up-an-actor","00.use/5.stand-up-an-actor",{"title":31,"path":32,"stem":33,"icon":34},"Operate a run","/use/operate-a-run","00.use/6.operate-a-run","i-lucide-activity",{"title":36,"path":37,"stem":38,"icon":39},"Work from the desktop app","/use/work-from-the-desktop-app","00.use/7.work-from-the-desktop-app","i-lucide-app-window",{"title":41,"path":42,"stem":43,"icon":44},"Let an agent use your browser","/use/let-an-agent-use-your-browser","00.use/8.let-an-agent-use-your-browser","i-lucide-globe",{"title":46,"path":47,"stem":48,"children":49,"icon":52},"Getting Started","/getting-started","02.getting-started/1.index",[50,53,58,63],{"title":51,"path":47,"stem":48,"icon":52},"Quick Start","i-lucide-rocket",{"title":54,"path":55,"stem":56,"icon":57},"Architecture Overview","/getting-started/architecture-overview","02.getting-started/2.architecture-overview","i-lucide-layout-dashboard",{"title":59,"path":60,"stem":61,"icon":62},"Concepts at a Glance","/getting-started/concepts","02.getting-started/3.concepts","i-lucide-list",{"title":64,"path":65,"stem":66,"icon":15},"Connect an AI Assistant","/getting-started/connect-an-ai-assistant","02.getting-started/4.connect-an-ai-assistant",{"title":68,"path":69,"stem":70,"children":71,"icon":73},"Guides","/guides","04.guides/1.index",[72,74,79,84,89,94,99,104,109,113],{"title":68,"path":69,"stem":70,"icon":73},"i-lucide-compass",{"title":75,"path":76,"stem":77,"icon":78},"Receive webhooks with a re-query","/guides/webhooks-with-requery","04.guides/10.webhooks-with-requery","i-lucide-webhook",{"title":80,"path":81,"stem":82,"icon":83},"Keep scheduled compositions cheap","/guides/composition-runtime-cost","04.guides/11.composition-runtime-cost","i-lucide-gauge",{"title":85,"path":86,"stem":87,"icon":88},"Building with DGI","/guides/building-with-dgi","04.guides/2.building-with-dgi","i-lucide-brain-circuit",{"title":90,"path":91,"stem":92,"icon":93},"Creating & Exposing Virtual Workflows","/guides/virtual-workflows","04.guides/4.virtual-workflows","i-lucide-blocks",{"title":95,"path":96,"stem":97,"icon":98},"Runner Management & Provisioning","/guides/runner-management","04.guides/5.runner-management","i-lucide-server",{"title":100,"path":101,"stem":102,"icon":103},"Security & Compliance","/guides/security-and-compliance","04.guides/7.security-and-compliance","i-lucide-shield",{"title":105,"path":106,"stem":107,"icon":108},"Tickets & Software Delivery","/guides/tickets-and-software-delivery","04.guides/8.tickets-and-software-delivery","i-lucide-ticket",{"title":110,"path":111,"stem":112},"Orkestia for AI-driven cloud infrastructure automation","/guides/cloud-automation-alternatives","04.guides/9.cloud-automation-alternatives",{"title":114,"path":115,"stem":116,"icon":117},"Typed decisions with TypeSafe","/guides/typed-decisions-with-typesafe","04.guides/9.typed-decisions-with-typesafe","i-lucide-git-branch",{"title":119,"path":120,"stem":121,"children":122,"icon":125},"Introduction","/introduction","01.introduction/1.index",[123,126,131],{"title":124,"path":120,"stem":121,"icon":125},"What is Orkestia?","i-lucide-sparkles",{"title":127,"path":128,"stem":129,"icon":130},"Core Philosophy","/introduction/core-philosophy","01.introduction/2.core-philosophy","i-lucide-shield-check",{"title":132,"path":133,"stem":134,"icon":135},"Key Benefits","/introduction/key-benefits","01.introduction/3.key-benefits","i-lucide-trophy",{"title":137,"path":138,"stem":139,"children":140,"icon":142},"Core Concepts","/concepts","03.concepts/01.index",[141,143,148,153,158,163,167,172,176,181,186,191,195,200,204],{"title":137,"path":138,"stem":139,"icon":142},"i-lucide-book-open",{"title":144,"path":145,"stem":146,"icon":147},"Workflows","/concepts/workflows","03.concepts/02.workflows","i-lucide-workflow",{"title":149,"path":150,"stem":151,"icon":152},"DGI — Dialog Generative Interface","/concepts/dgi","03.concepts/03.dgi","i-lucide-brain",{"title":154,"path":155,"stem":156,"icon":157},"How DGI works","/concepts/dgi-how-it-works","03.concepts/03.dgi-how-it-works","i-lucide-cpu",{"title":159,"path":160,"stem":161,"icon":162},"Staff & AI Workforce Governance","/concepts/staff-governance","03.concepts/04.staff-governance","i-lucide-users-round",{"title":164,"path":165,"stem":166,"icon":15},"Agents — the execution substrate","/concepts/agents-platform","03.concepts/05.agents-platform",{"title":168,"path":169,"stem":170,"icon":171},"Runners & Execution Environments","/concepts/runners","03.concepts/06.runners","i-lucide-server-cog",{"title":173,"path":174,"stem":175,"icon":34},"Lumen Observability","/concepts/lumen","03.concepts/07.lumen",{"title":177,"path":178,"stem":179,"icon":180},"Identity & Multi-Tenancy","/concepts/identity-multi-tenancy","03.concepts/08.identity-multi-tenancy","i-lucide-users",{"title":182,"path":183,"stem":184,"icon":185},"Billing, Pricing & Seats","/concepts/billing-and-seats","03.concepts/09.billing-and-seats","i-lucide-credit-card",{"title":187,"path":188,"stem":189,"icon":190},"App Data","/concepts/appdata","03.concepts/10.appdata","i-lucide-database",{"title":192,"path":193,"stem":194,"icon":152},"Engram","/concepts/engram","03.concepts/11.engram",{"title":196,"path":197,"stem":198,"icon":199},"DevKit","/concepts/devkit","03.concepts/12.devkit","i-lucide-terminal",{"title":201,"path":202,"stem":203,"icon":44},"App Host","/concepts/app-host","03.concepts/13.app-host",{"title":205,"path":206,"stem":207,"icon":208},"Agent Exchange","/concepts/agent-exchange","03.concepts/14.agent-exchange","i-lucide-landmark",{"title":210,"path":211,"stem":212,"children":213,"icon":215},"Reference","/reference","05.reference/1.index",[214,216,221,225],{"title":210,"path":211,"stem":212,"icon":215},"i-lucide-library",{"title":217,"path":218,"stem":219,"icon":220},"MCP Integration","/reference/mcp-integration","05.reference/3.mcp-integration","i-lucide-plug-zap",{"title":222,"path":223,"stem":224,"icon":199},"API & Tooling","/reference/api-tooling","05.reference/4.api-tooling",{"title":226,"path":227,"stem":228,"icon":229},"Platform Services","/reference/platform-services","05.reference/7.platform-services","i-lucide-boxes",{"title":231,"path":232,"icon":215,"children":233},"Product pages","/product-pages",[234,261,282,311,346,369,412,439,472,495,565,590,636,650,672,742,785,808,820,910,938,986,1013,1049,1135,1153,1165,1184,1191],{"title":235,"path":236,"stem":237,"children":238,"icon":240},"Advanced Topics","/advanced","06.advanced/1.index",[239,241,246,251,256],{"title":235,"path":236,"stem":237,"icon":240},"i-lucide-flask-conical",{"title":242,"path":243,"stem":244,"icon":245},"Hybrid AI + Deterministic Execution","/advanced/hybrid-execution-model","06.advanced/2.hybrid-execution-model","i-lucide-git-merge",{"title":247,"path":248,"stem":249,"icon":250},"Drift Detection & Self-Healing","/advanced/drift-detection-self-healing","06.advanced/3.drift-detection-self-healing","i-lucide-heart-pulse",{"title":252,"path":253,"stem":254,"icon":255},"Governance & Approvals","/advanced/governance-and-approvals","06.advanced/4.governance-and-approvals","i-lucide-scale",{"title":257,"path":258,"stem":259,"icon":260},"Cost & Performance Optimization","/advanced/cost-and-performance","06.advanced/5.cost-and-performance","i-lucide-zap",{"title":262,"path":263,"stem":264,"children":265,"icon":267},"Operations","/operations","07.operations/1.index",[266,268,272,277],{"title":262,"path":263,"stem":264,"icon":267},"i-lucide-settings-2",{"title":269,"path":270,"stem":271,"icon":229},"Deployment Models","/operations/deployment-models","07.operations/2.deployment-models",{"title":273,"path":274,"stem":275,"icon":276},"Monitoring & Debugging","/operations/monitoring-and-debugging","07.operations/3.monitoring-and-debugging","i-lucide-bug",{"title":278,"path":279,"stem":280,"icon":281},"Best Practices","/operations/best-practices","07.operations/4.best-practices","i-lucide-check-check",{"title":283,"path":284,"stem":285,"children":286,"icon":288},"AWS Connections","/aws-connections","08.aws-connections/1.index",[287,289,292,297,302,307],{"title":283,"path":284,"stem":285,"icon":288},"i-simple-icons-amazonaws",{"title":46,"path":290,"stem":291,"icon":52},"/aws-connections/getting-started","08.aws-connections/2.getting-started",{"title":293,"path":294,"stem":295,"icon":296},"Setup Methods","/aws-connections/setup-methods","08.aws-connections/3.setup-methods","i-lucide-wrench",{"title":298,"path":299,"stem":300,"icon":301},"Managing Connections","/aws-connections/managing-connections","08.aws-connections/4.managing-connections","i-lucide-settings",{"title":303,"path":304,"stem":305,"icon":306},"Security Best Practices","/aws-connections/security-best-practices","08.aws-connections/5.security-best-practices","i-lucide-lock",{"title":308,"path":309,"stem":310,"icon":276},"Troubleshooting","/aws-connections/troubleshooting","08.aws-connections/6.troubleshooting",{"title":312,"path":313,"stem":314,"children":315,"icon":317},"Cloud Connections","/cloud-connections","09.cloud-connections/1.index",[316,318,323,328,332,337,341],{"title":312,"path":313,"stem":314,"icon":317},"i-lucide-cable",{"title":319,"path":320,"stem":321,"icon":322},"Google Cloud (GCP)","/cloud-connections/gcp","09.cloud-connections/2.gcp","i-simple-icons-googlecloud",{"title":324,"path":325,"stem":326,"icon":327},"Microsoft Azure","/cloud-connections/azure","09.cloud-connections/3.azure","i-simple-icons-microsoftazure",{"title":329,"path":330,"stem":331,"icon":20},"Magalu Cloud","/cloud-connections/magalu","09.cloud-connections/4.magalu",{"title":333,"path":334,"stem":335,"icon":336},"Kubernetes","/cloud-connections/kubernetes","09.cloud-connections/5.kubernetes","i-simple-icons-kubernetes",{"title":338,"path":339,"stem":340,"icon":255},"TypeSafe","/cloud-connections/typesafe","09.cloud-connections/6.typesafe",{"title":342,"path":343,"stem":344,"icon":345},"Email mailboxes","/cloud-connections/email","09.cloud-connections/7.email","i-lucide-mail",{"title":347,"path":348,"stem":349,"children":350,"icon":98},"DNS Providers","/dns-providers","10.dns-providers/1.index",[351,353,356,359,362,366],{"title":352,"path":348,"stem":349,"icon":98},"DNS Provider Connections",{"title":46,"path":354,"stem":355,"icon":52},"/dns-providers/getting-started","10.dns-providers/2.getting-started",{"title":293,"path":357,"stem":358,"icon":296},"/dns-providers/setup-methods","10.dns-providers/3.setup-methods",{"title":298,"path":360,"stem":361,"icon":301},"/dns-providers/managing-connections","10.dns-providers/4.managing-connections",{"title":363,"path":364,"stem":365,"icon":62},"Zones and Records","/dns-providers/zones-and-records","10.dns-providers/5.zones-and-records",{"title":308,"path":367,"stem":368,"icon":276},"/dns-providers/troubleshooting","10.dns-providers/6.troubleshooting",{"title":370,"path":371,"stem":372,"children":373,"icon":52},"Cloud Deploy","/cloud-deploy","11.cloud-deploy/01.index",[374,375,378,383,387,392,396,400,405,409],{"title":370,"path":371,"stem":372,"icon":52},{"title":46,"path":376,"stem":377,"icon":52},"/cloud-deploy/getting-started","11.cloud-deploy/02.getting-started",{"title":379,"path":380,"stem":381,"icon":382},"Creating a Site","/cloud-deploy/creating-a-site","11.cloud-deploy/03.creating-a-site","i-lucide-plus-circle",{"title":384,"path":385,"stem":386,"icon":57},"Site Overview and Deployments","/cloud-deploy/site-overview","11.cloud-deploy/04.site-overview",{"title":388,"path":389,"stem":390,"icon":391},"Deployment Progress and Success","/cloud-deploy/deployment-progress","11.cloud-deploy/05.deployment-progress","i-lucide-loader",{"title":393,"path":394,"stem":395,"icon":301},"Settings","/cloud-deploy/settings","11.cloud-deploy/06.settings",{"title":397,"path":398,"stem":399,"icon":44},"Custom Domains","/cloud-deploy/custom-domains","11.cloud-deploy/07.custom-domains",{"title":401,"path":402,"stem":403,"icon":404},"Resources, Releases, and Danger Zone","/cloud-deploy/resources-releases","11.cloud-deploy/08.resources-releases","i-lucide-package",{"title":406,"path":407,"stem":408,"icon":103},"Admin Dashboard","/cloud-deploy/admin-dashboard","11.cloud-deploy/09.admin-dashboard",{"title":308,"path":410,"stem":411,"icon":276},"/cloud-deploy/troubleshooting","11.cloud-deploy/10.troubleshooting",{"title":413,"path":414,"stem":415,"children":416,"icon":419},"User Onboarding","/user-onboarding","12.user-onboarding/1.index",[417,420,423,428,432,436],{"title":418,"path":414,"stem":415,"icon":419},"User Creation and Onboarding","i-lucide-user-plus",{"title":46,"path":421,"stem":422,"icon":52},"/user-onboarding/getting-started","12.user-onboarding/2.getting-started",{"title":424,"path":425,"stem":426,"icon":427},"Creating Your Organization","/user-onboarding/onboarding","12.user-onboarding/3.onboarding","i-lucide-building-2",{"title":429,"path":430,"stem":431,"icon":345},"Invitations","/user-onboarding/invitations","12.user-onboarding/4.invitations",{"title":433,"path":434,"stem":435,"icon":301},"Managing Your Account","/user-onboarding/managing-account","12.user-onboarding/5.managing-account",{"title":308,"path":437,"stem":438,"icon":276},"/user-onboarding/troubleshooting","12.user-onboarding/6.troubleshooting",{"title":393,"path":440,"stem":441,"children":442,"icon":444},"/settings","13.settings/1.index",[443,445,450,454,459,463,467],{"title":393,"path":440,"stem":441,"icon":444},"i-lucide-sliders-horizontal",{"title":446,"path":447,"stem":448,"icon":449},"General Settings","/settings/general","13.settings/2.general","i-lucide-user",{"title":451,"path":452,"stem":453,"icon":180},"Members Settings","/settings/members","13.settings/3.members",{"title":455,"path":456,"stem":457,"icon":458},"Notifications Settings","/settings/notifications","13.settings/4.notifications","i-lucide-bell",{"title":460,"path":461,"stem":462,"icon":103},"Security Settings","/settings/security","13.settings/5.security",{"title":464,"path":465,"stem":466,"icon":25},"Signing Keys","/settings/keys","13.settings/6.keys",{"title":468,"path":469,"stem":470,"icon":471},"API Tokens","/settings/api-tokens","13.settings/7.api-tokens","i-lucide-key",{"title":473,"path":474,"stem":475,"children":476,"icon":52},"App Enablement","/app-enablement","14.app-enablement/1.index",[477,478,482,486,490],{"title":473,"path":474,"stem":475,"icon":52},{"title":479,"path":480,"stem":481,"icon":25},"Sign in with Orkestia","/app-enablement/sign-in-with-orkestia","14.app-enablement/2.sign-in-with-orkestia",{"title":483,"path":484,"stem":485,"icon":190},"End-user data","/app-enablement/end-user-data","14.app-enablement/3.end-user-data",{"title":487,"path":488,"stem":489,"icon":93},"Compositions — use, invoke, share","/app-enablement/compositions","14.app-enablement/4.compositions",{"title":491,"path":492,"stem":493,"icon":494},"Scoped SQL on your own database","/app-enablement/scoped-sql","14.app-enablement/5.scoped-sql","i-lucide-database-zap",{"title":496,"path":497,"stem":498,"children":499,"icon":34},"Lumen","/lumen","15.lumen/1.index",[500,501,506,510,515,519,523,527,532,537,542,546,550,555,560],{"title":496,"path":497,"stem":498,"icon":34},{"title":502,"path":503,"stem":504,"icon":505},"Explore and correlate","/lumen/explore-and-correlate","15.lumen/10.explore-and-correlate","i-lucide-link-2",{"title":507,"path":508,"stem":509,"icon":125},"AI analytics in the Cockpit app","/lumen/ai-analytics-in-cockpit","15.lumen/11.ai-analytics-in-cockpit",{"title":511,"path":512,"stem":513,"icon":514},"Pulse in the Cockpit app","/lumen/pulse-in-cockpit","15.lumen/12.pulse-in-cockpit","i-lucide-bar-chart-3",{"title":516,"path":517,"stem":518,"icon":444},"Rules in the Cockpit app","/lumen/rules-in-cockpit","15.lumen/13.rules-in-cockpit",{"title":520,"path":521,"stem":522,"icon":185},"Plans, usage and API keys in the Cockpit app","/lumen/plans-usage-and-keys","15.lumen/14.plans-usage-and-keys",{"title":524,"path":525,"stem":526,"icon":267},"Settings and bulk actions","/lumen/settings-and-bulk-actions","15.lumen/15.settings-and-bulk-actions",{"title":528,"path":529,"stem":530,"icon":531},"Enable Lumen","/lumen/enable","15.lumen/2.enable","i-lucide-power",{"title":533,"path":534,"stem":535,"icon":536},"Send data","/lumen/send-data","15.lumen/3.send-data","i-lucide-upload",{"title":538,"path":539,"stem":540,"icon":541},"Collector","/lumen/collector","15.lumen/4.collector","i-lucide-container",{"title":543,"path":544,"stem":545,"icon":57},"Use Lumen","/lumen/observe","15.lumen/5.observe",{"title":547,"path":548,"stem":549,"icon":15},"Lumen MCP","/lumen/mcp","15.lumen/6.mcp",{"title":551,"path":552,"stem":553,"icon":554},"Query API","/lumen/query-api","15.lumen/7.query-api","i-lucide-search",{"title":556,"path":557,"stem":558,"icon":559},"Lumen in the Cockpit app","/lumen/cockpit-mode","15.lumen/8.cockpit-mode","i-lucide-monitor-smartphone",{"title":561,"path":562,"stem":563,"icon":564},"Dashboards in the Cockpit app","/lumen/dashboards-in-cockpit","15.lumen/9.dashboards-in-cockpit","i-lucide-layout-grid",{"title":566,"path":567,"stem":568,"children":569,"icon":571},"SDKs","/sdks","16.sdks/1.index",[570,572,577,582,586],{"title":566,"path":567,"stem":568,"icon":571},"i-lucide-code",{"title":573,"path":574,"stem":575,"icon":576},"Workflows SDK — Node / TypeScript","/sdks/workflows-nodejs","16.sdks/2.workflows-nodejs","i-lucide-file-ts",{"title":578,"path":579,"stem":580,"icon":581},"Workflows SDK — Python","/sdks/workflows-python","16.sdks/3.workflows-python","i-simple-icons-python",{"title":583,"path":584,"stem":585,"icon":25},"Auth SDK — Sign in with Orkestia","/sdks/auth","16.sdks/4.auth",{"title":587,"path":588,"stem":589,"icon":514},"Pulse SDK — product analytics for your app","/sdks/lumen-pulse","16.sdks/5.lumen-pulse",{"title":187,"path":591,"stem":592,"children":593,"icon":190},"/appdata","17.appdata/1.index",[594,595,599,604,609,613,617,622,627,632],{"title":187,"path":591,"stem":592,"icon":190},{"title":596,"path":597,"stem":598,"icon":15},"Agents over App Data","/appdata/end-user-agents","17.appdata/10.end-user-agents",{"title":600,"path":601,"stem":602,"icon":603},"Declare structures","/appdata/declare","17.appdata/2.declare","i-lucide-table",{"title":605,"path":606,"stem":607,"icon":608},"Records & Data API","/appdata/data-api","17.appdata/3.data-api","i-lucide-rows-3",{"title":610,"path":611,"stem":612,"icon":427},"Ownership & workspaces","/appdata/ownership","17.appdata/4.ownership",{"title":614,"path":615,"stem":616,"icon":39},"Expose App Data to end-users","/appdata/expose","17.appdata/5.expose",{"title":618,"path":619,"stem":620,"icon":621},"PostgREST HTTP","/appdata/postgrest","17.appdata/6.postgrest","i-lucide-unplug",{"title":623,"path":624,"stem":625,"icon":626},"Ordered append","/appdata/append","17.appdata/7.append","i-lucide-list-ordered",{"title":628,"path":629,"stem":630,"icon":631},"Databases and instances","/appdata/instances","17.appdata/8.instances","i-lucide-hard-drive",{"title":633,"path":634,"stem":635,"icon":199},"Query console and SQL","/appdata/query","17.appdata/9.query",{"title":192,"path":637,"stem":638,"children":639,"icon":152},"/engram","18.engram/1.index",[640,641,645],{"title":192,"path":637,"stem":638,"icon":152},{"title":642,"path":643,"stem":644,"icon":117},"Write & recall","/engram/write-recall","18.engram/2.write-recall",{"title":646,"path":647,"stem":648,"icon":649},"Field & feed","/engram/agent-memory","18.engram/3.agent-memory","i-lucide-radio",{"title":196,"path":651,"stem":652,"children":653,"icon":199},"/devkit","19.devkit/1.index",[654,655,660,664,668],{"title":196,"path":651,"stem":652,"icon":199},{"title":656,"path":657,"stem":658,"icon":659},"Install DevKit","/devkit/install","19.devkit/2.install","i-lucide-download",{"title":661,"path":662,"stem":663,"icon":621},"Hook redirect","/devkit/hooks","19.devkit/3.hooks",{"title":665,"path":666,"stem":667,"icon":157},"Local coding runner","/devkit/local-runner","19.devkit/4.local-runner",{"title":669,"path":670,"stem":671,"icon":93},"Compositions from DevKit","/devkit/compositions","19.devkit/5.compositions",{"title":673,"path":674,"stem":675,"children":676,"icon":15},"Staff & Agents","/staff-and-agents","20.staff-and-agents/01.index",[677,678,682,686,690,694,698,702,706,711,715,720,725,729,732,737],{"title":673,"path":674,"stem":675,"icon":15},{"title":679,"path":680,"stem":681,"icon":10},"Prerequisites","/staff-and-agents/prerequisites","20.staff-and-agents/02.prerequisites",{"title":683,"path":684,"stem":685,"icon":419},"Hire an actor","/staff-and-agents/hire-an-actor","20.staff-and-agents/03.hire-an-actor",{"title":687,"path":688,"stem":689,"icon":57},"Console","/staff-and-agents/console","20.staff-and-agents/04.console",{"title":691,"path":692,"stem":693,"icon":125},"Configs, skills, and MCP","/staff-and-agents/configs-skills-mcp","20.staff-and-agents/05.configs-skills-mcp",{"title":695,"path":696,"stem":697,"icon":98},"Agent runner groups","/staff-and-agents/runner-groups","20.staff-and-agents/06.runner-groups",{"title":699,"path":700,"stem":701,"icon":130},"Governance","/staff-and-agents/governance","20.staff-and-agents/07.governance",{"title":703,"path":704,"stem":705,"icon":25},"Identity and tokens","/staff-and-agents/identity","20.staff-and-agents/08.identity",{"title":707,"path":708,"stem":709,"icon":710},"Memory and cost","/staff-and-agents/memory-and-cost","20.staff-and-agents/09.memory-and-cost","i-lucide-wallet",{"title":712,"path":713,"stem":714,"icon":117},"Coding agents","/staff-and-agents/coding-agents","20.staff-and-agents/10.coding-agents",{"title":716,"path":717,"stem":718,"icon":719},"Wire a repository for coding agents","/staff-and-agents/wire-a-repository","20.staff-and-agents/11.wire-a-repository","i-lucide-link",{"title":721,"path":722,"stem":723,"icon":724},"Run a ticket end to end","/staff-and-agents/run-a-ticket","20.staff-and-agents/12.run-a-ticket","i-lucide-play",{"title":726,"path":727,"stem":728,"icon":162},"Build a product team of actors","/staff-and-agents/build-a-product-team","20.staff-and-agents/13.build-a-product-team",{"title":308,"path":730,"stem":731,"icon":296},"/staff-and-agents/troubleshooting","20.staff-and-agents/14.troubleshooting",{"title":733,"path":734,"stem":735,"icon":736},"Media actors","/staff-and-agents/media-actors","20.staff-and-agents/15.media-actors","i-lucide-clapperboard",{"title":738,"path":739,"stem":740,"icon":741},"Agents that serve people","/staff-and-agents/agents-that-serve-people","20.staff-and-agents/16.agents-that-serve-people","i-lucide-hand-helping",{"title":201,"path":743,"stem":744,"children":745,"icon":44},"/app-host","21.app-host/1.index",[746,747,752,756,759,764,768,773,777,781],{"title":201,"path":743,"stem":744,"icon":44},{"title":748,"path":749,"stem":750,"icon":751},"Static egress IP","/app-host/static-egress-ip","21.app-host/10.static-egress-ip","i-lucide-network",{"title":753,"path":754,"stem":755,"icon":39},"Your app and site","/app-host/your-app","21.app-host/2.your-app",{"title":187,"path":757,"stem":758,"icon":190},"/app-host/app-data","21.app-host/3.app-data",{"title":760,"path":761,"stem":762,"icon":763},"Website and process","/app-host/hosting","21.app-host/4.hosting","i-lucide-cloud-upload",{"title":765,"path":766,"stem":767,"icon":649},"Buzz","/app-host/buzz","21.app-host/5.buzz",{"title":769,"path":770,"stem":771,"icon":772},"Files","/app-host/files","21.app-host/6.files","i-lucide-folder",{"title":774,"path":775,"stem":776,"icon":44},"Your own domain","/app-host/your-domain","21.app-host/7.your-domain",{"title":778,"path":779,"stem":780,"icon":276},"Troubleshooting App Host","/app-host/troubleshooting","21.app-host/8.troubleshooting",{"title":782,"path":783,"stem":784,"icon":25},"Signing keys","/app-host/signing-keys","21.app-host/9.signing-keys",{"title":205,"path":786,"stem":787,"children":788,"icon":208},"/agent-exchange","22.agent-exchange/01.index",[789,790,793,797,801,805],{"title":205,"path":786,"stem":787,"icon":208},{"title":683,"path":791,"stem":792,"icon":419},"/agent-exchange/hire","22.agent-exchange/02.hire",{"title":794,"path":795,"stem":796,"icon":255},"List an actor","/agent-exchange/list","22.agent-exchange/03.list",{"title":798,"path":799,"stem":800,"icon":199},"Invoke & leases","/agent-exchange/invoke","22.agent-exchange/04.invoke",{"title":802,"path":803,"stem":804,"icon":103},"Settlement & trust","/agent-exchange/settlement","22.agent-exchange/05.settlement",{"title":144,"path":806,"stem":807,"icon":147},"/agent-exchange/workflows","22.agent-exchange/06.workflows",{"title":809,"path":810,"stem":811,"children":812,"icon":171},"Runners","/runners","23.runners/1.index",[813,815],{"title":814,"path":810,"stem":811,"icon":171},"Runner groups",{"title":816,"path":817,"stem":818,"icon":819},"Purposes & integrations","/runners/purposes","23.runners/16.purposes","i-lucide-layers",{"title":821,"path":822,"stem":823,"children":824,"icon":826},"Chat","/chat","24.chat/01.index",[825,827,831,836,840,845,850,854,859,863,868,873,877,882,887,891,895,900,905],{"title":821,"path":822,"stem":823,"icon":826},"i-lucide-messages-square",{"title":828,"path":829,"stem":830,"icon":531},"Enable and publish","/chat/enable-and-publish","24.chat/02.enable-and-publish",{"title":832,"path":833,"stem":834,"icon":835},"Theme and customization","/chat/theme-and-customization","24.chat/03.theme-and-customization","i-lucide-palette",{"title":837,"path":838,"stem":839,"icon":180},"Members and moderation","/chat/members-and-moderation","24.chat/04.members-and-moderation",{"title":841,"path":842,"stem":843,"icon":844},"Channels","/chat/channels","24.chat/05.channels","i-lucide-hash",{"title":846,"path":847,"stem":848,"icon":849},"Using the chat","/chat/using-the-chat","24.chat/06.using-the-chat","i-lucide-message-circle",{"title":851,"path":852,"stem":853,"icon":15},"Actors in chat","/chat/actors-in-chat","24.chat/07.actors-in-chat",{"title":855,"path":856,"stem":857,"icon":858},"Internal support actor","/chat/internal-support-actor","24.chat/08.internal-support-actor","i-lucide-life-buoy",{"title":860,"path":861,"stem":862,"icon":199},"API and console","/chat/api-and-console","24.chat/09.api-and-console",{"title":864,"path":865,"stem":866,"icon":867},"Limits","/chat/limits","24.chat/10.limits","i-lucide-triangle-alert",{"title":869,"path":870,"stem":871,"icon":872},"Structured chat with DGI","/chat/structured-chat","24.chat/11.structured-chat","i-lucide-layout-list",{"title":874,"path":875,"stem":876,"icon":44},"Option A: hosted chat with DGI","/chat/option-a-hosted-chat","24.chat/12.option-a-hosted-chat",{"title":878,"path":879,"stem":880,"icon":881},"Option B: embed the chat component","/chat/option-b-embed-component","24.chat/13.option-b-embed-component","i-lucide-component",{"title":883,"path":884,"stem":885,"icon":886},"Option C: custom client (wire contract)","/chat/option-c-custom-client","24.chat/14.option-c-custom-client","i-lucide-braces",{"title":888,"path":889,"stem":890,"icon":649},"Cards, live updates and proactive posts","/chat/cards-live-and-proactive","24.chat/16.cards-live-and-proactive",{"title":892,"path":893,"stem":894,"icon":130},"Structured chat security model","/chat/structured-chat-security","24.chat/17.structured-chat-security",{"title":896,"path":897,"stem":898,"icon":899},"Option D: any app or API (dgi.chat)","/chat/option-d-chat-api","24.chat/18.option-d-chat-api","i-lucide-plug",{"title":901,"path":902,"stem":903,"icon":904},"Living Surfaces","/chat/living-surfaces","24.chat/20.living-surfaces","i-lucide-sprout",{"title":906,"path":907,"stem":908,"icon":909},"Connect your WhatsApp number","/chat/whatsapp","24.chat/21.whatsapp","i-lucide-phone",{"title":911,"path":912,"stem":913,"children":914,"icon":152},"DGI","/dgi","25.dgi/1.index",[915,917,921,925,929,933],{"title":916,"path":912,"stem":913,"icon":152},"What is DGI",{"title":154,"path":918,"stem":919,"icon":920},"/dgi/how-it-works","25.dgi/2.how-it-works","i-lucide-cog",{"title":922,"path":923,"stem":924,"icon":564},"Interfaces","/dgi/interfaces","25.dgi/3.interfaces",{"title":926,"path":927,"stem":928,"icon":52},"Quickstart","/dgi/quickstart","25.dgi/4.quickstart",{"title":930,"path":931,"stem":932,"icon":130},"Trust and safety","/dgi/trust-and-safety","25.dgi/5.trust-and-safety",{"title":934,"path":935,"stem":936,"icon":937},"FAQ","/dgi/faq","25.dgi/6.faq","i-lucide-circle-help",{"title":939,"path":940,"stem":941,"children":942,"icon":736},"Media","/media","26.media/01.index",[943,944,948,953,957,962,967,971,975,979,982],{"title":939,"path":940,"stem":941,"icon":736},{"title":945,"path":946,"stem":947,"icon":899},"Set up the studio","/media/set-up","26.media/02.set-up",{"title":949,"path":950,"stem":951,"icon":952},"Files, covers and looks","/media/files-covers-and-looks","26.media/03.files-covers-and-looks","i-lucide-images",{"title":841,"path":954,"stem":955,"icon":956},"/media/channels","26.media/04.channels","i-lucide-tv",{"title":958,"path":959,"stem":960,"icon":961},"Posts and review","/media/posts-and-review","26.media/05.posts-and-review","i-lucide-send",{"title":963,"path":964,"stem":965,"icon":966},"Video templates","/media/video-templates","26.media/06.video-templates","i-lucide-film",{"title":968,"path":969,"stem":970,"icon":736},"Render videos","/media/render-videos","26.media/07.render-videos",{"title":972,"path":973,"stem":974,"icon":571},"Templates as code","/media/templates-as-code","26.media/08.templates-as-code",{"title":976,"path":977,"stem":978,"icon":15},"Agents and media","/media/agents-and-media","26.media/09.agents-and-media",{"title":210,"path":980,"stem":981,"icon":142},"/media/reference","26.media/10.reference",{"title":983,"path":984,"stem":985,"icon":858},"Limits and troubleshooting","/media/limits-and-troubleshooting","26.media/11.limits-and-troubleshooting",{"title":987,"path":988,"stem":989,"children":990,"icon":992},"Vault","/vault","27.vault/01.index",[991,993,997,1001,1005,1010],{"title":987,"path":988,"stem":989,"icon":992},"i-lucide-vault",{"title":994,"path":995,"stem":996,"icon":25},"Secrets","/vault/secrets","27.vault/02.secrets",{"title":998,"path":999,"stem":1000,"icon":130},"Access policies","/vault/access-policies","27.vault/03.access-policies",{"title":1002,"path":1003,"stem":1004,"icon":961},"API access","/vault/api-access","27.vault/04.api-access",{"title":1006,"path":1007,"stem":1008,"icon":1009},"Audit log and keys","/vault/audit-and-keys","27.vault/05.audit-and-keys","i-lucide-scroll-text",{"title":210,"path":1011,"stem":1012,"icon":142},"/vault/reference","27.vault/06.reference",{"title":1014,"path":1015,"stem":1016,"children":1017,"icon":39},"Build apps","/build-apps","28.build-apps/01.index",[1018,1019,1023,1028,1032,1036,1040,1045],{"title":1014,"path":1015,"stem":1016,"icon":39},{"title":1020,"path":1021,"stem":1022,"icon":147},"Backend","/build-apps/backend","28.build-apps/02.backend",{"title":1024,"path":1025,"stem":1026,"icon":1027},"Modules and feature flags","/build-apps/modules-and-feature-flags","28.build-apps/03.modules-and-feature-flags","i-lucide-toggle-right",{"title":1029,"path":1030,"stem":1031,"icon":117},"Environments","/build-apps/environments","28.build-apps/04.environments",{"title":1033,"path":1034,"stem":1035,"icon":83},"Pricing and limits","/build-apps/pricing-and-limits","28.build-apps/05.pricing-and-limits",{"title":1037,"path":1038,"stem":1039,"icon":162},"Workspaces","/build-apps/workspaces","28.build-apps/06.workspaces",{"title":1041,"path":1042,"stem":1043,"icon":1044},"End-user authoring","/build-apps/end-user-authoring","28.build-apps/07.end-user-authoring","i-lucide-pencil-ruler",{"title":1046,"path":1047,"stem":1048,"icon":34},"Operate","/build-apps/operate","28.build-apps/08.operate",{"title":1050,"path":1051,"stem":1052,"children":1053,"icon":39},"Cockpit app","/cockpit","28.cockpit/1.index",[1054,1055,1060,1064,1068,1072,1076,1080,1084,1088,1092,1096,1100,1105,1110,1114,1118,1122,1127,1132],{"title":1050,"path":1051,"stem":1052,"icon":39},{"title":1056,"path":1057,"stem":1058,"icon":1059},"Overview, Decisions and Activity","/cockpit/overview-decisions-activity","28.cockpit/10.overview-decisions-activity","i-lucide-inbox",{"title":1061,"path":1062,"stem":1063,"icon":108},"Tickets","/cockpit/tickets","28.cockpit/11.tickets",{"title":1065,"path":1066,"stem":1067,"icon":147},"Workflows builder","/cockpit/workflows-builder","28.cockpit/12.workflows-builder",{"title":1069,"path":1070,"stem":1071,"icon":15},"Agents and Coding","/cockpit/agents-and-coding","28.cockpit/13.agents-and-coding",{"title":1073,"path":1074,"stem":1075,"icon":39},"Runners and Connections","/cockpit/apps-runners-connections","28.cockpit/14.apps-runners-connections",{"title":1077,"path":1078,"stem":1079,"icon":427},"Organization — people, access and cost","/cockpit/organization-people-access-cost","28.cockpit/15.organization-people-access-cost",{"title":1081,"path":1082,"stem":1083,"icon":899},"AI tools and MCP","/cockpit/ai-tools-and-mcp","28.cockpit/16.ai-tools-and-mcp",{"title":1085,"path":1086,"stem":1087,"icon":826},"App chats and shared chats","/cockpit/app-chats","28.cockpit/17.app-chats",{"title":1089,"path":1090,"stem":1091,"icon":564},"Apps mode","/cockpit/apps-mode","28.cockpit/18.apps-mode",{"title":1093,"path":1094,"stem":1095,"icon":83},"App infrastructure","/cockpit/app-infrastructure","28.cockpit/19.app-infrastructure",{"title":1097,"path":1098,"stem":1099,"icon":659},"Install and sign in","/cockpit/install-and-sign-in","28.cockpit/2.install-and-sign-in",{"title":1101,"path":1102,"stem":1103,"icon":1104},"App files, settings and flags","/cockpit/app-files-settings-flags","28.cockpit/20.app-files-settings-flags","i-lucide-folder-cog",{"title":1106,"path":1107,"stem":1108,"icon":1109},"Cards in the chat","/cockpit/chat-cards","28.cockpit/21.chat-cards","i-lucide-layout-panel-left",{"title":1111,"path":1112,"stem":1113,"icon":229},"App modules","/cockpit/app-modules","28.cockpit/22.app-modules",{"title":1115,"path":1116,"stem":1117,"icon":117},"App environments","/cockpit/app-environments","28.cockpit/23.app-environments",{"title":1119,"path":1120,"stem":1121,"icon":125},"First run and onboarding","/cockpit/first-run-onboarding","28.cockpit/3.first-run-onboarding",{"title":1123,"path":1124,"stem":1125,"icon":1126},"Navigation and shortcuts","/cockpit/navigation-and-shortcuts","28.cockpit/4.navigation-and-shortcuts","i-lucide-keyboard",{"title":1128,"path":1129,"stem":1130,"icon":1131},"About, settings and updates","/cockpit/about-settings-and-updates","28.cockpit/5.about-settings-and-updates","i-lucide-info",{"title":308,"path":1133,"stem":1134,"icon":858},"/cockpit/troubleshooting","28.cockpit/6.troubleshooting",{"title":1136,"path":1137,"stem":1138,"children":1139,"icon":1141},"CRM","/crm","29.crm/01.index",[1140,1142,1146,1150],{"title":1136,"path":1137,"stem":1138,"icon":1141},"i-lucide-contact",{"title":1143,"path":1144,"stem":1145,"icon":180},"Contacts and leads","/crm/contacts-and-leads","29.crm/02.contacts-and-leads",{"title":1147,"path":1148,"stem":1149,"icon":130},"Privacy and erasure","/crm/privacy-and-erasure","29.crm/03.privacy-and-erasure",{"title":210,"path":1151,"stem":1152,"icon":142},"/crm/reference","29.crm/04.reference",{"title":1154,"path":1155,"stem":1156,"children":1157,"icon":631},"Storage","/storage","29.storage/1.index",[1158,1160],{"title":1159,"path":1155,"stem":1156,"icon":631},"Orkestia storage",{"title":1161,"path":1162,"stem":1163,"icon":1164},"Where to use it","/storage/where-to-use","29.storage/2.where-to-use","i-lucide-map",{"title":1166,"path":1167,"stem":1168,"children":1169,"icon":44},"Browser","/browser","30.browser/01.index",[1170,1172,1176,1180],{"title":1171,"path":1167,"stem":1168,"icon":44},"Orkestia Browser",{"title":1173,"path":1174,"stem":1175,"icon":899},"Connect your Chrome","/browser/connect","30.browser/02.connect",{"title":1177,"path":1178,"stem":1179,"icon":130},"Sessions and approvals","/browser/sessions-and-approvals","30.browser/03.sessions-and-approvals",{"title":1181,"path":1182,"stem":1183,"icon":296},"Agent tools","/browser/agent-tools","30.browser/04.agent-tools",{"title":1185,"path":1186,"stem":1187,"children":1188,"icon":541},"Registry","/registry","31.registry/1.index",[1189],{"title":1190,"path":1186,"stem":1187,"icon":541},"Orkestia Registry",{"title":1192,"path":1193,"stem":1194,"children":1195,"icon":404},"Packages and Git","/packages-and-git","32.packages-and-git/1.index",[1196],{"title":1192,"path":1193,"stem":1194,"icon":404},{"id":1198,"title":587,"body":1199,"description":3399,"extension":3400,"links":3401,"meta":3402,"navigation":3403,"path":588,"seo":3404,"stem":589,"__hash__":3405},"docs/16.sdks/5.lumen-pulse.md",{"type":1200,"value":1201,"toc":3383},"minimark",[1202,1218,1228,1242,1247,1291,1302,1395,1402,1406,1431,1434,1448,1455,1459,1753,1770,1774,1779,1836,1847,1862,1903,1907,2014,2045,2061,2082,2094,2106,2110,2129,2344,2423,2433,2437,2615,2619,2654,2761,2772,2775,2838,2842,2861,2899,3080,3250,3253,3303,3309,3313,3316,3324,3334,3338,3355,3359,3379],[1203,1204,1205,1212,1213,1217],"p",{},[1206,1207,1208],"strong",{},[1209,1210,1211],"code",{},"@orkestia/lumen-pulse"," is the browser client for ",[1214,1215,1216],"a",{"href":512},"Pulse",", Lumen's product analytics. It sends page views and the events you name from any web UI (React, Vue, Svelte, plain HTML) to Lumen, waits for consent before it sends or stores anything, and links a visitor's anonymous events to their user id when they sign in. It has no runtime dependencies.",[1203,1219,1220,1221,1227],{},"The source is public under the MIT license at ",[1214,1222,1226],{"href":1223,"rel":1224},"https://github.com/orkestia/lumen-pulse",[1225],"nofollow","github.com/orkestia/lumen-pulse",".",[1229,1230,1231],"note",{},[1203,1232,1233,1234,1237,1238,1241],{},"Early access (",[1209,1235,1236],{},"v0.2.0","). The API may change before 1.0. The package is ",[1206,1239,1240],{},"not on the npm registry",": install it from GitHub as shown below.",[1243,1244,1246],"h2",{"id":1245},"before-you-start","Before you start",[1248,1249,1250,1264],"ol",{},[1251,1252,1253,1256,1257,1260,1261,1227],"li",{},[1206,1254,1255],{},"Lumen is enabled"," for your organization (",[1214,1258,1259],{"href":529},"Enable","). Without it every request fails with ",[1209,1262,1263],{},"403 PULSE_NOT_PROVISIONED",[1251,1265,1266,1269,1270,1273,1274,1279,1280,1283,1284,1287,1288,1227],{},[1206,1267,1268],{},"You have a browser Pulse key."," Create it in ",[1206,1271,1272],{},"Pulse → Setup",", in the ",[1214,1275,1278],{"href":1276,"rel":1277},"https://lumen.orkestia.dev/pulse/setup",[1225],"Lumen app"," or in the ",[1214,1281,1050],{"href":1282},"/lumen/pulse-in-cockpit#setup",". Enter the website addresses your app runs on and one project name. The key starts with ",[1209,1285,1286],{},"lump_"," and is shown ",[1206,1289,1290],{},"once",[1203,1292,1293,1294,1297,1298,1301],{},"A browser Pulse key can only write product events. It cannot read anything, and it only works from the addresses and for the project it was created with, so it is safe to ship in a web page. Never put a ",[1209,1295,1296],{},"lumk_"," key in a browser: Pulse rejects it with ",[1209,1299,1300],{},"WRONG_KEY_SCOPE",", and it can write logs to your organization.",[1303,1304,1305,1318],"table",{},[1306,1307,1308],"thead",{},[1309,1310,1311,1315],"tr",{},[1312,1313,1314],"th",{},"Address you enter",[1312,1316,1317],{},"Accepts",[1319,1320,1321,1338,1354,1379],"tbody",{},[1309,1322,1323,1333],{},[1324,1325,1326,1329,1330],"td",{},[1209,1327,1328],{},"example.com"," or ",[1209,1331,1332],{},"https://example.com",[1324,1334,1335,1336],{},"Exactly ",[1209,1337,1332],{},[1309,1339,1340,1345],{},[1324,1341,1342],{},[1209,1343,1344],{},"https://*.example.com",[1324,1346,1347,1348,1350,1351,1353],{},"Any subdomain of ",[1209,1349,1328],{},", not ",[1209,1352,1328],{}," itself",[1309,1355,1356,1361],{},[1324,1357,1358],{},[1209,1359,1360],{},"http://localhost:5173",[1324,1362,1363,1364,1367,1368,1371,1372,1375,1376],{},"Local development. ",[1209,1365,1366],{},"http://"," is only accepted for ",[1209,1369,1370],{},"localhost",", ",[1209,1373,1374],{},"127.0.0.1"," and ",[1209,1377,1378],{},"::1",[1309,1380,1381,1392],{},[1324,1382,1383,1371,1386,1371,1389],{},[1209,1384,1385],{},"*",[1209,1387,1388],{},"https://*",[1209,1390,1391],{},"https://*.com.br",[1324,1393,1394],{},"Refused: they would match other people's sites",[1203,1396,1397,1398,1401],{},"The scheme and port must match exactly. Add each address your app is served from, including ",[1209,1399,1400],{},"www."," if you use it.",[1243,1403,1405],{"id":1404},"install","Install",[1407,1408,1413],"pre",{"className":1409,"code":1410,"language":1411,"meta":1412,"style":1412},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npm i github:orkestia/lumen-pulse#v0.2.0\n","bash","",[1209,1414,1415],{"__ignoreMap":1412},[1416,1417,1420,1424,1428],"span",{"class":1418,"line":1419},"line",1,[1416,1421,1423],{"class":1422},"sBMFI","npm",[1416,1425,1427],{"class":1426},"sfazB"," i",[1416,1429,1430],{"class":1426}," github:orkestia/lumen-pulse#v0.2.0\n",[1203,1432,1433],{},"npm builds the package on install. If your npm blocks install scripts, install the built release file instead:",[1407,1435,1437],{"className":1409,"code":1436,"language":1411,"meta":1412,"style":1412},"npm i https://github.com/orkestia/lumen-pulse/releases/download/v0.2.0/orkestia-lumen-pulse-0.2.0.tgz\n",[1209,1438,1439],{"__ignoreMap":1412},[1416,1440,1441,1443,1445],{"class":1418,"line":1419},[1416,1442,1423],{"class":1422},[1416,1444,1427],{"class":1426},[1416,1446,1447],{"class":1426}," https://github.com/orkestia/lumen-pulse/releases/download/v0.2.0/orkestia-lumen-pulse-0.2.0.tgz\n",[1203,1449,1450,1451,1454],{},"Pin the tag (",[1209,1452,1453],{},"#v0.2.0",") so a later release does not change your build. The package is ES modules only.",[1243,1456,1458],{"id":1457},"initialize","Initialize",[1407,1460,1464],{"className":1461,"code":1462,"language":1463,"meta":1412,"style":1412},"language-ts shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createLumenPulse } from \"@orkestia/lumen-pulse\"\n\nconst pulse = createLumenPulse({\n  writeKey: \"lump_…\",                           // browser Pulse key\n  project: \"my-app\",                            // the project the key was created for\n  ingestUrl: \"https://lumen-api.orkestia.dev\",\n  autocapture: { pageViews: \"history\" },        // optional: page views, including SPA route changes\n})\n\n// When the visitor accepts analytics in your cookie banner:\npulse.setConsent(\"granted\")\n\npulse.track(\"signup_started\", { plan: \"pro\" })\n\n// After sign-in or sign-up:\npulse.identify(user.id)\n\n// After sign-out:\npulse.reset()\n","ts",[1209,1465,1466,1494,1501,1523,1548,1568,1586,1614,1623,1628,1634,1656,1661,1700,1705,1711,1729,1734,1740],{"__ignoreMap":1412},[1416,1467,1468,1472,1476,1480,1483,1486,1489,1491],{"class":1418,"line":1419},[1416,1469,1471],{"class":1470},"s7zQu","import",[1416,1473,1475],{"class":1474},"sMK4o"," {",[1416,1477,1479],{"class":1478},"sTEyZ"," createLumenPulse",[1416,1481,1482],{"class":1474}," }",[1416,1484,1485],{"class":1470}," from",[1416,1487,1488],{"class":1474}," \"",[1416,1490,1211],{"class":1426},[1416,1492,1493],{"class":1474},"\"\n",[1416,1495,1497],{"class":1418,"line":1496},2,[1416,1498,1500],{"emptyLinePlaceholder":1499},true,"\n",[1416,1502,1504,1508,1511,1514,1517,1520],{"class":1418,"line":1503},3,[1416,1505,1507],{"class":1506},"spNyl","const",[1416,1509,1510],{"class":1478}," pulse ",[1416,1512,1513],{"class":1474},"=",[1416,1515,1479],{"class":1516},"s2Zo4",[1416,1518,1519],{"class":1478},"(",[1416,1521,1522],{"class":1474},"{\n",[1416,1524,1526,1530,1533,1535,1538,1541,1544],{"class":1418,"line":1525},4,[1416,1527,1529],{"class":1528},"swJcz","  writeKey",[1416,1531,1532],{"class":1474},":",[1416,1534,1488],{"class":1474},[1416,1536,1537],{"class":1426},"lump_…",[1416,1539,1540],{"class":1474},"\"",[1416,1542,1543],{"class":1474},",",[1416,1545,1547],{"class":1546},"sHwdD","                           // browser Pulse key\n",[1416,1549,1551,1554,1556,1558,1561,1563,1565],{"class":1418,"line":1550},5,[1416,1552,1553],{"class":1528},"  project",[1416,1555,1532],{"class":1474},[1416,1557,1488],{"class":1474},[1416,1559,1560],{"class":1426},"my-app",[1416,1562,1540],{"class":1474},[1416,1564,1543],{"class":1474},[1416,1566,1567],{"class":1546},"                            // the project the key was created for\n",[1416,1569,1571,1574,1576,1578,1581,1583],{"class":1418,"line":1570},6,[1416,1572,1573],{"class":1528},"  ingestUrl",[1416,1575,1532],{"class":1474},[1416,1577,1488],{"class":1474},[1416,1579,1580],{"class":1426},"https://lumen-api.orkestia.dev",[1416,1582,1540],{"class":1474},[1416,1584,1585],{"class":1474},",\n",[1416,1587,1589,1592,1594,1596,1599,1601,1603,1606,1608,1611],{"class":1418,"line":1588},7,[1416,1590,1591],{"class":1528},"  autocapture",[1416,1593,1532],{"class":1474},[1416,1595,1475],{"class":1474},[1416,1597,1598],{"class":1528}," pageViews",[1416,1600,1532],{"class":1474},[1416,1602,1488],{"class":1474},[1416,1604,1605],{"class":1426},"history",[1416,1607,1540],{"class":1474},[1416,1609,1610],{"class":1474}," },",[1416,1612,1613],{"class":1546},"        // optional: page views, including SPA route changes\n",[1416,1615,1617,1620],{"class":1418,"line":1616},8,[1416,1618,1619],{"class":1474},"}",[1416,1621,1622],{"class":1478},")\n",[1416,1624,1626],{"class":1418,"line":1625},9,[1416,1627,1500],{"emptyLinePlaceholder":1499},[1416,1629,1631],{"class":1418,"line":1630},10,[1416,1632,1633],{"class":1546},"// When the visitor accepts analytics in your cookie banner:\n",[1416,1635,1637,1640,1642,1645,1647,1649,1652,1654],{"class":1418,"line":1636},11,[1416,1638,1639],{"class":1478},"pulse",[1416,1641,1227],{"class":1474},[1416,1643,1644],{"class":1516},"setConsent",[1416,1646,1519],{"class":1478},[1416,1648,1540],{"class":1474},[1416,1650,1651],{"class":1426},"granted",[1416,1653,1540],{"class":1474},[1416,1655,1622],{"class":1478},[1416,1657,1659],{"class":1418,"line":1658},12,[1416,1660,1500],{"emptyLinePlaceholder":1499},[1416,1662,1664,1666,1668,1671,1673,1675,1678,1680,1682,1684,1687,1689,1691,1694,1696,1698],{"class":1418,"line":1663},13,[1416,1665,1639],{"class":1478},[1416,1667,1227],{"class":1474},[1416,1669,1670],{"class":1516},"track",[1416,1672,1519],{"class":1478},[1416,1674,1540],{"class":1474},[1416,1676,1677],{"class":1426},"signup_started",[1416,1679,1540],{"class":1474},[1416,1681,1543],{"class":1474},[1416,1683,1475],{"class":1474},[1416,1685,1686],{"class":1528}," plan",[1416,1688,1532],{"class":1474},[1416,1690,1488],{"class":1474},[1416,1692,1693],{"class":1426},"pro",[1416,1695,1540],{"class":1474},[1416,1697,1482],{"class":1474},[1416,1699,1622],{"class":1478},[1416,1701,1703],{"class":1418,"line":1702},14,[1416,1704,1500],{"emptyLinePlaceholder":1499},[1416,1706,1708],{"class":1418,"line":1707},15,[1416,1709,1710],{"class":1546},"// After sign-in or sign-up:\n",[1416,1712,1714,1716,1718,1721,1724,1726],{"class":1418,"line":1713},16,[1416,1715,1639],{"class":1478},[1416,1717,1227],{"class":1474},[1416,1719,1720],{"class":1516},"identify",[1416,1722,1723],{"class":1478},"(user",[1416,1725,1227],{"class":1474},[1416,1727,1728],{"class":1478},"id)\n",[1416,1730,1732],{"class":1418,"line":1731},17,[1416,1733,1500],{"emptyLinePlaceholder":1499},[1416,1735,1737],{"class":1418,"line":1736},18,[1416,1738,1739],{"class":1546},"// After sign-out:\n",[1416,1741,1743,1745,1747,1750],{"class":1418,"line":1742},19,[1416,1744,1639],{"class":1478},[1416,1746,1227],{"class":1474},[1416,1748,1749],{"class":1516},"reset",[1416,1751,1752],{"class":1478},"()\n",[1203,1754,1755,1756,1371,1759,1375,1762,1765,1766,1769],{},"Create one client per page load and reuse it. ",[1209,1757,1758],{},"writeKey",[1209,1760,1761],{},"project",[1209,1763,1764],{},"ingestUrl"," are required; ",[1209,1767,1768],{},"createLumenPulse"," throws without them.",[1243,1771,1773],{"id":1772},"consent","Consent",[1203,1775,1776,1777,1227],{},"Nothing is sent, and nothing except the consent choice is stored, until consent is ",[1209,1778,1651],{},[1303,1780,1781,1792],{},[1306,1782,1783],{},[1309,1784,1785,1787,1790],{},[1312,1786,1773],{},[1312,1788,1789],{},"Events",[1312,1791,1154],{},[1319,1793,1794,1808,1823],{},[1309,1795,1796,1802,1805],{},[1324,1797,1798,1801],{},[1209,1799,1800],{},"unknown"," (default)",[1324,1803,1804],{},"Dropped",[1324,1806,1807],{},"Anonymous id and session id kept in memory only",[1309,1809,1810,1814,1817],{},[1324,1811,1812],{},[1209,1813,1651],{},[1324,1815,1816],{},"Sent",[1324,1818,1819,1820],{},"Anonymous id and session id saved in ",[1209,1821,1822],{},"localStorage",[1309,1824,1825,1830,1833],{},[1324,1826,1827],{},[1209,1828,1829],{},"denied",[1324,1831,1832],{},"Dropped, and the unsent queue is cleared",[1324,1834,1835],{},"Anonymous id and session id removed",[1203,1837,1838,1839,1842,1843,1846],{},"The choice is saved under ",[1209,1840,1841],{},"lumen_pulse.consent",", so a returning visitor who accepted keeps sending without asking again. Pass ",[1209,1844,1845],{},"storage: null"," to keep everything in memory.",[1203,1848,1849,1850,1853,1854,1857,1858,1861],{},"Events tracked before consent are ",[1206,1851,1852],{},"dropped, not queued",". That includes the first ",[1209,1855,1856],{},"page_view"," from ",[1209,1859,1860],{},"autocapture",", which fires when the client is created. If the visitor accepts on that page, send it yourself:",[1407,1863,1865],{"className":1461,"code":1864,"language":1463,"meta":1412,"style":1412},"pulse.setConsent(\"granted\")\npulse.track(\"page_view\")\n",[1209,1866,1867,1885],{"__ignoreMap":1412},[1416,1868,1869,1871,1873,1875,1877,1879,1881,1883],{"class":1418,"line":1419},[1416,1870,1639],{"class":1478},[1416,1872,1227],{"class":1474},[1416,1874,1644],{"class":1516},[1416,1876,1519],{"class":1478},[1416,1878,1540],{"class":1474},[1416,1880,1651],{"class":1426},[1416,1882,1540],{"class":1474},[1416,1884,1622],{"class":1478},[1416,1886,1887,1889,1891,1893,1895,1897,1899,1901],{"class":1418,"line":1496},[1416,1888,1639],{"class":1478},[1416,1890,1227],{"class":1474},[1416,1892,1670],{"class":1516},[1416,1894,1519],{"class":1478},[1416,1896,1540],{"class":1474},[1416,1898,1856],{"class":1426},[1416,1900,1540],{"class":1474},[1416,1902,1622],{"class":1478},[1243,1904,1906],{"id":1905},"track-events","Track events",[1303,1908,1909,1919],{},[1306,1910,1911],{},[1309,1912,1913,1916],{},[1312,1914,1915],{},"Method",[1312,1917,1918],{},"What it does",[1319,1920,1921,1939,1953,1963,1981,1991,2001],{},[1309,1922,1923,1928],{},[1324,1924,1925],{},[1209,1926,1927],{},"track(name, properties?, context?)",[1324,1929,1930,1931,1934,1935,1938],{},"Queue an event. ",[1209,1932,1933],{},"properties"," is your own JSON; ",[1209,1936,1937],{},"context"," overrides fields of the automatic context",[1309,1940,1941,1946],{},[1324,1942,1943],{},[1209,1944,1945],{},"identify(userId, traits?)",[1324,1947,1948,1949,1952],{},"Set the user id on every later event and send an ",[1209,1950,1951],{},"identity.alias"," event, which links the visitor's earlier anonymous events to that user",[1309,1954,1955,1960],{},[1324,1956,1957],{},[1209,1958,1959],{},"reset()",[1324,1961,1962],{},"Clear the user id and start a new anonymous id and session. Call it on sign-out",[1309,1964,1965,1970],{},[1324,1966,1967],{},[1209,1968,1969],{},"setConsent(status)",[1324,1971,1972,1371,1975,1329,1978],{},[1209,1973,1974],{},"\"granted\"",[1209,1976,1977],{},"\"denied\"",[1209,1979,1980],{},"\"unknown\"",[1309,1982,1983,1988],{},[1324,1984,1985],{},[1209,1986,1987],{},"flush()",[1324,1989,1990],{},"Send queued events now (returns a promise)",[1309,1992,1993,1998],{},[1324,1994,1995],{},[1209,1996,1997],{},"shutdown()",[1324,1999,2000],{},"Flush, then stop the timer and remove the page listeners",[1309,2002,2003,2011],{},[1324,2004,2005,1371,2008],{},[1209,2006,2007],{},"getAnonymousId()",[1209,2009,2010],{},"getSessionId()",[1324,2012,2013],{},"Read the current ids",[1203,2015,2016,2019,2020,2023,2024,2026,2027,2030,2031,1371,2034,2037,2038,2041,2042,2044],{},[1206,2017,2018],{},"Page views."," ",[1209,2021,2022],{},"autocapture: { pageViews: true }"," sends one ",[1209,2025,1856],{}," when the client is created. ",[1209,2028,2029],{},"autocapture: { pageViews: \"history\" }"," also sends one on every ",[1209,2032,2033],{},"pushState",[1209,2035,2036],{},"replaceState"," and back/forward navigation that changes the path, so single-page apps need no router hook. Without autocapture, call ",[1209,2039,2040],{},"track(\"page_view\")"," yourself. Page views, entry pages and bounce rate in Pulse come from ",[1209,2043,1856],{}," events.",[1203,2046,2047,2050,2051,1329,2054,2057,2058,2060],{},[1206,2048,2049],{},"Goals and funnels"," use the event names you send, so pick stable names such as ",[1209,2052,2053],{},"signup_completed",[1209,2055,2056],{},"checkout_paid"," (",[1214,2059,511],{"href":512},").",[1203,2062,2063,2066,2067,2069,2070,2072,2073,2077,2078,2081],{},[1206,2064,2065],{},"User ids."," Use your own stable internal id, not an email address. ",[1209,2068,1720],{}," traits are sent as the properties of the ",[1209,2071,1951],{}," event, so the same naming rules apply (see ",[1214,2074,2076],{"href":2075},"#privacy","Privacy","). A string ",[1209,2079,2080],{},"org_id"," trait (your own account or tenant id) is also attached to the events that follow.",[1203,2083,2084,2087,2088,2090,2091,2093],{},[1206,2085,2086],{},"Sessions."," In ",[1209,2089,1236],{}," the session id does not expire after inactivity: once consent is granted it stays the same in that browser until you call ",[1209,2092,1959],{}," or consent is withdrawn. Pulse counts one visit per session id.",[1203,2095,2096,2097,1375,2100,2103,2104,1227],{},"The SDK does not capture clicks, scrolling or errors on its own. The Heatmaps views need ",[1209,2098,2099],{},"click",[1209,2101,2102],{},"scroll_depth"," events, which you would send with ",[1209,2105,1670],{},[1243,2107,2109],{"id":2108},"without-a-bundler","Without a bundler",[1203,2111,2112,2113,2116,2117,2124,2125,2128],{},"The package ships a script-tag entry, ",[1209,2114,2115],{},"dist/auto.js",". Host the ",[1206,2118,2119,2120,2123],{},"whole ",[1209,2121,2122],{},"dist/"," folder"," from your site (",[1209,2126,2127],{},"auto.js"," loads a file next to it), then:",[1407,2130,2134],{"className":2131,"code":2132,"language":2133,"meta":1412,"style":1412},"language-html shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","\u003Cscript\n  type=\"module\"\n  src=\"/assets/lumen-pulse/auto.js\"\n  data-write-key=\"lump_…\"\n  data-project=\"my-landing\"\n  data-ingest-url=\"https://lumen-api.orkestia.dev\"\n  data-autocapture=\"history\"\n>\u003C/script>\n\u003Cscript type=\"module\">\n  // From your cookie banner:\n  window.LumenPulse?.client?.setConsent(\"granted\")\n  window.LumenPulse?.client?.track(\"cta_clicked\", { cta: \"hero\" })\n\u003C/script>\n","html",[1209,2135,2136,2144,2158,2172,2185,2199,2212,2225,2236,2255,2260,2290,2335],{"__ignoreMap":1412},[1416,2137,2138,2141],{"class":1418,"line":1419},[1416,2139,2140],{"class":1474},"\u003C",[1416,2142,2143],{"class":1528},"script\n",[1416,2145,2146,2149,2151,2153,2156],{"class":1418,"line":1496},[1416,2147,2148],{"class":1506},"  type",[1416,2150,1513],{"class":1474},[1416,2152,1540],{"class":1474},[1416,2154,2155],{"class":1426},"module",[1416,2157,1493],{"class":1474},[1416,2159,2160,2163,2165,2167,2170],{"class":1418,"line":1503},[1416,2161,2162],{"class":1506},"  src",[1416,2164,1513],{"class":1474},[1416,2166,1540],{"class":1474},[1416,2168,2169],{"class":1426},"/assets/lumen-pulse/auto.js",[1416,2171,1493],{"class":1474},[1416,2173,2174,2177,2179,2181,2183],{"class":1418,"line":1525},[1416,2175,2176],{"class":1506},"  data-write-key",[1416,2178,1513],{"class":1474},[1416,2180,1540],{"class":1474},[1416,2182,1537],{"class":1426},[1416,2184,1493],{"class":1474},[1416,2186,2187,2190,2192,2194,2197],{"class":1418,"line":1550},[1416,2188,2189],{"class":1506},"  data-project",[1416,2191,1513],{"class":1474},[1416,2193,1540],{"class":1474},[1416,2195,2196],{"class":1426},"my-landing",[1416,2198,1493],{"class":1474},[1416,2200,2201,2204,2206,2208,2210],{"class":1418,"line":1570},[1416,2202,2203],{"class":1506},"  data-ingest-url",[1416,2205,1513],{"class":1474},[1416,2207,1540],{"class":1474},[1416,2209,1580],{"class":1426},[1416,2211,1493],{"class":1474},[1416,2213,2214,2217,2219,2221,2223],{"class":1418,"line":1588},[1416,2215,2216],{"class":1506},"  data-autocapture",[1416,2218,1513],{"class":1474},[1416,2220,1540],{"class":1474},[1416,2222,1605],{"class":1426},[1416,2224,1493],{"class":1474},[1416,2226,2227,2230,2233],{"class":1418,"line":1616},[1416,2228,2229],{"class":1474},">\u003C/",[1416,2231,2232],{"class":1528},"script",[1416,2234,2235],{"class":1474},">\n",[1416,2237,2238,2240,2242,2245,2247,2249,2251,2253],{"class":1418,"line":1625},[1416,2239,2140],{"class":1474},[1416,2241,2232],{"class":1528},[1416,2243,2244],{"class":1506}," type",[1416,2246,1513],{"class":1474},[1416,2248,1540],{"class":1474},[1416,2250,2155],{"class":1426},[1416,2252,1540],{"class":1474},[1416,2254,2235],{"class":1474},[1416,2256,2257],{"class":1418,"line":1630},[1416,2258,2259],{"class":1546},"  // From your cookie banner:\n",[1416,2261,2262,2265,2267,2270,2273,2276,2278,2280,2282,2284,2286,2288],{"class":1418,"line":1636},[1416,2263,2264],{"class":1478},"  window",[1416,2266,1227],{"class":1474},[1416,2268,2269],{"class":1478},"LumenPulse",[1416,2271,2272],{"class":1474},"?.",[1416,2274,2275],{"class":1478},"client",[1416,2277,2272],{"class":1474},[1416,2279,1644],{"class":1516},[1416,2281,1519],{"class":1478},[1416,2283,1540],{"class":1474},[1416,2285,1651],{"class":1426},[1416,2287,1540],{"class":1474},[1416,2289,1622],{"class":1478},[1416,2291,2292,2294,2296,2298,2300,2302,2304,2306,2308,2310,2313,2315,2317,2319,2322,2324,2326,2329,2331,2333],{"class":1418,"line":1658},[1416,2293,2264],{"class":1478},[1416,2295,1227],{"class":1474},[1416,2297,2269],{"class":1478},[1416,2299,2272],{"class":1474},[1416,2301,2275],{"class":1478},[1416,2303,2272],{"class":1474},[1416,2305,1670],{"class":1516},[1416,2307,1519],{"class":1478},[1416,2309,1540],{"class":1474},[1416,2311,2312],{"class":1426},"cta_clicked",[1416,2314,1540],{"class":1474},[1416,2316,1543],{"class":1474},[1416,2318,1475],{"class":1474},[1416,2320,2321],{"class":1528}," cta",[1416,2323,1532],{"class":1474},[1416,2325,1488],{"class":1474},[1416,2327,2328],{"class":1426},"hero",[1416,2330,1540],{"class":1474},[1416,2332,1482],{"class":1474},[1416,2334,1622],{"class":1478},[1416,2336,2337,2340,2342],{"class":1418,"line":1663},[1416,2338,2339],{"class":1474},"\u003C/",[1416,2341,2232],{"class":1528},[1416,2343,2235],{"class":1474},[1303,2345,2346,2356],{},[1306,2347,2348],{},[1309,2349,2350,2353],{},[1312,2351,2352],{},"Attribute",[1312,2354,2355],{},"Meaning",[1319,2357,2358,2374,2391,2410],{},[1309,2359,2360,2371],{},[1324,2361,2362,1371,2365,1371,2368],{},[1209,2363,2364],{},"data-write-key",[1209,2366,2367],{},"data-project",[1209,2369,2370],{},"data-ingest-url",[1324,2372,2373],{},"Required. Without all three no client is created",[1309,2375,2376,2381],{},[1324,2377,2378],{},[1209,2379,2380],{},"data-consent",[1324,2382,2383,2384,1371,2386,1329,2388,2390],{},"Initial consent: ",[1209,2385,1651],{},[1209,2387,1829],{},[1209,2389,1800],{}," (default). A stored choice wins",[1309,2392,2393,2398],{},[1324,2394,2395],{},[1209,2396,2397],{},"data-autocapture",[1324,2399,2400,2403,2404,2406,2407,2409],{},[1209,2401,2402],{},"true",": one ",[1209,2405,1856],{}," on load. ",[1209,2408,1605],{},": also on SPA navigation",[1309,2411,2412,2417],{},[1324,2413,2414],{},[1209,2415,2416],{},"data-include-query-params",[1324,2418,2419,2420],{},"Comma-separated query parameters allowed into the page path, such as ",[1209,2421,2422],{},"utm_*,ref",[1203,2424,2425,2428,2429,2432],{},[1209,2426,2427],{},"window.LumenPulse.client"," is the client; ",[1209,2430,2431],{},"window.LumenPulse.create"," makes another one.",[1243,2434,2436],{"id":2435},"configuration","Configuration",[1303,2438,2439,2452],{},[1306,2440,2441],{},[1309,2442,2443,2446,2449],{},[1312,2444,2445],{},"Option",[1312,2447,2448],{},"Default",[1312,2450,2451],{},"Purpose",[1319,2453,2454,2469,2483,2495,2508,2525,2540,2555,2570,2585,2603],{},[1309,2455,2456,2460,2463],{},[1324,2457,2458],{},[1209,2459,1758],{},[1324,2461,2462],{},"required",[1324,2464,2465,2466,2468],{},"The ",[1209,2467,1537],{}," browser Pulse key",[1309,2470,2471,2475,2477],{},[1324,2472,2473],{},[1209,2474,1761],{},[1324,2476,2462],{},[1324,2478,2479,2480],{},"The project the key was created for. Any other project fails with ",[1209,2481,2482],{},"PULSE_PROJECT_FORBIDDEN",[1309,2484,2485,2489,2491],{},[1324,2486,2487],{},[1209,2488,1764],{},[1324,2490,2462],{},[1324,2492,2493],{},[1209,2494,1580],{},[1309,2496,2497,2501,2505],{},[1324,2498,2499],{},[1209,2500,1772],{},[1324,2502,2503],{},[1209,2504,1980],{},[1324,2506,2507],{},"Initial consent when none is stored",[1309,2509,2510,2514,2517],{},[1324,2511,2512],{},[1209,2513,1860],{},[1324,2515,2516],{},"off",[1324,2518,2519,1329,2522],{},[1209,2520,2521],{},"{ pageViews: true }",[1209,2523,2524],{},"{ pageViews: \"history\" }",[1309,2526,2527,2532,2535],{},[1324,2528,2529],{},[1209,2530,2531],{},"includeQueryParams",[1324,2533,2534],{},"none",[1324,2536,2537,2538],{},"Query parameters allowed into the page path: exact names, or a prefix ending in ",[1209,2539,1385],{},[1309,2541,2542,2547,2549],{},[1324,2543,2544],{},[1209,2545,2546],{},"appVersion",[1324,2548,2534],{},[1324,2550,2551,2552],{},"Sent as ",[1209,2553,2554],{},"context.app_version",[1309,2556,2557,2562,2567],{},[1324,2558,2559],{},[1209,2560,2561],{},"flushIntervalMs",[1324,2563,2564],{},[1209,2565,2566],{},"2000",[1324,2568,2569],{},"How often the queue is sent",[1309,2571,2572,2577,2582],{},[1324,2573,2574],{},[1209,2575,2576],{},"maxBatchSize",[1324,2578,2579],{},[1209,2580,2581],{},"20",[1324,2583,2584],{},"Events per request, capped at 50",[1309,2586,2587,2592,2596],{},[1324,2588,2589],{},[1209,2590,2591],{},"storage",[1324,2593,2594],{},[1209,2595,1822],{},[1324,2597,2598,2599,2602],{},"Where ids are saved after consent; ",[1209,2600,2601],{},"null"," keeps them in memory",[1309,2604,2605,2610,2612],{},[1324,2606,2607],{},[1209,2608,2609],{},"onError",[1324,2611,2534],{},[1324,2613,2614],{},"Called when a batch is dropped; never throws into your app",[1243,2616,2618],{"id":2617},"what-is-sent","What is sent",[1203,2620,2621,2622,1371,2625,2627,2628,1371,2631,1371,2634,1371,2637,2640,2641,2643,2644,2647,2648,2650,2651,2653],{},"Each event carries ",[1209,2623,2624],{},"event_name",[1209,2626,1761],{},", a generated ",[1209,2629,2630],{},"event_id",[1209,2632,2633],{},"occurred_at",[1209,2635,2636],{},"anonymous_id",[1209,2638,2639],{},"user_id"," (after ",[1209,2642,1720],{},"), ",[1209,2645,2646],{},"session_id",", your ",[1209,2649,1933],{},", and a ",[1209,2652,1937],{}," with:",[1303,2655,2656,2666],{},[1306,2657,2658],{},[1309,2659,2660,2663],{},[1312,2661,2662],{},"Field",[1312,2664,2665],{},"Value",[1319,2667,2668,2686,2696,2709,2719,2740,2749],{},[1309,2669,2670,2675],{},[1324,2671,2672],{},[1209,2673,2674],{},"path",[1324,2676,2677,1371,2680,2683,2684],{},[1209,2678,2679],{},"location.pathname",[1206,2681,2682],{},"without the query string"," unless you allow parameters with ",[1209,2685,2531],{},[1309,2687,2688,2693],{},[1324,2689,2690],{},[1209,2691,2692],{},"referrer",[1324,2694,2695],{},"The referring URL without its query string or fragment",[1309,2697,2698,2703],{},[1324,2699,2700],{},[1209,2701,2702],{},"utm",[1324,2704,2705,2708],{},[1209,2706,2707],{},"utm_*"," parameters of the current URL, always sent here",[1309,2710,2711,2716],{},[1324,2712,2713],{},[1209,2714,2715],{},"locale",[1324,2717,2718],{},"The browser language",[1309,2720,2721,2726],{},[1324,2722,2723],{},[1209,2724,2725],{},"user_agent_class",[1324,2727,2728,1371,2731,1371,2734,1329,2737,2739],{},[1209,2729,2730],{},"desktop",[1209,2732,2733],{},"mobile",[1209,2735,2736],{},"bot",[1209,2738,1800],{},", not the user agent itself",[1309,2741,2742,2746],{},[1324,2743,2744],{},[1209,2745,1772],{},[1324,2747,2748],{},"The consent state",[1309,2750,2751,2756],{},[1324,2752,2753],{},[1209,2754,2755],{},"app_version",[1324,2757,2758,2759],{},"When you set ",[1209,2760,2546],{},[1203,2762,2763,2764,2767,2768,2771],{},"Lumen takes your organization from the key; an ",[1209,2765,2766],{},"organization_uuid"," in the event body is ignored. Product events are kept for up to ",[1206,2769,2770],{},"395 days",", or for your organization's custom retention period when one is set. They never become logs, error groups or alerts.",[1243,2773,2076],{"id":2774},"privacy",[2776,2777,2778,2832,2835],"ul",{},[1251,2779,2780,2781,2784,2785,1371,2788,1371,2791,1371,2794,1371,2797,1371,2800,1371,2803,1371,2806,1371,2809,1371,2812,1371,2815,1371,2818,1371,2821,2824,2825,2828,2829,1227],{},"Lumen refuses events whose ",[1206,2782,2783],{},"property names"," look like personal data: ",[1209,2786,2787],{},"email",[1209,2789,2790],{},"e-mail",[1209,2792,2793],{},"password",[1209,2795,2796],{},"passwd",[1209,2798,2799],{},"phone",[1209,2801,2802],{},"telephone",[1209,2804,2805],{},"cpf",[1209,2807,2808],{},"ssn",[1209,2810,2811],{},"credit_card",[1209,2813,2814],{},"card_number",[1209,2816,2817],{},"authorization",[1209,2819,2820],{},"access_token",[1209,2822,2823],{},"refresh_token"," (any letter case). The whole request is refused with ",[1209,2826,2827],{},"400 PULSE_PII_PROPERTY_FORBIDDEN",", so ",[1206,2830,2831],{},"one bad property drops every event in that batch",[1251,2833,2834],{},"Only names are checked, not values. Keep personal data out of property values, event names and user ids yourself.",[1251,2836,2837],{},"The query string and the referrer's query string are left out by default, because they often carry tokens and personal data.",[1243,2839,2841],{"id":2840},"delivery-and-errors","Delivery and errors",[1203,2843,2844,2845,2848,2849,2852,2853,2856,2857,2860],{},"The queue is sent every 2 seconds, as soon as a batch fills, and when the page is hidden or closed. Requests go to ",[1209,2846,2847],{},"POST https://lumen-api.orkestia.dev/api/product/ingest/batch"," with the key in the ",[1209,2850,2851],{},"X-Api-Key"," header, using ",[1209,2854,2855],{},"fetch"," with ",[1209,2858,2859],{},"keepalive"," so they finish after the tab closes. Bodies stay under 64 KB; larger queues are split.",[1203,2862,2863,2864,2867,2868,2871,2872,2874,2875,2878,2879,2881,2882,2885,2886,2057,2889,2892,2893,1375,2895,2898],{},"A network error, a ",[1209,2865,2866],{},"5xx"," or a ",[1209,2869,2870],{},"429"," is retried ",[1206,2873,1290],{},": after the ",[1209,2876,2877],{},"Retry-After"," the server sends (a wait longer than 10 seconds drops the batch), or after 0.5 to 1.5 seconds. Every other error drops the batch. A dropped batch calls ",[1209,2880,2609],{}," with a ",[1209,2883,2884],{},"LumenPulseError"," that has ",[1209,2887,2888],{},"status",[1209,2890,2891],{},"0"," for a network error), ",[1209,2894,1209],{},[1209,2896,2897],{},"dropped"," (the number of events lost).",[1407,2900,2902],{"className":1461,"code":2901,"language":1463,"meta":1412,"style":1412},"import { createLumenPulse, LumenPulseError } from \"@orkestia/lumen-pulse\"\n\nconst pulse = createLumenPulse({\n  writeKey: \"lump_…\",\n  project: \"my-app\",\n  ingestUrl: \"https://lumen-api.orkestia.dev\",\n  onError(err) {\n    if (err instanceof LumenPulseError && err.code === \"PULSE_ORIGIN_FORBIDDEN\") {\n      console.warn(\"This address is not on the Pulse key\")\n    }\n  },\n})\n",[1209,2903,2904,2927,2931,2945,2959,2973,2987,3004,3043,3064,3069,3074],{"__ignoreMap":1412},[1416,2905,2906,2908,2910,2912,2914,2917,2919,2921,2923,2925],{"class":1418,"line":1419},[1416,2907,1471],{"class":1470},[1416,2909,1475],{"class":1474},[1416,2911,1479],{"class":1478},[1416,2913,1543],{"class":1474},[1416,2915,2916],{"class":1478}," LumenPulseError",[1416,2918,1482],{"class":1474},[1416,2920,1485],{"class":1470},[1416,2922,1488],{"class":1474},[1416,2924,1211],{"class":1426},[1416,2926,1493],{"class":1474},[1416,2928,2929],{"class":1418,"line":1496},[1416,2930,1500],{"emptyLinePlaceholder":1499},[1416,2932,2933,2935,2937,2939,2941,2943],{"class":1418,"line":1503},[1416,2934,1507],{"class":1506},[1416,2936,1510],{"class":1478},[1416,2938,1513],{"class":1474},[1416,2940,1479],{"class":1516},[1416,2942,1519],{"class":1478},[1416,2944,1522],{"class":1474},[1416,2946,2947,2949,2951,2953,2955,2957],{"class":1418,"line":1525},[1416,2948,1529],{"class":1528},[1416,2950,1532],{"class":1474},[1416,2952,1488],{"class":1474},[1416,2954,1537],{"class":1426},[1416,2956,1540],{"class":1474},[1416,2958,1585],{"class":1474},[1416,2960,2961,2963,2965,2967,2969,2971],{"class":1418,"line":1550},[1416,2962,1553],{"class":1528},[1416,2964,1532],{"class":1474},[1416,2966,1488],{"class":1474},[1416,2968,1560],{"class":1426},[1416,2970,1540],{"class":1474},[1416,2972,1585],{"class":1474},[1416,2974,2975,2977,2979,2981,2983,2985],{"class":1418,"line":1570},[1416,2976,1573],{"class":1528},[1416,2978,1532],{"class":1474},[1416,2980,1488],{"class":1474},[1416,2982,1580],{"class":1426},[1416,2984,1540],{"class":1474},[1416,2986,1585],{"class":1474},[1416,2988,2989,2992,2994,2998,3001],{"class":1418,"line":1588},[1416,2990,2991],{"class":1528},"  onError",[1416,2993,1519],{"class":1474},[1416,2995,2997],{"class":2996},"sHdIc","err",[1416,2999,3000],{"class":1474},")",[1416,3002,3003],{"class":1474}," {\n",[1416,3005,3006,3009,3011,3013,3016,3018,3021,3024,3026,3028,3031,3033,3036,3038,3041],{"class":1418,"line":1616},[1416,3007,3008],{"class":1470},"    if",[1416,3010,2057],{"class":1528},[1416,3012,2997],{"class":1478},[1416,3014,3015],{"class":1474}," instanceof",[1416,3017,2916],{"class":1422},[1416,3019,3020],{"class":1474}," &&",[1416,3022,3023],{"class":1478}," err",[1416,3025,1227],{"class":1474},[1416,3027,1209],{"class":1478},[1416,3029,3030],{"class":1474}," ===",[1416,3032,1488],{"class":1474},[1416,3034,3035],{"class":1426},"PULSE_ORIGIN_FORBIDDEN",[1416,3037,1540],{"class":1474},[1416,3039,3040],{"class":1528},") ",[1416,3042,1522],{"class":1474},[1416,3044,3045,3048,3050,3053,3055,3057,3060,3062],{"class":1418,"line":1625},[1416,3046,3047],{"class":1478},"      console",[1416,3049,1227],{"class":1474},[1416,3051,3052],{"class":1516},"warn",[1416,3054,1519],{"class":1528},[1416,3056,1540],{"class":1474},[1416,3058,3059],{"class":1426},"This address is not on the Pulse key",[1416,3061,1540],{"class":1474},[1416,3063,1622],{"class":1528},[1416,3065,3066],{"class":1418,"line":1630},[1416,3067,3068],{"class":1474},"    }\n",[1416,3070,3071],{"class":1418,"line":1636},[1416,3072,3073],{"class":1474},"  },\n",[1416,3075,3076,3078],{"class":1418,"line":1658},[1416,3077,1619],{"class":1474},[1416,3079,1622],{"class":1478},[1303,3081,3082,3097],{},[1306,3083,3084],{},[1309,3085,3086,3089,3092,3094],{},[1312,3087,3088],{},"Code",[1312,3090,3091],{},"HTTP",[1312,3093,2355],{},[1312,3095,3096],{},"SDK",[1319,3098,3099,3115,3129,3145,3159,3174,3188,3203,3219,3236],{},[1309,3100,3101,3106,3109,3112],{},[1324,3102,3103],{},[1209,3104,3105],{},"PULSE_AUTH_REQUIRED",[1324,3107,3108],{},"401",[1324,3110,3111],{},"No key sent",[1324,3113,3114],{},"Drops",[1309,3116,3117,3122,3124,3127],{},[1324,3118,3119],{},[1209,3120,3121],{},"PULSE_AUTH_INVALID",[1324,3123,3108],{},[1324,3125,3126],{},"Key unknown, revoked or malformed",[1324,3128,3114],{},[1309,3130,3131,3135,3137,3143],{},[1324,3132,3133],{},[1209,3134,1300],{},[1324,3136,3108],{},[1324,3138,3139,3140,3142],{},"Not a Pulse key, for example a ",[1209,3141,1296],{}," key",[1324,3144,3114],{},[1309,3146,3147,3151,3154,3157],{},[1324,3148,3149],{},[1209,3150,3035],{},[1324,3152,3153],{},"403",[1324,3155,3156],{},"The page's address is not on the key",[1324,3158,3114],{},[1309,3160,3161,3165,3167,3172],{},[1324,3162,3163],{},[1209,3164,2482],{},[1324,3166,3153],{},[1324,3168,3169,3171],{},[1209,3170,1761],{}," is not the key's project",[1324,3173,3114],{},[1309,3175,3176,3181,3183,3186],{},[1324,3177,3178],{},[1209,3179,3180],{},"PULSE_NOT_PROVISIONED",[1324,3182,3153],{},[1324,3184,3185],{},"Lumen or Pulse is not enabled for the organization",[1324,3187,3114],{},[1309,3189,3190,3195,3198,3201],{},[1324,3191,3192],{},[1209,3193,3194],{},"PULSE_PII_PROPERTY_FORBIDDEN",[1324,3196,3197],{},"400",[1324,3199,3200],{},"A property name looks like personal data",[1324,3202,3114],{},[1309,3204,3205,3210,3213,3216],{},[1324,3206,3207],{},[1209,3208,3209],{},"PULSE_BATCH_TOO_LARGE",[1324,3211,3212],{},"413",[1324,3214,3215],{},"More than 50 events in one request",[1324,3217,3218],{},"Drops (the SDK never sends more)",[1309,3220,3221,3226,3228,3231],{},[1324,3222,3223],{},[1209,3224,3225],{},"PULSE_RATE_LIMITED",[1324,3227,2870],{},[1324,3229,3230],{},"Organization events per minute exceeded",[1324,3232,3233,3234],{},"Retries once after ",[1209,3235,2877],{},[1309,3237,3238,3243,3245,3248],{},[1324,3239,3240],{},[1209,3241,3242],{},"PULSE_QUOTA_EXCEEDED",[1324,3244,2870],{},[1324,3246,3247],{},"Monthly event allowance used up",[1324,3249,3114],{},[1243,3251,864],{"id":3252},"limits",[1303,3254,3255,3268],{},[1306,3256,3257],{},[1309,3258,3259,3262,3265],{},[1312,3260,3261],{},"Plan",[1312,3263,3264],{},"Events / minute",[1312,3266,3267],{},"Events / month",[1319,3269,3270,3281,3292],{},[1309,3271,3272,3275,3278],{},[1324,3273,3274],{},"Free",[1324,3276,3277],{},"1,200",[1324,3279,3280],{},"1,000,000",[1309,3282,3283,3286,3289],{},[1324,3284,3285],{},"Pro",[1324,3287,3288],{},"10,000",[1324,3290,3291],{},"25,000,000",[1309,3293,3294,3297,3300],{},[1324,3295,3296],{},"Enterprise",[1324,3298,3299],{},"60,000",[1324,3301,3302],{},"250,000,000",[1203,3304,3305,3306,1227],{},"Both limits apply to the whole organization, across all Pulse keys and projects, and are separate from the log and metric limits. A browser key sends at most ",[1206,3307,3308],{},"50 events per request",[1243,3310,3312],{"id":3311},"content-security-policy","Content Security Policy",[1203,3314,3315],{},"If your site sends a CSP header, allow the ingest host:",[1407,3317,3322],{"className":3318,"code":3320,"language":3321,"meta":1412},[3319],"language-text","connect-src 'self' https://lumen-api.orkestia.dev\n","text",[1209,3323,3320],{"__ignoreMap":1412},[1203,3325,3326,3327,3329,3330,3333],{},"When you host ",[1209,3328,2127],{}," on your own site, ",[1209,3331,3332],{},"script-src 'self'"," covers it.",[1243,3335,3337],{"id":3336},"check-it-works","Check it works",[1203,3339,3340,3341,3344,3345,3347,3348,3350,3351,3354],{},"Open your app, accept analytics, and click around. ",[1206,3342,3343],{},"Pulse → Events"," shows each event with its properties and context; in the Cockpit app, ",[1206,3346,1272],{}," also shows the last event received and its project. If nothing arrives, add an ",[1209,3349,2609],{}," that logs ",[1209,3352,3353],{},"err.code"," and compare it with the table above.",[1243,3356,3358],{"id":3357},"next","Next",[3360,3361,3362,3368,3374],"card-group",{},[3363,3364,3365],"card",{"icon":514,"title":511,"to":512},[1203,3366,3367],{},"Overview, events, funnels, paths, retention and key setup.",[3363,3369,3371],{"icon":536,"title":533,"to":3370},"/lumen/send-data#pulse",[1203,3372,3373],{},"The HTTP contract behind the SDK, for servers and other languages.",[3363,3375,3376],{"icon":531,"title":528,"to":529},[1203,3377,3378],{},"Turn Lumen on for your organization and pick a plan.",[3380,3381,3382],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":1412,"searchDepth":1419,"depth":1496,"links":3384},[3385,3386,3387,3388,3389,3390,3391,3392,3393,3394,3395,3396,3397,3398],{"id":1245,"depth":1496,"text":1246},{"id":1404,"depth":1496,"text":1405},{"id":1457,"depth":1496,"text":1458},{"id":1772,"depth":1496,"text":1773},{"id":1905,"depth":1496,"text":1906},{"id":2108,"depth":1496,"text":2109},{"id":2435,"depth":1496,"text":2436},{"id":2617,"depth":1496,"text":2618},{"id":2774,"depth":1496,"text":2076},{"id":2840,"depth":1496,"text":2841},{"id":3252,"depth":1496,"text":864},{"id":3311,"depth":1496,"text":3312},{"id":3336,"depth":1496,"text":3337},{"id":3357,"depth":1496,"text":3358},"@orkestia/lumen-pulse: install, initialize, consent, track, identify, the browser Pulse key, privacy defaults, delivery, limits and error codes","md",null,{},{"icon":514},{"title":587,"description":3399},"t0wH8TwQfp4MY4lse2efFl9F79sIhOlBDE76jMj0N54",[3407,3409],{"title":583,"path":584,"stem":585,"description":3408,"icon":25,"children":-1},"Browser PKCE / OAuth SDK for your app's end-users — hosted login, RS256 JWTs, silent renew, no client secret",{"title":187,"path":591,"stem":592,"description":3410,"icon":190,"children":-1},"Platform-owned application data — declare tables, never hold a DSN in the frontend. Workflows, Data API, PostgREST, and an admitted SQL console for operators.",1794361941640]