@aglyn/aglyn 1.0.0-beta.220 → 1.0.0-beta.222

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.
Files changed (358) hide show
  1. package/package.json +15 -11
  2. package/src/lib/app-utils/agent-openapi.js +1 -1
  3. package/src/lib/app-utils/agent-openapi.js.map +1 -1
  4. package/src/lib/app-utils/analytics-events.d.ts +3 -2
  5. package/src/lib/app-utils/analytics-events.js +3 -2
  6. package/src/lib/app-utils/analytics-events.js.map +1 -1
  7. package/src/lib/app-utils/api-plugins.d.ts +30 -0
  8. package/src/lib/app-utils/api-plugins.js +24 -1
  9. package/src/lib/app-utils/api-plugins.js.map +1 -1
  10. package/src/lib/app-utils/author-html.d.ts +1 -1
  11. package/src/lib/app-utils/author-html.js.map +1 -1
  12. package/src/lib/app-utils/bandwidth-cap.d.ts +12 -1
  13. package/src/lib/app-utils/bandwidth-cap.js +17 -1
  14. package/src/lib/app-utils/bandwidth-cap.js.map +1 -1
  15. package/src/lib/app-utils/compose-reusable-components.d.ts +19 -0
  16. package/src/lib/app-utils/compose-reusable-components.js +116 -26
  17. package/src/lib/app-utils/compose-reusable-components.js.map +1 -1
  18. package/src/lib/app-utils/console-routes.d.ts +4 -0
  19. package/src/lib/app-utils/console-routes.js +3 -0
  20. package/src/lib/app-utils/console-routes.js.map +1 -1
  21. package/src/lib/app-utils/contacts.d.ts +71 -0
  22. package/src/lib/app-utils/contacts.js +55 -0
  23. package/src/lib/app-utils/contacts.js.map +1 -1
  24. package/src/lib/app-utils/contexts.d.ts +1 -0
  25. package/src/lib/app-utils/contexts.js +1 -0
  26. package/src/lib/app-utils/contexts.js.map +1 -1
  27. package/src/lib/app-utils/crm-email-templates.js +21 -4
  28. package/src/lib/app-utils/crm-email-templates.js.map +1 -1
  29. package/src/lib/app-utils/crm-kinds.d.ts +2 -0
  30. package/src/lib/app-utils/crm-kinds.js +1 -0
  31. package/src/lib/app-utils/crm-kinds.js.map +1 -1
  32. package/src/lib/app-utils/crm.d.ts +1199 -67
  33. package/src/lib/app-utils/crm.js +1951 -310
  34. package/src/lib/app-utils/crm.js.map +1 -1
  35. package/src/lib/app-utils/csv-import.d.ts +10 -38
  36. package/src/lib/app-utils/csv-import.js +17 -42
  37. package/src/lib/app-utils/csv-import.js.map +1 -1
  38. package/src/lib/app-utils/csv.d.ts +32 -11
  39. package/src/lib/app-utils/csv.js +43 -5
  40. package/src/lib/app-utils/csv.js.map +1 -1
  41. package/src/lib/app-utils/default-site.d.ts +116 -0
  42. package/src/lib/app-utils/default-site.js +1024 -0
  43. package/src/lib/app-utils/default-site.js.map +1 -0
  44. package/src/lib/app-utils/docs-help.generated.d.ts +23 -23
  45. package/src/lib/app-utils/docs-help.generated.js +47 -10
  46. package/src/lib/app-utils/docs-help.generated.js.map +1 -1
  47. package/src/lib/app-utils/docs-index.generated.js +746 -151
  48. package/src/lib/app-utils/docs-index.generated.js.map +1 -1
  49. package/src/lib/app-utils/draft-placeholders.d.ts +76 -0
  50. package/src/lib/app-utils/draft-placeholders.js +115 -0
  51. package/src/lib/app-utils/draft-placeholders.js.map +1 -0
  52. package/src/lib/app-utils/entity-picker-context.d.ts +19 -15
  53. package/src/lib/app-utils/entity-picker-context.js +4 -4
  54. package/src/lib/app-utils/entity-picker-context.js.map +1 -1
  55. package/src/lib/app-utils/expand-repeatables.d.ts +66 -10
  56. package/src/lib/app-utils/expand-repeatables.js +88 -14
  57. package/src/lib/app-utils/expand-repeatables.js.map +1 -1
  58. package/src/lib/app-utils/forms.d.ts +33 -22
  59. package/src/lib/app-utils/forms.js +47 -28
  60. package/src/lib/app-utils/forms.js.map +1 -1
  61. package/src/lib/app-utils/full-use-cost.d.ts +277 -0
  62. package/src/lib/app-utils/full-use-cost.js +421 -0
  63. package/src/lib/app-utils/full-use-cost.js.map +1 -0
  64. package/src/lib/app-utils/health-report.js +33 -0
  65. package/src/lib/app-utils/health-report.js.map +1 -1
  66. package/src/lib/app-utils/leaving-notice.d.ts +96 -0
  67. package/src/lib/app-utils/leaving-notice.js +157 -0
  68. package/src/lib/app-utils/leaving-notice.js.map +1 -0
  69. package/src/lib/app-utils/llms-txt.d.ts +20 -0
  70. package/src/lib/app-utils/llms-txt.js +7 -1
  71. package/src/lib/app-utils/llms-txt.js.map +1 -1
  72. package/src/lib/app-utils/media-asset-facts.d.ts +16 -1
  73. package/src/lib/app-utils/media-asset-facts.js +40 -13
  74. package/src/lib/app-utils/media-asset-facts.js.map +1 -1
  75. package/src/lib/app-utils/media-bandwidth.d.ts +52 -0
  76. package/src/lib/app-utils/media-bandwidth.js +94 -0
  77. package/src/lib/app-utils/media-bandwidth.js.map +1 -0
  78. package/src/lib/app-utils/media-ref.d.ts +241 -33
  79. package/src/lib/app-utils/media-ref.js +324 -43
  80. package/src/lib/app-utils/media-ref.js.map +1 -1
  81. package/src/lib/app-utils/media-src.d.ts +8 -8
  82. package/src/lib/app-utils/media-src.js +27 -11
  83. package/src/lib/app-utils/media-src.js.map +1 -1
  84. package/src/lib/app-utils/media-takedown-reach.d.ts +4 -1
  85. package/src/lib/app-utils/media-takedown-reach.js +6 -3
  86. package/src/lib/app-utils/media-takedown-reach.js.map +1 -1
  87. package/src/lib/app-utils/notifications.d.ts +1 -1
  88. package/src/lib/app-utils/notifications.js +2 -0
  89. package/src/lib/app-utils/notifications.js.map +1 -1
  90. package/src/lib/app-utils/operator-alerts.js +17 -0
  91. package/src/lib/app-utils/operator-alerts.js.map +1 -1
  92. package/src/lib/app-utils/organizations.d.ts +51 -2
  93. package/src/lib/app-utils/organizations.js +56 -3
  94. package/src/lib/app-utils/organizations.js.map +1 -1
  95. package/src/lib/app-utils/page-record-sources.d.ts +87 -0
  96. package/src/lib/app-utils/page-record-sources.js +53 -0
  97. package/src/lib/app-utils/page-record-sources.js.map +1 -0
  98. package/src/lib/app-utils/paid-media-source.d.ts +3 -7
  99. package/src/lib/app-utils/paid-media-source.js +5 -19
  100. package/src/lib/app-utils/paid-media-source.js.map +1 -1
  101. package/src/lib/app-utils/person-erasure.d.ts +5 -2
  102. package/src/lib/app-utils/person-erasure.js.map +1 -1
  103. package/src/lib/app-utils/picklists.d.ts +187 -0
  104. package/src/lib/app-utils/picklists.js +320 -0
  105. package/src/lib/app-utils/picklists.js.map +1 -0
  106. package/src/lib/app-utils/plan-entitlements.d.ts +220 -50
  107. package/src/lib/app-utils/plan-entitlements.js +309 -115
  108. package/src/lib/app-utils/plan-entitlements.js.map +1 -1
  109. package/src/lib/app-utils/realm-host-surface.generated.js +2 -0
  110. package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
  111. package/src/lib/app-utils/release-flags.d.ts +1 -1
  112. package/src/lib/app-utils/release-flags.js +11 -0
  113. package/src/lib/app-utils/release-flags.js.map +1 -1
  114. package/src/lib/app-utils/rendered-widths.d.ts +121 -0
  115. package/src/lib/app-utils/rendered-widths.js +211 -0
  116. package/src/lib/app-utils/rendered-widths.js.map +1 -0
  117. package/src/lib/app-utils/repeat-sources.d.ts +2 -1
  118. package/src/lib/app-utils/repeat-sources.js.map +1 -1
  119. package/src/lib/app-utils/screen-link-context-value.d.ts +7 -0
  120. package/src/lib/app-utils/screen-link-context-value.js.map +1 -1
  121. package/src/lib/app-utils/screen-link-context.js +14 -2
  122. package/src/lib/app-utils/screen-link-context.js.map +1 -1
  123. package/src/lib/app-utils/screen-route.d.ts +157 -36
  124. package/src/lib/app-utils/screen-route.js +191 -41
  125. package/src/lib/app-utils/screen-route.js.map +1 -1
  126. package/src/lib/app-utils/seo-audit.d.ts +11 -1
  127. package/src/lib/app-utils/seo-audit.js +33 -13
  128. package/src/lib/app-utils/seo-audit.js.map +1 -1
  129. package/src/lib/app-utils/seo-keywords.d.ts +11 -0
  130. package/src/lib/app-utils/seo-keywords.js +19 -5
  131. package/src/lib/app-utils/seo-keywords.js.map +1 -1
  132. package/src/lib/app-utils/seo-page-facts.d.ts +47 -4
  133. package/src/lib/app-utils/seo-page-facts.js +136 -31
  134. package/src/lib/app-utils/seo-page-facts.js.map +1 -1
  135. package/src/lib/app-utils/seo-site-scan.d.ts +42 -4
  136. package/src/lib/app-utils/seo-site-scan.js +113 -12
  137. package/src/lib/app-utils/seo-site-scan.js.map +1 -1
  138. package/src/lib/app-utils/server.d.ts +5 -4
  139. package/src/lib/app-utils/server.js +14 -5
  140. package/src/lib/app-utils/server.js.map +1 -1
  141. package/src/lib/app-utils/site-icon-set.d.ts +195 -0
  142. package/src/lib/app-utils/site-icon-set.js +351 -0
  143. package/src/lib/app-utils/site-icon-set.js.map +1 -0
  144. package/src/lib/app-utils/site-interactions.d.ts +101 -4
  145. package/src/lib/app-utils/site-interactions.js +120 -4
  146. package/src/lib/app-utils/site-interactions.js.map +1 -1
  147. package/src/lib/app-utils/starter-template-nodes.d.ts +7 -0
  148. package/src/lib/app-utils/starter-template-nodes.js +3 -0
  149. package/src/lib/app-utils/starter-template-nodes.js.map +1 -1
  150. package/src/lib/app-utils/starter-templates.d.ts +5 -19
  151. package/src/lib/app-utils/starter-templates.js +5 -49
  152. package/src/lib/app-utils/starter-templates.js.map +1 -1
  153. package/src/lib/app-utils/transfer-launcher-context.d.ts +136 -0
  154. package/src/lib/app-utils/transfer-launcher-context.js +23 -0
  155. package/src/lib/app-utils/transfer-launcher-context.js.map +1 -0
  156. package/src/lib/app-utils/transfer-resume-import.d.ts +39 -0
  157. package/src/lib/app-utils/transfer-resume-import.js +128 -0
  158. package/src/lib/app-utils/transfer-resume-import.js.map +1 -0
  159. package/src/lib/app-utils/upgrade-proposal.d.ts +66 -0
  160. package/src/lib/app-utils/upgrade-proposal.js +95 -0
  161. package/src/lib/app-utils/upgrade-proposal.js.map +1 -0
  162. package/src/lib/app-utils/utc-month.d.ts +33 -0
  163. package/src/lib/app-utils/utc-month.js +35 -0
  164. package/src/lib/app-utils/utc-month.js.map +1 -0
  165. package/src/lib/app-utils/visitor-record-ceiling.d.ts +4 -4
  166. package/src/lib/app-utils/visitor-record-ceiling.js +4 -4
  167. package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -1
  168. package/src/lib/app-utils/wire-nodes.d.ts +39 -19
  169. package/src/lib/app-utils/wire-nodes.js +120 -34
  170. package/src/lib/app-utils/wire-nodes.js.map +1 -1
  171. package/src/lib/data-transfer/access.d.ts +74 -0
  172. package/src/lib/data-transfer/access.js +93 -0
  173. package/src/lib/data-transfer/access.js.map +1 -0
  174. package/src/lib/data-transfer/derive.d.ts +246 -0
  175. package/src/lib/data-transfer/derive.js +1007 -0
  176. package/src/lib/data-transfer/derive.js.map +1 -0
  177. package/src/lib/data-transfer/export-file.d.ts +46 -0
  178. package/src/lib/data-transfer/export-file.js +146 -0
  179. package/src/lib/data-transfer/export-file.js.map +1 -0
  180. package/src/lib/data-transfer/field-catalog.d.ts +134 -0
  181. package/src/lib/data-transfer/field-catalog.js +278 -0
  182. package/src/lib/data-transfer/field-catalog.js.map +1 -0
  183. package/src/lib/data-transfer/header-match.d.ts +129 -0
  184. package/src/lib/data-transfer/header-match.js +367 -0
  185. package/src/lib/data-transfer/header-match.js.map +1 -0
  186. package/src/lib/data-transfer/index.d.ts +34 -0
  187. package/src/lib/data-transfer/index.js +40 -0
  188. package/src/lib/data-transfer/index.js.map +1 -0
  189. package/src/lib/data-transfer/job.d.ts +190 -0
  190. package/src/lib/data-transfer/job.js +229 -0
  191. package/src/lib/data-transfer/job.js.map +1 -0
  192. package/src/lib/data-transfer/lookup.d.ts +45 -0
  193. package/src/lib/data-transfer/lookup.js +71 -0
  194. package/src/lib/data-transfer/lookup.js.map +1 -0
  195. package/src/lib/data-transfer/match.d.ts +99 -0
  196. package/src/lib/data-transfer/match.js +244 -0
  197. package/src/lib/data-transfer/match.js.map +1 -0
  198. package/src/lib/data-transfer/package-plan.d.ts +205 -0
  199. package/src/lib/data-transfer/package-plan.js +475 -0
  200. package/src/lib/data-transfer/package-plan.js.map +1 -0
  201. package/src/lib/data-transfer/package.d.ts +181 -0
  202. package/src/lib/data-transfer/package.js +426 -0
  203. package/src/lib/data-transfer/package.js.map +1 -0
  204. package/src/lib/data-transfer/picklist-map.d.ts +139 -0
  205. package/src/lib/data-transfer/picklist-map.js +271 -0
  206. package/src/lib/data-transfer/picklist-map.js.map +1 -0
  207. package/src/lib/data-transfer/plan.d.ts +176 -0
  208. package/src/lib/data-transfer/plan.js +451 -0
  209. package/src/lib/data-transfer/plan.js.map +1 -0
  210. package/src/lib/data-transfer/policy.d.ts +170 -0
  211. package/src/lib/data-transfer/policy.js +378 -0
  212. package/src/lib/data-transfer/policy.js.map +1 -0
  213. package/src/lib/data-transfer/resource.d.ts +211 -0
  214. package/src/lib/data-transfer/resource.js +241 -0
  215. package/src/lib/data-transfer/resource.js.map +1 -0
  216. package/src/lib/data-transfer/review.d.ts +70 -0
  217. package/src/lib/data-transfer/review.js +233 -0
  218. package/src/lib/data-transfer/review.js.map +1 -0
  219. package/src/lib/data-transfer/similarity.d.ts +40 -0
  220. package/src/lib/data-transfer/similarity.js +106 -0
  221. package/src/lib/data-transfer/similarity.js.map +1 -0
  222. package/src/lib/data-transfer/site-package.d.ts +365 -0
  223. package/src/lib/data-transfer/site-package.js +1077 -0
  224. package/src/lib/data-transfer/site-package.js.map +1 -0
  225. package/src/lib/data-transfer/source.d.ts +74 -0
  226. package/src/lib/data-transfer/source.js +293 -0
  227. package/src/lib/data-transfer/source.js.map +1 -0
  228. package/src/lib/data-transfer/transfer-api.d.ts +898 -0
  229. package/src/lib/data-transfer/transfer-api.js +107 -0
  230. package/src/lib/data-transfer/transfer-api.js.map +1 -0
  231. package/src/lib/foundation/definitions/org-billing.types.d.ts +31 -0
  232. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
  233. package/src/lib/foundation/definitions/organization.types.d.ts +42 -1
  234. package/src/lib/foundation/definitions/organization.types.js.map +1 -1
  235. package/src/lib/foundation/definitions/platform.types.d.ts +6 -4
  236. package/src/lib/foundation/definitions/platform.types.js.map +1 -1
  237. package/src/lib/foundation/index.d.ts +1 -1
  238. package/src/lib/foundation/index.js.map +1 -1
  239. package/src/lib/plugin-manager/feature-plugins.d.ts +91 -2
  240. package/src/lib/plugin-manager/feature-plugins.js +48 -3
  241. package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
  242. package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +56 -0
  243. package/src/lib/plugin-manager/first-party-plugins.generated.js +1132 -27
  244. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
  245. package/src/lib/plugin-manager/index.d.ts +0 -1
  246. package/src/lib/plugin-manager/index.js +0 -1
  247. package/src/lib/plugin-manager/index.js.map +1 -1
  248. package/src/lib/plugin-manager/interaction-recipes.d.ts +142 -0
  249. package/src/lib/plugin-manager/interaction-recipes.js +104 -0
  250. package/src/lib/plugin-manager/interaction-recipes.js.map +1 -0
  251. package/src/lib/plugin-manager/interaction-step-checks.d.ts +66 -0
  252. package/src/lib/plugin-manager/interaction-step-checks.js +86 -0
  253. package/src/lib/plugin-manager/interaction-step-checks.js.map +1 -0
  254. package/src/lib/plugin-manager/plugin-artifact-types.d.ts +235 -0
  255. package/src/lib/plugin-manager/plugin-artifact-types.js +99 -0
  256. package/src/lib/plugin-manager/plugin-artifact-types.js.map +1 -0
  257. package/src/lib/plugin-manager/plugin-contact-capture.d.ts +8 -0
  258. package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -1
  259. package/src/lib/plugin-manager/plugin-conversion-credit.d.ts +216 -0
  260. package/src/lib/plugin-manager/plugin-conversion-credit.js +91 -0
  261. package/src/lib/plugin-manager/plugin-conversion-credit.js.map +1 -0
  262. package/src/lib/plugin-manager/plugin-entity-pickers.d.ts +83 -0
  263. package/src/lib/plugin-manager/plugin-entity-pickers.js +87 -0
  264. package/src/lib/plugin-manager/plugin-entity-pickers.js.map +1 -0
  265. package/src/lib/plugin-manager/plugin-host-resources.d.ts +6 -0
  266. package/src/lib/plugin-manager/plugin-host-resources.js +6 -1
  267. package/src/lib/plugin-manager/plugin-host-resources.js.map +1 -1
  268. package/src/lib/plugin-manager/plugin-intake-gates.d.ts +75 -0
  269. package/src/lib/plugin-manager/plugin-intake-gates.js +49 -0
  270. package/src/lib/plugin-manager/plugin-intake-gates.js.map +1 -0
  271. package/src/lib/plugin-manager/plugin-jobs.d.ts +5 -5
  272. package/src/lib/plugin-manager/plugin-jobs.js +7 -7
  273. package/src/lib/plugin-manager/plugin-jobs.js.map +1 -1
  274. package/src/lib/plugin-manager/plugin-live-paths.d.ts +70 -0
  275. package/src/lib/plugin-manager/plugin-live-paths.js +66 -0
  276. package/src/lib/plugin-manager/plugin-live-paths.js.map +1 -0
  277. package/src/lib/plugin-manager/plugin-org-erasure.d.ts +3 -2
  278. package/src/lib/plugin-manager/plugin-org-erasure.js +30 -5
  279. package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -1
  280. package/src/lib/plugin-manager/plugin-person-erasure.d.ts +68 -9
  281. package/src/lib/plugin-manager/plugin-person-erasure.js +196 -51
  282. package/src/lib/plugin-manager/plugin-person-erasure.js.map +1 -1
  283. package/src/lib/plugin-manager/plugin-person-records.d.ts +275 -0
  284. package/src/lib/plugin-manager/plugin-person-records.js +107 -0
  285. package/src/lib/plugin-manager/plugin-person-records.js.map +1 -0
  286. package/src/lib/plugin-manager/plugin-record-counts.d.ts +76 -0
  287. package/src/lib/plugin-manager/plugin-record-counts.js +49 -0
  288. package/src/lib/plugin-manager/plugin-record-counts.js.map +1 -0
  289. package/src/lib/plugin-manager/plugin-record-email-state.d.ts +26 -0
  290. package/src/lib/plugin-manager/plugin-record-email-state.js +16 -0
  291. package/src/lib/plugin-manager/plugin-record-email-state.js.map +1 -1
  292. package/src/lib/plugin-manager/plugin-record-index.d.ts +10 -0
  293. package/src/lib/plugin-manager/plugin-record-index.js.map +1 -1
  294. package/src/lib/plugin-manager/plugin-record-lists.d.ts +86 -6
  295. package/src/lib/plugin-manager/plugin-record-lists.js +42 -5
  296. package/src/lib/plugin-manager/plugin-record-lists.js.map +1 -1
  297. package/src/lib/plugin-manager/plugin-record-origin.d.ts +79 -0
  298. package/src/lib/plugin-manager/plugin-record-origin.js +46 -0
  299. package/src/lib/plugin-manager/plugin-record-origin.js.map +1 -0
  300. package/src/lib/plugin-manager/plugin-record-pages.d.ts +37 -0
  301. package/src/lib/plugin-manager/plugin-record-pages.js +52 -0
  302. package/src/lib/plugin-manager/plugin-record-pages.js.map +1 -0
  303. package/src/lib/plugin-manager/plugin-record-timeline.d.ts +60 -0
  304. package/src/lib/plugin-manager/plugin-record-timeline.js +16 -0
  305. package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -1
  306. package/src/lib/plugin-manager/plugin-resource-drafts.d.ts +5 -5
  307. package/src/lib/plugin-manager/plugin-resource-drafts.js.map +1 -1
  308. package/src/lib/plugin-manager/plugin-revocations.d.ts +64 -0
  309. package/src/lib/plugin-manager/plugin-revocations.js +47 -0
  310. package/src/lib/plugin-manager/plugin-revocations.js.map +1 -0
  311. package/src/lib/plugin-manager/plugin-send-tallies.d.ts +69 -0
  312. package/src/lib/plugin-manager/plugin-send-tallies.js +45 -0
  313. package/src/lib/plugin-manager/plugin-send-tallies.js.map +1 -0
  314. package/src/lib/plugin-manager/plugin-server-steps.d.ts +170 -0
  315. package/src/lib/plugin-manager/plugin-server-steps.js +116 -0
  316. package/src/lib/plugin-manager/plugin-server-steps.js.map +1 -0
  317. package/src/lib/plugin-manager/plugin-site-bundle.d.ts +40 -0
  318. package/src/lib/plugin-manager/plugin-site-bundle.js +4 -0
  319. package/src/lib/plugin-manager/plugin-site-bundle.js.map +1 -1
  320. package/src/lib/plugin-manager/plugin-site-export.d.ts +57 -1
  321. package/src/lib/plugin-manager/plugin-site-export.js +23 -10
  322. package/src/lib/plugin-manager/plugin-site-export.js.map +1 -1
  323. package/src/lib/plugin-manager/plugin-sitemap-readers.d.ts +146 -0
  324. package/src/lib/plugin-manager/plugin-sitemap-readers.js +110 -0
  325. package/src/lib/plugin-manager/plugin-sitemap-readers.js.map +1 -0
  326. package/src/lib/plugin-manager/plugin-transfer-resources.d.ts +714 -0
  327. package/src/lib/plugin-manager/plugin-transfer-resources.js +443 -0
  328. package/src/lib/plugin-manager/plugin-transfer-resources.js.map +1 -0
  329. package/src/lib/plugin-manager/plugin-usage-axes.d.ts +54 -5
  330. package/src/lib/plugin-manager/plugin-usage-axes.js +11 -3
  331. package/src/lib/plugin-manager/plugin-usage-axes.js.map +1 -1
  332. package/src/lib/plugin-manager/plugin-user-erasure.js +9 -1
  333. package/src/lib/plugin-manager/plugin-user-erasure.js.map +1 -1
  334. package/src/lib/plugin-manager/plugin-visitor-doors.d.ts +104 -0
  335. package/src/lib/plugin-manager/plugin-visitor-doors.js +108 -0
  336. package/src/lib/plugin-manager/plugin-visitor-doors.js.map +1 -0
  337. package/src/lib/plugin-manager/realm-host-aglyn.generated.js +2 -0
  338. package/src/lib/plugin-manager/realm-host-aglyn.generated.js.map +1 -1
  339. package/src/lib/plugin-manager/repeat-rows.d.ts +5 -6
  340. package/src/lib/plugin-manager/repeat-rows.js.map +1 -1
  341. package/src/lib/app-utils/actions.d.ts +0 -310
  342. package/src/lib/app-utils/actions.js +0 -506
  343. package/src/lib/app-utils/actions.js.map +0 -1
  344. package/src/lib/app-utils/automation-placeholders.d.ts +0 -72
  345. package/src/lib/app-utils/automation-placeholders.js +0 -207
  346. package/src/lib/app-utils/automation-placeholders.js.map +0 -1
  347. package/src/lib/app-utils/dataset-models.d.ts +0 -339
  348. package/src/lib/app-utils/dataset-models.js +0 -722
  349. package/src/lib/app-utils/dataset-models.js.map +0 -1
  350. package/src/lib/app-utils/datasets.d.ts +0 -171
  351. package/src/lib/app-utils/datasets.js +0 -227
  352. package/src/lib/app-utils/datasets.js.map +0 -1
  353. package/src/lib/app-utils/form-abuse-ceiling.d.ts +0 -146
  354. package/src/lib/app-utils/form-abuse-ceiling.js +0 -158
  355. package/src/lib/app-utils/form-abuse-ceiling.js.map +0 -1
  356. package/src/lib/plugin-manager/order-fulfilment.d.ts +0 -142
  357. package/src/lib/plugin-manager/order-fulfilment.js +0 -104
  358. package/src/lib/plugin-manager/order-fulfilment.js.map +0 -1
