@burdenoff/fe-libs 2026.1021.11 → 2026.1021.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,46 @@
1
+ /**
2
+ * The page-context keys the assistant sandbox actually reads, and the host-side
3
+ * filter that keeps every other key in the browser (G52, PR-AI-03 / BOFF-3908).
4
+ *
5
+ * The sandbox (`ai-assistant`) reads `pageContext` in exactly two places:
6
+ *
7
+ * - `src/context-loader.ts` `ALLOWED_CONTEXT_KEYS` — the keys `injectPageContext`
8
+ * writes into the session for the model. Any other key is skipped there.
9
+ * - `src/context-redaction.ts` `CONTEXT_ID_KEYS` — the opaque ids whose values
10
+ * are redacted from the assistant's replies. `organizationId` is on this list
11
+ * but NOT the first, so it must still be forwarded: dropping it would stop the
12
+ * sandbox from redacting an organisation id the model learnt from a tool call.
13
+ *
14
+ * Both lists are private Sets in that repo, and ai-assistant cannot import
15
+ * fe-libs, so they are mirrored here and pinned by a drift test against
16
+ * `__fixtures__/aiAssistantContextKeys.json`, which
17
+ * `scripts/assistant-context-keys/vendor.ts` cuts from an ai-assistant checkout
18
+ * (it records the commit and each source file's SHA-256). Re-vendor, then
19
+ * update these lists, whenever either Set changes.
20
+ *
21
+ * The filter is defence in depth: the sandbox already drops unknown keys before
22
+ * the model sees them, so this changes nothing the model receives. It stops the
23
+ * browser from sending data nobody reads (the user agent, a timestamp, anything
24
+ * a product adds by accident) through the gateway and the sandbox proxy.
25
+ */
26
+ /** Mirror of ai-assistant `ALLOWED_CONTEXT_KEYS`: the keys the model is shown. */
27
+ export declare const ASSISTANT_MODEL_CONTEXT_KEYS: readonly ["currentUrl", "currentPage", "entityType", "entityId", "entityName", "pageTitle", "pageType", "activeTab", "activeTool", "selectedText", "workspaceId", "workspaceName", "projectId", "projectName", "platform", "version", "viewportSize", "vibeId", "vibeName", "vibePath", "sessionId", "sessionName", "agentId", "agentName"];
28
+ /** Mirror of ai-assistant `CONTEXT_ID_KEYS`: the ids redacted from replies. */
29
+ export declare const ASSISTANT_REDACTED_CONTEXT_ID_KEYS: readonly ["workspaceId", "organizationId", "projectId", "entityId", "vibeId", "sessionId", "agentId"];
30
+ export type AssistantPageContextKey = (typeof ASSISTANT_MODEL_CONTEXT_KEYS)[number] | (typeof ASSISTANT_REDACTED_CONTEXT_ID_KEYS)[number];
31
+ /**
32
+ * Every key a host may send in `pageContext`: the union of the two server
33
+ * lists, in a stable order (model keys first, then the redaction-only ones).
34
+ */
35
+ export declare const ASSISTANT_PAGE_CONTEXT_KEYS: readonly AssistantPageContextKey[];
36
+ /** Whether the sandbox reads `key` from `pageContext`. */
37
+ export declare function isAssistantPageContextKey(key: string): key is AssistantPageContextKey;
38
+ /**
39
+ * The part of a host's page context that goes on the wire: only allow-listed
40
+ * keys, with their values untouched. `undefined` stays `undefined`, so a turn
41
+ * with no context still produces the body it always did; a context with no
42
+ * allow-listed key becomes `{}`, which the sandbox treats as "no context".
43
+ *
44
+ * Own enumerable keys only — an inherited or prototype key is never forwarded.
45
+ */
46
+ export declare function filterAssistantPageContext(pageContext: Readonly<Record<string, unknown>> | undefined): Record<string, unknown> | undefined;
@@ -0,0 +1,46 @@
1
+ //#region src/shared/assistant/pageContextKeys.ts
2
+ var e = [
3
+ "currentUrl",
4
+ "currentPage",
5
+ "entityType",
6
+ "entityId",
7
+ "entityName",
8
+ "pageTitle",
9
+ "pageType",
10
+ "activeTab",
11
+ "activeTool",
12
+ "selectedText",
13
+ "workspaceId",
14
+ "workspaceName",
15
+ "projectId",
16
+ "projectName",
17
+ "platform",
18
+ "version",
19
+ "viewportSize",
20
+ "vibeId",
21
+ "vibeName",
22
+ "vibePath",
23
+ "sessionId",
24
+ "sessionName",
25
+ "agentId",
26
+ "agentName"
27
+ ], t = [
28
+ "workspaceId",
29
+ "organizationId",
30
+ "projectId",
31
+ "entityId",
32
+ "vibeId",
33
+ "sessionId",
34
+ "agentId"
35
+ ], n = Object.freeze(Array.from(new Set([...e, ...t]))), r = new Set(n);
36
+ function i(e) {
37
+ return r.has(e);
38
+ }
39
+ function a(e) {
40
+ if (e === void 0) return;
41
+ let t = {};
42
+ for (let [n, i] of Object.entries(e)) r.has(n) && (t[n] = i);
43
+ return t;
44
+ }
45
+ //#endregion
46
+ export { e as ASSISTANT_MODEL_CONTEXT_KEYS, n as ASSISTANT_PAGE_CONTEXT_KEYS, t as ASSISTANT_REDACTED_CONTEXT_ID_KEYS, a as filterAssistantPageContext, i as isAssistantPageContextKey };
@@ -0,0 +1,75 @@
1
+ /** How a workflow came to exist. */
2
+ export type FluidGridsWorkflowSource = 'blank' | 'template' | 'import' | 'duplicate' | 'ai';
3
+ /** What started a run. */
4
+ export type FluidGridsRunTrigger = 'manual' | 'test' | 'schedule' | 'webhook' | 'event' | 'api';
5
+ /** Shared base: the workspace a FluidGrids fact happened in (stripped before Rybbit). */
6
+ export interface FluidGridsWorkspacePayload {
7
+ workspaceId?: string;
8
+ }
9
+ /** `fluidgrids.workflow.created` / `fluidgrids.workflow.published`. */
10
+ export interface FluidGridsWorkflowPayload extends FluidGridsWorkspacePayload {
11
+ workflowId?: string;
12
+ source?: FluidGridsWorkflowSource;
13
+ /** Node type slug of the trigger node, e.g. `trigger/webhook`. */
14
+ triggerType?: string;
15
+ /** Number of nodes on the canvas at the time of the fact. */
16
+ nodeCount?: number;
17
+ }
18
+ /** `fluidgrids.workflow.run_started` / `fluidgrids.workflow.run_failed`. */
19
+ export interface FluidGridsWorkflowRunPayload extends FluidGridsWorkspacePayload {
20
+ workflowId?: string;
21
+ executionId?: string;
22
+ trigger?: FluidGridsRunTrigger;
23
+ /**
24
+ * Machine error code on failure, e.g. `QUOTA_EXHAUSTED` or `NODE_TIMEOUT`.
25
+ * Never the error message: messages can carry user data.
26
+ */
27
+ errorCode?: string;
28
+ /** Wall-clock run duration when known (failure only). */
29
+ durationMs?: number;
30
+ }
31
+ /** `fluidgrids.template.used`. */
32
+ export interface FluidGridsTemplatePayload extends FluidGridsWorkspacePayload {
33
+ templateId?: string;
34
+ /** Catalog category slug of the template, e.g. `marketing`. */
35
+ category?: string;
36
+ }
37
+ /** `fluidgrids.node.installed`. */
38
+ export interface FluidGridsNodeInstalledPayload extends FluidGridsWorkspacePayload {
39
+ /** Public node-catalog type slug, e.g. `integration/slack`. */
40
+ nodeType?: string;
41
+ source?: 'store' | 'custom';
42
+ }
43
+ /** `fluidgrids.quota.workflow_limit_hit` / `fluidgrids.quota.run_limit_hit`. */
44
+ export interface FluidGridsQuotaPayload extends FluidGridsWorkspacePayload {
45
+ /** The billing quota that rejected the action, e.g. `fluidgrids.workflows.count`. */
46
+ quotaKey?: string;
47
+ /** The surface that hit it, e.g. `builder-save`, `template-import`, `run`. */
48
+ surface?: string;
49
+ }
50
+ /** `fluidgrids.billing.upgrade_clicked`. */
51
+ export interface FluidGridsUpgradePayload extends FluidGridsWorkspacePayload {
52
+ /** The surface the upgrade CTA was on, e.g. `quota-dialog`, `plan-badge`. */
53
+ surface?: string;
54
+ /** The quota that prompted the CTA, when it came from a limit. */
55
+ quotaKey?: string;
56
+ }
57
+ /** Payload for each `fluidgrids.*` event, merged into `BurdenoffEventPayloadMap`. */
58
+ export interface FluidGridsEventPayloadMap {
59
+ 'fluidgrids.workflow.created': FluidGridsWorkflowPayload;
60
+ 'fluidgrids.workflow.published': FluidGridsWorkflowPayload;
61
+ 'fluidgrids.workflow.run_started': FluidGridsWorkflowRunPayload;
62
+ 'fluidgrids.workflow.run_failed': FluidGridsWorkflowRunPayload;
63
+ 'fluidgrids.template.used': FluidGridsTemplatePayload;
64
+ 'fluidgrids.node.installed': FluidGridsNodeInstalledPayload;
65
+ 'fluidgrids.quota.workflow_limit_hit': FluidGridsQuotaPayload;
66
+ 'fluidgrids.quota.run_limit_hit': FluidGridsQuotaPayload;
67
+ 'fluidgrids.billing.upgrade_clicked': FluidGridsUpgradePayload;
68
+ }
69
+ /** Every FluidGrids analytics event name. */
70
+ export type FluidGridsEventName = keyof FluidGridsEventPayloadMap;
71
+ /**
72
+ * The FluidGrids events forwarded to Rybbit. All of them are facts or a single
73
+ * high-intent click (`billing.upgrade_clicked`), so volume stays low.
74
+ */
75
+ export declare const FLUIDGRIDS_RYBBIT_EVENTS: readonly ["fluidgrids.workflow.created", "fluidgrids.workflow.published", "fluidgrids.workflow.run_started", "fluidgrids.workflow.run_failed", "fluidgrids.template.used", "fluidgrids.node.installed", "fluidgrids.quota.workflow_limit_hit", "fluidgrids.quota.run_limit_hit", "fluidgrids.billing.upgrade_clicked"];
@@ -0,0 +1,14 @@
1
+ //#region src/shared/events/fluidgrids.ts
2
+ var e = [
3
+ "fluidgrids.workflow.created",
4
+ "fluidgrids.workflow.published",
5
+ "fluidgrids.workflow.run_started",
6
+ "fluidgrids.workflow.run_failed",
7
+ "fluidgrids.template.used",
8
+ "fluidgrids.node.installed",
9
+ "fluidgrids.quota.workflow_limit_hit",
10
+ "fluidgrids.quota.run_limit_hit",
11
+ "fluidgrids.billing.upgrade_clicked"
12
+ ];
13
+ //#endregion
14
+ export { e as FLUIDGRIDS_RYBBIT_EVENTS };
@@ -1,5 +1,8 @@
1
1
  import { ReactNode } from 'react';
