@aglyn/aglyn 1.0.0-beta.232 → 1.0.0-beta.233
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.
- package/package.json +11 -11
- package/src/lib/app-utils/admin-audit-index.d.ts +3 -1
- package/src/lib/app-utils/admin-audit-index.js +9 -1
- package/src/lib/app-utils/admin-audit-index.js.map +1 -1
- package/src/lib/app-utils/analytics-summary.d.ts +95 -0
- package/src/lib/app-utils/analytics-summary.js +113 -0
- package/src/lib/app-utils/analytics-summary.js.map +1 -0
- package/src/lib/app-utils/artifact-list-keys.js +12 -0
- package/src/lib/app-utils/artifact-list-keys.js.map +1 -1
- package/src/lib/app-utils/artifact-list-queries.d.ts +16 -0
- package/src/lib/app-utils/artifact-list-queries.js +122 -4
- package/src/lib/app-utils/artifact-list-queries.js.map +1 -1
- package/src/lib/app-utils/crm.d.ts +30 -2
- package/src/lib/app-utils/crm.js +77 -15
- package/src/lib/app-utils/crm.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +17 -5
- package/src/lib/app-utils/docs-help.generated.js +35 -1
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.js +139 -6
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/lockdown.js +1 -1
- package/src/lib/app-utils/lockdown.js.map +1 -1
- package/src/lib/app-utils/message-search.js +5 -2
- package/src/lib/app-utils/message-search.js.map +1 -1
- package/src/lib/app-utils/name-search.js +15 -3
- package/src/lib/app-utils/name-search.js.map +1 -1
- package/src/lib/app-utils/screen-analytics-aggregate.d.ts +70 -0
- package/src/lib/app-utils/screen-analytics-aggregate.js +82 -0
- package/src/lib/app-utils/screen-analytics-aggregate.js.map +1 -0
- package/src/lib/app-utils/screen-kind.d.ts +25 -0
- package/src/lib/app-utils/screen-kind.js +25 -0
- package/src/lib/app-utils/screen-kind.js.map +1 -0
- package/src/lib/app-utils/screen-route.d.ts +1 -5
- package/src/lib/app-utils/screen-route.js +2 -4
- package/src/lib/app-utils/screen-route.js.map +1 -1
- package/src/lib/app-utils/site-journey-steps.d.ts +38 -0
- package/src/lib/app-utils/site-journey-steps.js +54 -0
- package/src/lib/app-utils/site-journey-steps.js.map +1 -0
- package/src/lib/app-utils/site-journey.d.ts +2 -22
- package/src/lib/app-utils/site-journey.js +2 -32
- package/src/lib/app-utils/site-journey.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.js +20 -2
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/plugin-checkout-credits.d.ts +288 -0
- package/src/lib/plugin-manager/plugin-checkout-credits.js +196 -0
- package/src/lib/plugin-manager/plugin-checkout-credits.js.map +1 -0
- package/src/lib/plugin-manager/plugin-shipping-rates.d.ts +10 -0
- package/src/lib/plugin-manager/plugin-shipping-rates.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/first-party-plugins.generated.ts"],"sourcesContent":["/**\n * GENERATED FILE — do not edit. Regenerate with:\n * node tools/scripts/generate-plugin-manifests.mjs\n *\n * The switchboard catalog (AGL-3080): one row per plugin and capability, each\n * declared by its own `catalog` block in plugins.config.json. The core holds\n * the types and the resolvers in `enabled-plugins.ts`; it holds no row.\n */\n\nimport type { FirstPartyPlugin, PluginEditBarLink, PublishedSiteImpact } from './enabled-plugins'\nimport type { ResolvedPluginHostCollection, ResolvedPluginOrgCollection } from './plugin-host-collections'\nimport type { ResolvedPluginSitemapSection } from './plugin-sitemap-sections'\nimport type { ResolvedPluginSitemapReaderDeclaration } from './plugin-sitemap-readers'\nimport type { ResolvedPluginSiteBundleSectionDeclaration } from './plugin-site-bundle'\nimport type { ResolvedTransferResourceDeclaration } from './plugin-transfer-resources'\nimport type { ResolvedPluginOrgCapacity } from './plugin-org-capacity'\nimport type { ResolvedPluginEntityPicker } from './plugin-entity-pickers'\nimport type { ResolvedPluginRecordPage } from './plugin-record-pages'\nimport type { ResolvedVisitorDoor } from './plugin-visitor-doors'\nimport type { ResolvedPluginCostAxis, ResolvedPluginSpendLine, ResolvedPluginUsageBand, ResolvedPluginUsageMeter } from './plugin-usage-axes'\nimport type { ResolvedPluginPlanFeature, ResolvedPluginPlanQuota } from './plugin-plan-entitlements'\nimport type { FunctionBindings } from './plugin-contributions'\nimport type { PluginDistribution } from './plugin-distribution'\nimport type { RepeatSourceDeclaration } from './repeat-rows'\nimport type { PluginTemplateSource } from './plugin-template-sources'\nimport type { FormRecordTargetDeclaration } from './submission-record-target'\nimport type { ArtifactTypeDeclaration } from './plugin-artifact-types'\nimport type { ResolvedBesignerDocument } from './besigner-documents'\nimport type { PluginOrgKeyedCollection } from './plugin-org-erasure'\nimport type { ResolvedVideoEmbedProvider } from './video-embed-provider'\nimport type { AnalyticsProviderDeclaration } from '../app-utils/analytics-provider'\nimport type { InteractionStepDeclaration } from '../app-utils/site-interactions'\nimport type { ServerStepDeclaration } from './plugin-server-steps'\nimport type { InteractionRecipeDeclaration } from './interaction-recipes'\nimport type { NotificationCategoryDeclaration, NotificationDigestDeclaration } from '../app-utils/notifications'\n\nexport const FIRST_PARTY_PLUGINS: readonly FirstPartyPlugin[] = [\n {\n \"id\": \"mui\",\n \"label\": \"Components\",\n \"alwaysOn\": true,\n \"description\": \"The base component and theme library every site builds on.\"\n },\n {\n \"id\": \"forms\",\n \"label\": \"Forms\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Forms on the site and the catalog that owns them.\",\n \"siteOff\": {\n \"stops\": \"Switching Forms off for this site stops forms rendering on its published pages, refuses every submission sent to it, and blocks publishing a form, or a page that carries one, until Forms is back on.\",\n \"keeps\": \"Submissions already received, the workspace’s form catalog and the CRM leads its forms created are kept, and forms keep working on the workspace’s other sites.\",\n \"confirm\": true,\n \"pages\": {\n \"heading\": \"These published pages carry a form. Their forms stop rendering and stop accepting submissions:\",\n \"none\": \"No published page on this site carries a form.\"\n }\n }\n },\n {\n \"id\": \"ai\",\n \"label\": \"AI\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"The assistant, generative building and automation, and the AI add-on.\",\n \"siteOff\": {\n \"stops\": \"Switching AI off for this site hides the assistant, Create with AI, the AI cards and the editor’s AI controls on this site, refuses every AI request made for it, and stops its queued AI jobs without spending credits.\",\n \"keeps\": \"It does not stop the workspace’s AI add-on, credits, allotments or overage billing, and AI keeps working on the workspace’s other sites.\"\n }\n },\n {\n \"id\": \"theme-presets\",\n \"label\": \"Themes\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Built-in themes to pick from on Setup → Theme: Bootstrap, Minimal and Material 3.\",\n \"siteOff\": {\n \"stops\": \"Switching Themes off for this site removes its built-in themes from the theme picker.\",\n \"keeps\": \"A site already using one keeps it, with every edit made to it: picking a theme copies it onto the site, so nothing on the published site changes.\"\n }\n },\n {\n \"id\": \"funnels\",\n \"label\": \"Funnels\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Step-by-step conversion on a site's Analytics page: visits at each step, drop-off and time between steps.\",\n \"siteOff\": {\n \"stops\": \"Switching Funnels off for this site removes the Funnels card from its Analytics page.\",\n \"keeps\": \"Saved funnels are kept, and visits keep being recorded while the site has one; delete the funnels to stop recording.\"\n }\n },\n {\n \"id\": \"accounts\",\n \"label\": \"User Accounts\",\n \"description\": \"Visitor accounts on the site: the /signin, /signup and /recover pages, and the Members blocks. On for a new site; a site created before that stays off until you turn it on.\",\n \"releaseFlag\": \"release_member_accounts\",\n \"defaultOffPerSite\": true,\n \"requires\": [\n \"commerce\"\n ]\n },\n {\n \"id\": \"bookings\",\n \"label\": \"Bookings\",\n \"description\": \"Services, open slots, and paid bookings.\",\n \"releaseFlag\": \"release_bookings\"\n },\n {\n \"id\": \"commerce\",\n \"label\": \"Commerce\",\n \"description\": \"Products, carts, checkout, orders, POS.\",\n \"releaseFlag\": \"release_commerce_v2\"\n },\n {\n \"id\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Marketplace listings, templates, and installs.\",\n \"releaseFlag\": \"release_marketplace\"\n },\n {\n \"id\": \"crm\",\n \"label\": \"CRM\",\n \"description\": \"Leads, contacts, companies, deals, tasks and reports.\",\n \"releaseFlag\": \"release_crm\"\n },\n {\n \"id\": \"outreach\",\n \"label\": \"Sequences\",\n \"description\": \"One-to-one email sequences sent from connected mailboxes.\",\n \"releaseFlag\": \"release_outreach\"\n },\n {\n \"id\": \"data\",\n \"label\": \"Data\",\n \"description\": \"Datasets, records, and CSV import/export.\",\n \"releaseFlag\": \"release_data_store\"\n },\n {\n \"id\": \"email\",\n \"label\": \"Email\",\n \"description\": \"Designed emails and campaign sending.\",\n \"releaseFlag\": \"release_email\"\n },\n {\n \"id\": \"events-calendar\",\n \"label\": \"Events Calendar\",\n \"description\": \"Event lists and calendars.\",\n \"releaseFlag\": \"release_events\"\n },\n {\n \"id\": \"inbox\",\n \"label\": \"Inbox\",\n \"description\": \"Form submissions and lead inbox.\",\n \"releaseFlag\": \"release_inbox\"\n },\n {\n \"id\": \"logic\",\n \"label\": \"Logic\",\n \"description\": \"Variables, functions, and reference health.\",\n \"releaseFlag\": \"release_logic\"\n },\n {\n \"id\": \"marketing\",\n \"label\": \"Marketing\",\n \"description\": \"Overlays, campaigns, and experiments.\",\n \"releaseFlag\": \"release_marketing\"\n },\n {\n \"id\": \"redirects\",\n \"label\": \"Redirects\",\n \"description\": \"URL redirect rules.\",\n \"releaseFlag\": \"release_redirects\"\n },\n {\n \"id\": \"workflows\",\n \"label\": \"Automation\",\n \"description\": \"Workflows, actions, webhooks, and run logs.\",\n \"releaseFlag\": \"release_workflows\"\n },\n {\n \"id\": \"accounting\",\n \"label\": \"Accounting\",\n \"description\": \"Sales, refunds, fees and payouts posted to QuickBooks Online or Xero.\",\n \"releaseFlag\": \"release_accounting\"\n },\n {\n \"id\": \"shipping\",\n \"label\": \"Shipping\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Carrier rates at checkout, shipping labels and tracking for physical orders, where the platform has connected a carrier provider.\",\n \"siteOff\": {\n \"stops\": \"Switching Shipping off for this site stops live carrier rates at its checkout, which falls back to the site’s own shipping rates, and removes label buying from its orders.\",\n \"keeps\": \"Labels already bought, their tracking and their charges are kept, and Shipping keeps working on the workspace’s other sites.\"\n }\n },\n {\n \"id\": \"tax-engines\",\n \"label\": \"Tax services\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sales tax from your own Avalara AvaTax or TaxJar account at checkout and the register.\",\n \"siteOff\": {\n \"stops\": \"Switching Tax services off for this site stops checkout and the register asking its connected tax service, which then use the site’s own tax rates, and stops recording its paid orders there.\",\n \"keeps\": \"The connection, product tax codes and exempt customers are kept, and orders already recorded stay recorded.\"\n }\n },\n {\n \"id\": \"sales-channels\",\n \"label\": \"Sales channels\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Product feeds for Google, YouTube, Facebook, Instagram, TikTok, Pinterest, Snapchat and Microsoft Shopping.\",\n \"siteOff\": {\n \"stops\": \"Switching Sales channels off for this site stops every product feed it publishes, including the Google Merchant Center address set up before sales channels existed, so channels stop receiving updates.\",\n \"keeps\": \"Each feed's address, its switch and the store's defaults are kept, so switching it back on resumes the same feeds.\"\n }\n },\n {\n \"id\": \"marketing-platforms\",\n \"label\": \"Email platforms\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Two-way contact and unsubscribe sync with your own Mailchimp, Klaviyo or Omnisend account, and order events for their flows.\",\n \"siteOff\": {\n \"stops\": \"Switching Email platforms off for this site stops its contacts, unsubscribes and order events syncing with the email platforms it connected.\",\n \"keeps\": \"The connections and everything already synced are kept, and an unsubscribe already read back stays on the site’s list.\"\n }\n },\n {\n \"id\": \"fonts\",\n \"label\": \"Fonts\",\n \"alwaysOn\": true,\n \"description\": \"Upload your own fonts and pick from the Google Fonts catalog for your site's theme.\"\n },\n {\n \"id\": \"post-purchase\",\n \"label\": \"Tracking and protection\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Order tracking and package protection.\",\n \"siteOff\": {\n \"stops\": \"Stops protection and tracking for new orders.\",\n \"keeps\": \"Bought protection stays in force.\"\n }\n },\n {\n \"id\": \"fulfillment-networks\",\n \"label\": \"Fulfillment networks\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Paid orders shipped by your own ShipBob or Amazon Multi-Channel Fulfillment account, with tracking back on the order and stock counts in step.\",\n \"siteOff\": {\n \"stops\": \"Switching Fulfillment networks off for this site stops its paid orders going to ShipBob or Amazon, and stops their shipments and stock counts coming back.\",\n \"keeps\": \"The connections and every order already sent are kept, and what a network already shipped stays on the order.\"\n }\n },\n {\n \"id\": \"marketplaces\",\n \"label\": \"Marketplaces\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sell on Amazon, eBay, Etsy, TikTok Shop, Walmart and Faire from one stock count: their orders come in as yours, and tracking goes back.\",\n \"siteOff\": {\n \"stops\": \"Switching Marketplaces off for this site stops importing its marketplace orders, sending tracking to the marketplaces, and keeping their listings in step with its stock.\",\n \"keeps\": \"The connections and every order already imported are kept, and switching it back on resumes from where the orders were last read.\"\n }\n },\n {\n \"id\": \"print-on-demand\",\n \"label\": \"Print on demand\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sell products your own Printful or Printify account makes and ships, with orders sent and tracking returned automatically.\",\n \"siteOff\": {\n \"stops\": \"Switching Print on demand off for this site stops new paid orders being sent to Printful or Printify, and stops imported products updating.\",\n \"keeps\": \"The connections, the imported products and the orders already sent are kept, and parcels already on their way still reach the orders.\"\n }\n },\n {\n \"id\": \"inventory-sync\",\n \"label\": \"Inventory sync\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Stock, products and paid orders kept in step with your own Cin7 Core, inFlow or Brightpearl account.\",\n \"siteOff\": {\n \"stops\": \"Switching Inventory sync off for this site stops its stock counts, products and paid orders syncing with Cin7 Core, inFlow or Brightpearl.\",\n \"keeps\": \"The connection and its settings are kept, and everything already synced stays on both sides.\"\n }\n },\n {\n \"id\": \"delivery-apps\",\n \"label\": \"Delivery apps\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Take DoorDash, Uber Eats and Grubhub orders at your register: accept, make and hand them over, with their items off the same shelf.\",\n \"siteOff\": {\n \"stops\": \"Switching Delivery apps off for this site stops its DoorDash, Uber Eats and Grubhub orders reaching the register; the services are told the store is not connected.\",\n \"keeps\": \"The linked stores, their item matches and every order already taken are kept, and switching it back on takes new orders again.\"\n }\n },\n]\n\nexport const PUBLISHED_SITE_IMPACT: Readonly<Record<string, PublishedSiteImpact>> = {\n \"mui\": \"elements\",\n \"forms\": \"elements\",\n \"ai\": \"console-only\",\n \"theme-presets\": \"console-only\",\n \"funnels\": \"console-only\",\n \"accounts\": \"routes\",\n \"bookings\": \"elements\",\n \"commerce\": \"elements\",\n \"marketplace\": \"console-only\",\n \"crm\": \"console-only\",\n \"outreach\": \"console-only\",\n \"data\": \"routes\",\n \"email\": \"elements\",\n \"events-calendar\": \"elements\",\n \"inbox\": \"console-only\",\n \"logic\": \"console-only\",\n \"marketing\": \"elements\",\n \"redirects\": \"routes\",\n \"workflows\": \"routes\",\n \"accounting\": \"console-only\",\n \"shipping\": \"console-only\",\n \"tax-engines\": \"console-only\",\n \"sales-channels\": \"routes\",\n \"marketing-platforms\": \"console-only\",\n \"fonts\": \"console-only\",\n \"post-purchase\": \"console-only\",\n \"fulfillment-networks\": \"console-only\",\n \"marketplaces\": \"console-only\",\n \"print-on-demand\": \"console-only\",\n \"inventory-sync\": \"console-only\",\n \"delivery-apps\": \"console-only\",\n}\n\n/**\n * The admin edit bar's quick links, in the order they are drawn — each\n * declared by the plugin whose console page it opens (AGL-3080).\n */\nexport const PLUGIN_EDIT_BAR_LINKS: readonly PluginEditBarLink[] = [\n {\n \"pluginId\": \"inbox\",\n \"order\": 20,\n \"label\": \"Inbox\",\n \"path\": \"/inbox\"\n },\n {\n \"pluginId\": \"commerce\",\n \"order\": 30,\n \"label\": \"Orders\",\n \"path\": \"/products/orders\"\n },\n]\n\n/**\n * Every host subcollection a first-party plugin owns, declared by that plugin\n * (AGL-3080). Core's readers ask this list; core names no collection.\n */\nexport const PLUGIN_HOST_COLLECTIONS_DECLARED: readonly ResolvedPluginHostCollection[] = [\n {\n \"pluginId\": \"forms\",\n \"name\": \"forms\",\n \"routeSlug\": \"forms\",\n \"siteExport\": {\n \"limit\": 200,\n \"fields\": [\n \"displayName\",\n \"slug\",\n \"fields\",\n \"consentFieldName\",\n \"routing\",\n \"legacyMatch\",\n \"rootId\",\n \"nodes\",\n \"archivedAt\",\n \"retired\",\n \"campaignIds\",\n \"inCampaign\",\n \"stats\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"searchTokens\"\n ],\n \"package\": {\n \"kind\": \"form\",\n \"label\": \"Forms\",\n \"nameField\": \"displayName\",\n \"slugField\": \"slug\",\n \"placements\": [\n {\n \"componentId\": \"form\",\n \"prop\": \"formId\"\n }\n ]\n },\n \"count\": {\n \"quotaKey\": \"formsPerHost\"\n }\n }\n },\n {\n \"pluginId\": \"forms\",\n \"name\": \"formSubmissions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Visitor form submissions. Unbounded, PII-heavy, and a file attached to one is the visitor's upload — not a library asset an author picked, and not something deleting a library asset would break.\"\n },\n {\n \"pluginId\": \"bookings\",\n \"name\": \"services\",\n \"routeSlug\": \"bookings\",\n \"resource\": {\n \"kind\": \"service\",\n \"label\": \"services\",\n \"activityNoun\": \"service\",\n \"quotaKey\": \"servicesPerHost\",\n \"entitlement\": \"bookings\",\n \"fields\": [\n \"name\",\n \"description\",\n \"durationMinutes\",\n \"priceUsd\",\n \"timezone\",\n \"windows\",\n \"crmFollowUpTask\",\n \"crmMeetingActivity\",\n \"askPhone\",\n \"askAddress\",\n \"priceDisplay\"\n ]\n },\n \"siteExport\": {\n \"limit\": 50,\n \"fields\": [\n \"name\",\n \"description\",\n \"durationMinutes\",\n \"priceUsd\",\n \"timezone\",\n \"windows\",\n \"crmFollowUpTask\",\n \"crmMeetingActivity\",\n \"askPhone\",\n \"askAddress\",\n \"priceDisplay\"\n ],\n \"package\": {\n \"kind\": \"service\",\n \"label\": \"Booking services\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"bookings\",\n \"name\": \"bookings\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Booking records — a customer, a time and a service pointer. The service holds the imagery and IS scanned; a booking is the transaction against it.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"products\",\n \"routeSlug\": \"products\",\n \"resource\": {\n \"kind\": \"product\",\n \"label\": \"products\",\n \"activityNoun\": \"product\",\n \"quotaKey\": \"productsPerHost\",\n \"entitlement\": \"commerce\",\n \"fields\": [\n \"name\",\n \"slug\",\n \"description\",\n \"type\",\n \"status\",\n \"mediaUrls\",\n \"categoryIds\",\n \"tags\",\n \"options\",\n \"variants\",\n \"seo\",\n \"channel\",\n \"supplierId\",\n \"oversellPolicy\",\n \"taxExempt\",\n \"digitalFiles\",\n \"downloadLimit\",\n \"subscription\",\n \"subscriptionOptional\",\n \"gatedVideos\",\n \"relatedProductIds\",\n \"giftCard\",\n \"lowStockThreshold\",\n \"shipping\",\n \"createdAtMs\",\n \"updatedAtMs\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"skus\",\n \"barcodes\",\n \"priceFromCents\",\n \"soldOut\",\n \"collectionIds\",\n \"priceUsd\",\n \"inventory\",\n \"imageUrl\"\n ],\n \"stamps\": {\n \"deletedAt\": null\n }\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"productCategories\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"suppliers\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"locations\",\n \"routeSlug\": \"products\",\n \"resource\": {\n \"kind\": \"location\",\n \"label\": \"inventory locations\",\n \"activityNoun\": \"inventory location\",\n \"quotaKey\": \"inventoryLocations\",\n \"entitlement\": \"commerce\",\n \"fields\": [\n \"name\",\n \"isDefault\",\n \"address\",\n \"postalAddress\"\n ]\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"coupons\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"discounts\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"reviews\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"memberPosts\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"resources\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"settings\",\n \"label\": \"Store settings\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"siteMembers\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"siteMemberCredentials\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A site member's password hash, one document per member, read and written only by the membership routes (AGL-3308). A credential with no content field, and no client may read it.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orders\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Completed orders. Line items COPY a product's `imageUrl` at purchase time, so these would match — and matching would be the wrong answer: an order is an immutable record of what was sold, deleting the asset changes nothing about it, and no author can edit one. A busy store also holds more of these than the whole read budget.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"carts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Live and abandoned carts, with the same copied line-item image and the same reasoning, at higher volume — one document per shopper session.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"checkouts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"In-flight checkout sessions. Transient buyer state carrying the same line-item snapshot as `carts`.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"reservations\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"POS and booking holds. Short-lived transaction rows pointing at a resource that is itself scanned.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"stockHolds\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Inventory holds taken during checkout. Machine-written, short-lived, and a quantity rather than content.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"subscriptions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Site membership subscriptions: a plan pointer, a status and Stripe ids. Server-written from the billing webhook.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"registers\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"POS register allocations — a count against the register add-on, read by billing (AGL-1775). No content field at all.\",\n \"resource\": {\n \"kind\": \"register\",\n \"label\": \"POS registers\",\n \"activityNoun\": \"POS register\",\n \"quotaKey\": \"posRegisters\",\n \"entitlement\": \"pos\",\n \"fields\": [\n \"name\",\n \"locationId\"\n ]\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"giftCards\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Gift card balances and redemption history. Money, not content.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"licenseKeys\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Digital-product license keys issued at fulfilment: a code, an order pointer and a revocation flag.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"inventoryAdjustments\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The append-only stock adjustment ledger (AGL-2269). One row per manual stock edit and per cancellation release, unbounded over a store's life.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"inventoryReconciliation\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Reconciliation runs comparing counted stock against recorded stock. Machine-written totals.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"restockAlerts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Back-in-stock requests: an email address and a product pointer, written by visitors.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"stripeTaxRates\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Cached Stripe tax rate ids, written by the tax sync. Vendor ids.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"returns\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Returns (AGL-3611): line indexes, quantities, reasons and a return label link, written only by the returns routes. A return names no image of its own; the order's lines carry the copies, and the order is not scanned for the same reason.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhooks\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The merchant's outbound order webhook endpoints (AGL-3611): a URL and the event names it takes. Scanning reads every endpoint for a URL that is never a media file.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhookSecrets\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Sealed HMAC signing secrets for the order webhooks (AGL-3611). Reading them for media would put a secret on a scan path to match nothing.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhookDeliveries\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The webhook delivery log (AGL-3611): one row per event per endpoint, expiring after 30 days. A body copies the order, whose image URLs record what was sold rather than use the file, so a match would be wrong, and a busy store holds thousands.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"posStaffPins\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Register staff PINs (AGL-3609): a salted hash and a lockout counter per member, written only by the staff PIN route. No content field at all.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"terminal\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The site's Stripe Terminal Location (AGL-3607): a vendor id and the address it was registered with, written only by the reader routes. No content field.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"terminalReaders\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The site's card readers (AGL-3607): a Stripe reader id, a label and a status, written only by `/api/commerce/pos-readers`. No content field.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"printers\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Cloud receipt printers (AGL-3619): a device id, a secret version, a paper width and a status. A receipt logo is the one stored IN the printer and named by a key code, never a file URL, so nothing here can use an asset.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"printJobs\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The printers' queue (AGL-3619): rendered receipt, ticket and label bytes waiting for a printer's poll, written by the print routes and gone once printed. Printer commands, not content, and a busy register queues hundreds a day.\"\n },\n {\n \"pluginId\": \"marketplace\",\n \"name\": \"installs\"\n },\n {\n \"pluginId\": \"crm\",\n \"name\": \"leads\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Captured leads, on the same footing as `formSubmissions`: visitor-submitted, unbounded, and never a place an author places an asset.\"\n },\n {\n \"pluginId\": \"data\",\n \"name\": \"recordPages\",\n \"label\": \"record template\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A binding holds a dataset id, a base path and field ids — never a value. The images a record page shows are the record's own, in the organization's dataset records, which no site collection holds.\"\n },\n {\n \"pluginId\": \"email\",\n \"name\": \"suppressions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Unsubscribes, bounces and spam complaints. Email addresses and a reason.\"\n },\n {\n \"pluginId\": \"events-calendar\",\n \"name\": \"events\",\n \"routeSlug\": \"events\",\n \"siteExport\": {\n \"limit\": 200,\n \"fields\": [\n \"title\",\n \"startsAtMs\",\n \"endsAtMs\",\n \"location\",\n \"organizer\",\n \"description\",\n \"coverImage\",\n \"coverImageAlt\",\n \"status\"\n ],\n \"package\": {\n \"kind\": \"event\",\n \"label\": \"Events\",\n \"nameField\": \"title\"\n },\n \"count\": {\n \"uncapped\": \"The events page creates an event with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"logic\",\n \"name\": \"functions\",\n \"routeSlug\": \"logic\",\n \"resource\": {\n \"kind\": \"function\",\n \"label\": \"functions\",\n \"activityNoun\": \"function\",\n \"activityType\": \"function\",\n \"quotaKey\": \"functionsPerHost\",\n \"fields\": [\n \"name\",\n \"parameters\",\n \"variables\",\n \"operations\",\n \"returnValue\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"parameters\",\n \"variables\",\n \"operations\",\n \"returnValue\"\n ],\n \"package\": {\n \"kind\": \"function\",\n \"label\": \"Functions\",\n \"nameField\": \"name\",\n \"bindingToken\": \"fn\"\n }\n }\n },\n {\n \"pluginId\": \"logic\",\n \"name\": \"variables\",\n \"routeSlug\": \"logic\",\n \"resource\": {\n \"kind\": \"variable\",\n \"label\": \"variables\",\n \"activityNoun\": \"variable\",\n \"activityType\": \"variable\",\n \"quotaKey\": \"variablesPerHost\",\n \"fields\": [\n \"name\",\n \"type\",\n \"value\",\n \"workflowId\",\n \"workflowName\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"type\",\n \"value\",\n \"workflowId\",\n \"workflowName\"\n ],\n \"package\": {\n \"kind\": \"variable\",\n \"label\": \"Variables\",\n \"nameField\": \"name\",\n \"references\": [\n {\n \"field\": \"workflowId\",\n \"kind\": \"workflow\"\n }\n ],\n \"bindingToken\": \"var\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"experiments\",\n \"routeSlug\": \"marketing\",\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"status\",\n \"target\",\n \"screenId\",\n \"nodeId\",\n \"variants\",\n \"goal\",\n \"winnerVariantId\",\n \"endAtMs\",\n \"autoWinner\",\n \"autoCompleted\",\n \"completedAt\"\n ],\n \"package\": {\n \"kind\": \"experiment\",\n \"label\": \"Experiments\",\n \"nameField\": \"name\",\n \"references\": [\n {\n \"field\": \"screenId\",\n \"kind\": \"page\"\n }\n ]\n },\n \"count\": {\n \"uncapped\": \"The experiments card creates an experiment with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"overlays\",\n \"routeSlug\": \"marketing\",\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"kind\",\n \"name\",\n \"enabled\",\n \"startAtMs\",\n \"endAtMs\",\n \"pathPatterns\",\n \"excludePathPatterns\",\n \"order\",\n \"bar\",\n \"popup\",\n \"stats\"\n ],\n \"package\": {\n \"kind\": \"overlay\",\n \"label\": \"Bars and popups\",\n \"nameField\": \"name\"\n },\n \"count\": {\n \"uncapped\": \"The overlays card creates a bar or popup with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"campaignAttributions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"One row per conversion — a form submission, a lead, a contact or a booking — recording which campaign the visitor arrived from. Written only by the Admin SDK, and the whole record is three sanitized UTM strings capped at a hundred characters: there is no field an asset could occupy and no surface that could pick one into it. Unbounded on the same footing as the conversions it credits.\"\n },\n {\n \"pluginId\": \"redirects\",\n \"name\": \"redirects\",\n \"routeSlug\": \"redirects\",\n \"resource\": {\n \"kind\": \"redirect\",\n \"label\": \"redirects\",\n \"activityNoun\": \"redirect\",\n \"quotaKey\": \"redirectsPerHost\",\n \"entitlement\": \"redirects\",\n \"requiresPublishRole\": true,\n \"fields\": [\n \"source\",\n \"destination\",\n \"statusCode\",\n \"kind\",\n \"priority\",\n \"enabled\"\n ],\n \"externalDestination\": {\n \"field\": \"destination\",\n \"approvedByField\": \"externalDestinationApprovedBy\"\n },\n \"livePathField\": \"source\"\n },\n \"siteExport\": {\n \"limit\": 500,\n \"fields\": [\n \"source\",\n \"destination\",\n \"statusCode\",\n \"kind\",\n \"priority\",\n \"enabled\"\n ],\n \"package\": {\n \"kind\": \"redirect\",\n \"label\": \"Redirects\",\n \"nameField\": \"source\"\n }\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"workflows\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"workflow\",\n \"label\": \"workflows\",\n \"activityNoun\": \"workflow\",\n \"activityType\": \"workflow\",\n \"quotaKey\": \"workflowsPerHost\",\n \"entitlement\": \"workflows\",\n \"fields\": [\n \"name\",\n \"steps\",\n \"returnValue\",\n \"trigger\"\n ],\n \"duplicate\": {\n \"nameField\": \"name\",\n \"fields\": [\n \"steps\",\n \"returnValue\"\n ],\n \"stamps\": {\n \"trigger\": null\n }\n }\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"steps\",\n \"returnValue\",\n \"trigger\"\n ],\n \"package\": {\n \"kind\": \"workflow\",\n \"label\": \"Workflows\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"webhooks\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"webhook\",\n \"label\": \"webhooks\",\n \"activityNoun\": \"webhook\",\n \"entitlement\": \"webhooks\",\n \"platformCap\": \"WEBHOOK_MAX_PER_HOST\",\n \"softDeletes\": true,\n \"fields\": [\n \"name\",\n \"direction\",\n \"url\",\n \"workflowName\",\n \"secret\",\n \"enabled\"\n ]\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"actions\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"action\",\n \"label\": \"interactions and actions\",\n \"activityNoun\": \"action\",\n \"platformCap\": \"ACTIONS_MAX_PER_HOST\",\n \"softDeletes\": true,\n \"fields\": [\n \"name\",\n \"description\",\n \"trigger\",\n \"steps\",\n \"enabled\",\n \"frequency\",\n \"cooldownMinutes\",\n \"audience\",\n \"nodeId\",\n \"screenId\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"trigger\",\n \"steps\",\n \"enabled\",\n \"recipe\"\n ],\n \"package\": {\n \"kind\": \"action\",\n \"label\": \"Interactions and actions\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"sales-channels\",\n \"name\": \"salesChannels\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A site's shopping-channel state (AGL-3637): one feed document per channel holding the token that locks its URL, the store's defaults for blank product fields, and a sealed OAuth token per API connection. No client reads or writes it, and nothing in it names a library asset.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnels\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A funnel is a name and its steps — paths and record ids, never an asset. Written only by the funnels save route.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnelJourneys\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"One document per recorded visit: step types, paths or record ids, server times and UTM labels. Written only by the site collector on the Admin SDK, read only by the results route; expires 90 days after the visit.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnelResults\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A computed funnel result — counts, shares and durations — kept up to a day by the results route and expiring on its own.\"\n },\n]\n\n/**\n * Every child sitemap a first-party plugin's documents fill, declared by that\n * plugin (AGL-3080), in the order the index lists them.\n */\nexport const PLUGIN_SITEMAP_SECTIONS_DECLARED: readonly ResolvedPluginSitemapSection[] = [\n {\n \"pluginId\": \"commerce\",\n \"section\": \"products\",\n \"collection\": \"products\",\n \"where\": {\n \"field\": \"status\",\n \"equals\": \"active\"\n },\n \"enabledBy\": {\n \"doc\": \"settings/store\",\n \"field\": \"pdpScreenId\"\n },\n \"path\": \"/products/{slug}\",\n \"skipWhen\": \"deletedAt\",\n \"lastmod\": [\n \"updatedAtMs\",\n \"createdAtMs\"\n ]\n },\n {\n \"pluginId\": \"commerce\",\n \"section\": \"catalog\",\n \"collection\": \"collections\",\n \"where\": {\n \"field\": \"kind\",\n \"equals\": \"catalog\"\n },\n \"enabledBy\": {\n \"doc\": \"settings/store\",\n \"field\": \"collectionScreenId\"\n },\n \"path\": \"/collections/{slug}\",\n \"lastmod\": [\n \"updatedAt\",\n \"createdAt\"\n ]\n },\n]\n\n/**\n * Every child-sitemap family a first-party plugin's reader lists, declared by\n * that plugin (AGL-3475), in the order the index lists them.\n */\nexport const PLUGIN_SITEMAP_READERS_DECLARED: readonly ResolvedPluginSitemapReaderDeclaration[] = [\n {\n \"pluginId\": \"data\",\n \"section\": \"records\"\n }\n]\n\n/**\n * Every section of the whole-site backup a first-party plugin answers for,\n * declared by that plugin (AGL-3080), in the order the bundle carries them.\n */\nexport const PLUGIN_SITE_BUNDLE_SECTIONS_DECLARED: readonly ResolvedPluginSiteBundleSectionDeclaration[] = [\n {\n \"pluginId\": \"data\",\n \"key\": \"datasets\",\n \"limit\": 50,\n \"package\": {\n \"kind\": \"dataset\",\n \"label\": \"Datasets\",\n \"nameField\": \"displayName\",\n \"placements\": [\n {\n \"prop\": \"repeatDataset\"\n },\n {\n \"componentId\": \"form\",\n \"prop\": \"datasetId\"\n }\n ]\n }\n }\n]\n\n/**\n * Every resource a first-party plugin can import or export, declared by that\n * plugin (AGL-3523), in the order the transfer hub lists them.\n */\nexport const PLUGIN_TRANSFER_RESOURCES_DECLARED: readonly ResolvedTransferResourceDeclaration[] = [\n {\n \"pluginId\": \"forms\",\n \"key\": \"forms.submissions\",\n \"label\": \"Form submissions\",\n \"singularLabel\": \"Form submission\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"What visitors sent through this site’s forms: each answer, and when, on which page and through which form it arrived.\",\n \"exportOnly\": true\n },\n {\n \"pluginId\": \"bookings\",\n \"key\": \"bookings\",\n \"featureFlag\": \"bookings\",\n \"label\": \"Bookings\",\n \"singularLabel\": \"Booking\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"Every booking on this site: the service, the time, the customer’s details, its status and what was paid.\",\n \"exportOnly\": true\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.products\",\n \"label\": \"Products\",\n \"singularLabel\": \"Product\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Products with their options, variants, prices, stock, images and search listing.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.categories\",\n \"label\": \"Product categories\",\n \"singularLabel\": \"Product category\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"The category tree products are filed under, matched by slug, then name.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.orders\",\n \"label\": \"Orders\",\n \"singularLabel\": \"Order\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every order with its items, money, customer and addresses. Exported only.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.discounts\",\n \"label\": \"Discounts\",\n \"singularLabel\": \"Discount\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Discount codes and automatic promotions, matched by code, then name. New ones start switched off.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.coupons\",\n \"label\": \"Coupons\",\n \"singularLabel\": \"Coupon\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Percent-off coupon codes, matched by code. New ones start switched off.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.gift-cards\",\n \"featureFlag\": \"giftCards\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"importRoles\": [\n \"admin\"\n ],\n \"label\": \"Gift cards\",\n \"singularLabel\": \"Gift card\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"Every gift card's code, balance and status. An import issues each card, confirmed by the total.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.tracking\",\n \"label\": \"Tracking numbers\",\n \"singularLabel\": \"Tracking number\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Tracking numbers from a label tool, each recorded as a shipment on the order it names.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.contacts\",\n \"featureFlag\": \"crm\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"label\": \"Contacts\",\n \"singularLabel\": \"Contact\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every contact field, custom fields included, with the company, the manager and the owner by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.companies\",\n \"featureFlag\": \"crm\",\n \"label\": \"Companies\",\n \"singularLabel\": \"Company\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every company field, custom fields included, with the parent company and the owner by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.email-templates\",\n \"featureFlag\": \"crm\",\n \"label\": \"Email templates\",\n \"singularLabel\": \"Email template\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 200\n },\n \"description\": \"Shared email templates and snippets, and your own personal ones.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.leads\",\n \"featureFlag\": \"crm\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"label\": \"Leads\",\n \"singularLabel\": \"Lead\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every lead field, custom fields included, with the status, the owner and the campaigns by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.deals\",\n \"featureFlag\": \"crm\",\n \"label\": \"Deals\",\n \"singularLabel\": \"Deal\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every deal field, custom fields and contact roles included, with the pipeline, stage, contact and company by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.tasks\",\n \"featureFlag\": \"crm\",\n \"label\": \"Tasks\",\n \"singularLabel\": \"Task\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every task, with its type, priority and status as your lists label them and the contact, company and deal it is for.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.activities\",\n \"featureFlag\": \"crm\",\n \"label\": \"Activities\",\n \"singularLabel\": \"Activity\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every call, email, meeting and note the team logged, with who logged it and what it was about.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.pipelines\",\n \"featureFlag\": \"crm\",\n \"label\": \"Pipelines and stages\",\n \"singularLabel\": \"Stage\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Each pipeline with its stages in order: their kind, probability and forecast category.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.fields\",\n \"featureFlag\": \"crm\",\n \"label\": \"Custom fields\",\n \"singularLabel\": \"Custom field\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every custom field you defined, on which record, of what type, with its choices.\"\n },\n {\n \"pluginId\": \"outreach\",\n \"key\": \"outreach.sequences\",\n \"featureFlag\": \"outreach\",\n \"label\": \"Sequences\",\n \"singularLabel\": \"Sequence\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 500\n },\n \"description\": \"Each sequence's steps and settings, imported as a draft. Never who was enrolled or what was sent.\"\n },\n {\n \"pluginId\": \"outreach\",\n \"key\": \"outreach.do-not-contact\",\n \"featureFlag\": \"outreach\",\n \"label\": \"Do-not-contact list\",\n \"singularLabel\": \"Do-not-contact entry\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"The domains and addresses sequences never email. An import only adds to it; an address is kept as a fingerprint, so only domains are exported.\"\n },\n {\n \"pluginId\": \"data\",\n \"key\": \"data.dataset\",\n \"featureFlag\": \"dataStore\",\n \"label\": \"Dataset records\",\n \"singularLabel\": \"Dataset record\",\n \"description\": \"The records of one dataset, with every field it defines.\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"instances\": true,\n \"readableByMembers\": true\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.list-members\",\n \"label\": \"List members\",\n \"singularLabel\": \"List member\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"instances\": true,\n \"description\": \"The people on one email list, with the consent each was added under.\"\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.suppressions\",\n \"label\": \"Suppressions\",\n \"singularLabel\": \"Suppression\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"The addresses a site's marketing email skips, and why.\"\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.topics\",\n \"label\": \"Email topics\",\n \"singularLabel\": \"Email topic\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 200\n },\n \"description\": \"Each topic's name, what recipients are told they get, and whether it is retired. Never who chose it.\"\n },\n {\n \"pluginId\": \"events-calendar\",\n \"key\": \"events\",\n \"featureFlag\": \"eventCalendar\",\n \"label\": \"Events\",\n \"singularLabel\": \"Event\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"This site’s calendar events, matched on their ID, then the title and start together.\"\n },\n {\n \"pluginId\": \"marketing\",\n \"key\": \"marketing.campaigns\",\n \"label\": \"Campaigns\",\n \"singularLabel\": \"Campaign\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 500\n },\n \"description\": \"Each campaign's name, dates, lists and its emails' copy, imported as drafts. Never what was sent or its results.\"\n },\n {\n \"pluginId\": \"redirects\",\n \"key\": \"redirects\",\n \"featureFlag\": \"redirects\",\n \"label\": \"Redirects\",\n \"singularLabel\": \"Redirect\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"This site’s redirect rules, matched on the path they redirect from.\"\n },\n {\n \"pluginId\": \"workflows\",\n \"key\": \"workflows.org-automations\",\n \"featureFlag\": \"actions\",\n \"label\": \"Org automations\",\n \"singularLabel\": \"Org automation\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 100\n },\n \"description\": \"The organization's automations — trigger, steps and sites — imported switched off.\"\n }\n]\n\n/**\n * Every org collection a first-party plugin owns whose documents the media\n * scan reads, declared by that plugin (AGL-3273).\n */\nexport const PLUGIN_ORG_COLLECTIONS_DECLARED: readonly ResolvedPluginOrgCollection[] = [\n {\n \"pluginId\": \"marketing\",\n \"name\": \"campaigns\",\n \"routeSlug\": \"marketing\",\n \"siteField\": \"hostId\",\n \"holdsTransferWhile\": {\n \"field\": \"status\",\n \"values\": [\n \"scheduled\",\n \"sending\"\n ]\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"emailCampaigns\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The campaign CONTAINER — a name, a date window, the list ids it is aimed at, a topic and the sites it runs on. Distinct from `campaigns`, which holds the sends and IS scanned because a send carries the copy that went out. A container carries no copy and no asset reference: the design a send renders is a screen, and the screen is where the picker writes.\"\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"automations\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"An org automation (AGL-3302) — a trigger, its conditions, the sites it is placed on, and a step list drawn from the server steps only: email subject and body as plain text, list, dataset and campaign ids, CRM fields and waits. No step it may hold carries a media reference, the in-page steps that could (custom HTML, popups) are refused by its save route, and it is written only by that route.\"\n },\n {\n \"pluginId\": \"ai\",\n \"name\": \"aiJobs\",\n \"label\": \"AI job\",\n \"siteField\": \"hostId\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"An AI job is the machine's record of one request: the brief, scalar inputs, the step ledger and the ids of the documents it produced. What it produced is a screen, layout, product or other document of the site, and the scan reads that document; scanning the job would report a request as using an asset the page it built uses. Jobs expire on their own (`expiresAt`, 180 days).\"\n },\n]\n\n/**\n * Every org capacity a first-party plugin backs, declared by that plugin\n * (AGL-3080). Core owns the money; this says what is counted and what it is\n * called.\n */\nexport const PLUGIN_ORG_CAPACITIES_DECLARED: readonly ResolvedPluginOrgCapacity[] = [\n {\n \"pluginId\": \"data\",\n \"kind\": \"datasets\",\n \"order\": 30,\n \"collection\": \"datasets\",\n \"addonKind\": \"datasets\",\n \"includedEntitlement\": \"datasetsPerOrg\",\n \"purchaseCeilingEntitlement\": \"maxDatasetsPerOrg\",\n \"nouns\": {\n \"one\": \"dataset\",\n \"many\": \"datasets\",\n \"addon\": \"extra datasets\"\n }\n },\n]\n\n/**\n * Every kind of entity a besigner picker lists, declared by the plugin that\n * keeps it (AGL-3080). Core reads, browses and resolves; this says where and\n * in what words.\n */\nexport const PLUGIN_ENTITY_PICKERS_DECLARED: readonly ResolvedPluginEntityPicker[] = [\n {\n \"pluginId\": \"forms\",\n \"kind\": \"forms\",\n \"attribute\": \"form-select\",\n \"scope\": \"host\",\n \"collection\": \"forms\",\n \"nameField\": \"displayName\",\n \"singular\": \"form\",\n \"plural\": \"forms\",\n \"page\": \"the Forms page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"products\",\n \"attribute\": \"product-select\",\n \"scope\": \"host\",\n \"collection\": \"products\",\n \"nameField\": \"name\",\n \"searchable\": true,\n \"singular\": \"product\",\n \"plural\": \"products\",\n \"page\": \"the Products page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"collections\",\n \"attribute\": \"collection-select\",\n \"scope\": \"host\",\n \"collection\": \"collections\",\n \"nameField\": \"name\",\n \"where\": [\n {\n \"field\": \"kind\",\n \"equals\": \"catalog\"\n }\n ],\n \"singular\": \"collection\",\n \"plural\": \"collections\",\n \"page\": \"the Collections page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"categories\",\n \"attribute\": \"category-select\",\n \"scope\": \"host\",\n \"collection\": \"productCategories\",\n \"nameField\": \"name\",\n \"singular\": \"category\",\n \"plural\": \"categories\",\n \"page\": \"the Categories page\"\n },\n {\n \"pluginId\": \"data\",\n \"kind\": \"datasets\",\n \"attribute\": \"dataset-select\",\n \"fieldsAttribute\": \"dataset-field-select\",\n \"fieldsFrom\": \"dataset\",\n \"scope\": \"orgData\",\n \"collection\": \"datasets\",\n \"nameField\": \"displayName\",\n \"singular\": \"dataset\",\n \"plural\": \"datasets\",\n \"page\": \"the Data page\"\n },\n]\n\n/**\n * Every public door a first-party plugin keeps a ceiling and a honeypot on,\n * with its counters and words, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_VISITOR_DOORS_DECLARED: readonly ResolvedVisitorDoor[] = [\n {\n \"pluginId\": \"forms\",\n \"door\": \"form\",\n \"refusedCounter\": \"formSubmissionsRefused\",\n \"caughtCounter\": \"formSubmissionsSpam\",\n \"words\": {\n \"pausedTitle\": \"Form submissions are paused\",\n \"noun\": {\n \"one\": \"submission\",\n \"other\": \"submissions\"\n },\n \"staffNoun\": {\n \"one\": \"form submission\",\n \"other\": \"form submissions\"\n },\n \"cause\": \"This usually means a bot is filling in one of your forms — if it is real traffic, contact support and we will raise the limit.\",\n \"pausedChip\": \"forms paused\",\n \"caught\": {\n \"one\": \"bot submission\",\n \"other\": \"bot submissions\"\n },\n \"caughtBy\": \"the honeypot\",\n \"caughtChip\": {\n \"one\": \"bot hit\",\n \"other\": \"bot hits\"\n }\n }\n },\n]\n\n/**\n * Where a person reads each record kind a first-party plugin's console page\n * shows, declared by that plugin (AGL-3080), for a server's notification link.\n */\nexport const PLUGIN_RECORD_PAGES_DECLARED: readonly ResolvedPluginRecordPage[] = [\n {\n \"pluginId\": \"inbox\",\n \"kind\": \"formSubmission\",\n \"path\": \"/inbox\",\n \"record\": {\n \"path\": \"/inbox/submissions\",\n \"param\": \"submission\"\n }\n },\n]\n\n/**\n * What each plan includes of every quota a first-party plugin owns, declared\n * by that plugin (AGL-3080). `PLAN_ENTITLEMENTS` composes these; core names\n * no key.\n */\nexport const PLUGIN_PLAN_QUOTAS_DECLARED: readonly ResolvedPluginPlanQuota[] = [\n {\n \"pluginId\": \"forms\",\n \"key\": \"formSubmissionsPerMonth\",\n \"label\": \"Form subs / mo\",\n \"byPlan\": {\n \"free\": 20,\n \"starter\": 200,\n \"pro\": 1000,\n \"business\": 5000,\n \"scale\": 10000,\n \"advanced\": 10000,\n \"agency\": 10000,\n \"enterprise\": 20000\n }\n },\n {\n \"pluginId\": \"marketplace\",\n \"key\": \"marketplaceFeePct\",\n \"label\": \"Marketplace fee %\",\n \"price\": true,\n \"byPlan\": {\n \"free\": 30,\n \"starter\": 20,\n \"pro\": 20,\n \"business\": 20,\n \"scale\": 20,\n \"advanced\": 20,\n \"agency\": 20,\n \"enterprise\": 20\n }\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crmEmailsPerDay\",\n \"label\": \"One-to-one emails / day\",\n \"byPlan\": {\n \"free\": 0,\n \"starter\": 35,\n \"pro\": 150,\n \"business\": 200,\n \"scale\": 300,\n \"advanced\": 500,\n \"agency\": 1000,\n \"enterprise\": 2000\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"key\": \"workflowRunsPerMonth\",\n \"label\": \"Workflow runs / mo\",\n \"byPlan\": {\n \"free\": 0,\n \"starter\": 500,\n \"pro\": 5000,\n \"business\": 50000,\n \"scale\": 150000,\n \"advanced\": 500000,\n \"agency\": 2000000,\n \"enterprise\": 4000000\n }\n },\n {\n \"pluginId\": \"ai\",\n \"key\": \"assistCreditsPerMonth\",\n \"label\": \"AI credits / mo\",\n \"byPlan\": {\n \"free\": 300,\n \"starter\": 750,\n \"pro\": 2750,\n \"business\": 7500,\n \"scale\": 10000,\n \"advanced\": 13000,\n \"agency\": 58000,\n \"enterprise\": 116000\n }\n },\n]\n\n/**\n * What each plan includes of every feature a first-party plugin owns,\n * declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_PLAN_FEATURES_DECLARED: readonly ResolvedPluginPlanFeature[] = [\n {\n \"pluginId\": \"commerce\",\n \"key\": \"storefrontSubscriptions\",\n \"label\": \"Storefront subscriptions\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": false,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"giftCards\",\n \"label\": \"Gift cards\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": false,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerceAnalytics\",\n \"label\": \"Commerce analytics\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": true,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"marketplace\",\n \"key\": \"marketplaceSelling\",\n \"label\": \"Sell on the marketplace\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": true,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n]\n\n/**\n * Every meter a first-party plugin contributes to the platform's cost model,\n * in breakdown order, declared by that plugin (AGL-3080). Core keeps the rates.\n */\nexport const PLUGIN_COST_AXES_DECLARED: readonly ResolvedPluginCostAxis[] = [\n {\n \"pluginId\": \"forms\",\n \"id\": \"formSubmissions\",\n \"order\": 30,\n \"fields\": [\n \"formSubmissions\"\n ],\n \"rate\": \"perFormSubmission\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"contacts\",\n \"order\": 60,\n \"fields\": [\n \"crmRecordsCount\"\n ],\n \"fallbackFields\": [\n \"contactsCount\"\n ],\n \"recordedFields\": [\n \"companiesCount\",\n \"dealsCount\"\n ],\n \"rate\": \"perContactMonth\"\n },\n {\n \"pluginId\": \"ai\",\n \"id\": \"assist\",\n \"order\": 80,\n \"fields\": [\n \"assistCostUsd\"\n ],\n \"staffFields\": [\n \"assistCredits\",\n \"assistOverageUsd\"\n ],\n \"live\": {\n \"collection\": \"assistUsage\",\n \"fields\": [\n \"providerCostUsd\",\n \"estCostUsd\"\n ]\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"runs\",\n \"order\": 90,\n \"fields\": [\n \"workflowRuns\",\n \"actionRuns\"\n ],\n \"rate\": \"perRun\"\n },\n]\n\n/**\n * Every band a first-party plugin contributes to the utilization table, in\n * column order, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_USAGE_BANDS_DECLARED: readonly ResolvedPluginUsageBand[] = [\n {\n \"pluginId\": \"forms\",\n \"id\": \"formSubmissions\",\n \"label\": \"Form submissions\",\n \"order\": 40,\n \"fields\": [\n \"formSubmissions\"\n ],\n \"entitlement\": \"formSubmissionsPerMonth\",\n \"perHost\": true,\n \"hostCounter\": \"formSubmissions\",\n \"metered\": {\n \"rate\": \"perFormSubmission\",\n \"quotedPer\": 1000,\n \"noun\": \"form submissions\",\n \"withheldUntil\": \"release_inbox\"\n }\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"contactsCount\",\n \"label\": \"CRM records\",\n \"order\": 70,\n \"fields\": [\n \"crmRecordsCount\"\n ],\n \"fallbackFields\": [\n \"contactsCount\"\n ],\n \"entitlement\": \"contactsPerHost\"\n },\n {\n \"pluginId\": \"ai\",\n \"id\": \"assistCredits\",\n \"label\": \"Assist credits\",\n \"order\": 90,\n \"fields\": [\n \"assistCostUsd\"\n ],\n \"entitlement\": \"assistCreditsPerMonth\",\n \"unitCostUsd\": 0.001,\n \"consoleWarning\": {\n \"standing\": \"/api/ai/billing/credits\",\n \"member\": \"credits\",\n \"approach\": \"You're above 80% of your included AI assist credits.\",\n \"reached\": {\n \"stops\": \"You've used your included AI assist credits — AI assist stops until next month or an upgrade, and nothing is billed for it.\",\n \"bills\": \"You've used your included AI assist credits — extra credits are billed at your plan’s rate unless you set a stop under Billing → Usage.\"\n },\n \"linksUsage\": true\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"workflowRuns\",\n \"label\": \"Workflow runs\",\n \"order\": 100,\n \"fields\": [\n \"workflowRuns\"\n ],\n \"entitlement\": \"workflowRunsPerMonth\",\n \"hostCounter\": \"workflowRuns\",\n \"orgCounter\": \"workflowRuns\",\n \"alert\": {\n \"label\": \"monthly workflow runs\",\n \"noun\": \"workflow runs\",\n \"outcome\": \"stops\",\n \"reached\": \"Workflows pause until next month and nothing is charged — upgrade in Billing to keep them running.\",\n \"approach\": \"Nothing changes and nothing is charged — at the included amount, workflows pause until next month unless you upgrade in Billing.\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"actionRuns\",\n \"label\": \"Action runs\",\n \"order\": 110,\n \"fields\": [\n \"actionRuns\"\n ],\n \"entitlement\": \"actionRunsPerMonth\",\n \"orgCounter\": \"actionRuns\"\n },\n]\n\n/**\n * Every line of a workspace's monthly spend a first-party plugin contributes\n * to its usage budget, in catalog order, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_SPEND_LINES_DECLARED: readonly ResolvedPluginSpendLine[] = [\n {\n \"pluginId\": \"ai\",\n \"id\": \"assist\",\n \"label\": \"Assist\",\n \"live\": {\n \"collection\": \"assistUsage\",\n \"field\": \"estCostUsd\"\n },\n \"billedFromEnv\": \"BILL_ASSIST_TOKENS_FROM\",\n \"unit\": {\n \"costUsd\": 0.001,\n \"label\": \"Assist credits\"\n }\n },\n]\n\n/**\n * Every meter a first-party plugin measures in the monthly usage sweep, in\n * catalog order, declared by that plugin (AGL-3080). The sweep refuses to bill\n * a month while one of these is unregistered.\n */\nexport const PLUGIN_USAGE_METERS_DECLARED: readonly ResolvedPluginUsageMeter[] = [\n {\"pluginId\":\"crm\",\"id\":\"records\"},\n {\"pluginId\":\"data\",\"id\":\"dataset-storage\"},\n {\"pluginId\":\"ai\",\"id\":\"assist\"},\n {\"pluginId\":\"sms\",\"id\":\"sms-texts\"},\n {\"pluginId\":\"shipping\",\"id\":\"shipping-labels\"},\n]\n\n/**\n * Every top-level plugin collection a workspace erasure sweeps by the field\n * naming the organization, declared by the plugin that owns it (AGL-3080).\n */\nexport const PLUGIN_ORG_KEYED_COLLECTIONS: readonly PluginOrgKeyedCollection[] = [\n {\n \"pluginId\": \"outreach\",\n \"name\": \"outreachMailboxCredentials\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"outreach\",\n \"name\": \"outreachLinks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"shipping\",\n \"name\": \"shippingTrackers\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"shipping\",\n \"name\": \"shippingQuoteCache\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineProductCodes\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineExemptions\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineTransactions\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketing-platforms\",\n \"name\": \"marketingPlatformConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketing-platforms\",\n \"name\": \"marketingPlatformEvents\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"zapier\",\n \"name\": \"zapierHooks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"zapier\",\n \"name\": \"zapierHookDeliveries\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"fulfillment-networks\",\n \"name\": \"fulfillmentNetworkConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"fulfillment-networks\",\n \"name\": \"fulfillmentNetworkOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketplaces\",\n \"name\": \"marketplaceConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketplaces\",\n \"name\": \"marketplaceOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podProductLinks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncProducts\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"delivery-apps\",\n \"name\": \"deliveryAppStores\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"delivery-apps\",\n \"name\": \"deliveryAppOrders\",\n \"orgField\": \"orgId\"\n },\n]\n\n/**\n * The plugins whose org eraser a workspace erasure may not run without\n * (AGL-3080): each holds a record the erasure promises to destroy.\n */\nexport const PLUGIN_REQUIRED_ORG_ERASERS: readonly string[] = [\"marketplace\"]\n\n/**\n * The plugins whose person eraser a person erasure may not run without\n * (AGL-3080): each keeps a share of the person the erasure promises to remove.\n */\nexport const PLUGIN_REQUIRED_PERSON_ERASERS: readonly string[] = [\"bookings\",\"commerce\",\"crm\",\"email\"]\n\n/**\n * The plugins whose sales the operator's sales tax return may not be filed\n * without (AGL-3080): each registers a tax return source, and one that did\n * not is refused rather than read as nothing sold.\n */\nexport const PLUGIN_TAX_RETURN_SOURCES: readonly string[] = [\"commerce\",\"marketplace\"]\n\n/**\n * The plugins whose earnings the operator's revenue report may not be read\n * without (AGL-3080): each registers a revenue source, and one that did not\n * is refused rather than read as nothing earned.\n */\nexport const PLUGIN_REVENUE_SOURCES: readonly string[] = [\"commerce\",\"marketplace\"]\n\n/**\n * Where published plugin versions and their kill switches are stored, declared\n * by the plugin that distributes them (AGL-3080). `null` when none does, and\n * the realm loader then resolves nothing.\n */\nexport const PLUGIN_DISTRIBUTION: PluginDistribution | null = {\n \"pluginId\": \"marketplace\",\n \"listings\": \"marketplaceListings\",\n \"versions\": \"pluginVersions\",\n \"revocations\": \"revocations\"\n}\n\n/**\n * The plugin that answers a published page's repeats, declared by that plugin\n * (AGL-3080). `null` when none does, and a repeat then renders its element\n * once, as written.\n */\nexport const PLUGIN_REPEAT_SOURCE_DECLARED: RepeatSourceDeclaration | null = {\n \"pluginId\": \"data\",\n \"id\": \"dataset\"\n}\n\n/**\n * The site documents a plugin authors in the besigner, declared by that\n * plugin (AGL-3080). Empty when none does, and the console's plugin-document\n * editor routes answer 404.\n */\nexport const PLUGIN_BESIGNER_DOCUMENTS_DECLARED: readonly ResolvedBesignerDocument[] = [\n {\n \"pluginId\": \"forms\",\n \"kind\": \"form\",\n \"segment\": \"forms\",\n \"collection\": \"forms\",\n \"noun\": \"form\",\n \"publish\": {\n \"path\": \"/api/forms/promote\",\n \"idField\": \"formId\"\n }\n },\n]\n\n/**\n * The plugin whose records a form's submission may also be filed as, declared\n * by that plugin (AGL-3080). `null` when none does, and no form writes one.\n */\nexport const PLUGIN_FORM_RECORD_TARGET_DECLARED: FormRecordTargetDeclaration | null = {\n \"pluginId\": \"data\",\n \"id\": \"dataset\"\n}\n\n/**\n * The installable artifact types a first-party plugin keeps the copies of,\n * declared by that plugin (AGL-3080). Empty when none does, and an installer\n * then refuses every listing of a type nobody keeps.\n */\nexport const PLUGIN_ARTIFACT_TYPES_DECLARED: readonly ArtifactTypeDeclaration[] = [\n {\"pluginId\":\"data\",\"type\":\"datasetSchema\"},\n]\n\n/**\n * What a site's template library calls a template a plugin installed, by the\n * `source.type` that plugin stamps, declared by that plugin (AGL-3080).\n * Core names no installer.\n */\nexport const PLUGIN_TEMPLATE_SOURCES: readonly PluginTemplateSource[] = [\n {\n \"pluginId\": \"marketplace\",\n \"type\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Installed from the marketplace\"\n },\n]\n\n/**\n * The analytics settings each provider mounts a tag for, declared by the\n * plugin that adapts the vendor (AGL-3080). Empty when none does, and then no\n * setting configures a tag.\n */\nexport const ANALYTICS_PROVIDERS_DECLARED: readonly AnalyticsProviderDeclaration[] = [\n {\n \"pluginId\": \"marketing\",\n \"settings\": [\n \"gaMeasurementId\",\n \"gtmContainerId\"\n ]\n },\n]\n\n/**\n * Every interaction step a first-party plugin offers in the interaction\n * builder, declared by that plugin (AGL-3080). Core names no plugin step.\n */\nexport const PLUGIN_INTERACTION_STEPS_DECLARED: readonly InteractionStepDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"type\": \"setContactStage\",\n \"label\": \"Set the contact’s lifecycle stage\",\n \"offered\": false\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"addContactTag\",\n \"label\": \"Tag the contact\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"tag\",\n \"names\": \"the tag\"\n }\n ]\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"assignContactOwner\",\n \"label\": \"Assign the contact an owner\",\n \"offered\": false\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"createCrmTask\",\n \"label\": \"Create a CRM task\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"title\",\n \"names\": \"the title\"\n }\n ]\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"logCrmActivity\",\n \"label\": \"Log a CRM activity\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"datasetAppend\",\n \"label\": \"Write to a dataset\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"datasetName\",\n \"names\": \"the dataset\"\n }\n ]\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"updateDataset\",\n \"label\": \"Update a dataset record\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"datasetName\",\n \"names\": \"the dataset\"\n }\n ]\n },\n {\n \"pluginId\": \"marketing\",\n \"type\": \"showOverlay\",\n \"label\": \"Open an overlay\",\n \"picks\": {\n \"collection\": \"overlays\",\n \"limit\": 50,\n \"idField\": \"overlayId\",\n \"nameField\": \"overlayName\",\n \"label\": \"Overlay\",\n \"missing\": \"pick an overlay\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"runWorkflow\",\n \"label\": \"Run a workflow\",\n \"typedFields\": [\n {\n \"key\": \"workflowName\",\n \"names\": \"the workflow\"\n }\n ],\n \"picks\": {\n \"collection\": \"workflows\",\n \"limit\": 100,\n \"idField\": \"workflowId\",\n \"nameField\": \"workflowName\",\n \"label\": \"Workflow\",\n \"missing\": \"pick a workflow\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"customEvent\",\n \"label\": \"Fire a custom event\",\n \"offered\": false\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"webhookPost\",\n \"label\": \"Send a webhook (Business)\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"webhookName\",\n \"names\": \"the webhook\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"sendEmail\",\n \"label\": \"Send an email\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"subject\",\n \"names\": \"the subject\"\n },\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"notifyAdmins\",\n \"label\": \"Notify site admins\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"title\",\n \"names\": \"the title\"\n },\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"enrollList\",\n \"label\": \"Enroll in a list\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"listName\",\n \"names\": \"the list\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"assignCampaign\",\n \"label\": \"Assign to a campaign\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"campaignName\",\n \"names\": \"the campaign\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"wait\",\n \"label\": \"Wait\",\n \"offered\": false,\n \"holds\": {\n \"minMinutes\": 1,\n \"maxMinutes\": 129600\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"waitForEvent\",\n \"label\": \"Wait for something to happen\",\n \"offered\": false,\n \"holds\": {\n \"minMinutes\": 1,\n \"maxMinutes\": 129600,\n \"timeoutField\": \"_waitTimedOut\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"exitFlow\",\n \"label\": \"End the flow here\",\n \"offered\": false\n },\n]\n\n/**\n * Every server step a first-party plugin runs for the automation engine,\n * declared by that plugin (AGL-3080). Core names no plugin step.\n */\nexport const PLUGIN_SERVER_STEPS_DECLARED: readonly ServerStepDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"type\": \"setContactStage\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"addContactTag\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"assignContactOwner\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"createCrmTask\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"logCrmActivity\"\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"datasetAppend\"\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"updateDataset\"\n },\n]\n\n/**\n * Every ready-to-edit interaction a first-party plugin offers, by the id a\n * stored interaction's stamp names it with, declared by that plugin\n * (AGL-3080). Core names no recipe.\n */\nexport const PLUGIN_INTERACTION_RECIPES_DECLARED: readonly InteractionRecipeDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"id\": \"welcomeNewLead\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"followUpWonDeal\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"reengageStaleLead\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"tagByForm\"\n },\n]\n\n/**\n * Every first-party element that runs a site function, and the prop naming\n * it, declared by that element's plugin (AGL-3393). Core names no element.\n */\nexport const FIRST_PARTY_FUNCTION_BINDINGS: FunctionBindings = {}\n\n/**\n * Every video host whose own player the Video element frames, declared by\n * the plugin that plays it (AGL-3080). Core names no host.\n */\nexport const FIRST_PARTY_VIDEO_EMBED_PROVIDERS: readonly ResolvedVideoEmbedProvider[] = [\n {\n \"pluginId\": \"mui\",\n \"id\": \"wistia\",\n \"label\": \"Wistia\",\n \"domains\": [\n \"wistia.com\",\n \"wistia.net\",\n \"wi.st\"\n ],\n \"mediaIdPaths\": [\n \"^\\\\/medias\\\\/([^/]+)(?:\\\\/manage)?\\\\/?$\",\n \"^\\\\/m\\\\/([^/]+)\\\\/?$\",\n \"^\\\\/embed\\\\/iframe\\\\/([^/]+)\\\\/?$\",\n \"^\\\\/embed\\\\/medias\\\\/([^/.]+)(?:\\\\.jsonp?)?\\\\/?$\"\n ],\n \"mediaIdPattern\": \"^[a-z0-9]{10}$\",\n \"playerOrigin\": \"https://fast.wistia.net\",\n \"playerPath\": \"/embed/iframe/{id}\",\n \"playerQuery\": [\n {\n \"param\": \"autoPlay\",\n \"option\": \"autoPlay\",\n \"on\": \"true\",\n \"off\": \"false\"\n },\n {\n \"param\": \"roundedPlayer\",\n \"value\": \"false\"\n },\n {\n \"param\": \"doNotTrack\",\n \"option\": \"doNotTrack\",\n \"on\": \"true\"\n },\n {\n \"param\": \"muted\",\n \"option\": \"muted\",\n \"on\": \"true\"\n },\n {\n \"param\": \"endVideoBehavior\",\n \"option\": \"loop\",\n \"on\": \"loop\"\n }\n ]\n },\n]\n\n/**\n * The notification categories first-party plugins add to the settings page\n * and to every recipient's preferences, declared by each plugin (AGL-3080).\n */\nexport const PLUGIN_NOTIFICATION_CATEGORIES_DECLARED: readonly NotificationCategoryDeclaration[] = [\n {\n \"pluginId\": \"marketplace\",\n \"id\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Decisions on plugin listings you submitted for review.\",\n \"defaults\": {\n \"console\": true,\n \"email\": false\n }\n },\n]\n\n/**\n * The digests first-party plugins send on their own schedule, each with the\n * key its switch is stored under, declared by the plugin that sends it\n * (AGL-3080).\n */\nexport const PLUGIN_NOTIFICATION_DIGESTS_DECLARED: readonly NotificationDigestDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"key\": \"crmDaily\",\n \"label\": \"Daily CRM digest\",\n \"description\": \"Each morning: your overdue and due-today tasks and the leads nobody has worked, here and by email.\"\n },\n]\n"],"names":["FIRST_PARTY_PLUGINS","PUBLISHED_SITE_IMPACT","PLUGIN_EDIT_BAR_LINKS","PLUGIN_HOST_COLLECTIONS_DECLARED","PLUGIN_SITEMAP_SECTIONS_DECLARED","PLUGIN_SITEMAP_READERS_DECLARED","PLUGIN_SITE_BUNDLE_SECTIONS_DECLARED","PLUGIN_TRANSFER_RESOURCES_DECLARED","PLUGIN_ORG_COLLECTIONS_DECLARED","PLUGIN_ORG_CAPACITIES_DECLARED","PLUGIN_ENTITY_PICKERS_DECLARED","PLUGIN_VISITOR_DOORS_DECLARED","PLUGIN_RECORD_PAGES_DECLARED","PLUGIN_PLAN_QUOTAS_DECLARED","PLUGIN_PLAN_FEATURES_DECLARED","PLUGIN_COST_AXES_DECLARED","PLUGIN_USAGE_BANDS_DECLARED","PLUGIN_SPEND_LINES_DECLARED","PLUGIN_USAGE_METERS_DECLARED","PLUGIN_ORG_KEYED_COLLECTIONS","PLUGIN_REQUIRED_ORG_ERASERS","PLUGIN_REQUIRED_PERSON_ERASERS","PLUGIN_TAX_RETURN_SOURCES","PLUGIN_REVENUE_SOURCES","PLUGIN_DISTRIBUTION","PLUGIN_REPEAT_SOURCE_DECLARED","PLUGIN_BESIGNER_DOCUMENTS_DECLARED","PLUGIN_FORM_RECORD_TARGET_DECLARED","PLUGIN_ARTIFACT_TYPES_DECLARED","PLUGIN_TEMPLATE_SOURCES","ANALYTICS_PROVIDERS_DECLARED","PLUGIN_INTERACTION_STEPS_DECLARED","PLUGIN_SERVER_STEPS_DECLARED","PLUGIN_INTERACTION_RECIPES_DECLARED","FIRST_PARTY_FUNCTION_BINDINGS","FIRST_PARTY_VIDEO_EMBED_PROVIDERS","PLUGIN_NOTIFICATION_CATEGORIES_DECLARED","PLUGIN_NOTIFICATION_DIGESTS_DECLARED"],"mappings":"AAAA;;;;;;;CAOC,GA6BD,OAAO,MAAMA,sBAAmD;IAC9D;QACE,MAAM;QACN,SAAS;QACT,YAAY;QACZ,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;YACT,WAAW;YACX,SAAS;gBACP,WAAW;gBACX,QAAQ;YACV;QACF;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,YAAY;YACV;SACD;IACH;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,YAAY;QACZ,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;CACD,CAAA;AAED,OAAO,MAAMC,wBAAuE;IAClF,OAAO;IACP,SAAS;IACT,MAAM;IACN,iBAAiB;IACjB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,mBAAmB;IACnB,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,SAAS;IACT,iBAAiB;IACjB,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;AACnB,EAAC;AAED;;;CAGC,GACD,OAAO,MAAMC,wBAAsD;IACjE;QACE,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;IACV;IACA;QACE,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;IACV;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,mCAA4E;IACvF;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,aAAa;gBACb,cAAc;oBACZ;wBACE,eAAe;wBACf,QAAQ;oBACV;iBACD;YACH;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,UAAU;gBACR,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;QACnB,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,gBAAgB;YAClB;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,cAAc;oBACZ;wBACE,SAAS;wBACT,QAAQ;oBACV;iBACD;gBACD,gBAAgB;YAClB;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,cAAc;oBACZ;wBACE,SAAS;wBACT,QAAQ;oBACV;iBACD;YACH;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,uBAAuB;YACvB,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,uBAAuB;gBACrB,SAAS;gBACT,mBAAmB;YACrB;YACA,iBAAiB;QACnB;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;YACD,aAAa;gBACX,aAAa;gBACb,UAAU;oBACR;oBACA;iBACD;gBACD,UAAU;oBACR,WAAW;gBACb;YACF;QACF;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,mCAA4E;IACvF;QACE,YAAY;QACZ,WAAW;QACX,cAAc;QACd,SAAS;YACP,SAAS;YACT,UAAU;QACZ;QACA,aAAa;YACX,OAAO;YACP,SAAS;QACX;QACA,QAAQ;QACR,YAAY;QACZ,WAAW;YACT;YACA;SACD;IACH;IACA;QACE,YAAY;QACZ,WAAW;QACX,cAAc;QACd,SAAS;YACP,SAAS;YACT,UAAU;QACZ;QACA,aAAa;YACX,OAAO;YACP,SAAS;QACX;QACA,QAAQ;QACR,WAAW;YACT;YACA;SACD;IACH;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,kCAAqF;IAChG;QACE,YAAY;QACZ,WAAW;IACb;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,uCAA8F;IACzG;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,WAAW;YACT,QAAQ;YACR,SAAS;YACT,aAAa;YACb,cAAc;gBACZ;oBACE,QAAQ;gBACV;gBACA;oBACE,eAAe;oBACf,QAAQ;gBACV;aACD;QACH;IACF;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,qCAAqF;IAChG;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;QACf,cAAc;IAChB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;QACf,cAAc;IAChB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,eAAe;YACb;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,eAAe;QACf,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,aAAa;QACb,qBAAqB;IACvB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,aAAa;QACb,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,kCAA0E;IACrF;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,aAAa;QACb,sBAAsB;YACpB,SAAS;YACT,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;QACb,aAAa;QACb,mBAAmB;IACrB;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,iCAAuE;IAClF;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,8BAA8B;QAC9B,SAAS;YACP,OAAO;YACP,QAAQ;YACR,SAAS;QACX;IACF;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,iCAAwE;IACnF;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,SAAS;QACT,cAAc;QACd,aAAa;QACb,YAAY;QACZ,UAAU;QACV,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,S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ChB;YACA;SACD;QACD,QAAQ;IACV;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;YACb;YACA;SACD;QACD,QAAQ;YACN,cAAc;YACd,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;YACA;SACD;QACD,QAAQ;IACV;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,8BAAkE;IAC7E;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,WAAW;QACX,eAAe;QACf,WAAW;YACT,QAAQ;YACR,aAAa;YACb,QAAQ;YACR,iBAAiB;QACnB;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,kBAAkB;YAChB;SACD;QACD,eAAe;IACjB;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,eAAe;QACf,kBAAkB;YAChB,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,WAAW;gBACT,SAAS;gBACT,SAAS;YACX;YACA,cAAc;QAChB;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,eAAe;QACf,cAAc;QACd,SAAS;YACP,SAAS;YACT,QAAQ;YACR,WAAW;YACX,WAAW;YACX,YAAY;QACd;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,cAAc;IAChB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,8BAAkE;IAC7E;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,QAAQ;YACN,cAAc;YACd,SAAS;QACX;QACA,iBAAiB;QACjB,QAAQ;YACN,WAAW;YACX,SAAS;QACX;IACF;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,+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R,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS;YACP,cAAc;YACd,SAAS;YACT,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;QACb;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;QACD,SAAS;YACP,cAAc;YACd,SAAS;YACT,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;QACb;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;IACb;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;YACA;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;YACA;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS;YACP,cAAc;YACd,cAAc;QAChB;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS;YACP,cAAc;YACd,cAAc;YACd,gBAAgB;QAClB;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;IACb;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,+BAAiE;IAC5E;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,sCAA+E;IAC1F;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,gCAAkD,CAAC,EAAC;AAEjE;;;CAGC,GACD,OAAO,MAAMC,oCAA2E;IACtF;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,WAAW;YACT;YACA;YACA;SACD;QACD,gBAAgB;YACd;YACA;YACA;YACA;SACD;QACD,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;QACd,eAAe;YACb;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;gBACN,OAAO;YACT;YACA;gBACE,SAAS;gBACT,SAAS;YACX;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;SACD;IACH;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,0CAAsF;IACjG;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,eAAe;QACf,YAAY;YACV,WAAW;YACX,SAAS;QACX;IACF;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,uCAAiF;IAC5F;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,eAAe;IACjB;CACD,CAAA"}
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/first-party-plugins.generated.ts"],"sourcesContent":["/**\n * GENERATED FILE — do not edit. Regenerate with:\n * node tools/scripts/generate-plugin-manifests.mjs\n *\n * The switchboard catalog (AGL-3080): one row per plugin and capability, each\n * declared by its own `catalog` block in plugins.config.json. The core holds\n * the types and the resolvers in `enabled-plugins.ts`; it holds no row.\n */\n\nimport type { FirstPartyPlugin, PluginEditBarLink, PublishedSiteImpact } from './enabled-plugins'\nimport type { ResolvedPluginHostCollection, ResolvedPluginOrgCollection } from './plugin-host-collections'\nimport type { ResolvedPluginSitemapSection } from './plugin-sitemap-sections'\nimport type { ResolvedPluginSitemapReaderDeclaration } from './plugin-sitemap-readers'\nimport type { ResolvedPluginSiteBundleSectionDeclaration } from './plugin-site-bundle'\nimport type { ResolvedTransferResourceDeclaration } from './plugin-transfer-resources'\nimport type { ResolvedPluginOrgCapacity } from './plugin-org-capacity'\nimport type { ResolvedPluginEntityPicker } from './plugin-entity-pickers'\nimport type { ResolvedPluginRecordPage } from './plugin-record-pages'\nimport type { ResolvedVisitorDoor } from './plugin-visitor-doors'\nimport type { ResolvedPluginCostAxis, ResolvedPluginSpendLine, ResolvedPluginUsageBand, ResolvedPluginUsageMeter } from './plugin-usage-axes'\nimport type { ResolvedPluginPlanFeature, ResolvedPluginPlanQuota } from './plugin-plan-entitlements'\nimport type { FunctionBindings } from './plugin-contributions'\nimport type { PluginDistribution } from './plugin-distribution'\nimport type { RepeatSourceDeclaration } from './repeat-rows'\nimport type { PluginTemplateSource } from './plugin-template-sources'\nimport type { FormRecordTargetDeclaration } from './submission-record-target'\nimport type { ArtifactTypeDeclaration } from './plugin-artifact-types'\nimport type { ResolvedBesignerDocument } from './besigner-documents'\nimport type { PluginOrgKeyedCollection } from './plugin-org-erasure'\nimport type { ResolvedVideoEmbedProvider } from './video-embed-provider'\nimport type { AnalyticsProviderDeclaration } from '../app-utils/analytics-provider'\nimport type { InteractionStepDeclaration } from '../app-utils/site-interactions'\nimport type { ServerStepDeclaration } from './plugin-server-steps'\nimport type { InteractionRecipeDeclaration } from './interaction-recipes'\nimport type { NotificationCategoryDeclaration, NotificationDigestDeclaration } from '../app-utils/notifications'\n\nexport const FIRST_PARTY_PLUGINS: readonly FirstPartyPlugin[] = [\n {\n \"id\": \"mui\",\n \"label\": \"Components\",\n \"alwaysOn\": true,\n \"description\": \"The base component and theme library every site builds on.\"\n },\n {\n \"id\": \"forms\",\n \"label\": \"Forms\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Forms on the site and the catalog that owns them.\",\n \"siteOff\": {\n \"stops\": \"Switching Forms off for this site stops forms rendering on its published pages, refuses every submission sent to it, and blocks publishing a form, or a page that carries one, until Forms is back on.\",\n \"keeps\": \"Submissions already received, the workspace’s form catalog and the CRM leads its forms created are kept, and forms keep working on the workspace’s other sites.\",\n \"confirm\": true,\n \"pages\": {\n \"heading\": \"These published pages carry a form. Their forms stop rendering and stop accepting submissions:\",\n \"none\": \"No published page on this site carries a form.\"\n }\n }\n },\n {\n \"id\": \"ai\",\n \"label\": \"AI\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"The assistant, generative building and automation, and the AI add-on.\",\n \"siteOff\": {\n \"stops\": \"Switching AI off for this site hides the assistant, Create with AI, the AI cards and the editor’s AI controls on this site, refuses every AI request made for it, and stops its queued AI jobs without spending credits.\",\n \"keeps\": \"It does not stop the workspace’s AI add-on, credits, allotments or overage billing, and AI keeps working on the workspace’s other sites.\"\n }\n },\n {\n \"id\": \"theme-presets\",\n \"label\": \"Themes\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Built-in themes to pick from on Setup → Theme: Bootstrap, Minimal and Material 3.\",\n \"siteOff\": {\n \"stops\": \"Switching Themes off for this site removes its built-in themes from the theme picker.\",\n \"keeps\": \"A site already using one keeps it, with every edit made to it: picking a theme copies it onto the site, so nothing on the published site changes.\"\n }\n },\n {\n \"id\": \"funnels\",\n \"label\": \"Funnels\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Step-by-step conversion on a site's Analytics page: visits at each step, drop-off and time between steps.\",\n \"siteOff\": {\n \"stops\": \"Switching Funnels off for this site removes the Funnels card from its Analytics page.\",\n \"keeps\": \"Saved funnels are kept, and visits keep being recorded while the site has one; delete the funnels to stop recording.\"\n }\n },\n {\n \"id\": \"accounts\",\n \"label\": \"User Accounts\",\n \"description\": \"Visitor accounts on the site: the /signin, /signup and /recover pages, and the Members blocks. On for a new site; a site created before that stays off until you turn it on.\",\n \"releaseFlag\": \"release_member_accounts\",\n \"defaultOffPerSite\": true,\n \"requires\": [\n \"commerce\"\n ]\n },\n {\n \"id\": \"bookings\",\n \"label\": \"Bookings\",\n \"description\": \"Services, open slots, and paid bookings.\",\n \"releaseFlag\": \"release_bookings\"\n },\n {\n \"id\": \"commerce\",\n \"label\": \"Commerce\",\n \"description\": \"Products, carts, checkout, orders, POS.\",\n \"releaseFlag\": \"release_commerce_v2\"\n },\n {\n \"id\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Marketplace listings, templates, and installs.\",\n \"releaseFlag\": \"release_marketplace\"\n },\n {\n \"id\": \"crm\",\n \"label\": \"CRM\",\n \"description\": \"Leads, contacts, companies, deals, tasks and reports.\",\n \"releaseFlag\": \"release_crm\"\n },\n {\n \"id\": \"outreach\",\n \"label\": \"Sequences\",\n \"description\": \"One-to-one email sequences sent from connected mailboxes.\",\n \"releaseFlag\": \"release_outreach\"\n },\n {\n \"id\": \"data\",\n \"label\": \"Data\",\n \"description\": \"Datasets, records, and CSV import/export.\",\n \"releaseFlag\": \"release_data_store\"\n },\n {\n \"id\": \"email\",\n \"label\": \"Email\",\n \"description\": \"Designed emails and campaign sending.\",\n \"releaseFlag\": \"release_email\"\n },\n {\n \"id\": \"events-calendar\",\n \"label\": \"Events Calendar\",\n \"description\": \"Event lists and calendars.\",\n \"releaseFlag\": \"release_events\"\n },\n {\n \"id\": \"inbox\",\n \"label\": \"Inbox\",\n \"description\": \"Form submissions and lead inbox.\",\n \"releaseFlag\": \"release_inbox\"\n },\n {\n \"id\": \"logic\",\n \"label\": \"Logic\",\n \"description\": \"Variables, functions, and reference health.\",\n \"releaseFlag\": \"release_logic\"\n },\n {\n \"id\": \"marketing\",\n \"label\": \"Marketing\",\n \"description\": \"Overlays, campaigns, and experiments.\",\n \"releaseFlag\": \"release_marketing\"\n },\n {\n \"id\": \"redirects\",\n \"label\": \"Redirects\",\n \"description\": \"URL redirect rules.\",\n \"releaseFlag\": \"release_redirects\"\n },\n {\n \"id\": \"workflows\",\n \"label\": \"Automation\",\n \"description\": \"Workflows, actions, webhooks, and run logs.\",\n \"releaseFlag\": \"release_workflows\"\n },\n {\n \"id\": \"accounting\",\n \"label\": \"Accounting\",\n \"description\": \"Sales, refunds, fees and payouts posted to QuickBooks Online or Xero.\",\n \"releaseFlag\": \"release_accounting\"\n },\n {\n \"id\": \"shipping\",\n \"label\": \"Shipping\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Carrier rates at checkout, shipping labels and tracking for physical orders, where the platform has connected a carrier provider.\",\n \"siteOff\": {\n \"stops\": \"Switching Shipping off for this site stops live carrier rates at its checkout, which falls back to the site’s own shipping rates, and removes label buying from its orders.\",\n \"keeps\": \"Labels already bought, their tracking and their charges are kept, and Shipping keeps working on the workspace’s other sites.\"\n }\n },\n {\n \"id\": \"tax-engines\",\n \"label\": \"Tax services\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sales tax from your own Avalara AvaTax or TaxJar account at checkout and the register.\",\n \"siteOff\": {\n \"stops\": \"Switching Tax services off for this site stops checkout and the register asking its connected tax service, which then use the site’s own tax rates, and stops recording its paid orders there.\",\n \"keeps\": \"The connection, product tax codes and exempt customers are kept, and orders already recorded stay recorded.\"\n }\n },\n {\n \"id\": \"sales-channels\",\n \"label\": \"Sales channels\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Product feeds for Google, YouTube, Facebook, Instagram, TikTok, Pinterest, Snapchat and Microsoft Shopping.\",\n \"siteOff\": {\n \"stops\": \"Switching Sales channels off for this site stops every product feed it publishes, including the Google Merchant Center address set up before sales channels existed, so channels stop receiving updates.\",\n \"keeps\": \"Each feed's address, its switch and the store's defaults are kept, so switching it back on resumes the same feeds.\"\n }\n },\n {\n \"id\": \"marketing-platforms\",\n \"label\": \"Email platforms\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Two-way contact and unsubscribe sync with your own Mailchimp, Klaviyo or Omnisend account, and order events for their flows.\",\n \"siteOff\": {\n \"stops\": \"Switching Email platforms off for this site stops its contacts, unsubscribes and order events syncing with the email platforms it connected.\",\n \"keeps\": \"The connections and everything already synced are kept, and an unsubscribe already read back stays on the site’s list.\"\n }\n },\n {\n \"id\": \"fonts\",\n \"label\": \"Fonts\",\n \"alwaysOn\": true,\n \"description\": \"Upload your own fonts and pick from the Google Fonts catalog for your site's theme.\"\n },\n {\n \"id\": \"post-purchase\",\n \"label\": \"Tracking and protection\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Order tracking and package protection.\",\n \"siteOff\": {\n \"stops\": \"Stops protection and tracking for new orders.\",\n \"keeps\": \"Bought protection stays in force.\"\n }\n },\n {\n \"id\": \"fulfillment-networks\",\n \"label\": \"Fulfillment networks\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Paid orders shipped by your own ShipBob or Amazon Multi-Channel Fulfillment account, with tracking back on the order and stock counts in step.\",\n \"siteOff\": {\n \"stops\": \"Switching Fulfillment networks off for this site stops its paid orders going to ShipBob or Amazon, and stops their shipments and stock counts coming back.\",\n \"keeps\": \"The connections and every order already sent are kept, and what a network already shipped stays on the order.\"\n }\n },\n {\n \"id\": \"marketplaces\",\n \"label\": \"Marketplaces\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sell on Amazon, eBay, Etsy, TikTok Shop, Walmart and Faire from one stock count: their orders come in as yours, and tracking goes back.\",\n \"siteOff\": {\n \"stops\": \"Switching Marketplaces off for this site stops importing its marketplace orders, sending tracking to the marketplaces, and keeping their listings in step with its stock.\",\n \"keeps\": \"The connections and every order already imported are kept, and switching it back on resumes from where the orders were last read.\"\n }\n },\n {\n \"id\": \"print-on-demand\",\n \"label\": \"Print on demand\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Sell products your own Printful or Printify account makes and ships, with orders sent and tracking returned automatically.\",\n \"siteOff\": {\n \"stops\": \"Switching Print on demand off for this site stops new paid orders being sent to Printful or Printify, and stops imported products updating.\",\n \"keeps\": \"The connections, the imported products and the orders already sent are kept, and parcels already on their way still reach the orders.\"\n }\n },\n {\n \"id\": \"inventory-sync\",\n \"label\": \"Inventory sync\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Stock, products and paid orders kept in step with your own Cin7 Core, inFlow or Brightpearl account.\",\n \"siteOff\": {\n \"stops\": \"Switching Inventory sync off for this site stops its stock counts, products and paid orders syncing with Cin7 Core, inFlow or Brightpearl.\",\n \"keeps\": \"The connection and its settings are kept, and everything already synced stays on both sides.\"\n }\n },\n {\n \"id\": \"delivery-apps\",\n \"label\": \"Delivery apps\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Take DoorDash, Uber Eats and Grubhub orders at your register: accept, make and hand them over, with their items off the same shelf.\",\n \"siteOff\": {\n \"stops\": \"Switching Delivery apps off for this site stops its DoorDash, Uber Eats and Grubhub orders reaching the register; the services are told the store is not connected.\",\n \"keeps\": \"The linked stores, their item matches and every order already taken are kept, and switching it back on takes new orders again.\"\n }\n },\n {\n \"id\": \"loyalty\",\n \"label\": \"Rewards\",\n \"alwaysOnForWorkspace\": true,\n \"description\": \"Points, referrals and store credit for your store.\",\n \"siteOff\": {\n \"stops\": \"Stops new points, rewards at checkout and at the register, and referral credit.\",\n \"keeps\": \"Members keep their points and store credit.\"\n }\n },\n]\n\nexport const PUBLISHED_SITE_IMPACT: Readonly<Record<string, PublishedSiteImpact>> = {\n \"mui\": \"elements\",\n \"forms\": \"elements\",\n \"ai\": \"console-only\",\n \"theme-presets\": \"console-only\",\n \"funnels\": \"console-only\",\n \"accounts\": \"routes\",\n \"bookings\": \"elements\",\n \"commerce\": \"elements\",\n \"marketplace\": \"console-only\",\n \"crm\": \"console-only\",\n \"outreach\": \"console-only\",\n \"data\": \"routes\",\n \"email\": \"elements\",\n \"events-calendar\": \"elements\",\n \"inbox\": \"console-only\",\n \"logic\": \"console-only\",\n \"marketing\": \"elements\",\n \"redirects\": \"routes\",\n \"workflows\": \"routes\",\n \"accounting\": \"console-only\",\n \"shipping\": \"console-only\",\n \"tax-engines\": \"console-only\",\n \"sales-channels\": \"routes\",\n \"marketing-platforms\": \"console-only\",\n \"fonts\": \"console-only\",\n \"post-purchase\": \"console-only\",\n \"fulfillment-networks\": \"console-only\",\n \"marketplaces\": \"console-only\",\n \"print-on-demand\": \"console-only\",\n \"inventory-sync\": \"console-only\",\n \"delivery-apps\": \"console-only\",\n \"loyalty\": \"console-only\",\n}\n\n/**\n * The admin edit bar's quick links, in the order they are drawn — each\n * declared by the plugin whose console page it opens (AGL-3080).\n */\nexport const PLUGIN_EDIT_BAR_LINKS: readonly PluginEditBarLink[] = [\n {\n \"pluginId\": \"inbox\",\n \"order\": 20,\n \"label\": \"Inbox\",\n \"path\": \"/inbox\"\n },\n {\n \"pluginId\": \"commerce\",\n \"order\": 30,\n \"label\": \"Orders\",\n \"path\": \"/products/orders\"\n },\n]\n\n/**\n * Every host subcollection a first-party plugin owns, declared by that plugin\n * (AGL-3080). Core's readers ask this list; core names no collection.\n */\nexport const PLUGIN_HOST_COLLECTIONS_DECLARED: readonly ResolvedPluginHostCollection[] = [\n {\n \"pluginId\": \"forms\",\n \"name\": \"forms\",\n \"routeSlug\": \"forms\",\n \"siteExport\": {\n \"limit\": 200,\n \"fields\": [\n \"displayName\",\n \"slug\",\n \"fields\",\n \"consentFieldName\",\n \"routing\",\n \"legacyMatch\",\n \"rootId\",\n \"nodes\",\n \"archivedAt\",\n \"retired\",\n \"campaignIds\",\n \"inCampaign\",\n \"stats\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"searchTokens\"\n ],\n \"package\": {\n \"kind\": \"form\",\n \"label\": \"Forms\",\n \"nameField\": \"displayName\",\n \"slugField\": \"slug\",\n \"placements\": [\n {\n \"componentId\": \"form\",\n \"prop\": \"formId\"\n }\n ]\n },\n \"count\": {\n \"quotaKey\": \"formsPerHost\"\n }\n }\n },\n {\n \"pluginId\": \"forms\",\n \"name\": \"formSubmissions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Visitor form submissions. Unbounded, PII-heavy, and a file attached to one is the visitor's upload — not a library asset an author picked, and not something deleting a library asset would break.\"\n },\n {\n \"pluginId\": \"bookings\",\n \"name\": \"services\",\n \"routeSlug\": \"bookings\",\n \"resource\": {\n \"kind\": \"service\",\n \"label\": \"services\",\n \"activityNoun\": \"service\",\n \"quotaKey\": \"servicesPerHost\",\n \"entitlement\": \"bookings\",\n \"fields\": [\n \"name\",\n \"description\",\n \"durationMinutes\",\n \"priceUsd\",\n \"timezone\",\n \"windows\",\n \"crmFollowUpTask\",\n \"crmMeetingActivity\",\n \"askPhone\",\n \"askAddress\",\n \"priceDisplay\"\n ]\n },\n \"siteExport\": {\n \"limit\": 50,\n \"fields\": [\n \"name\",\n \"description\",\n \"durationMinutes\",\n \"priceUsd\",\n \"timezone\",\n \"windows\",\n \"crmFollowUpTask\",\n \"crmMeetingActivity\",\n \"askPhone\",\n \"askAddress\",\n \"priceDisplay\"\n ],\n \"package\": {\n \"kind\": \"service\",\n \"label\": \"Booking services\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"bookings\",\n \"name\": \"bookings\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Booking records — a customer, a time and a service pointer. The service holds the imagery and IS scanned; a booking is the transaction against it.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"products\",\n \"routeSlug\": \"products\",\n \"resource\": {\n \"kind\": \"product\",\n \"label\": \"products\",\n \"activityNoun\": \"product\",\n \"quotaKey\": \"productsPerHost\",\n \"entitlement\": \"commerce\",\n \"fields\": [\n \"name\",\n \"slug\",\n \"description\",\n \"type\",\n \"status\",\n \"mediaUrls\",\n \"categoryIds\",\n \"tags\",\n \"options\",\n \"variants\",\n \"seo\",\n \"channel\",\n \"supplierId\",\n \"oversellPolicy\",\n \"taxExempt\",\n \"digitalFiles\",\n \"downloadLimit\",\n \"subscription\",\n \"subscriptionOptional\",\n \"gatedVideos\",\n \"relatedProductIds\",\n \"giftCard\",\n \"lowStockThreshold\",\n \"shipping\",\n \"createdAtMs\",\n \"updatedAtMs\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"skus\",\n \"barcodes\",\n \"priceFromCents\",\n \"soldOut\",\n \"collectionIds\",\n \"priceUsd\",\n \"inventory\",\n \"imageUrl\"\n ],\n \"stamps\": {\n \"deletedAt\": null\n }\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"productCategories\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"suppliers\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"locations\",\n \"routeSlug\": \"products\",\n \"resource\": {\n \"kind\": \"location\",\n \"label\": \"inventory locations\",\n \"activityNoun\": \"inventory location\",\n \"quotaKey\": \"inventoryLocations\",\n \"entitlement\": \"commerce\",\n \"fields\": [\n \"name\",\n \"isDefault\",\n \"address\",\n \"postalAddress\"\n ]\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"coupons\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"discounts\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"reviews\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"memberPosts\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"resources\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"settings\",\n \"label\": \"Store settings\",\n \"routeSlug\": \"products\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"siteMembers\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"siteMemberCredentials\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A site member's password hash, one document per member, read and written only by the membership routes (AGL-3308). A credential with no content field, and no client may read it.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orders\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Completed orders. Line items COPY a product's `imageUrl` at purchase time, so these would match — and matching would be the wrong answer: an order is an immutable record of what was sold, deleting the asset changes nothing about it, and no author can edit one. A busy store also holds more of these than the whole read budget.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"carts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Live and abandoned carts, with the same copied line-item image and the same reasoning, at higher volume — one document per shopper session.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"checkouts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"In-flight checkout sessions. Transient buyer state carrying the same line-item snapshot as `carts`.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"reservations\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"POS and booking holds. Short-lived transaction rows pointing at a resource that is itself scanned.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"stockHolds\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Inventory holds taken during checkout. Machine-written, short-lived, and a quantity rather than content.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"subscriptions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Site membership subscriptions: a plan pointer, a status and Stripe ids. Server-written from the billing webhook.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"registers\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"POS register allocations — a count against the register add-on, read by billing (AGL-1775). No content field at all.\",\n \"resource\": {\n \"kind\": \"register\",\n \"label\": \"POS registers\",\n \"activityNoun\": \"POS register\",\n \"quotaKey\": \"posRegisters\",\n \"entitlement\": \"pos\",\n \"fields\": [\n \"name\",\n \"locationId\"\n ]\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"giftCards\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Gift card balances and redemption history. Money, not content.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"licenseKeys\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Digital-product license keys issued at fulfilment: a code, an order pointer and a revocation flag.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"inventoryAdjustments\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The append-only stock adjustment ledger (AGL-2269). One row per manual stock edit and per cancellation release, unbounded over a store's life.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"inventoryReconciliation\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Reconciliation runs comparing counted stock against recorded stock. Machine-written totals.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"restockAlerts\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Back-in-stock requests: an email address and a product pointer, written by visitors.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"stripeTaxRates\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Cached Stripe tax rate ids, written by the tax sync. Vendor ids.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"returns\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Returns (AGL-3611): line indexes, quantities, reasons and a return label link, written only by the returns routes. A return names no image of its own; the order's lines carry the copies, and the order is not scanned for the same reason.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhooks\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The merchant's outbound order webhook endpoints (AGL-3611): a URL and the event names it takes. Scanning reads every endpoint for a URL that is never a media file.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhookSecrets\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Sealed HMAC signing secrets for the order webhooks (AGL-3611). Reading them for media would put a secret on a scan path to match nothing.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"orderWebhookDeliveries\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The webhook delivery log (AGL-3611): one row per event per endpoint, expiring after 30 days. A body copies the order, whose image URLs record what was sold rather than use the file, so a match would be wrong, and a busy store holds thousands.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"posStaffPins\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Register staff PINs (AGL-3609): a salted hash and a lockout counter per member, written only by the staff PIN route. No content field at all.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"posOfflineSales\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The offline register's sync records (AGL-3625): one per cash sale rung offline, holding its order id, flags and stock conflicts, written only by the sync route. No content field, and a busy offline register writes one per sale.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"terminal\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The site's Stripe Terminal Location (AGL-3607): a vendor id and the address it was registered with, written only by the reader routes. No content field.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"terminalReaders\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The site's card readers (AGL-3607): a Stripe reader id, a label and a status, written only by `/api/commerce/pos-readers`. No content field.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"printers\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Cloud receipt printers (AGL-3619): a device id, a secret version, a paper width and a status. A receipt logo is the one stored IN the printer and named by a key code, never a file URL, so nothing here can use an asset.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"name\": \"printJobs\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The printers' queue (AGL-3619): rendered receipt, ticket and label bytes waiting for a printer's poll, written by the print routes and gone once printed. Printer commands, not content, and a busy register queues hundreds a day.\"\n },\n {\n \"pluginId\": \"marketplace\",\n \"name\": \"installs\"\n },\n {\n \"pluginId\": \"crm\",\n \"name\": \"leads\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Captured leads, on the same footing as `formSubmissions`: visitor-submitted, unbounded, and never a place an author places an asset.\"\n },\n {\n \"pluginId\": \"data\",\n \"name\": \"recordPages\",\n \"label\": \"record template\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A binding holds a dataset id, a base path and field ids — never a value. The images a record page shows are the record's own, in the organization's dataset records, which no site collection holds.\"\n },\n {\n \"pluginId\": \"email\",\n \"name\": \"suppressions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"Unsubscribes, bounces and spam complaints. Email addresses and a reason.\"\n },\n {\n \"pluginId\": \"events-calendar\",\n \"name\": \"events\",\n \"routeSlug\": \"events\",\n \"siteExport\": {\n \"limit\": 200,\n \"fields\": [\n \"title\",\n \"startsAtMs\",\n \"endsAtMs\",\n \"location\",\n \"organizer\",\n \"description\",\n \"coverImage\",\n \"coverImageAlt\",\n \"status\"\n ],\n \"package\": {\n \"kind\": \"event\",\n \"label\": \"Events\",\n \"nameField\": \"title\"\n },\n \"count\": {\n \"uncapped\": \"The events page creates an event with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"logic\",\n \"name\": \"functions\",\n \"routeSlug\": \"logic\",\n \"resource\": {\n \"kind\": \"function\",\n \"label\": \"functions\",\n \"activityNoun\": \"function\",\n \"activityType\": \"function\",\n \"quotaKey\": \"functionsPerHost\",\n \"fields\": [\n \"name\",\n \"parameters\",\n \"variables\",\n \"operations\",\n \"returnValue\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"parameters\",\n \"variables\",\n \"operations\",\n \"returnValue\"\n ],\n \"package\": {\n \"kind\": \"function\",\n \"label\": \"Functions\",\n \"nameField\": \"name\",\n \"bindingToken\": \"fn\"\n }\n }\n },\n {\n \"pluginId\": \"logic\",\n \"name\": \"variables\",\n \"routeSlug\": \"logic\",\n \"resource\": {\n \"kind\": \"variable\",\n \"label\": \"variables\",\n \"activityNoun\": \"variable\",\n \"activityType\": \"variable\",\n \"quotaKey\": \"variablesPerHost\",\n \"fields\": [\n \"name\",\n \"type\",\n \"value\",\n \"workflowId\",\n \"workflowName\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"type\",\n \"value\",\n \"workflowId\",\n \"workflowName\"\n ],\n \"package\": {\n \"kind\": \"variable\",\n \"label\": \"Variables\",\n \"nameField\": \"name\",\n \"references\": [\n {\n \"field\": \"workflowId\",\n \"kind\": \"workflow\"\n }\n ],\n \"bindingToken\": \"var\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"experiments\",\n \"routeSlug\": \"marketing\",\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"nameLower\",\n \"nameTokens\",\n \"nameReversed\",\n \"status\",\n \"target\",\n \"screenId\",\n \"nodeId\",\n \"variants\",\n \"goal\",\n \"winnerVariantId\",\n \"endAtMs\",\n \"autoWinner\",\n \"autoCompleted\",\n \"completedAt\"\n ],\n \"package\": {\n \"kind\": \"experiment\",\n \"label\": \"Experiments\",\n \"nameField\": \"name\",\n \"references\": [\n {\n \"field\": \"screenId\",\n \"kind\": \"page\"\n }\n ]\n },\n \"count\": {\n \"uncapped\": \"The experiments card creates an experiment with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"overlays\",\n \"routeSlug\": \"marketing\",\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"kind\",\n \"name\",\n \"enabled\",\n \"startAtMs\",\n \"endAtMs\",\n \"pathPatterns\",\n \"excludePathPatterns\",\n \"order\",\n \"bar\",\n \"popup\",\n \"stats\"\n ],\n \"package\": {\n \"kind\": \"overlay\",\n \"label\": \"Bars and popups\",\n \"nameField\": \"name\"\n },\n \"count\": {\n \"uncapped\": \"The overlays card creates a bar or popup with a client write and no count, so a restore mints nothing an editor could not already.\"\n }\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"campaignAttributions\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"One row per conversion — a form submission, a lead, a contact or a booking — recording which campaign the visitor arrived from. Written only by the Admin SDK, and the whole record is three sanitized UTM strings capped at a hundred characters: there is no field an asset could occupy and no surface that could pick one into it. Unbounded on the same footing as the conversions it credits.\"\n },\n {\n \"pluginId\": \"redirects\",\n \"name\": \"redirects\",\n \"routeSlug\": \"redirects\",\n \"resource\": {\n \"kind\": \"redirect\",\n \"label\": \"redirects\",\n \"activityNoun\": \"redirect\",\n \"quotaKey\": \"redirectsPerHost\",\n \"entitlement\": \"redirects\",\n \"requiresPublishRole\": true,\n \"fields\": [\n \"source\",\n \"destination\",\n \"statusCode\",\n \"kind\",\n \"priority\",\n \"enabled\"\n ],\n \"externalDestination\": {\n \"field\": \"destination\",\n \"approvedByField\": \"externalDestinationApprovedBy\"\n },\n \"livePathField\": \"source\"\n },\n \"siteExport\": {\n \"limit\": 500,\n \"fields\": [\n \"source\",\n \"destination\",\n \"statusCode\",\n \"kind\",\n \"priority\",\n \"enabled\"\n ],\n \"package\": {\n \"kind\": \"redirect\",\n \"label\": \"Redirects\",\n \"nameField\": \"source\"\n }\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"workflows\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"workflow\",\n \"label\": \"workflows\",\n \"activityNoun\": \"workflow\",\n \"activityType\": \"workflow\",\n \"quotaKey\": \"workflowsPerHost\",\n \"entitlement\": \"workflows\",\n \"fields\": [\n \"name\",\n \"steps\",\n \"returnValue\",\n \"trigger\"\n ],\n \"duplicate\": {\n \"nameField\": \"name\",\n \"fields\": [\n \"steps\",\n \"returnValue\"\n ],\n \"stamps\": {\n \"trigger\": null\n }\n }\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"steps\",\n \"returnValue\",\n \"trigger\"\n ],\n \"package\": {\n \"kind\": \"workflow\",\n \"label\": \"Workflows\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"webhooks\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"webhook\",\n \"label\": \"webhooks\",\n \"activityNoun\": \"webhook\",\n \"entitlement\": \"webhooks\",\n \"platformCap\": \"WEBHOOK_MAX_PER_HOST\",\n \"softDeletes\": true,\n \"fields\": [\n \"name\",\n \"direction\",\n \"url\",\n \"workflowName\",\n \"secret\",\n \"enabled\"\n ]\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"actions\",\n \"routeSlug\": \"automation\",\n \"resource\": {\n \"kind\": \"action\",\n \"label\": \"interactions and actions\",\n \"activityNoun\": \"action\",\n \"platformCap\": \"ACTIONS_MAX_PER_HOST\",\n \"softDeletes\": true,\n \"fields\": [\n \"name\",\n \"description\",\n \"trigger\",\n \"steps\",\n \"enabled\",\n \"frequency\",\n \"cooldownMinutes\",\n \"audience\",\n \"nodeId\",\n \"screenId\"\n ]\n },\n \"siteExport\": {\n \"limit\": 100,\n \"fields\": [\n \"name\",\n \"trigger\",\n \"steps\",\n \"enabled\",\n \"recipe\"\n ],\n \"package\": {\n \"kind\": \"action\",\n \"label\": \"Interactions and actions\",\n \"nameField\": \"name\"\n }\n }\n },\n {\n \"pluginId\": \"sales-channels\",\n \"name\": \"salesChannels\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A site's shopping-channel state (AGL-3637): one feed document per channel holding the token that locks its URL, the store's defaults for blank product fields, and a sealed OAuth token per API connection. No client reads or writes it, and nothing in it names a library asset.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnels\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A funnel is a name and its steps — paths and record ids, never an asset. Written only by the funnels save route.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnelJourneys\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"One document per recorded visit: step types, paths or record ids, server times and UTM labels. Written only by the site collector on the Admin SDK, read only by the results route; expires 90 days after the visit.\"\n },\n {\n \"pluginId\": \"funnels\",\n \"name\": \"funnelResults\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"A computed funnel result — counts, shares and durations — kept up to a day by the results route and expiring on its own.\"\n },\n]\n\n/**\n * Every child sitemap a first-party plugin's documents fill, declared by that\n * plugin (AGL-3080), in the order the index lists them.\n */\nexport const PLUGIN_SITEMAP_SECTIONS_DECLARED: readonly ResolvedPluginSitemapSection[] = [\n {\n \"pluginId\": \"commerce\",\n \"section\": \"products\",\n \"collection\": \"products\",\n \"where\": {\n \"field\": \"status\",\n \"equals\": \"active\"\n },\n \"enabledBy\": {\n \"doc\": \"settings/store\",\n \"field\": \"pdpScreenId\"\n },\n \"path\": \"/products/{slug}\",\n \"skipWhen\": \"deletedAt\",\n \"lastmod\": [\n \"updatedAtMs\",\n \"createdAtMs\"\n ]\n },\n {\n \"pluginId\": \"commerce\",\n \"section\": \"catalog\",\n \"collection\": \"collections\",\n \"where\": {\n \"field\": \"kind\",\n \"equals\": \"catalog\"\n },\n \"enabledBy\": {\n \"doc\": \"settings/store\",\n \"field\": \"collectionScreenId\"\n },\n \"path\": \"/collections/{slug}\",\n \"lastmod\": [\n \"updatedAt\",\n \"createdAt\"\n ]\n },\n]\n\n/**\n * Every child-sitemap family a first-party plugin's reader lists, declared by\n * that plugin (AGL-3475), in the order the index lists them.\n */\nexport const PLUGIN_SITEMAP_READERS_DECLARED: readonly ResolvedPluginSitemapReaderDeclaration[] = [\n {\n \"pluginId\": \"data\",\n \"section\": \"records\"\n }\n]\n\n/**\n * Every section of the whole-site backup a first-party plugin answers for,\n * declared by that plugin (AGL-3080), in the order the bundle carries them.\n */\nexport const PLUGIN_SITE_BUNDLE_SECTIONS_DECLARED: readonly ResolvedPluginSiteBundleSectionDeclaration[] = [\n {\n \"pluginId\": \"data\",\n \"key\": \"datasets\",\n \"limit\": 50,\n \"package\": {\n \"kind\": \"dataset\",\n \"label\": \"Datasets\",\n \"nameField\": \"displayName\",\n \"placements\": [\n {\n \"prop\": \"repeatDataset\"\n },\n {\n \"componentId\": \"form\",\n \"prop\": \"datasetId\"\n }\n ]\n }\n }\n]\n\n/**\n * Every resource a first-party plugin can import or export, declared by that\n * plugin (AGL-3523), in the order the transfer hub lists them.\n */\nexport const PLUGIN_TRANSFER_RESOURCES_DECLARED: readonly ResolvedTransferResourceDeclaration[] = [\n {\n \"pluginId\": \"forms\",\n \"key\": \"forms.submissions\",\n \"label\": \"Form submissions\",\n \"singularLabel\": \"Form submission\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"What visitors sent through this site’s forms: each answer, and when, on which page and through which form it arrived.\",\n \"exportOnly\": true\n },\n {\n \"pluginId\": \"bookings\",\n \"key\": \"bookings\",\n \"featureFlag\": \"bookings\",\n \"label\": \"Bookings\",\n \"singularLabel\": \"Booking\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"Every booking on this site: the service, the time, the customer’s details, its status and what was paid.\",\n \"exportOnly\": true\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.products\",\n \"label\": \"Products\",\n \"singularLabel\": \"Product\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Products with their options, variants, prices, stock, images and search listing.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.categories\",\n \"label\": \"Product categories\",\n \"singularLabel\": \"Product category\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"The category tree products are filed under, matched by slug, then name.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.orders\",\n \"label\": \"Orders\",\n \"singularLabel\": \"Order\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every order with its items, money, customer and addresses. Exported only.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.discounts\",\n \"label\": \"Discounts\",\n \"singularLabel\": \"Discount\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Discount codes and automatic promotions, matched by code, then name. New ones start switched off.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.coupons\",\n \"label\": \"Coupons\",\n \"singularLabel\": \"Coupon\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Percent-off coupon codes, matched by code. New ones start switched off.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.gift-cards\",\n \"featureFlag\": \"giftCards\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"importRoles\": [\n \"admin\"\n ],\n \"label\": \"Gift cards\",\n \"singularLabel\": \"Gift card\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"Every gift card's code, balance and status. An import issues each card, confirmed by the total.\"\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerce.tracking\",\n \"label\": \"Tracking numbers\",\n \"singularLabel\": \"Tracking number\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"Tracking numbers from a label tool, each recorded as a shipment on the order it names.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.contacts\",\n \"featureFlag\": \"crm\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"label\": \"Contacts\",\n \"singularLabel\": \"Contact\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every contact field, custom fields included, with the company, the manager and the owner by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.companies\",\n \"featureFlag\": \"crm\",\n \"label\": \"Companies\",\n \"singularLabel\": \"Company\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every company field, custom fields included, with the parent company and the owner by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.email-templates\",\n \"featureFlag\": \"crm\",\n \"label\": \"Email templates\",\n \"singularLabel\": \"Email template\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 200\n },\n \"description\": \"Shared email templates and snippets, and your own personal ones.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.leads\",\n \"featureFlag\": \"crm\",\n \"featureFlagExempt\": [\n \"export\"\n ],\n \"label\": \"Leads\",\n \"singularLabel\": \"Lead\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every lead field, custom fields included, with the status, the owner and the campaigns by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.deals\",\n \"featureFlag\": \"crm\",\n \"label\": \"Deals\",\n \"singularLabel\": \"Deal\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every deal field, custom fields and contact roles included, with the pipeline, stage, contact and company by name.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.tasks\",\n \"featureFlag\": \"crm\",\n \"label\": \"Tasks\",\n \"singularLabel\": \"Task\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"Every task, with its type, priority and status as your lists label them and the contact, company and deal it is for.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.activities\",\n \"featureFlag\": \"crm\",\n \"label\": \"Activities\",\n \"singularLabel\": \"Activity\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every call, email, meeting and note the team logged, with who logged it and what it was about.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.pipelines\",\n \"featureFlag\": \"crm\",\n \"label\": \"Pipelines and stages\",\n \"singularLabel\": \"Stage\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Each pipeline with its stages in order: their kind, probability and forecast category.\"\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crm.fields\",\n \"featureFlag\": \"crm\",\n \"label\": \"Custom fields\",\n \"singularLabel\": \"Custom field\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"exportOnly\": true,\n \"description\": \"Every custom field you defined, on which record, of what type, with its choices.\"\n },\n {\n \"pluginId\": \"outreach\",\n \"key\": \"outreach.sequences\",\n \"featureFlag\": \"outreach\",\n \"label\": \"Sequences\",\n \"singularLabel\": \"Sequence\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 500\n },\n \"description\": \"Each sequence's steps and settings, imported as a draft. Never who was enrolled or what was sent.\"\n },\n {\n \"pluginId\": \"outreach\",\n \"key\": \"outreach.do-not-contact\",\n \"featureFlag\": \"outreach\",\n \"label\": \"Do-not-contact list\",\n \"singularLabel\": \"Do-not-contact entry\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"description\": \"The domains and addresses sequences never email. An import only adds to it; an address is kept as a fingerprint, so only domains are exported.\"\n },\n {\n \"pluginId\": \"data\",\n \"key\": \"data.dataset\",\n \"featureFlag\": \"dataStore\",\n \"label\": \"Dataset records\",\n \"singularLabel\": \"Dataset record\",\n \"description\": \"The records of one dataset, with every field it defines.\",\n \"scope\": \"org\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"instances\": true,\n \"readableByMembers\": true\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.list-members\",\n \"label\": \"List members\",\n \"singularLabel\": \"List member\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"instances\": true,\n \"description\": \"The people on one email list, with the consent each was added under.\"\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.suppressions\",\n \"label\": \"Suppressions\",\n \"singularLabel\": \"Suppression\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 50000\n },\n \"description\": \"The addresses a site's marketing email skips, and why.\"\n },\n {\n \"pluginId\": \"email\",\n \"key\": \"email.topics\",\n \"label\": \"Email topics\",\n \"singularLabel\": \"Email topic\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 200\n },\n \"description\": \"Each topic's name, what recipients are told they get, and whether it is retired. Never who chose it.\"\n },\n {\n \"pluginId\": \"events-calendar\",\n \"key\": \"events\",\n \"featureFlag\": \"eventCalendar\",\n \"label\": \"Events\",\n \"singularLabel\": \"Event\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 2000\n },\n \"description\": \"This site’s calendar events, matched on their ID, then the title and start together.\"\n },\n {\n \"pluginId\": \"marketing\",\n \"key\": \"marketing.campaigns\",\n \"label\": \"Campaigns\",\n \"singularLabel\": \"Campaign\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 500\n },\n \"description\": \"Each campaign's name, dates, lists and its emails' copy, imported as drafts. Never what was sent or its results.\"\n },\n {\n \"pluginId\": \"redirects\",\n \"key\": \"redirects\",\n \"featureFlag\": \"redirects\",\n \"label\": \"Redirects\",\n \"singularLabel\": \"Redirect\",\n \"scope\": \"host\",\n \"kinds\": [\n \"records\"\n ],\n \"formats\": [\n \"csv\",\n \"json\",\n \"ndjson\"\n ],\n \"limits\": {\n \"maxRows\": 5000\n },\n \"description\": \"This site’s redirect rules, matched on the path they redirect from.\"\n },\n {\n \"pluginId\": \"workflows\",\n \"key\": \"workflows.org-automations\",\n \"featureFlag\": \"actions\",\n \"label\": \"Org automations\",\n \"singularLabel\": \"Org automation\",\n \"scope\": \"org\",\n \"kinds\": [\n \"package\"\n ],\n \"formats\": [\n \"json\"\n ],\n \"limits\": {\n \"maxRows\": 100\n },\n \"description\": \"The organization's automations — trigger, steps and sites — imported switched off.\"\n }\n]\n\n/**\n * Every org collection a first-party plugin owns whose documents the media\n * scan reads, declared by that plugin (AGL-3273).\n */\nexport const PLUGIN_ORG_COLLECTIONS_DECLARED: readonly ResolvedPluginOrgCollection[] = [\n {\n \"pluginId\": \"marketing\",\n \"name\": \"campaigns\",\n \"routeSlug\": \"marketing\",\n \"siteField\": \"hostId\",\n \"holdsTransferWhile\": {\n \"field\": \"status\",\n \"values\": [\n \"scheduled\",\n \"sending\"\n ]\n }\n },\n {\n \"pluginId\": \"marketing\",\n \"name\": \"emailCampaigns\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"The campaign CONTAINER — a name, a date window, the list ids it is aimed at, a topic and the sites it runs on. Distinct from `campaigns`, which holds the sends and IS scanned because a send carries the copy that went out. A container carries no copy and no asset reference: the design a send renders is a screen, and the screen is where the picker writes.\"\n },\n {\n \"pluginId\": \"workflows\",\n \"name\": \"automations\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"An org automation (AGL-3302) — a trigger, its conditions, the sites it is placed on, and a step list drawn from the server steps only: email subject and body as plain text, list, dataset and campaign ids, CRM fields and waits. No step it may hold carries a media reference, the in-page steps that could (custom HTML, popups) are refused by its save route, and it is written only by that route.\"\n },\n {\n \"pluginId\": \"ai\",\n \"name\": \"aiJobs\",\n \"label\": \"AI job\",\n \"siteField\": \"hostId\",\n \"mediaScan\": \"none\",\n \"mediaScanReason\": \"An AI job is the machine's record of one request: the brief, scalar inputs, the step ledger and the ids of the documents it produced. What it produced is a screen, layout, product or other document of the site, and the scan reads that document; scanning the job would report a request as using an asset the page it built uses. Jobs expire on their own (`expiresAt`, 180 days).\"\n },\n]\n\n/**\n * Every org capacity a first-party plugin backs, declared by that plugin\n * (AGL-3080). Core owns the money; this says what is counted and what it is\n * called.\n */\nexport const PLUGIN_ORG_CAPACITIES_DECLARED: readonly ResolvedPluginOrgCapacity[] = [\n {\n \"pluginId\": \"data\",\n \"kind\": \"datasets\",\n \"order\": 30,\n \"collection\": \"datasets\",\n \"addonKind\": \"datasets\",\n \"includedEntitlement\": \"datasetsPerOrg\",\n \"purchaseCeilingEntitlement\": \"maxDatasetsPerOrg\",\n \"nouns\": {\n \"one\": \"dataset\",\n \"many\": \"datasets\",\n \"addon\": \"extra datasets\"\n }\n },\n]\n\n/**\n * Every kind of entity a besigner picker lists, declared by the plugin that\n * keeps it (AGL-3080). Core reads, browses and resolves; this says where and\n * in what words.\n */\nexport const PLUGIN_ENTITY_PICKERS_DECLARED: readonly ResolvedPluginEntityPicker[] = [\n {\n \"pluginId\": \"forms\",\n \"kind\": \"forms\",\n \"attribute\": \"form-select\",\n \"scope\": \"host\",\n \"collection\": \"forms\",\n \"nameField\": \"displayName\",\n \"singular\": \"form\",\n \"plural\": \"forms\",\n \"page\": \"the Forms page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"products\",\n \"attribute\": \"product-select\",\n \"scope\": \"host\",\n \"collection\": \"products\",\n \"nameField\": \"name\",\n \"searchable\": true,\n \"singular\": \"product\",\n \"plural\": \"products\",\n \"page\": \"the Products page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"collections\",\n \"attribute\": \"collection-select\",\n \"scope\": \"host\",\n \"collection\": \"collections\",\n \"nameField\": \"name\",\n \"where\": [\n {\n \"field\": \"kind\",\n \"equals\": \"catalog\"\n }\n ],\n \"singular\": \"collection\",\n \"plural\": \"collections\",\n \"page\": \"the Collections page\"\n },\n {\n \"pluginId\": \"commerce\",\n \"kind\": \"categories\",\n \"attribute\": \"category-select\",\n \"scope\": \"host\",\n \"collection\": \"productCategories\",\n \"nameField\": \"name\",\n \"singular\": \"category\",\n \"plural\": \"categories\",\n \"page\": \"the Categories page\"\n },\n {\n \"pluginId\": \"data\",\n \"kind\": \"datasets\",\n \"attribute\": \"dataset-select\",\n \"fieldsAttribute\": \"dataset-field-select\",\n \"fieldsFrom\": \"dataset\",\n \"scope\": \"orgData\",\n \"collection\": \"datasets\",\n \"nameField\": \"displayName\",\n \"singular\": \"dataset\",\n \"plural\": \"datasets\",\n \"page\": \"the Data page\"\n },\n]\n\n/**\n * Every public door a first-party plugin keeps a ceiling and a honeypot on,\n * with its counters and words, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_VISITOR_DOORS_DECLARED: readonly ResolvedVisitorDoor[] = [\n {\n \"pluginId\": \"forms\",\n \"door\": \"form\",\n \"refusedCounter\": \"formSubmissionsRefused\",\n \"caughtCounter\": \"formSubmissionsSpam\",\n \"words\": {\n \"pausedTitle\": \"Form submissions are paused\",\n \"noun\": {\n \"one\": \"submission\",\n \"other\": \"submissions\"\n },\n \"staffNoun\": {\n \"one\": \"form submission\",\n \"other\": \"form submissions\"\n },\n \"cause\": \"This usually means a bot is filling in one of your forms — if it is real traffic, contact support and we will raise the limit.\",\n \"pausedChip\": \"forms paused\",\n \"caught\": {\n \"one\": \"bot submission\",\n \"other\": \"bot submissions\"\n },\n \"caughtBy\": \"the honeypot\",\n \"caughtChip\": {\n \"one\": \"bot hit\",\n \"other\": \"bot hits\"\n }\n }\n },\n]\n\n/**\n * Where a person reads each record kind a first-party plugin's console page\n * shows, declared by that plugin (AGL-3080), for a server's notification link.\n */\nexport const PLUGIN_RECORD_PAGES_DECLARED: readonly ResolvedPluginRecordPage[] = [\n {\n \"pluginId\": \"inbox\",\n \"kind\": \"formSubmission\",\n \"path\": \"/inbox\",\n \"record\": {\n \"path\": \"/inbox/submissions\",\n \"param\": \"submission\"\n }\n },\n]\n\n/**\n * What each plan includes of every quota a first-party plugin owns, declared\n * by that plugin (AGL-3080). `PLAN_ENTITLEMENTS` composes these; core names\n * no key.\n */\nexport const PLUGIN_PLAN_QUOTAS_DECLARED: readonly ResolvedPluginPlanQuota[] = [\n {\n \"pluginId\": \"forms\",\n \"key\": \"formSubmissionsPerMonth\",\n \"label\": \"Form subs / mo\",\n \"byPlan\": {\n \"free\": 20,\n \"starter\": 200,\n \"pro\": 1000,\n \"business\": 5000,\n \"scale\": 10000,\n \"advanced\": 10000,\n \"agency\": 10000,\n \"enterprise\": 20000\n }\n },\n {\n \"pluginId\": \"marketplace\",\n \"key\": \"marketplaceFeePct\",\n \"label\": \"Marketplace fee %\",\n \"price\": true,\n \"byPlan\": {\n \"free\": 30,\n \"starter\": 20,\n \"pro\": 20,\n \"business\": 20,\n \"scale\": 20,\n \"advanced\": 20,\n \"agency\": 20,\n \"enterprise\": 20\n }\n },\n {\n \"pluginId\": \"crm\",\n \"key\": \"crmEmailsPerDay\",\n \"label\": \"One-to-one emails / day\",\n \"byPlan\": {\n \"free\": 0,\n \"starter\": 35,\n \"pro\": 150,\n \"business\": 200,\n \"scale\": 300,\n \"advanced\": 500,\n \"agency\": 1000,\n \"enterprise\": 2000\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"key\": \"workflowRunsPerMonth\",\n \"label\": \"Workflow runs / mo\",\n \"byPlan\": {\n \"free\": 0,\n \"starter\": 500,\n \"pro\": 5000,\n \"business\": 50000,\n \"scale\": 150000,\n \"advanced\": 500000,\n \"agency\": 2000000,\n \"enterprise\": 4000000\n }\n },\n {\n \"pluginId\": \"ai\",\n \"key\": \"assistCreditsPerMonth\",\n \"label\": \"AI credits / mo\",\n \"byPlan\": {\n \"free\": 300,\n \"starter\": 750,\n \"pro\": 2750,\n \"business\": 7500,\n \"scale\": 10000,\n \"advanced\": 13000,\n \"agency\": 58000,\n \"enterprise\": 116000\n }\n },\n]\n\n/**\n * What each plan includes of every feature a first-party plugin owns,\n * declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_PLAN_FEATURES_DECLARED: readonly ResolvedPluginPlanFeature[] = [\n {\n \"pluginId\": \"commerce\",\n \"key\": \"storefrontSubscriptions\",\n \"label\": \"Storefront subscriptions\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": false,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"giftCards\",\n \"label\": \"Gift cards\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": false,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"commerce\",\n \"key\": \"commerceAnalytics\",\n \"label\": \"Commerce analytics\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": true,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n {\n \"pluginId\": \"marketplace\",\n \"key\": \"marketplaceSelling\",\n \"label\": \"Sell on the marketplace\",\n \"byPlan\": {\n \"free\": false,\n \"starter\": false,\n \"pro\": true,\n \"business\": true,\n \"scale\": true,\n \"advanced\": true,\n \"agency\": true,\n \"enterprise\": true\n }\n },\n]\n\n/**\n * Every meter a first-party plugin contributes to the platform's cost model,\n * in breakdown order, declared by that plugin (AGL-3080). Core keeps the rates.\n */\nexport const PLUGIN_COST_AXES_DECLARED: readonly ResolvedPluginCostAxis[] = [\n {\n \"pluginId\": \"forms\",\n \"id\": \"formSubmissions\",\n \"order\": 30,\n \"fields\": [\n \"formSubmissions\"\n ],\n \"rate\": \"perFormSubmission\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"contacts\",\n \"order\": 60,\n \"fields\": [\n \"crmRecordsCount\"\n ],\n \"fallbackFields\": [\n \"contactsCount\"\n ],\n \"recordedFields\": [\n \"companiesCount\",\n \"dealsCount\"\n ],\n \"rate\": \"perContactMonth\"\n },\n {\n \"pluginId\": \"ai\",\n \"id\": \"assist\",\n \"order\": 80,\n \"fields\": [\n \"assistCostUsd\"\n ],\n \"staffFields\": [\n \"assistCredits\",\n \"assistOverageUsd\"\n ],\n \"live\": {\n \"collection\": \"assistUsage\",\n \"fields\": [\n \"providerCostUsd\",\n \"estCostUsd\"\n ]\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"runs\",\n \"order\": 90,\n \"fields\": [\n \"workflowRuns\",\n \"actionRuns\"\n ],\n \"rate\": \"perRun\"\n },\n]\n\n/**\n * Every band a first-party plugin contributes to the utilization table, in\n * column order, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_USAGE_BANDS_DECLARED: readonly ResolvedPluginUsageBand[] = [\n {\n \"pluginId\": \"forms\",\n \"id\": \"formSubmissions\",\n \"label\": \"Form submissions\",\n \"order\": 40,\n \"fields\": [\n \"formSubmissions\"\n ],\n \"entitlement\": \"formSubmissionsPerMonth\",\n \"perHost\": true,\n \"hostCounter\": \"formSubmissions\",\n \"metered\": {\n \"rate\": \"perFormSubmission\",\n \"quotedPer\": 1000,\n \"noun\": \"form submissions\",\n \"withheldUntil\": \"release_inbox\"\n }\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"contactsCount\",\n \"label\": \"CRM records\",\n \"order\": 70,\n \"fields\": [\n \"crmRecordsCount\"\n ],\n \"fallbackFields\": [\n \"contactsCount\"\n ],\n \"entitlement\": \"contactsPerHost\"\n },\n {\n \"pluginId\": \"ai\",\n \"id\": \"assistCredits\",\n \"label\": \"Assist credits\",\n \"order\": 90,\n \"fields\": [\n \"assistCostUsd\"\n ],\n \"entitlement\": \"assistCreditsPerMonth\",\n \"unitCostUsd\": 0.001,\n \"consoleWarning\": {\n \"standing\": \"/api/ai/billing/credits\",\n \"member\": \"credits\",\n \"approach\": \"You're above 80% of your included AI assist credits.\",\n \"reached\": {\n \"stops\": \"You've used your included AI assist credits — AI assist stops until next month or an upgrade, and nothing is billed for it.\",\n \"bills\": \"You've used your included AI assist credits — extra credits are billed at your plan’s rate unless you set a stop under Billing → Usage.\"\n },\n \"linksUsage\": true\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"workflowRuns\",\n \"label\": \"Workflow runs\",\n \"order\": 100,\n \"fields\": [\n \"workflowRuns\"\n ],\n \"entitlement\": \"workflowRunsPerMonth\",\n \"hostCounter\": \"workflowRuns\",\n \"orgCounter\": \"workflowRuns\",\n \"alert\": {\n \"label\": \"monthly workflow runs\",\n \"noun\": \"workflow runs\",\n \"outcome\": \"stops\",\n \"reached\": \"Workflows pause until next month and nothing is charged — upgrade in Billing to keep them running.\",\n \"approach\": \"Nothing changes and nothing is charged — at the included amount, workflows pause until next month unless you upgrade in Billing.\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"id\": \"actionRuns\",\n \"label\": \"Action runs\",\n \"order\": 110,\n \"fields\": [\n \"actionRuns\"\n ],\n \"entitlement\": \"actionRunsPerMonth\",\n \"orgCounter\": \"actionRuns\"\n },\n]\n\n/**\n * Every line of a workspace's monthly spend a first-party plugin contributes\n * to its usage budget, in catalog order, declared by that plugin (AGL-3080).\n */\nexport const PLUGIN_SPEND_LINES_DECLARED: readonly ResolvedPluginSpendLine[] = [\n {\n \"pluginId\": \"ai\",\n \"id\": \"assist\",\n \"label\": \"Assist\",\n \"live\": {\n \"collection\": \"assistUsage\",\n \"field\": \"estCostUsd\"\n },\n \"billedFromEnv\": \"BILL_ASSIST_TOKENS_FROM\",\n \"unit\": {\n \"costUsd\": 0.001,\n \"label\": \"Assist credits\"\n }\n },\n]\n\n/**\n * Every meter a first-party plugin measures in the monthly usage sweep, in\n * catalog order, declared by that plugin (AGL-3080). The sweep refuses to bill\n * a month while one of these is unregistered.\n */\nexport const PLUGIN_USAGE_METERS_DECLARED: readonly ResolvedPluginUsageMeter[] = [\n {\"pluginId\":\"crm\",\"id\":\"records\"},\n {\"pluginId\":\"data\",\"id\":\"dataset-storage\"},\n {\"pluginId\":\"ai\",\"id\":\"assist\"},\n {\"pluginId\":\"sms\",\"id\":\"sms-texts\"},\n {\"pluginId\":\"shipping\",\"id\":\"shipping-labels\"},\n]\n\n/**\n * Every top-level plugin collection a workspace erasure sweeps by the field\n * naming the organization, declared by the plugin that owns it (AGL-3080).\n */\nexport const PLUGIN_ORG_KEYED_COLLECTIONS: readonly PluginOrgKeyedCollection[] = [\n {\n \"pluginId\": \"outreach\",\n \"name\": \"outreachMailboxCredentials\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"outreach\",\n \"name\": \"outreachLinks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"shipping\",\n \"name\": \"shippingTrackers\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"shipping\",\n \"name\": \"shippingQuoteCache\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineProductCodes\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineExemptions\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"tax-engines\",\n \"name\": \"taxEngineTransactions\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketing-platforms\",\n \"name\": \"marketingPlatformConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketing-platforms\",\n \"name\": \"marketingPlatformEvents\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"zapier\",\n \"name\": \"zapierHooks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"zapier\",\n \"name\": \"zapierHookDeliveries\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"fulfillment-networks\",\n \"name\": \"fulfillmentNetworkConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"fulfillment-networks\",\n \"name\": \"fulfillmentNetworkOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketplaces\",\n \"name\": \"marketplaceConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"marketplaces\",\n \"name\": \"marketplaceOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podProductLinks\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"print-on-demand\",\n \"name\": \"podOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncConnections\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncOrders\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"inventory-sync\",\n \"name\": \"inventorySyncProducts\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"delivery-apps\",\n \"name\": \"deliveryAppStores\",\n \"orgField\": \"orgId\"\n },\n {\n \"pluginId\": \"delivery-apps\",\n \"name\": \"deliveryAppOrders\",\n \"orgField\": \"orgId\"\n },\n]\n\n/**\n * The plugins whose org eraser a workspace erasure may not run without\n * (AGL-3080): each holds a record the erasure promises to destroy.\n */\nexport const PLUGIN_REQUIRED_ORG_ERASERS: readonly string[] = [\"marketplace\"]\n\n/**\n * The plugins whose person eraser a person erasure may not run without\n * (AGL-3080): each keeps a share of the person the erasure promises to remove.\n */\nexport const PLUGIN_REQUIRED_PERSON_ERASERS: readonly string[] = [\"bookings\",\"commerce\",\"crm\",\"email\",\"loyalty\"]\n\n/**\n * The plugins whose sales the operator's sales tax return may not be filed\n * without (AGL-3080): each registers a tax return source, and one that did\n * not is refused rather than read as nothing sold.\n */\nexport const PLUGIN_TAX_RETURN_SOURCES: readonly string[] = [\"commerce\",\"marketplace\"]\n\n/**\n * The plugins whose earnings the operator's revenue report may not be read\n * without (AGL-3080): each registers a revenue source, and one that did not\n * is refused rather than read as nothing earned.\n */\nexport const PLUGIN_REVENUE_SOURCES: readonly string[] = [\"commerce\",\"marketplace\"]\n\n/**\n * Where published plugin versions and their kill switches are stored, declared\n * by the plugin that distributes them (AGL-3080). `null` when none does, and\n * the realm loader then resolves nothing.\n */\nexport const PLUGIN_DISTRIBUTION: PluginDistribution | null = {\n \"pluginId\": \"marketplace\",\n \"listings\": \"marketplaceListings\",\n \"versions\": \"pluginVersions\",\n \"revocations\": \"revocations\"\n}\n\n/**\n * The plugin that answers a published page's repeats, declared by that plugin\n * (AGL-3080). `null` when none does, and a repeat then renders its element\n * once, as written.\n */\nexport const PLUGIN_REPEAT_SOURCE_DECLARED: RepeatSourceDeclaration | null = {\n \"pluginId\": \"data\",\n \"id\": \"dataset\"\n}\n\n/**\n * The site documents a plugin authors in the besigner, declared by that\n * plugin (AGL-3080). Empty when none does, and the console's plugin-document\n * editor routes answer 404.\n */\nexport const PLUGIN_BESIGNER_DOCUMENTS_DECLARED: readonly ResolvedBesignerDocument[] = [\n {\n \"pluginId\": \"forms\",\n \"kind\": \"form\",\n \"segment\": \"forms\",\n \"collection\": \"forms\",\n \"noun\": \"form\",\n \"publish\": {\n \"path\": \"/api/forms/promote\",\n \"idField\": \"formId\"\n }\n },\n]\n\n/**\n * The plugin whose records a form's submission may also be filed as, declared\n * by that plugin (AGL-3080). `null` when none does, and no form writes one.\n */\nexport const PLUGIN_FORM_RECORD_TARGET_DECLARED: FormRecordTargetDeclaration | null = {\n \"pluginId\": \"data\",\n \"id\": \"dataset\"\n}\n\n/**\n * The installable artifact types a first-party plugin keeps the copies of,\n * declared by that plugin (AGL-3080). Empty when none does, and an installer\n * then refuses every listing of a type nobody keeps.\n */\nexport const PLUGIN_ARTIFACT_TYPES_DECLARED: readonly ArtifactTypeDeclaration[] = [\n {\"pluginId\":\"data\",\"type\":\"datasetSchema\"},\n]\n\n/**\n * What a site's template library calls a template a plugin installed, by the\n * `source.type` that plugin stamps, declared by that plugin (AGL-3080).\n * Core names no installer.\n */\nexport const PLUGIN_TEMPLATE_SOURCES: readonly PluginTemplateSource[] = [\n {\n \"pluginId\": \"marketplace\",\n \"type\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Installed from the marketplace\"\n },\n]\n\n/**\n * The analytics settings each provider mounts a tag for, declared by the\n * plugin that adapts the vendor (AGL-3080). Empty when none does, and then no\n * setting configures a tag.\n */\nexport const ANALYTICS_PROVIDERS_DECLARED: readonly AnalyticsProviderDeclaration[] = [\n {\n \"pluginId\": \"marketing\",\n \"settings\": [\n \"gaMeasurementId\",\n \"gtmContainerId\"\n ]\n },\n]\n\n/**\n * Every interaction step a first-party plugin offers in the interaction\n * builder, declared by that plugin (AGL-3080). Core names no plugin step.\n */\nexport const PLUGIN_INTERACTION_STEPS_DECLARED: readonly InteractionStepDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"type\": \"setContactStage\",\n \"label\": \"Set the contact’s lifecycle stage\",\n \"offered\": false\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"addContactTag\",\n \"label\": \"Tag the contact\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"tag\",\n \"names\": \"the tag\"\n }\n ]\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"assignContactOwner\",\n \"label\": \"Assign the contact an owner\",\n \"offered\": false\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"createCrmTask\",\n \"label\": \"Create a CRM task\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"title\",\n \"names\": \"the title\"\n }\n ]\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"logCrmActivity\",\n \"label\": \"Log a CRM activity\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"datasetAppend\",\n \"label\": \"Write to a dataset\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"datasetName\",\n \"names\": \"the dataset\"\n }\n ]\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"updateDataset\",\n \"label\": \"Update a dataset record\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"datasetName\",\n \"names\": \"the dataset\"\n }\n ]\n },\n {\n \"pluginId\": \"marketing\",\n \"type\": \"showOverlay\",\n \"label\": \"Open an overlay\",\n \"picks\": {\n \"collection\": \"overlays\",\n \"limit\": 50,\n \"idField\": \"overlayId\",\n \"nameField\": \"overlayName\",\n \"label\": \"Overlay\",\n \"missing\": \"pick an overlay\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"runWorkflow\",\n \"label\": \"Run a workflow\",\n \"typedFields\": [\n {\n \"key\": \"workflowName\",\n \"names\": \"the workflow\"\n }\n ],\n \"picks\": {\n \"collection\": \"workflows\",\n \"limit\": 100,\n \"idField\": \"workflowId\",\n \"nameField\": \"workflowName\",\n \"label\": \"Workflow\",\n \"missing\": \"pick a workflow\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"customEvent\",\n \"label\": \"Fire a custom event\",\n \"offered\": false\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"webhookPost\",\n \"label\": \"Send a webhook (Business)\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"webhookName\",\n \"names\": \"the webhook\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"sendEmail\",\n \"label\": \"Send an email\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"subject\",\n \"names\": \"the subject\"\n },\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"notifyAdmins\",\n \"label\": \"Notify site admins\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"title\",\n \"names\": \"the title\"\n },\n {\n \"key\": \"body\",\n \"names\": \"the text\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"enrollList\",\n \"label\": \"Enroll in a list\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"listName\",\n \"names\": \"the list\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"assignCampaign\",\n \"label\": \"Assign to a campaign\",\n \"offered\": false,\n \"typedFields\": [\n {\n \"key\": \"campaignName\",\n \"names\": \"the campaign\"\n }\n ]\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"wait\",\n \"label\": \"Wait\",\n \"offered\": false,\n \"holds\": {\n \"minMinutes\": 1,\n \"maxMinutes\": 129600\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"waitForEvent\",\n \"label\": \"Wait for something to happen\",\n \"offered\": false,\n \"holds\": {\n \"minMinutes\": 1,\n \"maxMinutes\": 129600,\n \"timeoutField\": \"_waitTimedOut\"\n }\n },\n {\n \"pluginId\": \"workflows\",\n \"type\": \"exitFlow\",\n \"label\": \"End the flow here\",\n \"offered\": false\n },\n]\n\n/**\n * Every server step a first-party plugin runs for the automation engine,\n * declared by that plugin (AGL-3080). Core names no plugin step.\n */\nexport const PLUGIN_SERVER_STEPS_DECLARED: readonly ServerStepDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"type\": \"setContactStage\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"addContactTag\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"assignContactOwner\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"createCrmTask\"\n },\n {\n \"pluginId\": \"crm\",\n \"type\": \"logCrmActivity\"\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"datasetAppend\"\n },\n {\n \"pluginId\": \"data\",\n \"type\": \"updateDataset\"\n },\n]\n\n/**\n * Every ready-to-edit interaction a first-party plugin offers, by the id a\n * stored interaction's stamp names it with, declared by that plugin\n * (AGL-3080). Core names no recipe.\n */\nexport const PLUGIN_INTERACTION_RECIPES_DECLARED: readonly InteractionRecipeDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"id\": \"welcomeNewLead\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"followUpWonDeal\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"reengageStaleLead\"\n },\n {\n \"pluginId\": \"crm\",\n \"id\": \"tagByForm\"\n },\n]\n\n/**\n * Every first-party element that runs a site function, and the prop naming\n * it, declared by that element's plugin (AGL-3393). Core names no element.\n */\nexport const FIRST_PARTY_FUNCTION_BINDINGS: FunctionBindings = {}\n\n/**\n * Every video host whose own player the Video element frames, declared by\n * the plugin that plays it (AGL-3080). Core names no host.\n */\nexport const FIRST_PARTY_VIDEO_EMBED_PROVIDERS: readonly ResolvedVideoEmbedProvider[] = [\n {\n \"pluginId\": \"mui\",\n \"id\": \"wistia\",\n \"label\": \"Wistia\",\n \"domains\": [\n \"wistia.com\",\n \"wistia.net\",\n \"wi.st\"\n ],\n \"mediaIdPaths\": [\n \"^\\\\/medias\\\\/([^/]+)(?:\\\\/manage)?\\\\/?$\",\n \"^\\\\/m\\\\/([^/]+)\\\\/?$\",\n \"^\\\\/embed\\\\/iframe\\\\/([^/]+)\\\\/?$\",\n \"^\\\\/embed\\\\/medias\\\\/([^/.]+)(?:\\\\.jsonp?)?\\\\/?$\"\n ],\n \"mediaIdPattern\": \"^[a-z0-9]{10}$\",\n \"playerOrigin\": \"https://fast.wistia.net\",\n \"playerPath\": \"/embed/iframe/{id}\",\n \"playerQuery\": [\n {\n \"param\": \"autoPlay\",\n \"option\": \"autoPlay\",\n \"on\": \"true\",\n \"off\": \"false\"\n },\n {\n \"param\": \"roundedPlayer\",\n \"value\": \"false\"\n },\n {\n \"param\": \"doNotTrack\",\n \"option\": \"doNotTrack\",\n \"on\": \"true\"\n },\n {\n \"param\": \"muted\",\n \"option\": \"muted\",\n \"on\": \"true\"\n },\n {\n \"param\": \"endVideoBehavior\",\n \"option\": \"loop\",\n \"on\": \"loop\"\n }\n ]\n },\n]\n\n/**\n * The notification categories first-party plugins add to the settings page\n * and to every recipient's preferences, declared by each plugin (AGL-3080).\n */\nexport const PLUGIN_NOTIFICATION_CATEGORIES_DECLARED: readonly NotificationCategoryDeclaration[] = [\n {\n \"pluginId\": \"marketplace\",\n \"id\": \"marketplace\",\n \"label\": \"Marketplace\",\n \"description\": \"Decisions on plugin listings you submitted for review.\",\n \"defaults\": {\n \"console\": true,\n \"email\": false\n }\n },\n]\n\n/**\n * The digests first-party plugins send on their own schedule, each with the\n * key its switch is stored under, declared by the plugin that sends it\n * (AGL-3080).\n */\nexport const PLUGIN_NOTIFICATION_DIGESTS_DECLARED: readonly NotificationDigestDeclaration[] = [\n {\n \"pluginId\": \"crm\",\n \"key\": \"crmDaily\",\n \"label\": \"Daily CRM digest\",\n \"description\": \"Each morning: your overdue and due-today tasks and the leads nobody has worked, here and by email.\"\n },\n]\n"],"names":["FIRST_PARTY_PLUGINS","PUBLISHED_SITE_IMPACT","PLUGIN_EDIT_BAR_LINKS","PLUGIN_HOST_COLLECTIONS_DECLARED","PLUGIN_SITEMAP_SECTIONS_DECLARED","PLUGIN_SITEMAP_READERS_DECLARED","PLUGIN_SITE_BUNDLE_SECTIONS_DECLARED","PLUGIN_TRANSFER_RESOURCES_DECLARED","PLUGIN_ORG_COLLECTIONS_DECLARED","PLUGIN_ORG_CAPACITIES_DECLARED","PLUGIN_ENTITY_PICKERS_DECLARED","PLUGIN_VISITOR_DOORS_DECLARED","PLUGIN_RECORD_PAGES_DECLARED","PLUGIN_PLAN_QUOTAS_DECLARED","PLUGIN_PLAN_FEATURES_DECLARED","PLUGIN_COST_AXES_DECLARED","PLUGIN_USAGE_BANDS_DECLARED","PLUGIN_SPEND_LINES_DECLARED","PLUGIN_USAGE_METERS_DECLARED","PLUGIN_ORG_KEYED_COLLECTIONS","PLUGIN_REQUIRED_ORG_ERASERS","PLUGIN_REQUIRED_PERSON_ERASERS","PLUGIN_TAX_RETURN_SOURCES","PLUGIN_REVENUE_SOURCES","PLUGIN_DISTRIBUTION","PLUGIN_REPEAT_SOURCE_DECLARED","PLUGIN_BESIGNER_DOCUMENTS_DECLARED","PLUGIN_FORM_RECORD_TARGET_DECLARED","PLUGIN_ARTIFACT_TYPES_DECLARED","PLUGIN_TEMPLATE_SOURCES","ANALYTICS_PROVIDERS_DECLARED","PLUGIN_INTERACTION_STEPS_DECLARED","PLUGIN_SERVER_STEPS_DECLARED","PLUGIN_INTERACTION_RECIPES_DECLARED","FIRST_PARTY_FUNCTION_BINDINGS","FIRST_PARTY_VIDEO_EMBED_PROVIDERS","PLUGIN_NOTIFICATION_CATEGORIES_DECLARED","PLUGIN_NOTIFICATION_DIGESTS_DECLARED"],"mappings":"AAAA;;;;;;;CAOC,GA6BD,OAAO,MAAMA,sBAAmD;IAC9D;QACE,MAAM;QACN,SAAS;QACT,YAAY;QACZ,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;YACT,WAAW;YACX,SAAS;gBACP,WAAW;gBACX,QAAQ;YACV;QACF;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;QACf,qBAAqB;QACrB,YAAY;YACV;SACD;IACH;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,eAAe;QACf,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,YAAY;QACZ,eAAe;IACjB;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;IACA;QACE,MAAM;QACN,SAAS;QACT,wBAAwB;QACxB,eAAe;QACf,WAAW;YACT,SAAS;YACT,SAAS;QACX;IACF;CACD,CAAA;AAED,OAAO,MAAMC,wBAAuE;IAClF,OAAO;IACP,SAAS;IACT,MAAM;IACN,iBAAiB;IACjB,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,eAAe;IACf,OAAO;IACP,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,mBAAmB;IACnB,SAAS;IACT,SAAS;IACT,aAAa;IACb,aAAa;IACb,aAAa;IACb,cAAc;IACd,YAAY;IACZ,eAAe;IACf,kBAAkB;IAClB,uBAAuB;IACvB,SAAS;IACT,iBAAiB;IACjB,wBAAwB;IACxB,gBAAgB;IAChB,mBAAmB;IACnB,kBAAkB;IAClB,iBAAiB;IACjB,WAAW;AACb,EAAC;AAED;;;CAGC,GACD,OAAO,MAAMC,wBAAsD;IACjE;QACE,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;IACV;IACA;QACE,YAAY;QACZ,SAAS;QACT,SAAS;QACT,QAAQ;IACV;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,mCAA4E;IACvF;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,aAAa;gBACb,cAAc;oBACZ;wBACE,eAAe;wBACf,QAAQ;oBACV;iBACD;YACH;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,UAAU;gBACR,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;IACf;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;QACnB,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,gBAAgB;YAClB;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,cAAc;oBACZ;wBACE,SAAS;wBACT,QAAQ;oBACV;iBACD;gBACD,gBAAgB;YAClB;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;gBACb,cAAc;oBACZ;wBACE,SAAS;wBACT,QAAQ;oBACV;iBACD;YACH;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;YACA,SAAS;gBACP,YAAY;YACd;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,uBAAuB;YACvB,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,uBAAuB;gBACrB,SAAS;gBACT,mBAAmB;YACrB;YACA,iBAAiB;QACnB;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,gBAAgB;YAChB,YAAY;YACZ,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;YACD,aAAa;gBACX,aAAa;gBACb,UAAU;oBACR;oBACA;iBACD;gBACD,UAAU;oBACR,WAAW;gBACb;YACF;QACF;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,YAAY;YACV,QAAQ;YACR,SAAS;YACT,gBAAgB;YAChB,eAAe;YACf,eAAe;YACf,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;gBACA;aACD;QACH;QACA,cAAc;YACZ,SAAS;YACT,UAAU;gBACR;gBACA;gBACA;gBACA;gBACA;aACD;YACD,WAAW;gBACT,QAAQ;gBACR,SAAS;gBACT,aAAa;YACf;QACF;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,mCAA4E;IACvF;QACE,YAAY;QACZ,WAAW;QACX,cAAc;QACd,SAAS;YACP,SAAS;YACT,UAAU;QACZ;QACA,aAAa;YACX,OAAO;YACP,SAAS;QACX;QACA,QAAQ;QACR,YAAY;QACZ,WAAW;YACT;YACA;SACD;IACH;IACA;QACE,YAAY;QACZ,WAAW;QACX,cAAc;QACd,SAAS;YACP,SAAS;YACT,UAAU;QACZ;QACA,aAAa;YACX,OAAO;YACP,SAAS;QACX;QACA,QAAQ;QACR,WAAW;YACT;YACA;SACD;IACH;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,kCAAqF;IAChG;QACE,YAAY;QACZ,WAAW;IACb;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,uCAA8F;IACzG;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,WAAW;YACT,QAAQ;YACR,SAAS;YACT,aAAa;YACb,cAAc;gBACZ;oBACE,QAAQ;gBACV;gBACA;oBACE,eAAe;oBACf,QAAQ;gBACV;aACD;QACH;IACF;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,qCAAqF;IAChG;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;QACf,cAAc;IAChB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;QACf,cAAc;IAChB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,eAAe;YACb;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,qBAAqB;YACnB;SACD;QACD,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,cAAc;QACd,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,eAAe;QACf,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,aAAa;QACb,qBAAqB;IACvB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,aAAa;QACb,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;YACA;YACA;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;IACA;QACE,YAAY;QACZ,OAAO;QACP,eAAe;QACf,SAAS;QACT,iBAAiB;QACjB,SAAS;QACT,SAAS;YACP;SACD;QACD,WAAW;YACT;SACD;QACD,UAAU;YACR,WAAW;QACb;QACA,eAAe;IACjB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,kCAA0E;IACrF;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,aAAa;QACb,sBAAsB;YACpB,SAAS;YACT,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,aAAa;QACb,mBAAmB;IACrB;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,aAAa;QACb,aAAa;QACb,mBAAmB;IACrB;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,iCAAuE;IAClF;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,cAAc;QACd,aAAa;QACb,uBAAuB;QACvB,8BAA8B;QAC9B,SAAS;YACP,OAAO;YACP,QAAQ;YACR,SAAS;QACX;IACF;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAM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AAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;SACD;QACD,QAAQ;IACV;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;SACD;QACD,kBAAkB;YAChB;SACD;QACD,kBAAkB;YAChB;YACA;SACD;QACD,QAAQ;IACV;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;YACb;YACA;SACD;QACD,QAAQ;YACN,cAAc;YACd,UAAU;gBACR;gBACA;aACD;QACH;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,UAAU;YACR;YACA;SACD;QACD,QAAQ;IACV;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,8BAAkE;IAC7E;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,WAAW;QACX,eAAe;QACf,WAAW;YACT,QAAQ;YACR,aAAa;YACb,QAAQ;YACR,iBAAiB;QACnB;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,kBAAkB;YAChB;SACD;QACD,eAAe;IACjB;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,eAAe;QACf,kBAAkB;YAChB,YAAY;YACZ,UAAU;YACV,YAAY;YACZ,WAAW;gBACT,SAAS;gBACT,SAAS;YACX;YACA,cAAc;QAChB;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,eAAe;QACf,cAAc;QACd,SAAS;YACP,SAAS;YACT,QAAQ;YACR,WAAW;YACX,WAAW;YACX,YAAY;QACd;IACF;IACA;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,SAAS;QACT,UAAU;YACR;SACD;QACD,eAAe;QACf,cAAc;IAChB;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,8BAAkE;IAC7E;QACE,YA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,QAAQ;QACR,SAAS;QACT,WAAW;IACb;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,SAAS;YACP,cAAc;YACd,SAAS;YACT,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;QACb;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;QACD,SAAS;YACP,cAAc;YACd,SAAS;YACT,WAAW;YACX,aAAa;YACb,SAAS;YACT,WAAW;QACb;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;IACb;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;YACA;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;YACA;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,eAAe;YACb;gBACE,OAAO;gBACP,SAAS;YACX;SACD;IACH;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS;YACP,cAAc;YACd,cAAc;QAChB;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;QACX,SAAS;YACP,cAAc;YACd,cAAc;YACd,gBAAgB;QAClB;IACF;IACA;QACE,YAAY;QACZ,QAAQ;QACR,SAAS;QACT,WAAW;IACb;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,+BAAiE;IAC5E;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;IACA;QACE,YAAY;QACZ,QAAQ;IACV;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,sCAA+E;IAC1F;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;IACA;QACE,YAAY;QACZ,MAAM;IACR;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,gCAAkD,CAAC,EAAC;AAEjE;;;CAGC,GACD,OAAO,MAAMC,oCAA2E;IACtF;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,WAAW;YACT;YACA;YACA;SACD;QACD,gBAAgB;YACd;YACA;YACA;YACA;SACD;QACD,kBAAkB;QAClB,gBAAgB;QAChB,cAAc;QACd,eAAe;YACb;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;gBACN,OAAO;YACT;YACA;gBACE,SAAS;gBACT,SAAS;YACX;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;YACA;gBACE,SAAS;gBACT,UAAU;gBACV,MAAM;YACR;SACD;IACH;CACD,CAAA;AAED;;;CAGC,GACD,OAAO,MAAMC,0CAAsF;IACjG;QACE,YAAY;QACZ,MAAM;QACN,SAAS;QACT,eAAe;QACf,YAAY;YACV,WAAW;YACX,SAAS;QACX;IACF;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,uCAAiF;IAC5F;QACE,YAAY;QACZ,OAAO;QACP,SAAS;QACT,eAAe;IACjB;CACD,CAAA"}
|