@@ -290,12 +290,12 @@ export const PLAN_ENTITLEMENTS = {
290
290
  sharedLayoutsPerHost: 3,
291
291
  templatesPerHost: 50,
292
292
  storagePerHostMb: 2048,
293
- membersPerHost: 3,
293
+ membersPerHost: 2,
294
294
  managersPerOrg: 2,
295
295
  maxManagersPerOrg: 5,
296
296
  maxMembersPerHost: 10,
297
297
  // Sized by the same annual-price invariant as Pro's — see that band.
298
- bandwidthGb: 20,
298
+ bandwidthGb: 15,
299
299
  formsPerHost: FORMS_PER_HOST_CEILING,
300
300
  variablesPerHost: 25,
301
301
  functionsPerHost: 10,
@@ -325,10 +325,10 @@ export const PLAN_ENTITLEMENTS = {
325
325
  emailSendsPerMonth: 0,
326
326
  actionRunsPerMonth: 0,
327
327
  apiRequestsPerMonth: 0,
328
- datasetsPerOrg: 3,
328
+ datasetsPerOrg: 2,
329
329
  maxDatasetsPerOrg: 10,
330
330
  recordsPerDataset: 1000,
331
- dataStorageMbPerOrg: 1024,
331
+ dataStorageMbPerOrg: 512,
332
332
  productsPerHost: 100,
333
333
  inventoryLocations: 1,
334
334
  posRegisters: 0,
@@ -394,31 +394,33 @@ export const PLAN_ENTITLEMENTS = {
394
394
  screensPerHost: 100,
395
395
  sharedLayoutsPerHost: UNLIMITED,
396
396
  templatesPerHost: UNLIMITED,
397
- storagePerHostMb: 10240,
398
- membersPerHost: 10,
399
- managersPerOrg: 5,
397
+ storagePerHostMb: 5120,
398
+ membersPerHost: 3,
399
+ managersPerOrg: 3,
400
400
  maxManagersPerOrg: 20,
401
401
  maxMembersPerHost: 25,
402
402
  // Page views are the largest term of this tier's modeled COGS. One GB is
403
- // 1,035 views at `ESTIMATED_PAGE_TRANSFER_BYTES`, priced where the CDN is
404
- // dearest because it bills in the region that serves a visitor: $0.367 of
405
- // weight (`perPageView`, transfer at $0.35 a GB) and $0.190 of CDN
406
- // requests once the hosting plan's monthly allowance is spent
407
- // (`PAGE_VIEW_CDN_REQUEST_COST_USD`, $3.20 per million). So a GB of
408
- // included bandwidth costs $0.557, and the bandwidth band is what decides
409
- // whether the tier survives a customer spending the whole allowance it
410
- // was sold.
403
+ // 1,035 views at `ESTIMATED_PAGE_TRANSFER_BYTES`, priced where Vercel is
404
+ // dearest because it bills in the region that serves a visitor: $0.413 of
405
+ // weight (`perPageView` — transfer at $0.35 a decimal GB, reads at nam5)
406
+ // and $0.224 of requests once the hosting plan's monthly allowance is
407
+ // spent (`PAGE_VIEW_CDN_REQUEST_COST_USD` — 57 CDN requests at $3.20 per
408
+ // million and the analytics beacon's function). So a GB of included
409
+ // bandwidth costs $0.637, and the bandwidth band is what decides whether
410
+ // the tier survives a customer spending the whole allowance it was sold.
411
411
  //
412
412
  // The invariant the band is sized against is the ANNUAL price ($39 a
413
413
  // month) net of Stripe's fee, with every band at 100% and the CRM seat
414
414
  // and one-to-one email terms counted — the 2026-09-07 pricing decision —
415
- // at that all-in gigabyte (AGL-3444). 35 GB is what it carries; every
416
- // paid band on the ladder is sized the same way.
415
+ // at that all-in gigabyte (AGL-3444), and it must cover that cost plus
416
+ // 30%, the same markup the metered overages carry (AGL-3469). 25 GB is
417
+ // what it carries beside the storage and campaign bands it now sits
418
+ // with; every paid band on the ladder is sized the same way.
417
419
  // `tier-margin-floor.spec.ts` holds the model and pins the figure.
418
420
  //
419
421
  // `meteredInfraPassThrough` is true here, so traffic past the band BILLS
420
422
  // at the page-view pass-through rather than being refused or absorbed.
421
- bandwidthGb: 35,
423
+ bandwidthGb: 25,
422
424
  formsPerHost: FORMS_PER_HOST_CEILING,
423
425
  variablesPerHost: 100,
424
426
  functionsPerHost: 50,
@@ -426,13 +428,13 @@ export const PLAN_ENTITLEMENTS = {
426
428
  servicesPerHost: UNLIMITED,
427
429
  redirectsPerHost: 100,
428
430
  contactsPerHost: 10000,
429
- emailSendsPerMonth: 5000,
431
+ emailSendsPerMonth: 2500,
430
432
  actionRunsPerMonth: 5000,
431
433
  apiRequestsPerMonth: 0,
432
- datasetsPerOrg: 15,
434
+ datasetsPerOrg: 5,
433
435
  maxDatasetsPerOrg: 50,
434
436
  recordsPerDataset: 10000,
435
- dataStorageMbPerOrg: 5120,
437
+ dataStorageMbPerOrg: 2048,
436
438
  productsPerHost: 2500,
437
439
  inventoryLocations: 2,
438
440
  posRegisters: 1,
@@ -504,27 +506,27 @@ export const PLAN_ENTITLEMENTS = {
504
506
  screensPerHost: UNLIMITED,
505
507
  sharedLayoutsPerHost: UNLIMITED,
506
508
  templatesPerHost: UNLIMITED,
507
- storagePerHostMb: 20480,
508
- membersPerHost: 50,
509
- managersPerOrg: 15,
509
+ storagePerHostMb: 10240,
510
+ membersPerHost: 5,
511
+ managersPerOrg: 5,
510
512
  maxManagersPerOrg: 100,
511
513
  maxMembersPerHost: 100,
512
514
  // Sized by the same annual-price invariant as Pro's — see that band.
513
- bandwidthGb: 55,
515
+ bandwidthGb: 45,
514
516
  formsPerHost: FORMS_PER_HOST_CEILING,
515
517
  variablesPerHost: 1000,
516
518
  functionsPerHost: 250,
517
519
  workflowsPerHost: 100,
518
520
  servicesPerHost: UNLIMITED,
519
521
  redirectsPerHost: UNLIMITED,
520
- contactsPerHost: 50000,
521
- emailSendsPerMonth: 25000,
522
+ contactsPerHost: 30000,
523
+ emailSendsPerMonth: 15000,
522
524
  actionRunsPerMonth: 50000,
523
- apiRequestsPerMonth: 100000,
524
- datasetsPerOrg: 100,
525
+ apiRequestsPerMonth: 1500,
526
+ datasetsPerOrg: 10,
525
527
  maxDatasetsPerOrg: 250,
526
528
  recordsPerDataset: 100000,
527
- dataStorageMbPerOrg: 25600,
529
+ dataStorageMbPerOrg: 10240,
528
530
  productsPerHost: 10000,
529
531
  inventoryLocations: 4,
530
532
  posRegisters: 2,
@@ -576,13 +578,13 @@ export const PLAN_ENTITLEMENTS = {
576
578
  screensPerHost: UNLIMITED,
577
579
  sharedLayoutsPerHost: UNLIMITED,
578
580
  templatesPerHost: UNLIMITED,
579
- storagePerHostMb: 30720,
580
- membersPerHost: 75,
581
- managersPerOrg: 25,
581
+ storagePerHostMb: 15360,
582
+ membersPerHost: 5,
583
+ managersPerOrg: 5,
582
584
  maxManagersPerOrg: 150,
583
585
  maxMembersPerHost: 150,
584
586
  // Sized by the same annual-price invariant as Pro's — see that band.
585
- bandwidthGb: 90,
587
+ bandwidthGb: 70,
586
588
  formsPerHost: FORMS_PER_HOST_CEILING,
587
589
  variablesPerHost: 5000,
588
590
  functionsPerHost: 500,
@@ -590,13 +592,13 @@ export const PLAN_ENTITLEMENTS = {
590
592
  servicesPerHost: UNLIMITED,
591
593
  redirectsPerHost: UNLIMITED,
592
594
  contactsPerHost: 100000,
593
- emailSendsPerMonth: 40000,
595
+ emailSendsPerMonth: 25000,
594
596
  actionRunsPerMonth: 100000,
595
- apiRequestsPerMonth: 300000,
596
- datasetsPerOrg: 250,
597
+ apiRequestsPerMonth: 5000,
598
+ datasetsPerOrg: 15,
597
599
  maxDatasetsPerOrg: 500,
598
600
  recordsPerDataset: 500000,
599
- dataStorageMbPerOrg: 51200,
601
+ dataStorageMbPerOrg: 25600,
600
602
  productsPerHost: 25000,
601
603
  inventoryLocations: 6,
602
604
  posRegisters: 3,
@@ -645,13 +647,13 @@ export const PLAN_ENTITLEMENTS = {
645
647
  screensPerHost: UNLIMITED,
646
648
  sharedLayoutsPerHost: UNLIMITED,
647
649
  templatesPerHost: UNLIMITED,
648
- storagePerHostMb: 40960,
649
- membersPerHost: 100,
650
- managersPerOrg: 50,
650
+ storagePerHostMb: 20480,
651
+ membersPerHost: 5,
652
+ managersPerOrg: 10,
651
653
  maxManagersPerOrg: 250,
652
654
  maxMembersPerHost: 250,
653
655
  // Sized by the same annual-price invariant as Pro's — see that band.
654
- bandwidthGb: 105,
656
+ bandwidthGb: 80,
655
657
  formsPerHost: FORMS_PER_HOST_CEILING,
656
658
  variablesPerHost: UNLIMITED,
657
659
  functionsPerHost: 1000,
@@ -661,11 +663,11 @@ export const PLAN_ENTITLEMENTS = {
661
663
  contactsPerHost: 150000,
662
664
  emailSendsPerMonth: 65000,
663
665
  actionRunsPerMonth: 250000,
664
- apiRequestsPerMonth: 1000000,
665
- datasetsPerOrg: 500,
666
+ apiRequestsPerMonth: 17000,
667
+ datasetsPerOrg: 25,
666
668
  maxDatasetsPerOrg: 1000,
667
669
  recordsPerDataset: 1000000,
668
- dataStorageMbPerOrg: 102400,
670
+ dataStorageMbPerOrg: 51200,
669
671
  productsPerHost: UNLIMITED,
670
672
  inventoryLocations: 10,
671
673
  posRegisters: 5,
@@ -718,13 +720,13 @@ export const PLAN_ENTITLEMENTS = {
718
720
  screensPerHost: UNLIMITED,
719
721
  sharedLayoutsPerHost: UNLIMITED,
720
722
  templatesPerHost: UNLIMITED,
721
- storagePerHostMb: 61440,
722
- membersPerHost: 250,
723
- managersPerOrg: 100,
723
+ storagePerHostMb: 20480,
724
+ membersPerHost: 5,
725
+ managersPerOrg: 10,
724
726
  maxManagersPerOrg: 500,
725
727
  maxMembersPerHost: 1000,
726
728
  // Sized by the same annual-price invariant as Pro's — see that band.
727
- bandwidthGb: 485,
729
+ bandwidthGb: 395,
728
730
  formsPerHost: FORMS_PER_HOST_CEILING,
729
731
  variablesPerHost: UNLIMITED,
730
732
  functionsPerHost: UNLIMITED,
@@ -734,11 +736,11 @@ export const PLAN_ENTITLEMENTS = {
734
736
  contactsPerHost: 500000,
735
737
  emailSendsPerMonth: 130000,
736
738
  actionRunsPerMonth: 1000000,
737
- apiRequestsPerMonth: 5000000,
738
- datasetsPerOrg: 2000,
739
+ apiRequestsPerMonth: 85000,
740
+ datasetsPerOrg: 50,
739
741
  maxDatasetsPerOrg: 5000,
740
742
  recordsPerDataset: UNLIMITED,
741
- dataStorageMbPerOrg: 512000,
743
+ dataStorageMbPerOrg: 204800,
742
744
  productsPerHost: UNLIMITED,
743
745
  inventoryLocations: 50,
744
746
  posRegisters: 20,
@@ -828,12 +830,12 @@ export const PLAN_ENTITLEMENTS = {
828
830
  screensPerHost: UNLIMITED,
829
831
  sharedLayoutsPerHost: UNLIMITED,
830
832
  templatesPerHost: UNLIMITED,
831
- storagePerHostMb: 122880,
832
- membersPerHost: 500,
833
- managersPerOrg: 200,
833
+ storagePerHostMb: 40960,
834
+ membersPerHost: 10,
835
+ managersPerOrg: 20,
834
836
  maxManagersPerOrg: 1000,
835
837
  maxMembersPerHost: 2000,
836
- bandwidthGb: 970,
838
+ bandwidthGb: 790,
837
839
  formsPerHost: FORMS_PER_HOST_CEILING,
838
840
  variablesPerHost: UNLIMITED,
839
841
  functionsPerHost: UNLIMITED,
@@ -843,11 +845,11 @@ export const PLAN_ENTITLEMENTS = {
843
845
  contactsPerHost: 1000000,
844
846
  emailSendsPerMonth: ENTERPRISE_EMAIL_SENDS_PER_MONTH,
845
847
  actionRunsPerMonth: 2000000,
846
- apiRequestsPerMonth: 10000000,
847
- datasetsPerOrg: 4000,
848
+ apiRequestsPerMonth: 170000,
849
+ datasetsPerOrg: 100,
848
850
  maxDatasetsPerOrg: 10000,
849
851
  recordsPerDataset: UNLIMITED,
850
- dataStorageMbPerOrg: 1024000,
852
+ dataStorageMbPerOrg: 409600,
851
853
  productsPerHost: UNLIMITED,
852
854
  inventoryLocations: 100,
853
855
  posRegisters: 40,
@@ -1142,7 +1144,10 @@ fillPluginPlanEntitlements(PLAN_ENTITLEMENTS);
1142
1144
  extraCollaboratorMonthlyUsd: 1,
1143
1145
  extraDatasetMonthlyUsd: 1,
1144
1146
  extraDataGbMonthlyUsd: 0.36,
1145
- extraApiRequestsUsdPer1k: 0.2,
1147
+ // FLOORED at the 50% retail margin, with Agency's: a `/v1` request costs
1148
+ // $0.117 per 1,000 at the dearest region, so $0.25 is the round figure at
1149
+ // or above $0.234 (AGL-3444).
1150
+ extraApiRequestsUsdPer1k: 0.25,
1146
1151
  extraAssistCreditsUsdPer1k: 2.25,
1147
1152
  aiAddonMonthlyUsd: 99,
1148
1153
  // FLOORED at the 50% retail margin, not stepped down again. The ladder
@@ -1175,7 +1180,8 @@ fillPluginPlanEntitlements(PLAN_ENTITLEMENTS);
1175
1180
  extraCollaboratorMonthlyUsd: 1,
1176
1181
  extraDatasetMonthlyUsd: 1,
1177
1182
  extraDataGbMonthlyUsd: 0.36,
1178
- extraApiRequestsUsdPer1k: 0.15,
1183
+ // FLOORED at the 50% retail margin — see Advanced's.
1184
+ extraApiRequestsUsdPer1k: 0.25,
1179
1185
  extraAssistCreditsUsdPer1k: 2,
1180
1186
  aiAddonMonthlyUsd: 299,
1181
1187
  // $0.40, because the band it meters is now FINITE.
@@ -1767,25 +1773,51 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1767
1773
  * where the page's generator can read it.
1768
1774
  *
1769
1775
  * The console keeps importing it from `usage-metering` unchanged.
1776
+ *
1777
+ * It is the margin KEPT: cost + 30% after Stripe's processor fee, not before
1778
+ * it (AGL-3476). A price of cost × 1.3 kept cost × 1.26 once 2.9% came off,
1779
+ * so the published rates are set by {@link METERED_PRICE_MULTIPLE}, and this
1780
+ * stays the figure every full-utilization rule is held to.
1770
1781
  */ export const METERED_MARKUP = 1.3;
1771
1782
  /**
1772
- * What the CDN requests behind ONE page view cost once the platform is past
1773
- * its hosting plan's included request allowance, at the DEAREST region the
1774
- * CDN bills, in USD per view (AGL-1879, AGL-3444). A page view billed past a
1775
- * plan's band is priced at `(perPageView + this) × METERED_MARKUP` — $0.70
1776
- * per 1,000 — and every `bandwidthGb` band is sized with it counted.
1783
+ * What a passed-through cost is multiplied by to reach its price, so that
1784
+ * cost + 30% survives Stripe's percentage fee: 1.3 ÷ 0.971 ≈ 1.3388
1785
+ * (AGL-3476). The fixed 30¢ is paid by the subscription charge the overage
1786
+ * rides on, so only the percentage is grossed up.
1787
+ */ export const METERED_PRICE_MULTIPLE = METERED_MARKUP / (1 - STRIPE_PROCESSOR_FEE_PCT);
1788
+ /**
1789
+ * A published overage price: `costPerQuotedUnitUsd` × {@link
1790
+ * METERED_PRICE_MULTIPLE}, rounded UP at the `decimals` it is quoted in, so
1791
+ * the price the page prints and the invoice bills is the same round figure
1792
+ * and never less than the rule. The product is settled to six places before
1793
+ * the ceiling so a figure that is exact in decimal — or a pinned cost carried
1794
+ * to eleven places, like the page-view pair — is not lifted a step by its
1795
+ * tail.
1796
+ */ export function publishedMeteredPrice(costPerQuotedUnitUsd, decimals) {
1797
+ const scale = 10 ** decimals;
1798
+ return Math.ceil(Number((costPerQuotedUnitUsd * METERED_PRICE_MULTIPLE * scale).toFixed(6))) / scale;
1799
+ }
1800
+ /**
1801
+ * What the REQUESTS behind ONE page view cost once the platform is past its
1802
+ * hosting plan's included request allowance, at the DEAREST region the CDN
1803
+ * and functions bill, in USD per view (AGL-1879, AGL-3444): the CDN requests
1804
+ * a cold load makes, and the one of them that reaches a function — the
1805
+ * analytics beacon. A page view billed past a plan's band is priced at
1806
+ * `(perPageView + this) × METERED_MARKUP` — $0.80 per 1,000 — and every
1807
+ * `bandwidthGb` band is sized with it counted.
1777
1808
  *
1778
1809
  * ## Why a page view needs a second cost term
1779
1810
  *
1780
- * `perPageView` prices what a view WEIGHS: the bytes it transfers at the
1781
- * CDN's per-GB rate, plus the Firestore reads behind the render. The CDN also
1782
- * charges per REQUEST once the team's monthly allowance is spent — Vercel Pro
1783
- * includes 10,000,000 a month, then bills $2.00 to $3.20 per million by
1784
- * region. A cold load of `aglyn.com/` makes 57 first-party requests to settle
1785
- * (`tools/tenant-page-budget.json`, `wireCalibration.measuredAgainst`), so the
1786
- * allowance is about 175,000 views of that page a month, platform-wide —
1787
- * about 169 GB of included bandwidth — where the 1 TB transfer allowance
1788
- * lasts about 1.4 million. The request allowance runs out first.
1811
+ * `perPageView` prices what a view WEIGHS: the bytes it transfers, plus the
1812
+ * Firestore reads behind the render. A view also costs per REQUEST, which is
1813
+ * not proportional to weight: Vercel Pro includes 10,000,000 CDN requests a
1814
+ * month, then bills $2.00 to $3.20 per million by region, and a cold load of
1815
+ * `aglyn.com/` makes 57 first-party requests to settle
1816
+ * (`tools/tenant-page-budget.json`, `wireCalibration.measuredAgainst`) — so
1817
+ * the allowance is about 175,000 views a month, platform-wide, and runs out
1818
+ * long before the transfer allowance. One of those requests is the analytics
1819
+ * beacon (`apps/tenant/app/api/analytics/collect`), which runs a function on
1820
+ * every view and writes two counter documents.
1789
1821
  *
1790
1822
  * ## Why the dearest region
1791
1823
  *
@@ -1794,27 +1826,29 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1794
1826
  * São Paulo or Cape Town costs what those regions cost, and nothing about a
1795
1827
  * plan can choose otherwise. The platform's rule is that no plan is under
1796
1828
  * water at any utilization and that "at cost + 30%" is true of every billed
1797
- * unit, so both terms of a page view are priced where the CDN is dearest:
1798
- * transfer at $0.35 per GB (in `perPageView`) and requests at $3.20 per
1799
- * million (here). Past the allowance a view then costs:
1800
- *
1801
- * | | weight | requests | cost / 1k | margin at $0.70 |
1802
- * |-----------------------------------|------------|-----------|-----------|-----------------|
1803
- * | the page as measured (748.5 KB) | $0.262148 | $0.182400 | $0.4445 | +36.5% |
1804
- * | the priced basis (1012.8 KB) | $0.354715 | $0.182400 | $0.5371 | +23.3% |
1805
- *
1806
- * — at least 30% over cost in every region, which is the claim `/pricing`
1807
- * makes.
1829
+ * unit, so every Vercel-billed term of a page view is priced where Vercel is
1830
+ * dearest.
1808
1831
  *
1809
1832
  * ## The figure
1810
1833
  *
1811
- * $0.00018374681 is 57.42 requests at $3.20 per million — the measured 57,
1812
- * with the basis set ABOVE the measurement as the weight basis is — pinned so
1813
- * the billed price lands on a whole cent: ($0.354715 + $0.1824) × 1.3 is
1814
- * $0.6982 per 1,000, rounded up to $0.70, and ($0.354715 + $0.183747) × 1.3
1815
- * is exactly $0.70. Published as "Our cost $0.538462 / You pay $0.70", the
1816
- * "at cost + 30%" claim stays true of the cost a billed view incurs in the
1817
- * dearest region, and so in every other.
1834
+ * Per view, past the allowance, at the dearest region:
1835
+ *
1836
+ * | | |
1837
+ * |--------------------------------------------------------|--------------|
1838
+ * | 57 CDN requests at $3.20 per million | $0.00018240 |
1839
+ * | the beacon's function: 0.4 s billed as active CPU at | $0.00002922 |
1840
+ * | $0.221/hr, 2 GB at $0.0183/GB-hr, $0.60 per million | |
1841
+ * | the beacon's two counter writes at nam5's $0.18/100k | $0.00000360 |
1842
+ * | the beacon's ~1 KB through the function at $0.43/GB | $0.00000044 |
1843
+ * | **requests, measured** | $0.00021566 |
1844
+ *
1845
+ * ($0.399028 weight + $0.215662) × 1.3 is $0.7991 per 1,000, rounded up to
1846
+ * $0.80, and this term is pinned so ($0.399028 + $0.216357) × 1.3 is exactly
1847
+ * $0.80 — "Our cost $0.615385 / You pay $0.80" — with the basis set ABOVE the
1848
+ * measurement as the weight basis is. "At cost + 30%" holds of the cost a
1849
+ * billed view incurs in the dearest region, and so in every other. The 0.4 s
1850
+ * is the one function duration on record (the form-submission route), billed
1851
+ * whole as CPU because nothing measured splits it from I/O wait.
1818
1852
  *
1819
1853
  * ## ⛔ Not in {@link ORG_COGS_UNIT_RATES_USD}, deliberately
1820
1854
  *
@@ -1827,15 +1861,15 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1827
1861
  * ## The INCLUDED bands carry it too
1828
1862
  *
1829
1863
  * A view inside a plan's band makes the same requests as one past it, and
1830
- * once the platform is past the allowance the CDN bills them either way, so
1831
- * the `bandwidthGb` bands are sized with this term counted: $0.190 per
1832
- * included GB on top of $0.367 of weight. `tier-margin-floor.spec.ts`
1864
+ * once the platform is past the allowance they cost the same either way, so
1865
+ * the `bandwidthGb` bands are sized with this term counted: $0.224 per
1866
+ * included GB on top of $0.413 of weight. `tier-margin-floor.spec.ts`
1833
1867
  * multiplies it in and pins every tier at 100% of every band.
1834
1868
  *
1835
1869
  * Lives HERE, beside the markup, for the reason the markup does: the
1836
1870
  * `/pricing` generator publishes the cost column from it and cannot import
1837
1871
  * anything under `apps/console`.
1838
- */ export const PAGE_VIEW_CDN_REQUEST_COST_USD = 0.00018374681;
1872
+ */ export const PAGE_VIEW_CDN_REQUEST_COST_USD = 0.00021635711;
1839
1873
  /**
1840
1874
  * Monthly unit costs for the meters the rollup already records (AGL-1134).
1841
1875
  *
@@ -1868,14 +1902,18 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1868
1902
  * ## Every Vercel-billed input is priced at Vercel's dearest region
1869
1903
  *
1870
1904
  * The CDN and functions bill by region, from $0.15 to $0.35 per GB of
1871
- * transfer, $2.00 to $3.20 per million requests, and $0.128 to $0.221 per
1872
- * hour of active CPU (memory $0.0106 to $0.0183 per GB-hour), and a plan
1873
- * cannot choose where its visitors are. So the Vercel share of every rate
1874
- * here is priced at the dearest region (AGL-3444): the transfer inside
1875
- * `perPageView`, the function invocation inside `perFormSubmission`, and the
1876
- * compute inside `perRun`. The GCP shares — object and Firestore storage, and
1877
- * the Firestore reads and writes behind a render, a submission or a run —
1878
- * are priced as they were.
1905
+ * transfer (a decimal GB), $2.00 to $3.20 per million requests, and $0.128 to
1906
+ * $0.221 per hour of active CPU (memory $0.0106 to $0.0183 per GB-hour), and
1907
+ * a plan cannot choose where its visitors are. So the Vercel share of every
1908
+ * rate here is priced at the dearest region (AGL-3444): the transfer inside
1909
+ * `perPageView`, the function, CDN request and transfer inside
1910
+ * `perFormSubmission` and `perApiRequest`, and the compute inside `perRun`.
1911
+ *
1912
+ * The GCP shares are priced at the database's own location. Production's
1913
+ * Firestore is `nam5` (read from the Admin API 2026-10-01), at $0.06 per
1914
+ * 100,000 reads, $0.18 per 100,000 writes and $0.18 per GiB-month — twice
1915
+ * the single-region figures — and every Firestore operation in this table is
1916
+ * priced there. Object storage is GCS US multi-region, `storagePerGbMonth`.
1879
1917
  *
1880
1918
  * Everything else here is a cost-model input ONLY. `dataStoragePerGbMonth`,
1881
1919
  * `perApiRequest`, `perContactMonth` and `perEmailSend` price what an org
@@ -1887,8 +1925,9 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1887
1925
  * The first three were corrected 2026-08-09 (AGL-1280) — storage $0.03 →
1888
1926
  * $0.026 and form submissions $0.0005 → $0.00005 — `perPageView` was
1889
1927
  * re-pegged 2026-09-09 (AGL-2711), from $0.0001 to $0.00016153846, and the
1890
- * last two were re-priced at Vercel's dearest region on 2026-10-01
1891
- * (AGL-3444): page views $0.00035471473, form submissions $0.000053846154.
1928
+ * last two were re-priced at Vercel's dearest region and Firestore's `nam5`
1929
+ * on 2026-10-01 (AGL-3444): page views $0.00039902751, form submissions
1930
+ * $0.000061538462.
1892
1931
  * All three MUST be changed here and in `METERED_UNIT_RATES_USD` together. See that
1893
1932
  * table for each figure's basis; it is the one a customer is billed against,
1894
1933
  * so it is the one that carries the working.
@@ -1911,11 +1950,44 @@ export const STRIPE_PROCESSOR_FEE_FIXED_USD = 0.3;
1911
1950
  * against a 1012.8 KB page and neither may move alone: their quotient is
1912
1951
  * the cost of a gigabyte's weight, and that — with the request term — is
1913
1952
  * what every bandwidthGb band on the ladder is sized against.
1914
- */ perPageView: 0.00035471473,
1915
- perFormSubmission: 0.000053846154,
1916
- /** Firestore-backed dataset bytes — an order pricier than object storage. */ dataStoragePerGbMonth: 0.18,
1917
- perApiRequest: 0.000002,
1918
- perContactMonth: 0.0002,
1953
+ */ perPageView: 0.00039902751,
1954
+ perFormSubmission: 0.000061538462,
1955
+ /**
1956
+ * Firestore-backed dataset bytes — nam5's $0.18 per GiB-month, an order
1957
+ * pricier than object storage.
1958
+ */ dataStoragePerGbMonth: 0.18,
1959
+ /**
1960
+ * One `/v1` request — $117 per million (AGL-3444).
1961
+ *
1962
+ * Every request is a function invocation behind a CDN request, and it reads
1963
+ * before it answers (`apps/console/utils/api-v1.ts`). The ledger for a
1964
+ * default list page — 25 records, read as 26 — at Vercel's dearest region
1965
+ * and nam5's list prices:
1966
+ *
1967
+ * - reads: the key, the rate-limit window, the org, the month's quota
1968
+ * counter, the site the resource sits under, and the page — 31, at
1969
+ * $0.06 per 100,000 = $0.0000186
1970
+ * - writes: the rate-limit window and the usage counter — 2, at $0.18 per
1971
+ * 100,000 = $0.0000036
1972
+ * - the function, 0.4 s billed as active CPU at $0.221/hr, 2 GB at
1973
+ * $0.0183/GB-hr, $0.60 per million invocations = $0.0000292
1974
+ * - the CDN request: $3.20 per million = $0.0000032
1975
+ * - the response, 25 records at 3 KB — the largest mean document size
1976
+ * measured on production across the collections `/v1` lists (leads,
1977
+ * 3.0 KB; records, contacts, media and the rest 1.0–1.5 KB) — plus 2 KB
1978
+ * of request and envelope, through Fast Data Transfer ($0.35 a GB) and
1979
+ * Fast Origin Transfer ($0.43 a GB), decimal GB = $0.0000615
1980
+ *
1981
+ * $0.0001161, carried up to $0.000117. A page of 100 — the most a client
1982
+ * may ask for — costs about three times that, so the figure is the default
1983
+ * request rather than the ceiling; see the 2026-10-01 decision entry.
1984
+ */ perApiRequest: 0.000117,
1985
+ /**
1986
+ * One CRM record held for a month. An operator-tuned estimate (AGL-1134),
1987
+ * not built from a per-operation price: at `nam5`'s $0.06 per 100,000 it
1988
+ * covers about 333 reads a record a month, plus the record's storage at
1989
+ * $0.18 per GiB-month — well beyond what a record is read.
1990
+ */ perContactMonth: 0.0002,
1919
1991
  /**
1920
1992
  * One delivered email, whatever produced it — $0.90 per 1,000.
1921
1993
  *
@@ -3795,6 +3867,128 @@ export function checkQuota(org, quota, currentUsage) {
3795
3867
  /** @see pageViewsFromBandwidthGb — the same constant, the other way. */ export function bandwidthGbFromPageViews(pageViews) {
3796
3868
  return Math.max(0, Number(pageViews) || 0) * ESTIMATED_PAGE_TRANSFER_BYTES / (1024 * 1024 * 1024);
3797
3869
  }
3870
+ /** The decimal GB Vercel bills transfer in (AGL-3444). */ const DECIMAL_GB_BYTES = 1000000000;
3871
+ /** The binary GB `bandwidthGb` and GCS egress are counted in. */ const BINARY_GB_BYTES = 1024 * 1024 * 1024;
3872
+ /**
3873
+ * How long one decimal GB keeps a streaming function open: a viewer draws a
3874
+ * 720p film at about 5 Mbit/s, and the media route reads Storage only as fast
3875
+ * as the viewer takes the bytes (AGL-2810), so the function lives for the
3876
+ * film, not for the transfer — 1,600 seconds a GB.
3877
+ */ const ORIGIN_MEDIA_STREAM_SECONDS_PER_GB = DECIMAL_GB_BYTES * 8 / 5000000;
3878
+ /**
3879
+ * The range requests one decimal GB arrives in: a player asks for a film a
3880
+ * slice at a time, and a slice of about a megabyte is the small end of what
3881
+ * players ask for, so per-request costs are counted a thousand times a GB.
3882
+ */ const ORIGIN_MEDIA_REQUESTS_PER_GB = 1000;
3883
+ /**
3884
+ * What ONE DECIMAL GB of video, audio or a file costs to SERVE FROM ORIGIN, by
3885
+ * term, at the dearest region every Vercel term is billed in (AGL-3474).
3886
+ *
3887
+ * The media CDN serves every type the edge must never hold (AGL-1515) on
3888
+ * every request, from origin, so a GB of it pays both of Vercel's transfer
3889
+ * meters and Storage's egress — where a page's GB is mostly answered by the
3890
+ * edge. This is the basis {@link ORIGIN_MEDIA_BANDWIDTH_WEIGHT} is derived
3891
+ * from, and the figure the published "at cost + 30%" has to be true of.
3892
+ *
3893
+ * | term | basis | per decimal GB |
3894
+ * |---|---|---|
3895
+ * | `fastDataTransfer` | Vercel Fast Data Transfer, dearest region, decimal GB | $0.35 |
3896
+ * | `fastOriginTransfer` | Vercel Fast Origin Transfer, dearest region, decimal GB | $0.43 |
3897
+ * | `storageEgress` | GCS internet egress at list, $0.12 per GiB (0–1 TiB) | $0.111759 |
3898
+ * | `streamingMemory` | 2 GB (the function default) at $0.0183/GB-hour, held 1,600 s | $0.016267 |
3899
+ * | `streamingCpu` | 60 s of active CPU at $0.221/hour — an allowance, see below | $0.003683 |
3900
+ * | `requests` | 1,000 range requests × $0.0000070 | $0.007 |
3901
+ * | **total** | | **$0.918709** |
3902
+ *
3903
+ * Each request is a CDN request ($3.20 per million), a function invocation
3904
+ * ($0.60 per million), the media document's read ($0.0000006 at `nam5`), the
3905
+ * day document's counter write ($0.0000018) and two Storage Class B
3906
+ * operations, the metadata read and the object read ($0.0000004 each). The
3907
+ * lockdown, quarantine and rate-limit reads are cached across requests and
3908
+ * cost nothing a request.
3909
+ *
3910
+ * `streamingCpu` is the one unmeasured term. The bytes are copied, not
3911
+ * computed — piping a GB through Node is a few seconds of CPU — and the
3912
+ * minute allowed here is chosen to err high, as every other basis in this
3913
+ * file does.
3914
+ *
3915
+ * ## Storing the bytes is NOT here
3916
+ *
3917
+ * A file in the library is already metered as storage (`storagePerGbMonth`)
3918
+ * and billed past the plan's storage at cost + 30% after card fees; serving
3919
+ * it does not store it again. Adding storage here would charge for the same
3920
+ * bytes twice.
3921
+ */ export const ORIGIN_MEDIA_SERVE_COST_USD_PER_GB = {
3922
+ fastDataTransfer: 0.35,
3923
+ fastOriginTransfer: 0.43,
3924
+ storageEgress: 0.12 * DECIMAL_GB_BYTES / BINARY_GB_BYTES,
3925
+ streamingMemory: 2 * 0.0183 * ORIGIN_MEDIA_STREAM_SECONDS_PER_GB / 3600,
3926
+ streamingCpu: 60 * 0.221 / 3600,
3927
+ requests: ORIGIN_MEDIA_REQUESTS_PER_GB * (3.2 / 1000000 + 0.6 / 1000000 + 0.0000006 + 0.0000018 + 2 * 0.0000004)
3928
+ };
3929
+ /** {@link ORIGIN_MEDIA_SERVE_COST_USD_PER_GB}, summed: about $0.9187 a decimal GB. */ export const ORIGIN_MEDIA_COST_USD_PER_GB = Object.values(ORIGIN_MEDIA_SERVE_COST_USD_PER_GB).reduce((sum, term)=>sum + term, 0);
3930
+ /**
3931
+ * The published page-view overage, per view: what a billed view costs us
3932
+ * (`perPageView` and the request term) at {@link METERED_PRICE_MULTIPLE},
3933
+ * rounded up to the cent per 1,000 it is quoted in — $0.83 per 1,000. The
3934
+ * same expression as the console's `METERED_BILLED_RATES_USD.perPageView`,
3935
+ * computed here because the weight below is, and a spec holds the two equal.
3936
+ */ export const PAGE_VIEW_PUBLISHED_PRICE_USD = publishedMeteredPrice((ORG_COGS_UNIT_RATES_USD.perPageView + PAGE_VIEW_CDN_REQUEST_COST_USD) * 1000, 2) / 1000;
3937
+ /**
3938
+ * (a) THE OVERAGE: does counting origin media at `weight` bill a GB of it past
3939
+ * the band at cost + 30%, kept after Stripe's percentage fee?
3940
+ *
3941
+ * A counted GB is `weight` GB of page views at {@link PAGE_VIEW_PUBLISHED_PRICE_USD}.
3942
+ */ export function originMediaOverageHolds(weight) {
3943
+ const billedPerGbUsd = weight * PAGE_VIEW_PUBLISHED_PRICE_USD * (DECIMAL_GB_BYTES / ESTIMATED_PAGE_TRANSFER_BYTES);
3944
+ return billedPerGbUsd * (1 - STRIPE_PROCESSOR_FEE_PCT) >= METERED_MARKUP * ORIGIN_MEDIA_COST_USD_PER_GB;
3945
+ }
3946
+ /**
3947
+ * (b) THE BAND: does counting origin media at `weight` keep a plan that spends
3948
+ * its whole bandwidth band on it inside what the band was sized on?
3949
+ *
3950
+ * Every `bandwidthGb` band is sized at the cost of the views one GiB buys —
3951
+ * their weight (`perPageView`) and their requests
3952
+ * (`PAGE_VIEW_CDN_REQUEST_COST_USD`), $0.63712 a GiB — and
3953
+ * `tier-margin-floor.spec.ts` holds every tier at 1.3× its full-use cost on
3954
+ * that figure. A GiB of origin media spends `weight` GiB of the band, so the
3955
+ * band holds while `weight` GiB of band costs at least one GiB of media.
3956
+ */ export function originMediaBandHolds(weight) {
3957
+ const bandCostPerGibUsd = (ORG_COGS_UNIT_RATES_USD.perPageView + PAGE_VIEW_CDN_REQUEST_COST_USD) * pageViewsFromBandwidthGb(1);
3958
+ const originCostPerGibUsd = ORIGIN_MEDIA_COST_USD_PER_GB * BINARY_GB_BYTES / DECIMAL_GB_BYTES;
3959
+ return weight * bandCostPerGibUsd >= originCostPerGibUsd;
3960
+ }
3961
+ /**
3962
+ * How many GB of bandwidth one GB of video, audio or a file served from origin
3963
+ * counts as (AGL-3474, decided by the account owner 2026-10-02): the smallest
3964
+ * weight, in tenths and never below 1, that satisfies BOTH
3965
+ * {@link originMediaOverageHolds} and {@link originMediaBandHolds}.
3966
+ *
3967
+ * One weight rather than a second meter or a second rate, because it moves
3968
+ * the band and the overage together: the Free wall, the abuse ceiling, the
3969
+ * meters, the alerts and the invoice all read media through
3970
+ * `pageViewsFromMediaBytes`, which applies it. At today's bases the overage
3971
+ * needs 1.54 and the band 1.55, so it is 1.6 — the published sentence names
3972
+ * it, and the docs and `/pricing` have to change before it does.
3973
+ *
3974
+ * Derived, never written down: a rate or a band basis that moves re-derives
3975
+ * it, and `media-bandwidth.spec.ts` pins the figure so that a move is a
3976
+ * decision with a red test attached rather than a silent re-price.
3977
+ */ export const ORIGIN_MEDIA_BANDWIDTH_WEIGHT = (()=>{
3978
+ for(let tenths = 10; tenths <= 1000; tenths += 1){
3979
+ const weight = tenths / 10;
3980
+ if (originMediaOverageHolds(weight) && originMediaBandHolds(weight)) return weight;
3981
+ }
3982
+ throw new Error('no origin-media weight up to 100 covers its cost');
3983
+ })();
3984
+ /**
3985
+ * The sentence every customer surface states the weight in — `/pricing`
3986
+ * beside the metered rates (`tools/marketing/build-pricing-tables.mts`), and
3987
+ * the bandwidth, billing and media docs, which
3988
+ * `media-bandwidth-weight-copy.spec.ts` holds to this exact text. Built from
3989
+ * the derived figure, so a weight that moves turns those red before it can
3990
+ * bill anyone.
3991
+ */ export const ORIGIN_MEDIA_BANDWIDTH_SENTENCE = 'Video, audio, file downloads and other media served from our servers count ' + `${ORIGIN_MEDIA_BANDWIDTH_WEIGHT}× toward bandwidth, because serving them ` + 'costs more than serving pages.';
3798
3992
  /**
3799
3993
  * How far past a plan's own included bandwidth the abuse ceiling sits
3800
3994
  * (AGL-2155). Three times the bandwidth the customer bought is not growth; it
@@ -3803,7 +3997,7 @@ export function checkQuota(org, quota, currentUsage) {
3803
3997
  * It is a CAP, not a price, and it is lower than {@link
3804
3998
  * FORM_ABUSE_CEILING_MULTIPLE} because bandwidth is the largest cost line the
3805
3999
  * platform carries and the one a stranger can spend on the customer's behalf.
3806
- * Past the band every 1,000 views bills $0.70 against at most $0.54 of real
4000
+ * Past the band every 1,000 views bills $0.80 against at most $0.62 of real
3807
4001
  * cost — the dearest region's — once the CDN's request allowance is spent
3808
4002
  * ({@link PAGE_VIEW_CDN_REQUEST_COST_USD}), so the tail is not a loss — but a
3809
4003
  * scraper, a hotlinked asset or a botnet still bills the account holder for
@@ -3819,10 +4013,10 @@ export function checkQuota(org, quota, currentUsage) {
3819
4013
  * Free includes 2 GB ≈ 2,071 views; 3× would be ~6,212, which a genuinely
3820
4014
  * successful hobby site (a post that lands on Hacker News) reaches in an
3821
4015
  * afternoon and would be a miserable first experience of the platform.
3822
- * 100,000 views/month ≈ 96.6 GB ≈ **$54 of real COGS** at the dearest
4016
+ * 100,000 views/month ≈ 96.6 GB ≈ **$62 of real COGS** at the dearest
3823
4017
  * region (`METERED_UNIT_RATES_USD.perPageView` plus
3824
4018
  * `PAGE_VIEW_CDN_REQUEST_COST_USD`) — well above the free band, and an order
3825
- * of magnitude below the $538 a million views costs. It is the number
4019
+ * of magnitude below the $615 a million views costs. It is the number
3826
4020
  * that makes "free stays free" true without making it stingy.
3827
4021
  */ export const BANDWIDTH_ABUSE_CEILING_FLOOR = 100000;
3828
4022
  /**