2
- export type BurdenoffEventName = 'auth.signed_in' | 'auth.signed_up' | 'auth.signed_out' | 'auth.token_refreshed' | 'auth.token_refresh_failed' | 'billing.billing_account.viewed' | 'billing.billing_account.created' | 'billing.billing_account.updated' | 'billing.billing_account.archived' | 'billing.subscription.viewed' | 'billing.subscription.cancelled' | 'billing.plan.viewed' | 'billing.addon.viewed' | 'billing.checkout.viewed' | 'billing.checkout.initiated' | 'billing.checkout.failed' | 'billing.payment.succeeded' | 'billing.payment.failed' | 'billing.invoice.viewed' | 'billing.payment_method.viewed' | 'billing.payment_method.added' | 'billing.payment_method.default_set' | 'billing.payment_method.deleted' | 'billing.credit.viewed' | 'billing.credits.spent' | 'billing.credits.granted' | 'billing.credits.withdrawal_requested' | 'billing.quota.viewed' | 'billing.usage.viewed' | 'billing.transaction.viewed' | 'billing.affiliate.viewed' | 'billing.affiliate_code.created' | 'billing.affiliate_code.updated' | 'billing.affiliate_code.deactivated' | 'billing.affiliate_code.note_added' | 'billing.earning.viewed' | 'billing.payout.viewed' | 'billing.payout_account.added' | 'billing.payout_account.updated' | 'billing.payout_account.archived' | 'billing.payout.requested' | 'billing.payout.approved' | 'billing.payout.rejected' | 'billing.payout.processed' | 'vc.sandbox.created' | 'vc.sandbox.started' | 'vc.sandbox.extended' | 'vc.sandbox.expired' | 'vc.sandbox.deleted' | 'vc.sandbox.template_created' | 'vc.sandbox.template_deleted' | 'vc.sandbox.export_requested' | 'vc.analytics.dashboard.viewed' | 'vc.analytics.tab.changed' | 'vc.analytics.filter.changed' | 'tenant.tenant.created' | 'tenant.tenant.updated' | 'tenant.tenant.deleted' | 'tenant.tenant.suspended' | 'tenant.tenant.activated' | 'tenant.product.created' | 'tenant.product.updated' | 'tenant.product.deleted' | 'tenant.shortcut.created' | 'tenant.shortcut.updated' | 'tenant.shortcut.deleted' | 'tenant.shortcut.toggled' | 'tenant.contentpage.created' | 'tenant.contentpage.updated' | 'tenant.contentpage.deleted' | 'tenant.featureflag.created' | 'tenant.featureflag.updated' | 'tenant.featureflag.deleted' | 'conversations.conversation.created' | 'conversations.conversation.opened' | 'conversations.conversation.updated' | 'conversations.conversation.deleted' | 'conversations.conversation.archived' | 'conversations.conversation.restored' | 'conversations.message.sent' | 'conversations.message.updated' | 'conversations.message.deleted' | 'conversations.message.reacted' | 'conversations.member.added' | 'conversations.member.removed' | 'conversations.notification_level.updated' | 'tours.page.viewed' | 'tours.tour.started' | 'tours.tour.completed' | 'tours.tour.skipped' | 'tours.api.failed' | 'store.product.viewed' | 'store.product.installed' | 'store.product.uninstalled' | 'store.product.purchased' | 'store.cart.item_added' | 'store.cart.item_removed' | 'store.cart.checkout_started' | 'store.order.placed' | 'store.order.viewed' | 'store.license.viewed' | 'store.publisher.registered' | 'store.publisher.product_submitted' | 'store.review.submitted' | 'store.marketplace.searched' | 'store.marketplace.category_viewed' | 'support.ticket.created' | 'support.ticket.updated' | 'support.ticket.closed' | 'support.ticket.reopened' | 'support.ticket.message_sent' | 'notification.item.opened' | 'notification.preference.updated' | 'notification.admin.sent' | 'notification.template.saved' | 'notification.schedule.updated' | 'support.kb.article_viewed' | 'support.kb.article_rated' | 'support.chat.message_sent' | 'error.runtime.caught' | 'error.unhandledrejection' | 'perf.lcp.measured' | 'perf.cls.measured' | 'perf.inp.measured' | 'perf.ttfb.measured' | 'nav.route.changed' | 'files.file.created' | 'files.file.updated' | 'files.file.deleted' | 'files.file.moved' | 'files.file.copied' | 'files.file.downloaded' | 'files.file.shared' | 'files.folder.created' | 'files.folder.updated' | 'files.folder.deleted' | 'files.folder.moved' | 'files.share.created' | 'files.share.revoked' | 'files.upload.started' | 'files.upload.progress' | 'files.upload.completed' | 'files.upload.failed' | 'analytics.admin.overview.viewed' | 'analytics.admin.overview.refreshed' | 'bigconsole.dashboard.import_clicked' | 'bigconsole.dashboard.imported' | 'bigconsole.dashboard.share_clicked' | 'bigconsole.dashboard.shared' | 'bigconsole.data_sink.import_clicked' | 'bigconsole.data_sink.imported' | 'bigconsole.widget.create_clicked' | 'bigconsole.widget.created' | 'bigconsole.widget.duplicate_clicked' | 'bigconsole.widget.duplicated' | 'bigconsole.ai.generate_clicked' | 'bigconsole.ai.dashboard_generated' | 'bigconsole.ai.create_dashboard_clicked' | 'bigconsole.ai.dashboard_created' | 'vibecontrols.agent.register_clicked' | 'vibecontrols.agent.registered' | 'vibecontrols.agent.gateway_auth_setup' | 'vibecontrols.agent.started' | 'vibecontrols.agent.stopped' | 'vibecontrols.agent.deleted' | 'vibecontrols.agent.plugin_installed' | 'vibecontrols.agent.plugin_removed' | 'vibecontrols.agent.api_key_rotated' | 'vibecontrols.target.create_clicked' | 'vibecontrols.target.created' | 'vibecontrols.target.deleted' | 'vibecontrols.vibe.create_clicked' | 'vibecontrols.vibe.created' | 'vibecontrols.vibe.archived' | 'vibecontrols.vibe.deleted' | 'vibecontrols.session.create_clicked' | 'vibecontrols.session.created' | 'vibecontrols.session.started' | 'vibecontrols.session.terminal_opened_in_browser' | 'vibecontrols.session.stopped' | 'vibecontrols.session.terminated' | 'vibecontrols.session.restarted' | 'vibecontrols.session.share_clicked' | 'vibecontrols.session.shared_with_user' | 'vibecontrols.session.share_link_created' | 'vibecontrols.session.share_link_accessed' | 'vibecontrols.session.joined_shared' | 'vibecontrols.tunnel.create_clicked' | 'vibecontrols.tunnel.created' | 'vibecontrols.tunnel.started' | 'vibecontrols.tunnel.stopped' | 'vibecontrols.tunnel.deleted' | 'vibecontrols.tunnel.custom_domain_added' | 'vibecontrols.tunnel.credentials_rotated' | 'vibecontrols.vibedeck.create_clicked' | 'vibecontrols.vibedeck.created' | 'vibecontrols.vibedeck.button_added' | 'vibecontrols.vibedeck.button_executed_clicked' | 'vibecontrols.vibedeck.button_executed' | 'vibecontrols.vibedeck.shared' | 'vibecontrols.action.created' | 'vibecontrols.action.executed' | 'vibecontrols.ai.session_started_clicked' | 'vibecontrols.ai.session_started' | 'vibecontrols.ai.prompt_dispatched' | 'vibecontrols.ai.provider_configured' | 'vibecontrols.llm_context.generate_clicked' | 'vibecontrols.llm_context.url_generated' | 'vibecontrols.llm_context.token_revoked' | 'vibecontrols.quota.agent_limit_hit' | 'vibecontrols.quota.session_limit_hit' | 'vibecontrols.quota.tunnel_limit_hit' | 'vibecontrols.quota.ai_sessions_limit_hit' | 'vibecontrols.billing.upgrade_clicked' | 'ggnomad.page.viewed' | 'ggnomad.dashboard.viewed' | 'ggnomad.search.performed' | 'ggnomad.property.viewed' | 'ggnomad.property.created' | 'ggnomad.property.updated' | 'ggnomad.tour.viewed' | 'ggnomad.tour.created' | 'ggnomad.tour.updated' | 'ggnomad.activity.viewed' | 'ggnomad.activity.created' | 'ggnomad.activity.updated' | 'ggnomad.event.viewed' | 'ggnomad.event.created' | 'ggnomad.event.updated' | 'ggnomad.trip_plan.viewed' | 'ggnomad.trip_plan.created' | 'ggnomad.booking.created' | 'ggnomad.booking.updated' | 'ggnomad.favorite.added' | 'ggnomad.provider.viewed' | 'ggnomad.provider.created' | 'adaptercloud.page.viewed' | 'adaptercloud.adapter.created' | 'adaptercloud.connection.created' | 'adaptercloud.resource.viewed' | 'adaptercloud.policy.created' | 'adaptercloud.violation.resolved' | 'adaptercloud.drift.detected' | 'adaptercloud.sync_run.created' | 'adaptercloud.cost_record.created' | 'assethandler.page.viewed' | 'assethandler.asset.viewed' | 'assethandler.asset.created' | 'assethandler.asset.updated' | 'assethandler.work_order.viewed' | 'assethandler.work_order.created' | 'assethandler.incident.viewed' | 'assethandler.incident.created' | 'assethandler.change.viewed' | 'assethandler.change.created' | 'assethandler.problem.viewed' | 'assethandler.problem.created' | 'assethandler.maintenance.viewed' | 'assethandler.maintenance.created' | 'assethandler.report.viewed' | 'assethandler.analytics.viewed' | 'atheletebridge.page.viewed' | 'atheletebridge.team.created' | 'atheletebridge.team.updated' | 'atheletebridge.team.deleted' | 'atheletebridge.fixture.created' | 'atheletebridge.fixture.updated' | 'atheletebridge.program.created' | 'atheletebridge.program.updated' | 'atheletebridge.session.created' | 'atheletebridge.session.completed' | 'atheletebridge.metric.logged' | 'atheletebridge.tournament.created' | 'comradecircle.page.viewed' | 'comradecircle.circle.create_clicked' | 'comradecircle.circle.created' | 'comradecircle.circle.updated' | 'comradecircle.circle.deleted' | 'comradecircle.circle.joined' | 'comradecircle.circle.left' | 'comradecircle.post.create_clicked' | 'comradecircle.post.created' | 'comradecircle.post.liked' | 'comradecircle.post.commented' | 'comradecircle.event.create_clicked' | 'comradecircle.event.created' | 'comradecircle.event.rsvp_clicked' | 'comradecircle.event.rsvped' | 'comradecircle.member.invited' | 'comradecircle.member.followed' | 'comradecircle.search.performed' | 'coolandlovely.page.viewed' | 'coolandlovely.brand.create_clicked' | 'coolandlovely.brand.created' | 'coolandlovely.brand.updated' | 'coolandlovely.brand.viewed' | 'coolandlovely.collection.create_clicked' | 'coolandlovely.collection.created' | 'coolandlovely.collection.updated' | 'coolandlovely.collection.viewed' | 'coolandlovely.style_item.create_clicked' | 'coolandlovely.style_item.created' | 'coolandlovely.style_item.updated' | 'coolandlovely.style_item.viewed' | 'coolandlovely.look.create_clicked' | 'coolandlovely.look.created' | 'coolandlovely.look.updated' | 'coolandlovely.look.viewed' | 'coolandlovely.collaboration.create_clicked' | 'coolandlovely.collaboration.created' | 'coolandlovely.collaboration.updated' | 'coolandlovely.collaboration.viewed' | 'coolandlovely.lookbook.create_clicked' | 'coolandlovely.lookbook.created' | 'coolandlovely.lookbook.updated' | 'coolandlovely.lookbook.viewed' | 'coolandlovely.wardrobe.item_added' | 'coolandlovely.search.performed' | 'collabkin.tree.created' | 'collabkin.person.created' | 'collabkin.memory.created' | 'collabkin.story.created' | 'collabkin.member.invited' | 'theglobalfuel.dashboard.viewed' | 'theglobalfuel.asset.create_clicked' | 'theglobalfuel.asset.created' | 'theglobalfuel.asset.updated' | 'theglobalfuel.asset.deleted' | 'theglobalfuel.production.record_clicked' | 'theglobalfuel.production.recorded' | 'theglobalfuel.reserve.create_clicked' | 'theglobalfuel.reserve.created' | 'theglobalfuel.contract.create_clicked' | 'theglobalfuel.contract.created' | 'theglobalfuel.contract.updated' | 'theglobalfuel.shipment.schedule_clicked' | 'theglobalfuel.shipment.scheduled' | 'theglobalfuel.shipment.delivered' | 'theglobalfuel.inventory_lot.create_clicked' | 'theglobalfuel.inventory_lot.created' | 'theglobalfuel.inventory_lot.status_set' | 'theglobalfuel.emission.record_clicked' | 'theglobalfuel.emission.recorded' | 'theglobalfuel.emission.verified' | 'theglobalfuel.compliance_cert.create_clicked' | 'theglobalfuel.compliance_cert.created' | 'theglobalfuel.compliance_cert.transitioned' | 'housingvista.dashboard.viewed' | 'housingvista.property.create_clicked' | 'housingvista.property.created' | 'housingvista.property.updated' | 'housingvista.property.deleted' | 'housingvista.property.viewed' | 'housingvista.shortlist.property_added' | 'housingvista.transaction.create_clicked' | 'housingvista.transaction.created' | 'housingvista.transaction.updated' | 'housingvista.transaction.viewed' | 'housingvista.investment.create_clicked' | 'housingvista.investment.created' | 'housingvista.investment.viewed' | 'housingvista.offer.create_clicked' | 'housingvista.offer.created' | 'housingvista.offer.viewed' | 'housingvista.viewing.schedule_clicked' | 'housingvista.viewing.scheduled' | 'housingvista.chat.conversation_opened' | 'housingvista.chat.message_sent' | 'housingvista.analytics.viewed' | 'housingvista.rental.viewed' | 'housingvista.asset.create_clicked' | 'housingvista.asset.created' | 'housingvista.asset.updated' | 'housingvista.asset.viewed' | 'housingvista.amc.purchased' | 'housingvista.amc.viewed' | 'housingvista.marketplace.viewed' | 'housingvista.marketplace.service_contact_clicked' | 'housingvista.verification.submit_clicked' | 'housingvista.verification.submitted' | 'housingvista.verification.viewed' | 'housingvista.legal.viewed' | 'housingvista.legal.service_contact_clicked' | 'housingvista.home_loan.apply_clicked' | 'housingvista.home_loan.viewed' | 'housingvista.market_analytics.viewed' | 'housingvista.market_analytics.area_viewed' | 'housingvista.search.performed' | 'housingvista.export.requested' | 'manufacturedops.production_order.create_clicked' | 'manufacturedops.production_order.created' | 'manufacturedops.production_order.update_clicked' | 'manufacturedops.production_order.updated' | 'manufacturedops.production_order.transition_clicked' | 'manufacturedops.production_order.transitioned' | 'manufacturedops.operation.add_clicked' | 'manufacturedops.operation.added' | 'manufacturedops.operation.record_clicked' | 'manufacturedops.operation.recorded' | 'manufacturedops.work_center.create_clicked' | 'manufacturedops.work_center.created' | 'manufacturedops.work_center.update_clicked' | 'manufacturedops.work_center.updated' | 'manufacturedops.work_center.archive_clicked' | 'manufacturedops.work_center.archived' | 'manufacturedops.material_lot.create_clicked' | 'manufacturedops.material_lot.created' | 'manufacturedops.material_lot.update_clicked' | 'manufacturedops.material_lot.updated' | 'manufacturedops.material_lot.status_update_clicked' | 'manufacturedops.material_lot.status_updated' | 'manufacturedops.inspection_plan.create_clicked' | 'manufacturedops.inspection_plan.created' | 'manufacturedops.quality_inspection.record_clicked' | 'manufacturedops.quality_inspection.recorded' | 'manufacturedops.non_conformance.raise_clicked' | 'manufacturedops.non_conformance.raised' | 'manufacturedops.non_conformance.update_clicked' | 'manufacturedops.non_conformance.updated' | 'manufacturedops.non_conformance.transition_clicked' | 'manufacturedops.non_conformance.transitioned' | 'manufacturedops.asset.create_clicked' | 'manufacturedops.asset.created' | 'manufacturedops.maintenance_work_order.create_clicked' | 'manufacturedops.maintenance_work_order.created' | 'manufacturedops.maintenance_work_order.transition_clicked' | 'manufacturedops.maintenance_work_order.transitioned' | 'manufacturedops.downtime_event.record_clicked' | 'manufacturedops.downtime_event.recorded' | 'manufacturedops.page.viewed' | 'psw.client.create_clicked' | 'psw.client.created' | 'psw.client.updated' | 'psw.client.archived' | 'psw.engagement.create_clicked' | 'psw.engagement.created' | 'psw.engagement.transitioned' | 'psw.matter.create_clicked' | 'psw.matter.created' | 'psw.matter.closed' | 'psw.timeentry.create_clicked' | 'psw.timeentry.created' | 'psw.invoice.create_clicked' | 'psw.invoice.created' | 'psw.compliance.create_clicked' | 'psw.compliance.resolved' | 'psw.conflictcheck.run_clicked' | 'psw.conflictcheck.recorded' | 'psw.document.create_clicked' | 'psw.document.created' | 'psw.practicearea.create_clicked' | 'psw.practicearea.created' | 'psw.search.performed' | 'psw.export.requested' | 'mybodyshield.page.viewed' | 'mybodyshield.program.created' | 'mybodyshield.program.updated' | 'mybodyshield.program.status_changed' | 'mybodyshield.program.archived' | 'mybodyshield.workout.created' | 'mybodyshield.exercise.created' | 'mybodyshield.session.started' | 'technospam.page.viewed' | 'technospam.course.viewed' | 'technospam.course.enroll_clicked' | 'technospam.course.enrolled' | 'technospam.course.progress_updated' | 'technospam.course.certificate_claimed' | 'technospam.problem.viewed' | 'technospam.problem.submit_clicked' | 'technospam.problem.submitted' | 'technospam.mentor.viewed' | 'technospam.mentor.book_clicked' | 'technospam.mentor.booked' | 'technospam.mentor.become_mentor_clicked' | 'technospam.mentor.became_mentor' | 'technospam.session.cancel_clicked' | 'technospam.session.cancelled' | 'technospam.session.complete_clicked' | 'technospam.session.completed' | 'technospam.hackathon.viewed' | 'technospam.hackathon.register_team_clicked' | 'technospam.hackathon.team_registered' | 'technospam.hackathon.submit_project_clicked' | 'technospam.hackathon.project_submitted' | 'technospam.search.performed' | 'intelwatchtower.page.viewed' | 'intelwatchtower.source.created' | 'intelwatchtower.source.updated' | 'intelwatchtower.mission.created' | 'intelwatchtower.mission.assigned' | 'intelwatchtower.mission.completed' | 'intelwatchtower.entity.created' | 'intelwatchtower.entity.linked' | 'intelwatchtower.indicator.created' | 'intelwatchtower.indicator.confidence.updated' | 'intelwatchtower.observation.created' | 'intelwatchtower.requirement.created' | 'intelwatchtower.alert.created' | 'intelwatchtower.alert.triaged' | 'intelwatchtower.alert.escalated' | 'intelwatchtower.case.created' | 'intelwatchtower.case.closed' | 'intelwatchtower.report.created' | 'intelwatchtower.report.exported' | 'intelwatchtower.task.created' | 'intelwatchtower.task.completed' | 'intelwatchtower.cop.opened' | 'govcitizenhub.page.viewed' | 'govcitizenhub.dashboard.viewed' | 'govcitizenhub.service.created' | 'govcitizenhub.service.published' | 'govcitizenhub.application.created' | 'govcitizenhub.application.submitted' | 'govcitizenhub.application.decided' | 'govcitizenhub.permit.issued' | 'govcitizenhub.permit.revoked' | 'govcitizenhub.payment.recorded' | 'govcitizenhub.payment.settled' | 'govcitizenhub.grievance.reported' | 'govcitizenhub.grievance.resolved' | 'govcitizenhub.document.uploaded' | 'govcitizenhub.search.performed' | 'cosmicintersection.page.viewed' | 'cosmicintersection.dashboard.viewed' | 'cosmicintersection.datasets.viewed' | 'cosmicintersection.dataset.created' | 'cosmicintersection.dataset.published' | 'cosmicintersection.sources.viewed' | 'cosmicintersection.source.created' | 'cosmicintersection.collections.viewed' | 'cosmicintersection.collection.created' | 'cosmicintersection.pipelines.viewed' | 'cosmicintersection.pipeline.created' | 'cosmicintersection.runs.viewed' | 'cosmicintersection.run.started' | 'cosmicintersection.notebooks.viewed' | 'cosmicintersection.notebook.created' | 'cosmicintersection.analyses.viewed' | 'cosmicintersection.analysis.completed' | 'cosmicintersection.releases.viewed' | 'cosmicintersection.release.published' | 'cosmicintersection.lineage.viewed' | 'cosmicintersection.access.viewed' | 'cosmicintersection.grant.created' | 'cosmicintersection.search.performed' | 'hookmovies.page.viewed' | 'hookmovies.dashboard.viewed' | 'hookmovies.catalog.viewed' | 'hookmovies.title.created' | 'hookmovies.title.viewed' | 'hookmovies.studio.created' | 'hookmovies.studio.viewed' | 'hookmovies.person.created' | 'hookmovies.person.viewed' | 'hookmovies.production.created' | 'hookmovies.production.viewed' | 'hookmovies.audition.created' | 'hookmovies.audition.viewed' | 'hookmovies.distribution.rights_viewed' | 'hookmovies.live.event_viewed' | 'hookmovies.watchparty.created' | 'hookmovies.watchparty.joined' | 'hookmovies.entitlement.viewed' | 'hookmovies.review.submitted' | 'hookmovies.search.performed' | 'labsofscience.page.viewed' | 'labsofscience.project.created' | 'labsofscience.experiment.created' | 'labsofscience.protocol.created' | 'labsofscience.dataset.created' | 'labsofscience.inventory_item.created' | 'labsofscience.notebook_entry.signed' | 'labsofscience.pipeline.run_started' | 'subscriberbot.page.viewed' | 'buildmyiq.page.viewed' | 'buildmyiq.dashboard.viewed' | 'buildmyiq.catalog.viewed' | 'buildmyiq.learning.viewed' | 'buildmyiq.authoring.viewed' | 'buildmyiq.assessments.viewed' | 'buildmyiq.submissions.viewed' | 'buildmyiq.cohorts.viewed' | 'buildmyiq.skills.viewed' | 'buildmyiq.certificates.viewed' | 'buildmyiq.insights.viewed' | 'headshotmarketing.page.viewed' | 'headshotmarketing.campaign.created' | 'headshotmarketing.campaign.launched' | 'headshotmarketing.social_post.scheduled' | 'headshotmarketing.ad_campaign.created' | 'headshotmarketing.influencer_campaign.created' | 'headshotmarketing.contact.created' | 'headshotmarketing.deal.created' | 'headshotmarketing.workflow.created' | 'headshotmarketing.workflow.executed' | 'headshotmarketing.content_item.created' | 'headshotmarketing.asset.uploaded' | 'headshotmarketing.event.created' | 'headshotmarketing.report.created' | 'headshotmarketing.search.performed' | 'timecampus.page.viewed' | 'timecampus.dashboard.viewed' | 'timecampus.timer.started' | 'timecampus.timer.stopped' | 'timecampus.time_entry.created' | 'timecampus.timesheet.submitted' | 'timecampus.report.viewed' | 'timecampus.project.viewed' | 'timecampus.meeting.created' | 'timecampus.pomodoro.session.completed' | 'timecampus.focus_score.viewed' | 'crewfoundry.page.viewed' | 'crewfoundry.dashboard.viewed' | 'crewfoundry.job_posting.created' | 'crewfoundry.candidate.created' | 'crewfoundry.employee.created' | 'crewfoundry.team.created' | 'crewfoundry.project.created' | 'crewfoundry.course.enrolled' | 'crewfoundry.learning_path.created' | 'crewfoundry.service.listed' | 'crewfoundry.leave.approved' | 'crewfoundry.payroll.processed' | 'crewfoundry.invoice.created' | 'movethewheels.page.viewed' | 'movethewheels.shipment.created' | 'movethewheels.shipment.delivered' | 'movethewheels.order.created' | 'movethewheels.route.planned' | 'movethewheels.vehicle.assigned' | 'movethewheels.warehouse.inbound_received' | 'kadaikodi.page.viewed' | 'eventfullymanaged.page.viewed' | 'eventfullymanaged.dashboard.viewed' | 'eventfullymanaged.event.created' | 'eventfullymanaged.event.updated' | 'eventfullymanaged.event.viewed' | 'eventfullymanaged.event.published' | 'eventfullymanaged.venue.created' | 'eventfullymanaged.venue.updated' | 'eventfullymanaged.venue.viewed' | 'eventfullymanaged.speaker.created' | 'eventfullymanaged.speaker.updated' | 'eventfullymanaged.speaker.viewed' | 'eventfullymanaged.session.created' | 'eventfullymanaged.session.updated' | 'eventfullymanaged.session.viewed' | 'eventfullymanaged.registration.created' | 'eventfullymanaged.registration.check_in' | 'eventfullymanaged.sponsor.created' | 'eventfullymanaged.sponsor.viewed' | 'eventfullymanaged.exhibitor.created' | 'eventfullymanaged.exhibitor.viewed' | 'eventfullymanaged.lead.captured' | 'eventfullymanaged.communication.sent' | 'eventfullymanaged.analytics.viewed' | 'eventfullymanaged.report.exported' | 'healthybowl.farm.created' | 'healthybowl.crop.created' | 'healthybowl.crop.updated' | 'healthybowl.harvest.recorded' | 'workspaces.page.viewed' | 'assistant.leave_confirm.decided' | 'workspace.created' | 'workspace.updated' | 'workspace.deleted' | 'workspace.archived' | 'workspace.reactivated' | 'project.created' | 'project.updated' | 'project.deleted' | 'project.archived' | 'project.unarchived' | 'workspace-member.added' | 'workspace-member.removed' | 'workspace-member.role-updated' | 'project-member.added' | 'project-member.removed' | 'workspace-invitation.sent' | 'workspace-invitation.accepted' | 'workspace-invitation.declined';
2
+ import { FluidGridsEventPayloadMap } from './fluidgrids';
3
+ export { FLUIDGRIDS_RYBBIT_EVENTS } from './fluidgrids';
4
+ export type { FluidGridsEventName, FluidGridsEventPayloadMap, FluidGridsNodeInstalledPayload, FluidGridsQuotaPayload, FluidGridsRunTrigger, FluidGridsTemplatePayload, FluidGridsUpgradePayload, FluidGridsWorkflowPayload, FluidGridsWorkflowRunPayload, FluidGridsWorkflowSource, FluidGridsWorkspacePayload, } from './fluidgrids';
5
+ export type BurdenoffEventName = 'auth.signed_in' | 'auth.signed_up' | 'auth.signed_out' | 'auth.token_refreshed' | 'auth.token_refresh_failed' | 'billing.billing_account.viewed' | 'billing.billing_account.created' | 'billing.billing_account.updated' | 'billing.billing_account.archived' | 'billing.subscription.viewed' | 'billing.subscription.cancelled' | 'billing.plan.viewed' | 'billing.addon.viewed' | 'billing.checkout.viewed' | 'billing.checkout.initiated' | 'billing.checkout.failed' | 'billing.payment.succeeded' | 'billing.payment.failed' | 'billing.invoice.viewed' | 'billing.payment_method.viewed' | 'billing.payment_method.added' | 'billing.payment_method.default_set' | 'billing.payment_method.deleted' | 'billing.credit.viewed' | 'billing.credits.spent' | 'billing.credits.granted' | 'billing.credits.withdrawal_requested' | 'billing.quota.viewed' | 'billing.usage.viewed' | 'billing.transaction.viewed' | 'billing.affiliate.viewed' | 'billing.affiliate_code.created' | 'billing.affiliate_code.updated' | 'billing.affiliate_code.deactivated' | 'billing.affiliate_code.note_added' | 'billing.earning.viewed' | 'billing.payout.viewed' | 'billing.payout_account.added' | 'billing.payout_account.updated' | 'billing.payout_account.archived' | 'billing.payout.requested' | 'billing.payout.approved' | 'billing.payout.rejected' | 'billing.payout.processed' | 'vc.sandbox.created' | 'vc.sandbox.started' | 'vc.sandbox.extended' | 'vc.sandbox.expired' | 'vc.sandbox.deleted' | 'vc.sandbox.template_created' | 'vc.sandbox.template_deleted' | 'vc.sandbox.export_requested' | 'vc.analytics.dashboard.viewed' | 'vc.analytics.tab.changed' | 'vc.analytics.filter.changed' | 'tenant.tenant.created' | 'tenant.tenant.updated' | 'tenant.tenant.deleted' | 'tenant.tenant.suspended' | 'tenant.tenant.activated' | 'tenant.product.created' | 'tenant.product.updated' | 'tenant.product.deleted' | 'tenant.shortcut.created' | 'tenant.shortcut.updated' | 'tenant.shortcut.deleted' | 'tenant.shortcut.toggled' | 'tenant.contentpage.created' | 'tenant.contentpage.updated' | 'tenant.contentpage.deleted' | 'tenant.featureflag.created' | 'tenant.featureflag.updated' | 'tenant.featureflag.deleted' | 'conversations.conversation.created' | 'conversations.conversation.opened' | 'conversations.conversation.updated' | 'conversations.conversation.deleted' | 'conversations.conversation.archived' | 'conversations.conversation.restored' | 'conversations.message.sent' | 'conversations.message.updated' | 'conversations.message.deleted' | 'conversations.message.reacted' | 'conversations.member.added' | 'conversations.member.removed' | 'conversations.notification_level.updated' | 'tours.page.viewed' | 'tours.tour.started' | 'tours.tour.completed' | 'tours.tour.skipped' | 'tours.api.failed' | 'store.product.viewed' | 'store.product.installed' | 'store.product.uninstalled' | 'store.product.purchased' | 'store.cart.item_added' | 'store.cart.item_removed' | 'store.cart.checkout_started' | 'store.order.placed' | 'store.order.viewed' | 'store.license.viewed' | 'store.publisher.registered' | 'store.publisher.product_submitted' | 'store.review.submitted' | 'store.marketplace.searched' | 'store.marketplace.category_viewed' | 'support.ticket.created' | 'support.ticket.updated' | 'support.ticket.closed' | 'support.ticket.reopened' | 'support.ticket.message_sent' | 'notification.item.opened' | 'notification.preference.updated' | 'notification.admin.sent' | 'notification.template.saved' | 'notification.schedule.updated' | 'support.kb.article_viewed' | 'support.kb.article_rated' | 'support.chat.message_sent' | 'error.runtime.caught' | 'error.unhandledrejection' | 'perf.lcp.measured' | 'perf.cls.measured' | 'perf.inp.measured' | 'perf.ttfb.measured' | 'nav.route.changed' | 'files.file.created' | 'files.file.updated' | 'files.file.deleted' | 'files.file.moved' | 'files.file.copied' | 'files.file.downloaded' | 'files.file.shared' | 'files.folder.created' | 'files.folder.updated' | 'files.folder.deleted' | 'files.folder.moved' | 'files.share.created' | 'files.share.revoked' | 'files.upload.started' | 'files.upload.progress' | 'files.upload.completed' | 'files.upload.failed' | 'analytics.admin.overview.viewed' | 'analytics.admin.overview.refreshed' | 'bigconsole.dashboard.import_clicked' | 'bigconsole.dashboard.imported' | 'bigconsole.dashboard.share_clicked' | 'bigconsole.dashboard.shared' | 'bigconsole.data_sink.import_clicked' | 'bigconsole.data_sink.imported' | 'bigconsole.widget.create_clicked' | 'bigconsole.widget.created' | 'bigconsole.widget.duplicate_clicked' | 'bigconsole.widget.duplicated' | 'bigconsole.ai.generate_clicked' | 'bigconsole.ai.dashboard_generated' | 'bigconsole.ai.create_dashboard_clicked' | 'bigconsole.ai.dashboard_created' | 'vibecontrols.agent.register_clicked' | 'vibecontrols.agent.registered' | 'vibecontrols.agent.gateway_auth_setup' | 'vibecontrols.agent.started' | 'vibecontrols.agent.stopped' | 'vibecontrols.agent.deleted' | 'vibecontrols.agent.plugin_installed' | 'vibecontrols.agent.plugin_removed' | 'vibecontrols.agent.api_key_rotated' | 'vibecontrols.target.create_clicked' | 'vibecontrols.target.created' | 'vibecontrols.target.deleted' | 'vibecontrols.vibe.create_clicked' | 'vibecontrols.vibe.created' | 'vibecontrols.vibe.archived' | 'vibecontrols.vibe.deleted' | 'vibecontrols.session.create_clicked' | 'vibecontrols.session.created' | 'vibecontrols.session.started' | 'vibecontrols.session.terminal_opened_in_browser' | 'vibecontrols.session.stopped' | 'vibecontrols.session.terminated' | 'vibecontrols.session.restarted' | 'vibecontrols.session.share_clicked' | 'vibecontrols.session.shared_with_user' | 'vibecontrols.session.share_link_created' | 'vibecontrols.session.share_link_accessed' | 'vibecontrols.session.joined_shared' | 'vibecontrols.tunnel.create_clicked' | 'vibecontrols.tunnel.created' | 'vibecontrols.tunnel.started' | 'vibecontrols.tunnel.stopped' | 'vibecontrols.tunnel.deleted' | 'vibecontrols.tunnel.custom_domain_added' | 'vibecontrols.tunnel.credentials_rotated' | 'vibecontrols.vibedeck.create_clicked' | 'vibecontrols.vibedeck.created' | 'vibecontrols.vibedeck.button_added' | 'vibecontrols.vibedeck.button_executed_clicked' | 'vibecontrols.vibedeck.button_executed' | 'vibecontrols.vibedeck.shared' | 'vibecontrols.action.created' | 'vibecontrols.action.executed' | 'vibecontrols.ai.session_started_clicked' | 'vibecontrols.ai.session_started' | 'vibecontrols.ai.prompt_dispatched' | 'vibecontrols.ai.provider_configured' | 'vibecontrols.llm_context.generate_clicked' | 'vibecontrols.llm_context.url_generated' | 'vibecontrols.llm_context.token_revoked' | 'vibecontrols.quota.agent_limit_hit' | 'vibecontrols.quota.session_limit_hit' | 'vibecontrols.quota.tunnel_limit_hit' | 'vibecontrols.quota.ai_sessions_limit_hit' | 'vibecontrols.billing.upgrade_clicked' | 'ggnomad.page.viewed' | 'ggnomad.dashboard.viewed' | 'ggnomad.search.performed' | 'ggnomad.property.viewed' | 'ggnomad.property.created' | 'ggnomad.property.updated' | 'ggnomad.tour.viewed' | 'ggnomad.tour.created' | 'ggnomad.tour.updated' | 'ggnomad.activity.viewed' | 'ggnomad.activity.created' | 'ggnomad.activity.updated' | 'ggnomad.event.viewed' | 'ggnomad.event.created' | 'ggnomad.event.updated' | 'ggnomad.trip_plan.viewed' | 'ggnomad.trip_plan.created' | 'ggnomad.booking.created' | 'ggnomad.booking.updated' | 'ggnomad.favorite.added' | 'ggnomad.provider.viewed' | 'ggnomad.provider.created' | 'adaptercloud.page.viewed' | 'adaptercloud.adapter.created' | 'adaptercloud.connection.created' | 'adaptercloud.resource.viewed' | 'adaptercloud.policy.created' | 'adaptercloud.violation.resolved' | 'adaptercloud.drift.detected' | 'adaptercloud.sync_run.created' | 'adaptercloud.cost_record.created' | 'assethandler.page.viewed' | 'assethandler.asset.viewed' | 'assethandler.asset.created' | 'assethandler.asset.updated' | 'assethandler.work_order.viewed' | 'assethandler.work_order.created' | 'assethandler.incident.viewed' | 'assethandler.incident.created' | 'assethandler.change.viewed' | 'assethandler.change.created' | 'assethandler.problem.viewed' | 'assethandler.problem.created' | 'assethandler.maintenance.viewed' | 'assethandler.maintenance.created' | 'assethandler.report.viewed' | 'assethandler.analytics.viewed' | 'atheletebridge.page.viewed' | 'atheletebridge.team.created' | 'atheletebridge.team.updated' | 'atheletebridge.team.deleted' | 'atheletebridge.fixture.created' | 'atheletebridge.fixture.updated' | 'atheletebridge.program.created' | 'atheletebridge.program.updated' | 'atheletebridge.session.created' | 'atheletebridge.session.completed' | 'atheletebridge.metric.logged' | 'atheletebridge.tournament.created' | 'comradecircle.page.viewed' | 'comradecircle.circle.create_clicked' | 'comradecircle.circle.created' | 'comradecircle.circle.updated' | 'comradecircle.circle.deleted' | 'comradecircle.circle.joined' | 'comradecircle.circle.left' | 'comradecircle.post.create_clicked' | 'comradecircle.post.created' | 'comradecircle.post.liked' | 'comradecircle.post.commented' | 'comradecircle.event.create_clicked' | 'comradecircle.event.created' | 'comradecircle.event.rsvp_clicked' | 'comradecircle.event.rsvped' | 'comradecircle.member.invited' | 'comradecircle.member.followed' | 'comradecircle.search.performed' | 'coolandlovely.page.viewed' | 'coolandlovely.brand.create_clicked' | 'coolandlovely.brand.created' | 'coolandlovely.brand.updated' | 'coolandlovely.brand.viewed' | 'coolandlovely.collection.create_clicked' | 'coolandlovely.collection.created' | 'coolandlovely.collection.updated' | 'coolandlovely.collection.viewed' | 'coolandlovely.style_item.create_clicked' | 'coolandlovely.style_item.created' | 'coolandlovely.style_item.updated' | 'coolandlovely.style_item.viewed' | 'coolandlovely.look.create_clicked' | 'coolandlovely.look.created' | 'coolandlovely.look.updated' | 'coolandlovely.look.viewed' | 'coolandlovely.collaboration.create_clicked' | 'coolandlovely.collaboration.created' | 'coolandlovely.collaboration.updated' | 'coolandlovely.collaboration.viewed' | 'coolandlovely.lookbook.create_clicked' | 'coolandlovely.lookbook.created' | 'coolandlovely.lookbook.updated' | 'coolandlovely.lookbook.viewed' | 'coolandlovely.wardrobe.item_added' | 'coolandlovely.search.performed' | 'collabkin.tree.created' | 'collabkin.person.created' | 'collabkin.memory.created' | 'collabkin.story.created' | 'collabkin.member.invited' | 'theglobalfuel.dashboard.viewed' | 'theglobalfuel.asset.create_clicked' | 'theglobalfuel.asset.created' | 'theglobalfuel.asset.updated' | 'theglobalfuel.asset.deleted' | 'theglobalfuel.production.record_clicked' | 'theglobalfuel.production.recorded' | 'theglobalfuel.reserve.create_clicked' | 'theglobalfuel.reserve.created' | 'theglobalfuel.contract.create_clicked' | 'theglobalfuel.contract.created' | 'theglobalfuel.contract.updated' | 'theglobalfuel.shipment.schedule_clicked' | 'theglobalfuel.shipment.scheduled' | 'theglobalfuel.shipment.delivered' | 'theglobalfuel.inventory_lot.create_clicked' | 'theglobalfuel.inventory_lot.created' | 'theglobalfuel.inventory_lot.status_set' | 'theglobalfuel.emission.record_clicked' | 'theglobalfuel.emission.recorded' | 'theglobalfuel.emission.verified' | 'theglobalfuel.compliance_cert.create_clicked' | 'theglobalfuel.compliance_cert.created' | 'theglobalfuel.compliance_cert.transitioned' | 'housingvista.dashboard.viewed' | 'housingvista.property.create_clicked' | 'housingvista.property.created' | 'housingvista.property.updated' | 'housingvista.property.deleted' | 'housingvista.property.viewed' | 'housingvista.shortlist.property_added' | 'housingvista.transaction.create_clicked' | 'housingvista.transaction.created' | 'housingvista.transaction.updated' | 'housingvista.transaction.viewed' | 'housingvista.investment.create_clicked' | 'housingvista.investment.created' | 'housingvista.investment.viewed' | 'housingvista.offer.create_clicked' | 'housingvista.offer.created' | 'housingvista.offer.viewed' | 'housingvista.viewing.schedule_clicked' | 'housingvista.viewing.scheduled' | 'housingvista.chat.conversation_opened' | 'housingvista.chat.message_sent' | 'housingvista.analytics.viewed' | 'housingvista.rental.viewed' | 'housingvista.asset.create_clicked' | 'housingvista.asset.created' | 'housingvista.asset.updated' | 'housingvista.asset.viewed' | 'housingvista.amc.purchased' | 'housingvista.amc.viewed' | 'housingvista.marketplace.viewed' | 'housingvista.marketplace.service_contact_clicked' | 'housingvista.verification.submit_clicked' | 'housingvista.verification.submitted' | 'housingvista.verification.viewed' | 'housingvista.legal.viewed' | 'housingvista.legal.service_contact_clicked' | 'housingvista.home_loan.apply_clicked' | 'housingvista.home_loan.viewed' | 'housingvista.market_analytics.viewed' | 'housingvista.market_analytics.area_viewed' | 'housingvista.search.performed' | 'housingvista.export.requested' | 'manufacturedops.production_order.create_clicked' | 'manufacturedops.production_order.created' | 'manufacturedops.production_order.update_clicked' | 'manufacturedops.production_order.updated' | 'manufacturedops.production_order.transition_clicked' | 'manufacturedops.production_order.transitioned' | 'manufacturedops.operation.add_clicked' | 'manufacturedops.operation.added' | 'manufacturedops.operation.record_clicked' | 'manufacturedops.operation.recorded' | 'manufacturedops.work_center.create_clicked' | 'manufacturedops.work_center.created' | 'manufacturedops.work_center.update_clicked' | 'manufacturedops.work_center.updated' | 'manufacturedops.work_center.archive_clicked' | 'manufacturedops.work_center.archived' | 'manufacturedops.material_lot.create_clicked' | 'manufacturedops.material_lot.created' | 'manufacturedops.material_lot.update_clicked' | 'manufacturedops.material_lot.updated' | 'manufacturedops.material_lot.status_update_clicked' | 'manufacturedops.material_lot.status_updated' | 'manufacturedops.inspection_plan.create_clicked' | 'manufacturedops.inspection_plan.created' | 'manufacturedops.quality_inspection.record_clicked' | 'manufacturedops.quality_inspection.recorded' | 'manufacturedops.non_conformance.raise_clicked' | 'manufacturedops.non_conformance.raised' | 'manufacturedops.non_conformance.update_clicked' | 'manufacturedops.non_conformance.updated' | 'manufacturedops.non_conformance.transition_clicked' | 'manufacturedops.non_conformance.transitioned' | 'manufacturedops.asset.create_clicked' | 'manufacturedops.asset.created' | 'manufacturedops.maintenance_work_order.create_clicked' | 'manufacturedops.maintenance_work_order.created' | 'manufacturedops.maintenance_work_order.transition_clicked' | 'manufacturedops.maintenance_work_order.transitioned' | 'manufacturedops.downtime_event.record_clicked' | 'manufacturedops.downtime_event.recorded' | 'manufacturedops.page.viewed' | 'psw.client.create_clicked' | 'psw.client.created' | 'psw.client.updated' | 'psw.client.archived' | 'psw.engagement.create_clicked' | 'psw.engagement.created' | 'psw.engagement.transitioned' | 'psw.matter.create_clicked' | 'psw.matter.created' | 'psw.matter.closed' | 'psw.timeentry.create_clicked' | 'psw.timeentry.created' | 'psw.invoice.create_clicked' | 'psw.invoice.created' | 'psw.compliance.create_clicked' | 'psw.compliance.resolved' | 'psw.conflictcheck.run_clicked' | 'psw.conflictcheck.recorded' | 'psw.document.create_clicked' | 'psw.document.created' | 'psw.practicearea.create_clicked' | 'psw.practicearea.created' | 'psw.search.performed' | 'psw.export.requested' | 'mybodyshield.page.viewed' | 'mybodyshield.program.created' | 'mybodyshield.program.updated' | 'mybodyshield.program.status_changed' | 'mybodyshield.program.archived' | 'mybodyshield.workout.created' | 'mybodyshield.exercise.created' | 'mybodyshield.session.started' | 'technospam.page.viewed' | 'technospam.course.viewed' | 'technospam.course.enroll_clicked' | 'technospam.course.enrolled' | 'technospam.course.progress_updated' | 'technospam.course.certificate_claimed' | 'technospam.problem.viewed' | 'technospam.problem.submit_clicked' | 'technospam.problem.submitted' | 'technospam.mentor.viewed' | 'technospam.mentor.book_clicked' | 'technospam.mentor.booked' | 'technospam.mentor.become_mentor_clicked' | 'technospam.mentor.became_mentor' | 'technospam.session.cancel_clicked' | 'technospam.session.cancelled' | 'technospam.session.complete_clicked' | 'technospam.session.completed' | 'technospam.hackathon.viewed' | 'technospam.hackathon.register_team_clicked' | 'technospam.hackathon.team_registered' | 'technospam.hackathon.submit_project_clicked' | 'technospam.hackathon.project_submitted' | 'technospam.search.performed' | 'intelwatchtower.page.viewed' | 'intelwatchtower.source.created' | 'intelwatchtower.source.updated' | 'intelwatchtower.mission.created' | 'intelwatchtower.mission.assigned' | 'intelwatchtower.mission.completed' | 'intelwatchtower.entity.created' | 'intelwatchtower.entity.linked' | 'intelwatchtower.indicator.created' | 'intelwatchtower.indicator.confidence.updated' | 'intelwatchtower.observation.created' | 'intelwatchtower.requirement.created' | 'intelwatchtower.alert.created' | 'intelwatchtower.alert.triaged' | 'intelwatchtower.alert.escalated' | 'intelwatchtower.case.created' | 'intelwatchtower.case.closed' | 'intelwatchtower.report.created' | 'intelwatchtower.report.exported' | 'intelwatchtower.task.created' | 'intelwatchtower.task.completed' | 'intelwatchtower.cop.opened' | 'govcitizenhub.page.viewed' | 'govcitizenhub.dashboard.viewed' | 'govcitizenhub.service.created' | 'govcitizenhub.service.published' | 'govcitizenhub.application.created' | 'govcitizenhub.application.submitted' | 'govcitizenhub.application.decided' | 'govcitizenhub.permit.issued' | 'govcitizenhub.permit.revoked' | 'govcitizenhub.payment.recorded' | 'govcitizenhub.payment.settled' | 'govcitizenhub.grievance.reported' | 'govcitizenhub.grievance.resolved' | 'govcitizenhub.document.uploaded' | 'govcitizenhub.search.performed' | 'cosmicintersection.page.viewed' | 'cosmicintersection.dashboard.viewed' | 'cosmicintersection.datasets.viewed' | 'cosmicintersection.dataset.created' | 'cosmicintersection.dataset.published' | 'cosmicintersection.sources.viewed' | 'cosmicintersection.source.created' | 'cosmicintersection.collections.viewed' | 'cosmicintersection.collection.created' | 'cosmicintersection.pipelines.viewed' | 'cosmicintersection.pipeline.created' | 'cosmicintersection.runs.viewed' | 'cosmicintersection.run.started' | 'cosmicintersection.notebooks.viewed' | 'cosmicintersection.notebook.created' | 'cosmicintersection.analyses.viewed' | 'cosmicintersection.analysis.completed' | 'cosmicintersection.releases.viewed' | 'cosmicintersection.release.published' | 'cosmicintersection.lineage.viewed' | 'cosmicintersection.access.viewed' | 'cosmicintersection.grant.created' | 'cosmicintersection.search.performed' | 'hookmovies.page.viewed' | 'hookmovies.dashboard.viewed' | 'hookmovies.catalog.viewed' | 'hookmovies.title.created' | 'hookmovies.title.viewed' | 'hookmovies.studio.created' | 'hookmovies.studio.viewed' | 'hookmovies.person.created' | 'hookmovies.person.viewed' | 'hookmovies.production.created' | 'hookmovies.production.viewed' | 'hookmovies.audition.created' | 'hookmovies.audition.viewed' | 'hookmovies.distribution.rights_viewed' | 'hookmovies.live.event_viewed' | 'hookmovies.watchparty.created' | 'hookmovies.watchparty.joined' | 'hookmovies.entitlement.viewed' | 'hookmovies.review.submitted' | 'hookmovies.search.performed' | 'labsofscience.page.viewed' | 'labsofscience.project.created' | 'labsofscience.experiment.created' | 'labsofscience.protocol.created' | 'labsofscience.dataset.created' | 'labsofscience.inventory_item.created' | 'labsofscience.notebook_entry.signed' | 'labsofscience.pipeline.run_started' | 'subscriberbot.page.viewed' | 'buildmyiq.page.viewed' | 'buildmyiq.dashboard.viewed' | 'buildmyiq.catalog.viewed' | 'buildmyiq.learning.viewed' | 'buildmyiq.authoring.viewed' | 'buildmyiq.assessments.viewed' | 'buildmyiq.submissions.viewed' | 'buildmyiq.cohorts.viewed' | 'buildmyiq.skills.viewed' | 'buildmyiq.certificates.viewed' | 'buildmyiq.insights.viewed' | 'headshotmarketing.page.viewed' | 'headshotmarketing.campaign.created' | 'headshotmarketing.campaign.launched' | 'headshotmarketing.social_post.scheduled' | 'headshotmarketing.ad_campaign.created' | 'headshotmarketing.influencer_campaign.created' | 'headshotmarketing.contact.created' | 'headshotmarketing.deal.created' | 'headshotmarketing.workflow.created' | 'headshotmarketing.workflow.executed' | 'headshotmarketing.content_item.created' | 'headshotmarketing.asset.uploaded' | 'headshotmarketing.event.created' | 'headshotmarketing.report.created' | 'headshotmarketing.search.performed' | 'timecampus.page.viewed' | 'timecampus.dashboard.viewed' | 'timecampus.timer.started' | 'timecampus.timer.stopped' | 'timecampus.time_entry.created' | 'timecampus.timesheet.submitted' | 'timecampus.report.viewed' | 'timecampus.project.viewed' | 'timecampus.meeting.created' | 'timecampus.pomodoro.session.completed' | 'timecampus.focus_score.viewed' | 'crewfoundry.page.viewed' | 'crewfoundry.dashboard.viewed' | 'crewfoundry.job_posting.created' | 'crewfoundry.candidate.created' | 'crewfoundry.employee.created' | 'crewfoundry.team.created' | 'crewfoundry.project.created' | 'crewfoundry.course.enrolled' | 'crewfoundry.learning_path.created' | 'crewfoundry.service.listed' | 'crewfoundry.leave.approved' | 'crewfoundry.payroll.processed' | 'crewfoundry.invoice.created' | 'movethewheels.page.viewed' | 'movethewheels.shipment.created' | 'movethewheels.shipment.delivered' | 'movethewheels.order.created' | 'movethewheels.route.planned' | 'movethewheels.vehicle.assigned' | 'movethewheels.warehouse.inbound_received' | 'kadaikodi.page.viewed' | 'eventfullymanaged.page.viewed' | 'eventfullymanaged.dashboard.viewed' | 'eventfullymanaged.event.created' | 'eventfullymanaged.event.updated' | 'eventfullymanaged.event.viewed' | 'eventfullymanaged.event.published' | 'eventfullymanaged.venue.created' | 'eventfullymanaged.venue.updated' | 'eventfullymanaged.venue.viewed' | 'eventfullymanaged.speaker.created' | 'eventfullymanaged.speaker.updated' | 'eventfullymanaged.speaker.viewed' | 'eventfullymanaged.session.created' | 'eventfullymanaged.session.updated' | 'eventfullymanaged.session.viewed' | 'eventfullymanaged.registration.created' | 'eventfullymanaged.registration.check_in' | 'eventfullymanaged.sponsor.created' | 'eventfullymanaged.sponsor.viewed' | 'eventfullymanaged.exhibitor.created' | 'eventfullymanaged.exhibitor.viewed' | 'eventfullymanaged.lead.captured' | 'eventfullymanaged.communication.sent' | 'eventfullymanaged.analytics.viewed' | 'eventfullymanaged.report.exported' | 'fluidgrids.workflow.created' | 'fluidgrids.workflow.published' | 'fluidgrids.workflow.run_started' | 'fluidgrids.workflow.run_failed' | 'fluidgrids.template.used' | 'fluidgrids.node.installed' | 'fluidgrids.quota.workflow_limit_hit' | 'fluidgrids.quota.run_limit_hit' | 'fluidgrids.billing.upgrade_clicked' | 'healthybowl.farm.created' | 'healthybowl.crop.created' | 'healthybowl.crop.updated' | 'healthybowl.harvest.recorded' | 'workspaces.page.viewed' | 'assistant.leave_confirm.decided' | 'workspace.created' | 'workspace.updated' | 'workspace.deleted' | 'workspace.archived' | 'workspace.reactivated' | 'project.created' | 'project.updated' | 'project.deleted' | 'project.archived' | 'project.unarchived' | 'workspace-member.added' | 'workspace-member.removed' | 'workspace-member.role-updated' | 'project-member.added' | 'project-member.removed' | 'workspace-invitation.sent' | 'workspace-invitation.accepted' | 'workspace-invitation.declined';
3
6
  export interface HealthyBowlEventPayload {
4
7
  workspaceId?: string;
5
8
  farmId?: string;
@@ -187,7 +190,7 @@ export interface TenantResourcePayload {
187
190
  productId?: string;
188
191
  metadata?: Record<string, unknown>;
189
192
  }
190
- export interface BurdenoffEventPayloadMap extends BillingEventPayloadMap {
193
+ export interface BurdenoffEventPayloadMap extends BillingEventPayloadMap, FluidGridsEventPayloadMap {
191
194
  'auth.signed_in': AuthLifecyclePayload;
192
195
  'auth.signed_up': AuthLifecyclePayload;
193
196
  'auth.signed_out': AuthLifecyclePayload;
@@ -14,6 +14,21 @@ interface RybbitSinkProps {
14
14
  allowlist?: BurdenoffEventName[];
15
15
  /** Which event triggers `rybbit.identify`. */
16
16
  identifyOn?: BurdenoffEventName;
17
+ /**
18
+ * Route patterns on which nothing is sent to Rybbit (G27), in Rybbit's
19
+ * `data-skip-patterns` syntax (see `rybbitRoutes.ts`). Use it for public
20
+ * pages a stranger opens, such as a shared-workflow viewer. While the current
21
+ * route matches, the script is not injected and bus events are dropped; once
22
+ * the script is loaded it receives the same list, so its automatic SPA
23
+ * pageviews skip those routes too. Pass a stable (module-level) array.
24
+ */
25
+ skipRoutes?: readonly string[];
26
+ /**
27
+ * The current pathname, from the mount site's router. RybbitSink is
28
+ * router-agnostic, so without it the script-injection gate reads
29
+ * `window.location.pathname` at render time.
30
+ */
31
+ pathname?: string;
17
32
  }
18
33
  /** What the user actually chose. `null` means they have never been asked. */
19
34
  export type AnalyticsConsentChoice = 'granted' | 'denied';
@@ -35,7 +50,7 @@ export declare function shouldDropAnalyticsKey(key: string, eventName: Burdenoff
35
50
  * RybbitSink injects the Rybbit analytics script and forwards matching
36
51
  * event bus emissions as Rybbit custom events.
37
52
  */
38
- export declare function RybbitSink({ siteId, scriptUrl, rename, allowlist, identifyOn, }: RybbitSinkProps): null;
53
+ export declare function RybbitSink({ siteId, scriptUrl, rename, allowlist, identifyOn, skipRoutes, pathname, }: RybbitSinkProps): null;
39
54
  /**
40
55
  * The optional-analytics prompt.
41
56
  *
@@ -1,17 +1,18 @@
1
1
  "use client";
2
2
  import { useShellLabel as e } from "../../providers/shell/useShellLabel.js";
3
- import { useEventBus as t } from "../../../shared-events.js";
4
- import { useEffect as n, useRef as r, useState as i } from "react";
5
- import { jsx as a, jsxs as o } from "react/jsx-runtime";
3
+ import { isRybbitSkippedRoute as t } from "./rybbitRoutes.js";
4
+ import { useEventBus as n } from "../../../shared-events.js";
5
+ import { useEffect as r, useRef as i, useState as a } from "react";
6
+ import { jsx as o, jsxs as s } from "react/jsx-runtime";
6
7
  //#region src/shared/events/sinks/RybbitSink.tsx
7
- var s = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,bigconsole.dashboard.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,bigconsole.ai.dashboard_created".split(","), c = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, l = /(^id$|Id$|_id$|_ID$)/, u = [
8
+ var c = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,support.ticket.created,support.ticket.closed,support.ticket.reopened,support.kb.article_rated,notification.item.opened,notification.preference.updated,notification.admin.sent,notification.template.saved,notification.schedule.updated,bigconsole.dashboard.import_clicked,bigconsole.dashboard.imported,bigconsole.dashboard.share_clicked,bigconsole.dashboard.shared,bigconsole.data_sink.import_clicked,bigconsole.data_sink.imported,bigconsole.widget.create_clicked,bigconsole.widget.created,bigconsole.widget.duplicate_clicked,bigconsole.widget.duplicated,bigconsole.ai.generate_clicked,bigconsole.ai.dashboard_generated,bigconsole.ai.create_dashboard_clicked,bigconsole.ai.dashboard_created".split(","), l = /(token|password|secret|authorization|cookie|session|email|name|stack|message|subject|description|query|search|prompt|formula|reason|body|content)/i, u = /(^id$|Id$|_id$|_ID$)/, d = [
8
9
  "ticketId",
9
10
  "categoryId",
10
11
  "workspaceId"
11
- ], d = ["workspaceId"], f = {
12
- "support.ticket.created": u,
13
- "support.ticket.closed": u,
14
- "support.ticket.reopened": u,
12
+ ], f = ["workspaceId"], p = {
13
+ "support.ticket.created": d,
14
+ "support.ticket.closed": d,
15
+ "support.ticket.reopened": d,
15
16
  "support.kb.article_rated": ["articleId"],
16
17
  "bigconsole.dashboard.imported": ["dashboardId"],
17
18
  "bigconsole.dashboard.share_clicked": ["dashboardId"],
@@ -37,54 +38,54 @@ var s = /* @__PURE__ */ "nav.route.changed,auth.signed_in,auth.signed_out,suppor
37
38
  "bigconsole.ai.dashboard_generated": ["generationId"],
38
39
  "bigconsole.ai.create_dashboard_clicked": ["generationId"],
39
40
  "bigconsole.ai.dashboard_created": ["dashboardId", "generationId"],
40
- "healthybowl.farm.created": d,
41
- "healthybowl.crop.created": d,
42
- "healthybowl.crop.updated": d,
43
- "healthybowl.harvest.recorded": d
44
- }, p = {
41
+ "healthybowl.farm.created": f,
42
+ "healthybowl.crop.created": f,
43
+ "healthybowl.crop.updated": f,
44
+ "healthybowl.harvest.recorded": f
45
+ }, m = {
45
46
  "auth.signed_out": ["reason"],
46
47
  "psw.search.performed": ["queryLength"]
47
- }, m = {}, h = "bf-analytics-consent", g = "burdenoff:analytics-consent";
48
- function _() {
48
+ }, h = {}, g = [], _ = "bf-analytics-consent", v = "burdenoff:analytics-consent";
49
+ function y() {
49
50
  return navigator.globalPrivacyControl === !0;
50
51
  }
51
- function v() {
52
+ function b() {
52
53
  if (typeof window > "u") return null;
53
- let e = window.localStorage.getItem(h);
54
+ let e = window.localStorage.getItem(_);
54
55
  return e === "granted" || e === "denied" ? e : null;
55
56
  }
56
- function y() {
57
- return typeof window > "u" || _() ? !1 : v() === "granted";
57
+ function x() {
58
+ return typeof window > "u" || y() ? !1 : b() === "granted";
58
59
  }
59
- function b(e) {
60
- typeof window > "u" || (window.localStorage.setItem(h, e ? "granted" : "denied"), window.dispatchEvent(new CustomEvent(g, { detail: { granted: e } })));
60
+ function S(e) {
61
+ typeof window > "u" || (window.localStorage.setItem(_, e ? "granted" : "denied"), window.dispatchEvent(new CustomEvent(v, { detail: { granted: e } })));
61
62
  }
62
- function x() {
63
+ function C() {
63
64
  let e = window;
64
65
  return navigator.doNotTrack === "1" || e.doNotTrack === "1";
65
66
  }
66
- function S(e) {
67
+ function w(e) {
67
68
  let t = 2166136261;
68
69
  for (let n = 0; n < e.length; n += 1) t ^= e.charCodeAt(n), t = Math.imul(t, 16777619);
69
70
  return `u_${(t >>> 0).toString(16).padStart(8, "0")}`;
70
71
  }
71
- async function C(e) {
72
+ async function T(e) {
72
73
  if (crypto.subtle) {
73
74
  let t = new TextEncoder().encode(e), n = await crypto.subtle.digest("SHA-256", t);
74
75
  return Array.from(new Uint8Array(n), (e) => e.toString(16).padStart(2, "0")).join("");
75
76
  }
76
- return S(e);
77
+ return w(e);
77
78
  }
78
- function w(e, t) {
79
- return c.test(e) ? !(p[t] ?? []).includes(e) : l.test(e) ? !(f[t] ?? []).includes(e) : !1;
79
+ function E(e, t) {
80
+ return l.test(e) ? !(m[t] ?? []).includes(e) : u.test(e) ? !(p[t] ?? []).includes(e) : !1;
80
81
  }
81
- function T(e, t) {
82
+ function D(e, t) {
82
83
  if (!e || typeof e != "object" || Array.isArray(e)) return {};
83
84
  let n = {};
84
- for (let [r, i] of Object.entries(e)) w(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
85
+ for (let [r, i] of Object.entries(e)) E(r, t) || (typeof i == "string" || typeof i == "number" || typeof i == "boolean") && (n[r] = i);
85
86
  return n;
86
87
  }
87
- function E(e) {
88
+ function O(e) {
88
89
  let t = {};
89
90
  for (let [n, r] of Object.entries(e)) {
90
91
  let e = {
@@ -96,86 +97,89 @@ function E(e) {
96
97
  }
97
98
  return t;
98
99
  }
99
- function D({ siteId: e, scriptUrl: a = "https://app.rybbit.io/api/script.js", rename: o = m, allowlist: c = s, identifyOn: l = "auth.signed_in" }) {
100
- let u = t(), d = r(!1), [f, p] = i(y);
101
- return n(() => {
102
- let e = () => p(y()), t = (t) => {
103
- t.key === h && e();
100
+ function k({ siteId: e, scriptUrl: o = "https://app.rybbit.io/api/script.js", rename: s = h, allowlist: l = c, identifyOn: u = "auth.signed_in", skipRoutes: d = g, pathname: f }) {
101
+ let p = n(), m = i(!1), b = i(null), [S, w] = a(x), E = t(f ?? (typeof window > "u" ? void 0 : window.location.pathname), d);
102
+ return r(() => {
103
+ let e = () => w(x()), t = (t) => {
104
+ t.key === _ && e();
104
105
  };
105
- return window.addEventListener(g, e), window.addEventListener("storage", t), () => {
106
- window.removeEventListener(g, e), window.removeEventListener("storage", t);
106
+ return window.addEventListener(v, e), window.addEventListener("storage", t), () => {
107
+ window.removeEventListener(v, e), window.removeEventListener("storage", t);
107
108
  };
108
- }, []), n(() => {
109
- if (!e || !f || _() || d.current) return;
110
- d.current = !0;
109
+ }, []), r(() => {
110
+ if (!e || !S || E || y() || m.current) return;
111
+ m.current = !0;
111
112
  let t = document.createElement("script");
112
- return t.src = a, t.defer = !0, t.dataset.siteId = e, document.head.appendChild(t), () => {
113
- document.head.removeChild(t);
114
- };
113
+ t.src = o, t.defer = !0, t.dataset.siteId = e, d.length > 0 && (t.dataset.skipPatterns = JSON.stringify(d)), document.head.appendChild(t), b.current = t;
115
114
  }, [
116
115
  e,
117
- a,
118
- f
119
- ]), n(() => {
120
- if (!(!e || !f || _())) return u.onAny((e) => {
121
- if (x()) return;
122
- let t = window;
123
- if (!t.rybbit || !c.includes(e.name)) return;
124
- let n = E({
116
+ o,
117
+ S,
118
+ E,
119
+ d
120
+ ]), r(() => () => {
121
+ b.current?.remove(), b.current = null;
122
+ }, []), r(() => {
123
+ if (!(!e || !S || y())) return p.onAny((e) => {
124
+ if (C()) return;
125
+ let n = window;
126
+ if (!n.rybbit || !l.includes(e.name) || t(e.metadata.route.pathname, d)) return;
127
+ let r = O({
125
128
  route: e.metadata.route.pathname,
126
129
  env: e.metadata.app.env,
127
- ...T(e.payload, e.name)
130
+ ...D(e.payload, e.name)
128
131
  });
129
- if (e.name === l) {
130
- let r = e.payload, i = r?.userId ?? r?.actorId ?? r?.id;
131
- i && C(i).then((e) => {
132
- t.rybbit?.identify(e, n);
132
+ if (e.name === u) {
133
+ let t = e.payload, i = t?.userId ?? t?.actorId ?? t?.id;
134
+ i && T(i).then((e) => {
135
+ n.rybbit?.identify(e, r);
133
136
  });
134
137
  }
135
138
  if (e.name === "nav.route.changed") {
136
- t.rybbit.pageview();
139
+ n.rybbit.pageview();
137
140
  return;
138
141
  }
139
- let r = o[e.name] ?? e.name;
140
- t.rybbit.event(r, n);
142
+ let i = s[e.name] ?? e.name;
143
+ n.rybbit.event(i, r);
141
144
  });
142
145
  }, [
143
- u,
146
+ p,
144
147
  e,
145
- c,
146
148
  l,
147
- o,
148
- f
149
+ u,
150
+ s,
151
+ S,
152
+ d
149
153
  ]), null;
150
154
  }
151
- function O({ productName: t }) {
152
- let [n, r] = i(() => v() === null), s = e();
153
- return !n || _() ? null : /* @__PURE__ */ o("aside", {
155
+ function A({ productName: t }) {
156
+ let [n, r] = a(() => b() === null), i = e();
157
+ return !n || y() ? null : /* @__PURE__ */ s("aside", {
154
158
  className: "fixed bottom-4 left-4 z-[100] w-[calc(100%-2rem)] max-w-sm rounded-xl border border-border-seam bg-bg-surface p-4 text-text-primary shadow-pop",
155
- "aria-label": s("privacyConsent.ariaLabel", "Privacy choices"),
159
+ "aria-label": i("privacyConsent.ariaLabel", "Privacy choices"),
156
160
  "data-testid": "analytics-consent-banner",
157
- children: [/* @__PURE__ */ a("p", {
161
+ children: [/* @__PURE__ */ o("p", {
158
162
  className: "text-sm",
159
- children: s("privacyConsent.message", "Allow optional analytics to help improve {{productName}}? Essential product operation works either way.", { productName: t ?? s("privacyConsent.productFallback", "this product") })
160
- }), /* @__PURE__ */ o("div", {
163
+ children: i("privacyConsent.message", "Allow optional analytics to help improve {{productName}}? Essential product operation works either way.", { productName: t ?? i("privacyConsent.productFallback", "this product") })
164
+ }), /* @__PURE__ */ s("div", {
161
165
  className: "mt-3 flex gap-2",
162
- children: [/* @__PURE__ */ a("button", {
166
+ children: [/* @__PURE__ */ o("button", {
163
167
  type: "button",
164
168
  className: "rounded-md border border-border-seam px-3 py-2 text-sm",
165
169
  onClick: () => {
166
- b(!1), r(!1);
170
+ S(!1), r(!1);
167
171
  },
168
- children: s("privacyConsent.reject", "Reject optional")
169
- }), /* @__PURE__ */ a("button", {
172
+ children: i("privacyConsent.reject", "Reject optional")
173
+ }), /* @__PURE__ */ o("button", {
170
174
  type: "button",
171
175
  className: "rounded-md bg-action-primary-bg px-3 py-2 text-sm text-action-primary-text",
172
176
  onClick: () => {
173
- b(!0), r(!1);
177
+ S(!0), r(!1);
174
178
  },
175
- children: s("privacyConsent.allow", "Allow analytics")
179
+ children: i("privacyConsent.allow", "Allow analytics")
176
180
  })]
177
181
  })]
178
182
  });
179
183
  }
180
184
  //#endregion
181
- export { O as AnalyticsConsentBanner, D as RybbitSink, y as readAnalyticsConsent, v as readAnalyticsConsentChoice, b as setAnalyticsConsent };
185
+ export { A as AnalyticsConsentBanner, c as DEFAULT_RYBBIT_ALLOWLIST, k as RybbitSink, x as readAnalyticsConsent, b as readAnalyticsConsentChoice, S as setAnalyticsConsent };
@@ -3,4 +3,5 @@ export { BroadcastChannelSink } from './BroadcastChannelSink';
3
3
  export { BackendAuditSink } from './BackendAuditSink';
4
4
  export { RybbitSink, AnalyticsConsentBanner, readAnalyticsConsent, readAnalyticsConsentChoice, setAnalyticsConsent, } from './RybbitSink';
5
5
  export type { AnalyticsConsentChoice } from './RybbitSink';
6
+ export { compileRybbitRoutePattern, isRybbitSkippedRoute } from './rybbitRoutes';
6
7
  export { OtelBrowserSink } from './OtelBrowserSink';
@@ -1,5 +1,6 @@
1
1
  import "./DevtoolsSink.js";
2
2
  import "./BroadcastChannelSink.js";
3
3
  import "./BackendAuditSink.js";
4
+ import "./rybbitRoutes.js";
4
5
  import "./RybbitSink.js";
5
6
  import "./OtelBrowserSink.js";