@actuate-media/cms-core 0.83.0 → 0.85.0

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 (814) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/api/route-helpers.d.ts +2 -0
  3. package/dist/api/route-helpers.d.ts.map +1 -1
  4. package/dist/api/route-helpers.js +119 -37
  5. package/dist/api/route-helpers.js.map +1 -1
  6. package/dist/config/types.d.ts +15 -0
  7. package/dist/config/types.d.ts.map +1 -1
  8. package/dist/content/structured-data.d.ts +1 -0
  9. package/dist/content/structured-data.d.ts.map +1 -1
  10. package/dist/content/structured-data.js +1 -1
  11. package/dist/content/structured-data.js.map +1 -1
  12. package/dist/forms/index.d.ts +3 -0
  13. package/dist/forms/index.d.ts.map +1 -1
  14. package/dist/forms/index.js +3 -0
  15. package/dist/forms/index.js.map +1 -1
  16. package/dist/forms/prefetch.d.ts +17 -0
  17. package/dist/forms/prefetch.d.ts.map +1 -0
  18. package/dist/forms/prefetch.js +36 -0
  19. package/dist/forms/prefetch.js.map +1 -0
  20. package/dist/forms/public-html.d.ts +22 -0
  21. package/dist/forms/public-html.d.ts.map +1 -0
  22. package/dist/forms/public-html.js +145 -0
  23. package/dist/forms/public-html.js.map +1 -0
  24. package/dist/forms/submission.d.ts +8 -0
  25. package/dist/forms/submission.d.ts.map +1 -1
  26. package/dist/forms/submission.js +3 -1
  27. package/dist/forms/submission.js.map +1 -1
  28. package/dist/forms/webmcp.d.ts +36 -0
  29. package/dist/forms/webmcp.d.ts.map +1 -0
  30. package/dist/forms/webmcp.js +67 -0
  31. package/dist/forms/webmcp.js.map +1 -0
  32. package/dist/index.d.ts +2 -2
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +1 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/next-site.d.ts +29 -0
  37. package/dist/next-site.d.ts.map +1 -0
  38. package/dist/next-site.js +60 -0
  39. package/dist/next-site.js.map +1 -0
  40. package/dist/sections/index.d.ts +2 -0
  41. package/dist/sections/index.d.ts.map +1 -1
  42. package/dist/sections/index.js +1 -0
  43. package/dist/sections/index.js.map +1 -1
  44. package/dist/sections/registry.d.ts.map +1 -1
  45. package/dist/sections/registry.js +86 -0
  46. package/dist/sections/registry.js.map +1 -1
  47. package/dist/sections/types.d.ts +1 -1
  48. package/dist/sections/types.d.ts.map +1 -1
  49. package/dist/sections/validate.d.ts.map +1 -1
  50. package/dist/sections/validate.js +23 -0
  51. package/dist/sections/validate.js.map +1 -1
  52. package/dist/sections/widget-embed.d.ts +45 -0
  53. package/dist/sections/widget-embed.d.ts.map +1 -0
  54. package/dist/sections/widget-embed.js +129 -0
  55. package/dist/sections/widget-embed.js.map +1 -0
  56. package/dist/seo/page-meta.d.ts.map +1 -1
  57. package/dist/seo/page-meta.js +11 -0
  58. package/dist/seo/page-meta.js.map +1 -1
  59. package/dist/server-site.d.ts.map +1 -1
  60. package/dist/server-site.js +13 -0
  61. package/dist/server-site.js.map +1 -1
  62. package/dist/site.d.ts +6 -0
  63. package/dist/site.d.ts.map +1 -1
  64. package/dist/site.js +6 -0
  65. package/dist/site.js.map +1 -1
  66. package/package.json +26 -1
  67. package/dist/__tests__/actions/document-crud.test.d.ts +0 -2
  68. package/dist/__tests__/actions/document-crud.test.d.ts.map +0 -1
  69. package/dist/__tests__/actions/document-crud.test.js +0 -442
  70. package/dist/__tests__/actions/document-crud.test.js.map +0 -1
  71. package/dist/__tests__/actions/seo-fields-update.test.d.ts +0 -2
  72. package/dist/__tests__/actions/seo-fields-update.test.d.ts.map +0 -1
  73. package/dist/__tests__/actions/seo-fields-update.test.js +0 -93
  74. package/dist/__tests__/actions/seo-fields-update.test.js.map +0 -1
  75. package/dist/__tests__/ai/ai.test.d.ts +0 -2
  76. package/dist/__tests__/ai/ai.test.d.ts.map +0 -1
  77. package/dist/__tests__/ai/ai.test.js +0 -266
  78. package/dist/__tests__/ai/ai.test.js.map +0 -1
  79. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts +0 -2
  80. package/dist/__tests__/ai/brand-voice-alignment.test.d.ts.map +0 -1
  81. package/dist/__tests__/ai/brand-voice-alignment.test.js +0 -38
  82. package/dist/__tests__/ai/brand-voice-alignment.test.js.map +0 -1
  83. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts +0 -2
  84. package/dist/__tests__/ai/brand-voice-analyze.test.d.ts.map +0 -1
  85. package/dist/__tests__/ai/brand-voice-analyze.test.js +0 -117
  86. package/dist/__tests__/ai/brand-voice-analyze.test.js.map +0 -1
  87. package/dist/__tests__/ai/brand-voice-document.test.d.ts +0 -2
  88. package/dist/__tests__/ai/brand-voice-document.test.d.ts.map +0 -1
  89. package/dist/__tests__/ai/brand-voice-document.test.js +0 -74
  90. package/dist/__tests__/ai/brand-voice-document.test.js.map +0 -1
  91. package/dist/__tests__/ai/brand-voice-fix.test.d.ts +0 -2
  92. package/dist/__tests__/ai/brand-voice-fix.test.d.ts.map +0 -1
  93. package/dist/__tests__/ai/brand-voice-fix.test.js +0 -34
  94. package/dist/__tests__/ai/brand-voice-fix.test.js.map +0 -1
  95. package/dist/__tests__/ai/brand-voice-sources.test.d.ts +0 -2
  96. package/dist/__tests__/ai/brand-voice-sources.test.d.ts.map +0 -1
  97. package/dist/__tests__/ai/brand-voice-sources.test.js +0 -14
  98. package/dist/__tests__/ai/brand-voice-sources.test.js.map +0 -1
  99. package/dist/__tests__/ai/brand-voice-structured.test.d.ts +0 -2
  100. package/dist/__tests__/ai/brand-voice-structured.test.d.ts.map +0 -1
  101. package/dist/__tests__/ai/brand-voice-structured.test.js +0 -49
  102. package/dist/__tests__/ai/brand-voice-structured.test.js.map +0 -1
  103. package/dist/__tests__/ai/brand-voice.test.d.ts +0 -2
  104. package/dist/__tests__/ai/brand-voice.test.d.ts.map +0 -1
  105. package/dist/__tests__/ai/brand-voice.test.js +0 -82
  106. package/dist/__tests__/ai/brand-voice.test.js.map +0 -1
  107. package/dist/__tests__/ai/content-writing-generate.test.d.ts +0 -2
  108. package/dist/__tests__/ai/content-writing-generate.test.d.ts.map +0 -1
  109. package/dist/__tests__/ai/content-writing-generate.test.js +0 -38
  110. package/dist/__tests__/ai/content-writing-generate.test.js.map +0 -1
  111. package/dist/__tests__/ai/resolve.test.d.ts +0 -2
  112. package/dist/__tests__/ai/resolve.test.d.ts.map +0 -1
  113. package/dist/__tests__/ai/resolve.test.js +0 -164
  114. package/dist/__tests__/ai/resolve.test.js.map +0 -1
  115. package/dist/__tests__/ai/runtime.test.d.ts +0 -2
  116. package/dist/__tests__/ai/runtime.test.d.ts.map +0 -1
  117. package/dist/__tests__/ai/runtime.test.js +0 -392
  118. package/dist/__tests__/ai/runtime.test.js.map +0 -1
  119. package/dist/__tests__/ai/sampling.test.d.ts +0 -2
  120. package/dist/__tests__/ai/sampling.test.d.ts.map +0 -1
  121. package/dist/__tests__/ai/sampling.test.js +0 -25
  122. package/dist/__tests__/ai/sampling.test.js.map +0 -1
  123. package/dist/__tests__/api/admin-contracts.test.d.ts +0 -2
  124. package/dist/__tests__/api/admin-contracts.test.d.ts.map +0 -1
  125. package/dist/__tests__/api/admin-contracts.test.js +0 -186
  126. package/dist/__tests__/api/admin-contracts.test.js.map +0 -1
  127. package/dist/__tests__/api/ai-crawlers.test.d.ts +0 -2
  128. package/dist/__tests__/api/ai-crawlers.test.d.ts.map +0 -1
  129. package/dist/__tests__/api/ai-crawlers.test.js +0 -194
  130. package/dist/__tests__/api/ai-crawlers.test.js.map +0 -1
  131. package/dist/__tests__/api/ai-quality.test.d.ts +0 -2
  132. package/dist/__tests__/api/ai-quality.test.d.ts.map +0 -1
  133. package/dist/__tests__/api/ai-quality.test.js +0 -721
  134. package/dist/__tests__/api/ai-quality.test.js.map +0 -1
  135. package/dist/__tests__/api/ai-status.test.d.ts +0 -2
  136. package/dist/__tests__/api/ai-status.test.d.ts.map +0 -1
  137. package/dist/__tests__/api/ai-status.test.js +0 -110
  138. package/dist/__tests__/api/ai-status.test.js.map +0 -1
  139. package/dist/__tests__/api/api-key-auth.test.d.ts +0 -2
  140. package/dist/__tests__/api/api-key-auth.test.d.ts.map +0 -1
  141. package/dist/__tests__/api/api-key-auth.test.js +0 -254
  142. package/dist/__tests__/api/api-key-auth.test.js.map +0 -1
  143. package/dist/__tests__/api/appearance-routes.test.d.ts +0 -2
  144. package/dist/__tests__/api/appearance-routes.test.d.ts.map +0 -1
  145. package/dist/__tests__/api/appearance-routes.test.js +0 -134
  146. package/dist/__tests__/api/appearance-routes.test.js.map +0 -1
  147. package/dist/__tests__/api/cache-headers.test.d.ts +0 -2
  148. package/dist/__tests__/api/cache-headers.test.d.ts.map +0 -1
  149. package/dist/__tests__/api/cache-headers.test.js +0 -135
  150. package/dist/__tests__/api/cache-headers.test.js.map +0 -1
  151. package/dist/__tests__/api/collection-introspection.test.d.ts +0 -2
  152. package/dist/__tests__/api/collection-introspection.test.d.ts.map +0 -1
  153. package/dist/__tests__/api/collection-introspection.test.js +0 -129
  154. package/dist/__tests__/api/collection-introspection.test.js.map +0 -1
  155. package/dist/__tests__/api/collection-read-access.test.d.ts +0 -2
  156. package/dist/__tests__/api/collection-read-access.test.d.ts.map +0 -1
  157. package/dist/__tests__/api/collection-read-access.test.js +0 -140
  158. package/dist/__tests__/api/collection-read-access.test.js.map +0 -1
  159. package/dist/__tests__/api/collections-ai-create.test.d.ts +0 -2
  160. package/dist/__tests__/api/collections-ai-create.test.d.ts.map +0 -1
  161. package/dist/__tests__/api/collections-ai-create.test.js +0 -313
  162. package/dist/__tests__/api/collections-ai-create.test.js.map +0 -1
  163. package/dist/__tests__/api/collections-discovery.test.d.ts +0 -2
  164. package/dist/__tests__/api/collections-discovery.test.d.ts.map +0 -1
  165. package/dist/__tests__/api/collections-discovery.test.js +0 -348
  166. package/dist/__tests__/api/collections-discovery.test.js.map +0 -1
  167. package/dist/__tests__/api/comments-routes.test.d.ts +0 -2
  168. package/dist/__tests__/api/comments-routes.test.d.ts.map +0 -1
  169. package/dist/__tests__/api/comments-routes.test.js +0 -266
  170. package/dist/__tests__/api/comments-routes.test.js.map +0 -1
  171. package/dist/__tests__/api/cron-routes.test.d.ts +0 -2
  172. package/dist/__tests__/api/cron-routes.test.d.ts.map +0 -1
  173. package/dist/__tests__/api/cron-routes.test.js +0 -67
  174. package/dist/__tests__/api/cron-routes.test.js.map +0 -1
  175. package/dist/__tests__/api/data-filters-routes.test.d.ts +0 -2
  176. package/dist/__tests__/api/data-filters-routes.test.d.ts.map +0 -1
  177. package/dist/__tests__/api/data-filters-routes.test.js +0 -131
  178. package/dist/__tests__/api/data-filters-routes.test.js.map +0 -1
  179. package/dist/__tests__/api/email-settings-routes.test.d.ts +0 -2
  180. package/dist/__tests__/api/email-settings-routes.test.d.ts.map +0 -1
  181. package/dist/__tests__/api/email-settings-routes.test.js +0 -240
  182. package/dist/__tests__/api/email-settings-routes.test.js.map +0 -1
  183. package/dist/__tests__/api/field-values-routes.test.d.ts +0 -2
  184. package/dist/__tests__/api/field-values-routes.test.d.ts.map +0 -1
  185. package/dist/__tests__/api/field-values-routes.test.js +0 -147
  186. package/dist/__tests__/api/field-values-routes.test.js.map +0 -1
  187. package/dist/__tests__/api/form-webhooks.test.d.ts +0 -2
  188. package/dist/__tests__/api/form-webhooks.test.d.ts.map +0 -1
  189. package/dist/__tests__/api/form-webhooks.test.js +0 -162
  190. package/dist/__tests__/api/form-webhooks.test.js.map +0 -1
  191. package/dist/__tests__/api/globals-routes.test.d.ts +0 -2
  192. package/dist/__tests__/api/globals-routes.test.d.ts.map +0 -1
  193. package/dist/__tests__/api/globals-routes.test.js +0 -100
  194. package/dist/__tests__/api/globals-routes.test.js.map +0 -1
  195. package/dist/__tests__/api/health.test.d.ts +0 -2
  196. package/dist/__tests__/api/health.test.d.ts.map +0 -1
  197. package/dist/__tests__/api/health.test.js +0 -144
  198. package/dist/__tests__/api/health.test.js.map +0 -1
  199. package/dist/__tests__/api/llms-txt.test.d.ts +0 -2
  200. package/dist/__tests__/api/llms-txt.test.d.ts.map +0 -1
  201. package/dist/__tests__/api/llms-txt.test.js +0 -423
  202. package/dist/__tests__/api/llms-txt.test.js.map +0 -1
  203. package/dist/__tests__/api/md-route.test.d.ts +0 -2
  204. package/dist/__tests__/api/md-route.test.d.ts.map +0 -1
  205. package/dist/__tests__/api/md-route.test.js +0 -106
  206. package/dist/__tests__/api/md-route.test.js.map +0 -1
  207. package/dist/__tests__/api/media-upload-storage.test.d.ts +0 -2
  208. package/dist/__tests__/api/media-upload-storage.test.d.ts.map +0 -1
  209. package/dist/__tests__/api/media-upload-storage.test.js +0 -171
  210. package/dist/__tests__/api/media-upload-storage.test.js.map +0 -1
  211. package/dist/__tests__/api/notifications-routes.test.d.ts +0 -2
  212. package/dist/__tests__/api/notifications-routes.test.d.ts.map +0 -1
  213. package/dist/__tests__/api/notifications-routes.test.js +0 -270
  214. package/dist/__tests__/api/notifications-routes.test.js.map +0 -1
  215. package/dist/__tests__/api/page-sections-routes.test.d.ts +0 -2
  216. package/dist/__tests__/api/page-sections-routes.test.d.ts.map +0 -1
  217. package/dist/__tests__/api/page-sections-routes.test.js +0 -501
  218. package/dist/__tests__/api/page-sections-routes.test.js.map +0 -1
  219. package/dist/__tests__/api/preview-and-scheduling.test.d.ts +0 -2
  220. package/dist/__tests__/api/preview-and-scheduling.test.d.ts.map +0 -1
  221. package/dist/__tests__/api/preview-and-scheduling.test.js +0 -479
  222. package/dist/__tests__/api/preview-and-scheduling.test.js.map +0 -1
  223. package/dist/__tests__/api/public-forms.test.d.ts +0 -2
  224. package/dist/__tests__/api/public-forms.test.d.ts.map +0 -1
  225. package/dist/__tests__/api/public-forms.test.js +0 -125
  226. package/dist/__tests__/api/public-forms.test.js.map +0 -1
  227. package/dist/__tests__/api/public-globals.test.d.ts +0 -2
  228. package/dist/__tests__/api/public-globals.test.d.ts.map +0 -1
  229. package/dist/__tests__/api/public-globals.test.js +0 -96
  230. package/dist/__tests__/api/public-globals.test.js.map +0 -1
  231. package/dist/__tests__/api/public-navigations.test.d.ts +0 -2
  232. package/dist/__tests__/api/public-navigations.test.d.ts.map +0 -1
  233. package/dist/__tests__/api/public-navigations.test.js +0 -77
  234. package/dist/__tests__/api/public-navigations.test.js.map +0 -1
  235. package/dist/__tests__/api/public-seo.test.d.ts +0 -2
  236. package/dist/__tests__/api/public-seo.test.d.ts.map +0 -1
  237. package/dist/__tests__/api/public-seo.test.js +0 -834
  238. package/dist/__tests__/api/public-seo.test.js.map +0 -1
  239. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts +0 -2
  240. package/dist/__tests__/api/resolve-layout-bridge.test.d.ts.map +0 -1
  241. package/dist/__tests__/api/resolve-layout-bridge.test.js +0 -165
  242. package/dist/__tests__/api/resolve-layout-bridge.test.js.map +0 -1
  243. package/dist/__tests__/api/route-contracts.test.d.ts +0 -2
  244. package/dist/__tests__/api/route-contracts.test.d.ts.map +0 -1
  245. package/dist/__tests__/api/route-contracts.test.js +0 -466
  246. package/dist/__tests__/api/route-contracts.test.js.map +0 -1
  247. package/dist/__tests__/api/security-routes.test.d.ts +0 -2
  248. package/dist/__tests__/api/security-routes.test.d.ts.map +0 -1
  249. package/dist/__tests__/api/security-routes.test.js +0 -212
  250. package/dist/__tests__/api/security-routes.test.js.map +0 -1
  251. package/dist/__tests__/api/seo-read-access.test.d.ts +0 -2
  252. package/dist/__tests__/api/seo-read-access.test.d.ts.map +0 -1
  253. package/dist/__tests__/api/seo-read-access.test.js +0 -101
  254. package/dist/__tests__/api/seo-read-access.test.js.map +0 -1
  255. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts +0 -2
  256. package/dist/__tests__/api/seo-summary-ssrf.test.d.ts.map +0 -1
  257. package/dist/__tests__/api/seo-summary-ssrf.test.js +0 -80
  258. package/dist/__tests__/api/seo-summary-ssrf.test.js.map +0 -1
  259. package/dist/__tests__/api/sitemap-pagination.test.d.ts +0 -2
  260. package/dist/__tests__/api/sitemap-pagination.test.d.ts.map +0 -1
  261. package/dist/__tests__/api/sitemap-pagination.test.js +0 -100
  262. package/dist/__tests__/api/sitemap-pagination.test.js.map +0 -1
  263. package/dist/__tests__/api/stats-collection-filter.test.d.ts +0 -2
  264. package/dist/__tests__/api/stats-collection-filter.test.d.ts.map +0 -1
  265. package/dist/__tests__/api/stats-collection-filter.test.js +0 -190
  266. package/dist/__tests__/api/stats-collection-filter.test.js.map +0 -1
  267. package/dist/__tests__/api/stats-routes.test.d.ts +0 -2
  268. package/dist/__tests__/api/stats-routes.test.d.ts.map +0 -1
  269. package/dist/__tests__/api/stats-routes.test.js +0 -251
  270. package/dist/__tests__/api/stats-routes.test.js.map +0 -1
  271. package/dist/__tests__/api/stats-seo-cache.test.d.ts +0 -2
  272. package/dist/__tests__/api/stats-seo-cache.test.d.ts.map +0 -1
  273. package/dist/__tests__/api/stats-seo-cache.test.js +0 -96
  274. package/dist/__tests__/api/stats-seo-cache.test.js.map +0 -1
  275. package/dist/__tests__/api/totp-login.test.d.ts +0 -2
  276. package/dist/__tests__/api/totp-login.test.d.ts.map +0 -1
  277. package/dist/__tests__/api/totp-login.test.js +0 -115
  278. package/dist/__tests__/api/totp-login.test.js.map +0 -1
  279. package/dist/__tests__/api/updates-routes.test.d.ts +0 -2
  280. package/dist/__tests__/api/updates-routes.test.d.ts.map +0 -1
  281. package/dist/__tests__/api/updates-routes.test.js +0 -248
  282. package/dist/__tests__/api/updates-routes.test.js.map +0 -1
  283. package/dist/__tests__/api/users-detail.test.d.ts +0 -2
  284. package/dist/__tests__/api/users-detail.test.d.ts.map +0 -1
  285. package/dist/__tests__/api/users-detail.test.js +0 -401
  286. package/dist/__tests__/api/users-detail.test.js.map +0 -1
  287. package/dist/__tests__/api/users-invite.test.d.ts +0 -2
  288. package/dist/__tests__/api/users-invite.test.d.ts.map +0 -1
  289. package/dist/__tests__/api/users-invite.test.js +0 -221
  290. package/dist/__tests__/api/users-invite.test.js.map +0 -1
  291. package/dist/__tests__/api/users-search.test.d.ts +0 -2
  292. package/dist/__tests__/api/users-search.test.d.ts.map +0 -1
  293. package/dist/__tests__/api/users-search.test.js +0 -182
  294. package/dist/__tests__/api/users-search.test.js.map +0 -1
  295. package/dist/__tests__/appearance/appearance.test.d.ts +0 -2
  296. package/dist/__tests__/appearance/appearance.test.d.ts.map +0 -1
  297. package/dist/__tests__/appearance/appearance.test.js +0 -287
  298. package/dist/__tests__/appearance/appearance.test.js.map +0 -1
  299. package/dist/__tests__/appearance/favicon-icon.test.d.ts +0 -2
  300. package/dist/__tests__/appearance/favicon-icon.test.d.ts.map +0 -1
  301. package/dist/__tests__/appearance/favicon-icon.test.js +0 -12
  302. package/dist/__tests__/appearance/favicon-icon.test.js.map +0 -1
  303. package/dist/__tests__/auth/invites.test.d.ts +0 -2
  304. package/dist/__tests__/auth/invites.test.d.ts.map +0 -1
  305. package/dist/__tests__/auth/invites.test.js +0 -181
  306. package/dist/__tests__/auth/invites.test.js.map +0 -1
  307. package/dist/__tests__/auth/oauth.test.d.ts +0 -2
  308. package/dist/__tests__/auth/oauth.test.d.ts.map +0 -1
  309. package/dist/__tests__/auth/oauth.test.js +0 -408
  310. package/dist/__tests__/auth/oauth.test.js.map +0 -1
  311. package/dist/__tests__/auth/password.test.d.ts +0 -2
  312. package/dist/__tests__/auth/password.test.d.ts.map +0 -1
  313. package/dist/__tests__/auth/password.test.js +0 -226
  314. package/dist/__tests__/auth/password.test.js.map +0 -1
  315. package/dist/__tests__/auth/reset.test.d.ts +0 -2
  316. package/dist/__tests__/auth/reset.test.d.ts.map +0 -1
  317. package/dist/__tests__/auth/reset.test.js +0 -355
  318. package/dist/__tests__/auth/reset.test.js.map +0 -1
  319. package/dist/__tests__/auth/roles.test.d.ts +0 -2
  320. package/dist/__tests__/auth/roles.test.d.ts.map +0 -1
  321. package/dist/__tests__/auth/roles.test.js +0 -60
  322. package/dist/__tests__/auth/roles.test.js.map +0 -1
  323. package/dist/__tests__/auth/session.test.d.ts +0 -2
  324. package/dist/__tests__/auth/session.test.d.ts.map +0 -1
  325. package/dist/__tests__/auth/session.test.js +0 -119
  326. package/dist/__tests__/auth/session.test.js.map +0 -1
  327. package/dist/__tests__/auth/team.test.d.ts +0 -2
  328. package/dist/__tests__/auth/team.test.d.ts.map +0 -1
  329. package/dist/__tests__/auth/team.test.js +0 -154
  330. package/dist/__tests__/auth/team.test.js.map +0 -1
  331. package/dist/__tests__/auth/totp.test.d.ts +0 -2
  332. package/dist/__tests__/auth/totp.test.d.ts.map +0 -1
  333. package/dist/__tests__/auth/totp.test.js +0 -52
  334. package/dist/__tests__/auth/totp.test.js.map +0 -1
  335. package/dist/__tests__/auth/user-admin.test.d.ts +0 -2
  336. package/dist/__tests__/auth/user-admin.test.d.ts.map +0 -1
  337. package/dist/__tests__/auth/user-admin.test.js +0 -200
  338. package/dist/__tests__/auth/user-admin.test.js.map +0 -1
  339. package/dist/__tests__/billing/stripe-meter.test.d.ts +0 -2
  340. package/dist/__tests__/billing/stripe-meter.test.d.ts.map +0 -1
  341. package/dist/__tests__/billing/stripe-meter.test.js +0 -86
  342. package/dist/__tests__/billing/stripe-meter.test.js.map +0 -1
  343. package/dist/__tests__/codegen/generate-types.test.d.ts +0 -2
  344. package/dist/__tests__/codegen/generate-types.test.d.ts.map +0 -1
  345. package/dist/__tests__/codegen/generate-types.test.js +0 -173
  346. package/dist/__tests__/codegen/generate-types.test.js.map +0 -1
  347. package/dist/__tests__/collections/presets.test.d.ts +0 -2
  348. package/dist/__tests__/collections/presets.test.d.ts.map +0 -1
  349. package/dist/__tests__/collections/presets.test.js +0 -184
  350. package/dist/__tests__/collections/presets.test.js.map +0 -1
  351. package/dist/__tests__/config/runtime.test.d.ts +0 -2
  352. package/dist/__tests__/config/runtime.test.d.ts.map +0 -1
  353. package/dist/__tests__/config/runtime.test.js +0 -65
  354. package/dist/__tests__/config/runtime.test.js.map +0 -1
  355. package/dist/__tests__/content/slug.test.d.ts +0 -2
  356. package/dist/__tests__/content/slug.test.d.ts.map +0 -1
  357. package/dist/__tests__/content/slug.test.js +0 -68
  358. package/dist/__tests__/content/slug.test.js.map +0 -1
  359. package/dist/__tests__/content-health/scanner.test.d.ts +0 -2
  360. package/dist/__tests__/content-health/scanner.test.d.ts.map +0 -1
  361. package/dist/__tests__/content-health/scanner.test.js +0 -151
  362. package/dist/__tests__/content-health/scanner.test.js.map +0 -1
  363. package/dist/__tests__/cron/cron.test.d.ts +0 -2
  364. package/dist/__tests__/cron/cron.test.d.ts.map +0 -1
  365. package/dist/__tests__/cron/cron.test.js +0 -340
  366. package/dist/__tests__/cron/cron.test.js.map +0 -1
  367. package/dist/__tests__/db/model-types-freshness.test.d.ts +0 -2
  368. package/dist/__tests__/db/model-types-freshness.test.d.ts.map +0 -1
  369. package/dist/__tests__/db/model-types-freshness.test.js +0 -46
  370. package/dist/__tests__/db/model-types-freshness.test.js.map +0 -1
  371. package/dist/__tests__/diagnostics/api-metrics.test.d.ts +0 -2
  372. package/dist/__tests__/diagnostics/api-metrics.test.d.ts.map +0 -1
  373. package/dist/__tests__/diagnostics/api-metrics.test.js +0 -153
  374. package/dist/__tests__/diagnostics/api-metrics.test.js.map +0 -1
  375. package/dist/__tests__/diagnostics/env.test.d.ts +0 -2
  376. package/dist/__tests__/diagnostics/env.test.d.ts.map +0 -1
  377. package/dist/__tests__/diagnostics/env.test.js +0 -247
  378. package/dist/__tests__/diagnostics/env.test.js.map +0 -1
  379. package/dist/__tests__/diagnostics/logger.test.d.ts +0 -2
  380. package/dist/__tests__/diagnostics/logger.test.d.ts.map +0 -1
  381. package/dist/__tests__/diagnostics/logger.test.js +0 -111
  382. package/dist/__tests__/diagnostics/logger.test.js.map +0 -1
  383. package/dist/__tests__/diagnostics/sentry.test.d.ts +0 -2
  384. package/dist/__tests__/diagnostics/sentry.test.d.ts.map +0 -1
  385. package/dist/__tests__/diagnostics/sentry.test.js +0 -60
  386. package/dist/__tests__/diagnostics/sentry.test.js.map +0 -1
  387. package/dist/__tests__/email/resolve.test.d.ts +0 -2
  388. package/dist/__tests__/email/resolve.test.d.ts.map +0 -1
  389. package/dist/__tests__/email/resolve.test.js +0 -90
  390. package/dist/__tests__/email/resolve.test.js.map +0 -1
  391. package/dist/__tests__/email/sender.test.d.ts +0 -2
  392. package/dist/__tests__/email/sender.test.d.ts.map +0 -1
  393. package/dist/__tests__/email/sender.test.js +0 -33
  394. package/dist/__tests__/email/sender.test.js.map +0 -1
  395. package/dist/__tests__/email/settings-store.test.d.ts +0 -2
  396. package/dist/__tests__/email/settings-store.test.d.ts.map +0 -1
  397. package/dist/__tests__/email/settings-store.test.js +0 -149
  398. package/dist/__tests__/email/settings-store.test.js.map +0 -1
  399. package/dist/__tests__/fields/component-block.test.d.ts +0 -2
  400. package/dist/__tests__/fields/component-block.test.d.ts.map +0 -1
  401. package/dist/__tests__/fields/component-block.test.js +0 -129
  402. package/dist/__tests__/fields/component-block.test.js.map +0 -1
  403. package/dist/__tests__/fields/presets.test.d.ts +0 -2
  404. package/dist/__tests__/fields/presets.test.d.ts.map +0 -1
  405. package/dist/__tests__/fields/presets.test.js +0 -99
  406. package/dist/__tests__/fields/presets.test.js.map +0 -1
  407. package/dist/__tests__/fields/relations.test.d.ts +0 -2
  408. package/dist/__tests__/fields/relations.test.d.ts.map +0 -1
  409. package/dist/__tests__/fields/relations.test.js +0 -297
  410. package/dist/__tests__/fields/relations.test.js.map +0 -1
  411. package/dist/__tests__/forms/client-validation.test.d.ts +0 -2
  412. package/dist/__tests__/forms/client-validation.test.d.ts.map +0 -1
  413. package/dist/__tests__/forms/client-validation.test.js +0 -98
  414. package/dist/__tests__/forms/client-validation.test.js.map +0 -1
  415. package/dist/__tests__/forms/encryption.test.d.ts +0 -2
  416. package/dist/__tests__/forms/encryption.test.d.ts.map +0 -1
  417. package/dist/__tests__/forms/encryption.test.js +0 -84
  418. package/dist/__tests__/forms/encryption.test.js.map +0 -1
  419. package/dist/__tests__/forms/entries-export.test.d.ts +0 -2
  420. package/dist/__tests__/forms/entries-export.test.d.ts.map +0 -1
  421. package/dist/__tests__/forms/entries-export.test.js +0 -69
  422. package/dist/__tests__/forms/entries-export.test.js.map +0 -1
  423. package/dist/__tests__/forms/forms-service.test.d.ts +0 -2
  424. package/dist/__tests__/forms/forms-service.test.d.ts.map +0 -1
  425. package/dist/__tests__/forms/forms-service.test.js +0 -193
  426. package/dist/__tests__/forms/forms-service.test.js.map +0 -1
  427. package/dist/__tests__/forms/notify.test.d.ts +0 -2
  428. package/dist/__tests__/forms/notify.test.d.ts.map +0 -1
  429. package/dist/__tests__/forms/notify.test.js +0 -114
  430. package/dist/__tests__/forms/notify.test.js.map +0 -1
  431. package/dist/__tests__/forms/spam.test.d.ts +0 -2
  432. package/dist/__tests__/forms/spam.test.d.ts.map +0 -1
  433. package/dist/__tests__/forms/spam.test.js +0 -115
  434. package/dist/__tests__/forms/spam.test.js.map +0 -1
  435. package/dist/__tests__/forms/submission-files.test.d.ts +0 -2
  436. package/dist/__tests__/forms/submission-files.test.d.ts.map +0 -1
  437. package/dist/__tests__/forms/submission-files.test.js +0 -65
  438. package/dist/__tests__/forms/submission-files.test.js.map +0 -1
  439. package/dist/__tests__/forms/submission-pipeline.test.d.ts +0 -2
  440. package/dist/__tests__/forms/submission-pipeline.test.d.ts.map +0 -1
  441. package/dist/__tests__/forms/submission-pipeline.test.js +0 -131
  442. package/dist/__tests__/forms/submission-pipeline.test.js.map +0 -1
  443. package/dist/__tests__/forms/submission-validation.test.d.ts +0 -2
  444. package/dist/__tests__/forms/submission-validation.test.d.ts.map +0 -1
  445. package/dist/__tests__/forms/submission-validation.test.js +0 -108
  446. package/dist/__tests__/forms/submission-validation.test.js.map +0 -1
  447. package/dist/__tests__/forms/webhooks.test.d.ts +0 -2
  448. package/dist/__tests__/forms/webhooks.test.d.ts.map +0 -1
  449. package/dist/__tests__/forms/webhooks.test.js +0 -203
  450. package/dist/__tests__/forms/webhooks.test.js.map +0 -1
  451. package/dist/__tests__/media/seo.test.d.ts +0 -2
  452. package/dist/__tests__/media/seo.test.d.ts.map +0 -1
  453. package/dist/__tests__/media/seo.test.js +0 -186
  454. package/dist/__tests__/media/seo.test.js.map +0 -1
  455. package/dist/__tests__/middleware.test.d.ts +0 -2
  456. package/dist/__tests__/middleware.test.d.ts.map +0 -1
  457. package/dist/__tests__/middleware.test.js +0 -127
  458. package/dist/__tests__/middleware.test.js.map +0 -1
  459. package/dist/__tests__/next.test.d.ts +0 -2
  460. package/dist/__tests__/next.test.d.ts.map +0 -1
  461. package/dist/__tests__/next.test.js +0 -118
  462. package/dist/__tests__/next.test.js.map +0 -1
  463. package/dist/__tests__/plan/features.test.d.ts +0 -2
  464. package/dist/__tests__/plan/features.test.d.ts.map +0 -1
  465. package/dist/__tests__/plan/features.test.js +0 -35
  466. package/dist/__tests__/plan/features.test.js.map +0 -1
  467. package/dist/__tests__/preview-event-bus.test.d.ts +0 -2
  468. package/dist/__tests__/preview-event-bus.test.d.ts.map +0 -1
  469. package/dist/__tests__/preview-event-bus.test.js +0 -89
  470. package/dist/__tests__/preview-event-bus.test.js.map +0 -1
  471. package/dist/__tests__/preview-sse-stream.test.d.ts +0 -2
  472. package/dist/__tests__/preview-sse-stream.test.d.ts.map +0 -1
  473. package/dist/__tests__/preview-sse-stream.test.js +0 -117
  474. package/dist/__tests__/preview-sse-stream.test.js.map +0 -1
  475. package/dist/__tests__/preview.test.d.ts +0 -2
  476. package/dist/__tests__/preview.test.d.ts.map +0 -1
  477. package/dist/__tests__/preview.test.js +0 -71
  478. package/dist/__tests__/preview.test.js.map +0 -1
  479. package/dist/__tests__/realtime/comments.test.d.ts +0 -2
  480. package/dist/__tests__/realtime/comments.test.d.ts.map +0 -1
  481. package/dist/__tests__/realtime/comments.test.js +0 -508
  482. package/dist/__tests__/realtime/comments.test.js.map +0 -1
  483. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts +0 -2
  484. package/dist/__tests__/realtime/gateway-ws-integration.test.d.ts.map +0 -1
  485. package/dist/__tests__/realtime/gateway-ws-integration.test.js +0 -170
  486. package/dist/__tests__/realtime/gateway-ws-integration.test.js.map +0 -1
  487. package/dist/__tests__/realtime/gateway.test.d.ts +0 -2
  488. package/dist/__tests__/realtime/gateway.test.d.ts.map +0 -1
  489. package/dist/__tests__/realtime/gateway.test.js +0 -402
  490. package/dist/__tests__/realtime/gateway.test.js.map +0 -1
  491. package/dist/__tests__/realtime/notification-bus.test.d.ts +0 -2
  492. package/dist/__tests__/realtime/notification-bus.test.d.ts.map +0 -1
  493. package/dist/__tests__/realtime/notification-bus.test.js +0 -79
  494. package/dist/__tests__/realtime/notification-bus.test.js.map +0 -1
  495. package/dist/__tests__/realtime/notification-stream.test.d.ts +0 -2
  496. package/dist/__tests__/realtime/notification-stream.test.d.ts.map +0 -1
  497. package/dist/__tests__/realtime/notification-stream.test.js +0 -157
  498. package/dist/__tests__/realtime/notification-stream.test.js.map +0 -1
  499. package/dist/__tests__/realtime/notifications.test.d.ts +0 -2
  500. package/dist/__tests__/realtime/notifications.test.d.ts.map +0 -1
  501. package/dist/__tests__/realtime/notifications.test.js +0 -330
  502. package/dist/__tests__/realtime/notifications.test.js.map +0 -1
  503. package/dist/__tests__/realtime/persistence.test.d.ts +0 -2
  504. package/dist/__tests__/realtime/persistence.test.d.ts.map +0 -1
  505. package/dist/__tests__/realtime/persistence.test.js +0 -124
  506. package/dist/__tests__/realtime/persistence.test.js.map +0 -1
  507. package/dist/__tests__/redirects/auto-301.test.d.ts +0 -2
  508. package/dist/__tests__/redirects/auto-301.test.d.ts.map +0 -1
  509. package/dist/__tests__/redirects/auto-301.test.js +0 -172
  510. package/dist/__tests__/redirects/auto-301.test.js.map +0 -1
  511. package/dist/__tests__/redirects/graph.test.d.ts +0 -2
  512. package/dist/__tests__/redirects/graph.test.d.ts.map +0 -1
  513. package/dist/__tests__/redirects/graph.test.js +0 -104
  514. package/dist/__tests__/redirects/graph.test.js.map +0 -1
  515. package/dist/__tests__/redirects/suggest.test.d.ts +0 -2
  516. package/dist/__tests__/redirects/suggest.test.d.ts.map +0 -1
  517. package/dist/__tests__/redirects/suggest.test.js +0 -28
  518. package/dist/__tests__/redirects/suggest.test.js.map +0 -1
  519. package/dist/__tests__/scheduling/scheduling.test.d.ts +0 -2
  520. package/dist/__tests__/scheduling/scheduling.test.d.ts.map +0 -1
  521. package/dist/__tests__/scheduling/scheduling.test.js +0 -110
  522. package/dist/__tests__/scheduling/scheduling.test.js.map +0 -1
  523. package/dist/__tests__/schema-preview-features.test.d.ts +0 -2
  524. package/dist/__tests__/schema-preview-features.test.d.ts.map +0 -1
  525. package/dist/__tests__/schema-preview-features.test.js +0 -42
  526. package/dist/__tests__/schema-preview-features.test.js.map +0 -1
  527. package/dist/__tests__/sections/sections-migrate.test.d.ts +0 -2
  528. package/dist/__tests__/sections/sections-migrate.test.d.ts.map +0 -1
  529. package/dist/__tests__/sections/sections-migrate.test.js +0 -145
  530. package/dist/__tests__/sections/sections-migrate.test.js.map +0 -1
  531. package/dist/__tests__/security/access.test.d.ts +0 -2
  532. package/dist/__tests__/security/access.test.d.ts.map +0 -1
  533. package/dist/__tests__/security/access.test.js +0 -181
  534. package/dist/__tests__/security/access.test.js.map +0 -1
  535. package/dist/__tests__/security/api-key-enhanced.test.d.ts +0 -2
  536. package/dist/__tests__/security/api-key-enhanced.test.d.ts.map +0 -1
  537. package/dist/__tests__/security/api-key-enhanced.test.js +0 -110
  538. package/dist/__tests__/security/api-key-enhanced.test.js.map +0 -1
  539. package/dist/__tests__/security/audit.test.d.ts +0 -2
  540. package/dist/__tests__/security/audit.test.d.ts.map +0 -1
  541. package/dist/__tests__/security/audit.test.js +0 -50
  542. package/dist/__tests__/security/audit.test.js.map +0 -1
  543. package/dist/__tests__/security/center.test.d.ts +0 -2
  544. package/dist/__tests__/security/center.test.d.ts.map +0 -1
  545. package/dist/__tests__/security/center.test.js +0 -226
  546. package/dist/__tests__/security/center.test.js.map +0 -1
  547. package/dist/__tests__/security/client-ip.test.d.ts +0 -2
  548. package/dist/__tests__/security/client-ip.test.d.ts.map +0 -1
  549. package/dist/__tests__/security/client-ip.test.js +0 -37
  550. package/dist/__tests__/security/client-ip.test.js.map +0 -1
  551. package/dist/__tests__/security/csrf.test.d.ts +0 -2
  552. package/dist/__tests__/security/csrf.test.d.ts.map +0 -1
  553. package/dist/__tests__/security/csrf.test.js +0 -40
  554. package/dist/__tests__/security/csrf.test.js.map +0 -1
  555. package/dist/__tests__/security/encrypted-fields.test.d.ts +0 -2
  556. package/dist/__tests__/security/encrypted-fields.test.d.ts.map +0 -1
  557. package/dist/__tests__/security/encrypted-fields.test.js +0 -60
  558. package/dist/__tests__/security/encrypted-fields.test.js.map +0 -1
  559. package/dist/__tests__/security/ip-allowlist.test.d.ts +0 -2
  560. package/dist/__tests__/security/ip-allowlist.test.d.ts.map +0 -1
  561. package/dist/__tests__/security/ip-allowlist.test.js +0 -40
  562. package/dist/__tests__/security/ip-allowlist.test.js.map +0 -1
  563. package/dist/__tests__/security/rate-limit.test.d.ts +0 -2
  564. package/dist/__tests__/security/rate-limit.test.d.ts.map +0 -1
  565. package/dist/__tests__/security/rate-limit.test.js +0 -199
  566. package/dist/__tests__/security/rate-limit.test.js.map +0 -1
  567. package/dist/__tests__/security/reauth.test.d.ts +0 -2
  568. package/dist/__tests__/security/reauth.test.d.ts.map +0 -1
  569. package/dist/__tests__/security/reauth.test.js +0 -30
  570. package/dist/__tests__/security/reauth.test.js.map +0 -1
  571. package/dist/__tests__/security/redact.test.d.ts +0 -2
  572. package/dist/__tests__/security/redact.test.d.ts.map +0 -1
  573. package/dist/__tests__/security/redact.test.js +0 -31
  574. package/dist/__tests__/security/redact.test.js.map +0 -1
  575. package/dist/__tests__/security/safe-fetch.test.d.ts +0 -2
  576. package/dist/__tests__/security/safe-fetch.test.d.ts.map +0 -1
  577. package/dist/__tests__/security/safe-fetch.test.js +0 -97
  578. package/dist/__tests__/security/safe-fetch.test.js.map +0 -1
  579. package/dist/__tests__/security/sanitize-document.test.d.ts +0 -2
  580. package/dist/__tests__/security/sanitize-document.test.d.ts.map +0 -1
  581. package/dist/__tests__/security/sanitize-document.test.js +0 -146
  582. package/dist/__tests__/security/sanitize-document.test.js.map +0 -1
  583. package/dist/__tests__/security/sanitize.test.d.ts +0 -2
  584. package/dist/__tests__/security/sanitize.test.d.ts.map +0 -1
  585. package/dist/__tests__/security/sanitize.test.js +0 -75
  586. package/dist/__tests__/security/sanitize.test.js.map +0 -1
  587. package/dist/__tests__/security/secret-storage.test.d.ts +0 -2
  588. package/dist/__tests__/security/secret-storage.test.d.ts.map +0 -1
  589. package/dist/__tests__/security/secret-storage.test.js +0 -42
  590. package/dist/__tests__/security/secret-storage.test.js.map +0 -1
  591. package/dist/__tests__/security/ssrf.test.d.ts +0 -2
  592. package/dist/__tests__/security/ssrf.test.d.ts.map +0 -1
  593. package/dist/__tests__/security/ssrf.test.js +0 -209
  594. package/dist/__tests__/security/ssrf.test.js.map +0 -1
  595. package/dist/__tests__/security/upload-magic.test.d.ts +0 -2
  596. package/dist/__tests__/security/upload-magic.test.d.ts.map +0 -1
  597. package/dist/__tests__/security/upload-magic.test.js +0 -55
  598. package/dist/__tests__/security/upload-magic.test.js.map +0 -1
  599. package/dist/__tests__/seo/ai-bots.test.d.ts +0 -2
  600. package/dist/__tests__/seo/ai-bots.test.d.ts.map +0 -1
  601. package/dist/__tests__/seo/ai-bots.test.js +0 -92
  602. package/dist/__tests__/seo/ai-bots.test.js.map +0 -1
  603. package/dist/__tests__/seo/alt-text.test.d.ts +0 -2
  604. package/dist/__tests__/seo/alt-text.test.d.ts.map +0 -1
  605. package/dist/__tests__/seo/alt-text.test.js +0 -47
  606. package/dist/__tests__/seo/alt-text.test.js.map +0 -1
  607. package/dist/__tests__/seo/analysis-markdown.test.d.ts +0 -2
  608. package/dist/__tests__/seo/analysis-markdown.test.d.ts.map +0 -1
  609. package/dist/__tests__/seo/analysis-markdown.test.js +0 -57
  610. package/dist/__tests__/seo/analysis-markdown.test.js.map +0 -1
  611. package/dist/__tests__/seo/audit-engine.test.d.ts +0 -2
  612. package/dist/__tests__/seo/audit-engine.test.d.ts.map +0 -1
  613. package/dist/__tests__/seo/audit-engine.test.js +0 -181
  614. package/dist/__tests__/seo/audit-engine.test.js.map +0 -1
  615. package/dist/__tests__/seo/audit-runner.test.d.ts +0 -2
  616. package/dist/__tests__/seo/audit-runner.test.d.ts.map +0 -1
  617. package/dist/__tests__/seo/audit-runner.test.js +0 -204
  618. package/dist/__tests__/seo/audit-runner.test.js.map +0 -1
  619. package/dist/__tests__/seo/audit-signals.test.d.ts +0 -2
  620. package/dist/__tests__/seo/audit-signals.test.d.ts.map +0 -1
  621. package/dist/__tests__/seo/audit-signals.test.js +0 -30
  622. package/dist/__tests__/seo/audit-signals.test.js.map +0 -1
  623. package/dist/__tests__/seo/config-store.test.d.ts +0 -2
  624. package/dist/__tests__/seo/config-store.test.d.ts.map +0 -1
  625. package/dist/__tests__/seo/config-store.test.js +0 -31
  626. package/dist/__tests__/seo/config-store.test.js.map +0 -1
  627. package/dist/__tests__/seo/content-markdown.test.d.ts +0 -2
  628. package/dist/__tests__/seo/content-markdown.test.d.ts.map +0 -1
  629. package/dist/__tests__/seo/content-markdown.test.js +0 -124
  630. package/dist/__tests__/seo/content-markdown.test.js.map +0 -1
  631. package/dist/__tests__/seo/effective-meta.test.d.ts +0 -2
  632. package/dist/__tests__/seo/effective-meta.test.d.ts.map +0 -1
  633. package/dist/__tests__/seo/effective-meta.test.js +0 -58
  634. package/dist/__tests__/seo/effective-meta.test.js.map +0 -1
  635. package/dist/__tests__/seo/feeds.test.d.ts +0 -2
  636. package/dist/__tests__/seo/feeds.test.d.ts.map +0 -1
  637. package/dist/__tests__/seo/feeds.test.js +0 -61
  638. package/dist/__tests__/seo/feeds.test.js.map +0 -1
  639. package/dist/__tests__/seo/fix-brief-export.test.d.ts +0 -2
  640. package/dist/__tests__/seo/fix-brief-export.test.d.ts.map +0 -1
  641. package/dist/__tests__/seo/fix-brief-export.test.js +0 -153
  642. package/dist/__tests__/seo/fix-brief-export.test.js.map +0 -1
  643. package/dist/__tests__/seo/freshness.test.d.ts +0 -2
  644. package/dist/__tests__/seo/freshness.test.d.ts.map +0 -1
  645. package/dist/__tests__/seo/freshness.test.js +0 -89
  646. package/dist/__tests__/seo/freshness.test.js.map +0 -1
  647. package/dist/__tests__/seo/index-status.test.d.ts +0 -2
  648. package/dist/__tests__/seo/index-status.test.d.ts.map +0 -1
  649. package/dist/__tests__/seo/index-status.test.js +0 -140
  650. package/dist/__tests__/seo/index-status.test.js.map +0 -1
  651. package/dist/__tests__/seo/internal-collections.test.d.ts +0 -2
  652. package/dist/__tests__/seo/internal-collections.test.d.ts.map +0 -1
  653. package/dist/__tests__/seo/internal-collections.test.js +0 -27
  654. package/dist/__tests__/seo/internal-collections.test.js.map +0 -1
  655. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts +0 -2
  656. package/dist/__tests__/seo/issue-batch-briefs.test.d.ts.map +0 -1
  657. package/dist/__tests__/seo/issue-batch-briefs.test.js +0 -64
  658. package/dist/__tests__/seo/issue-batch-briefs.test.js.map +0 -1
  659. package/dist/__tests__/seo/issue-content-brief.test.d.ts +0 -2
  660. package/dist/__tests__/seo/issue-content-brief.test.d.ts.map +0 -1
  661. package/dist/__tests__/seo/issue-content-brief.test.js +0 -107
  662. package/dist/__tests__/seo/issue-content-brief.test.js.map +0 -1
  663. package/dist/__tests__/seo/issue-content-research.test.d.ts +0 -2
  664. package/dist/__tests__/seo/issue-content-research.test.d.ts.map +0 -1
  665. package/dist/__tests__/seo/issue-content-research.test.js +0 -114
  666. package/dist/__tests__/seo/issue-content-research.test.js.map +0 -1
  667. package/dist/__tests__/seo/issue-fix-ai.test.d.ts +0 -2
  668. package/dist/__tests__/seo/issue-fix-ai.test.d.ts.map +0 -1
  669. package/dist/__tests__/seo/issue-fix-ai.test.js +0 -96
  670. package/dist/__tests__/seo/issue-fix-ai.test.js.map +0 -1
  671. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts +0 -2
  672. package/dist/__tests__/seo/issue-fix-orchestrator.test.d.ts.map +0 -1
  673. package/dist/__tests__/seo/issue-fix-orchestrator.test.js +0 -48
  674. package/dist/__tests__/seo/issue-fix-orchestrator.test.js.map +0 -1
  675. package/dist/__tests__/seo/issue-fix.test.d.ts +0 -2
  676. package/dist/__tests__/seo/issue-fix.test.d.ts.map +0 -1
  677. package/dist/__tests__/seo/issue-fix.test.js +0 -98
  678. package/dist/__tests__/seo/issue-fix.test.js.map +0 -1
  679. package/dist/__tests__/seo/llms-sanitize.test.d.ts +0 -2
  680. package/dist/__tests__/seo/llms-sanitize.test.d.ts.map +0 -1
  681. package/dist/__tests__/seo/llms-sanitize.test.js +0 -74
  682. package/dist/__tests__/seo/llms-sanitize.test.js.map +0 -1
  683. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts +0 -2
  684. package/dist/__tests__/seo/meta-tags-alternates.test.d.ts.map +0 -1
  685. package/dist/__tests__/seo/meta-tags-alternates.test.js +0 -52
  686. package/dist/__tests__/seo/meta-tags-alternates.test.js.map +0 -1
  687. package/dist/__tests__/seo/migrate-meta.test.d.ts +0 -2
  688. package/dist/__tests__/seo/migrate-meta.test.d.ts.map +0 -1
  689. package/dist/__tests__/seo/migrate-meta.test.js +0 -75
  690. package/dist/__tests__/seo/migrate-meta.test.js.map +0 -1
  691. package/dist/__tests__/seo/migrate-schema.test.d.ts +0 -2
  692. package/dist/__tests__/seo/migrate-schema.test.d.ts.map +0 -1
  693. package/dist/__tests__/seo/migrate-schema.test.js +0 -97
  694. package/dist/__tests__/seo/migrate-schema.test.js.map +0 -1
  695. package/dist/__tests__/seo/page-meta.test.d.ts +0 -2
  696. package/dist/__tests__/seo/page-meta.test.d.ts.map +0 -1
  697. package/dist/__tests__/seo/page-meta.test.js +0 -452
  698. package/dist/__tests__/seo/page-meta.test.js.map +0 -1
  699. package/dist/__tests__/seo/resolve-path.test.d.ts +0 -2
  700. package/dist/__tests__/seo/resolve-path.test.d.ts.map +0 -1
  701. package/dist/__tests__/seo/resolve-path.test.js +0 -46
  702. package/dist/__tests__/seo/resolve-path.test.js.map +0 -1
  703. package/dist/__tests__/seo/robots.test.d.ts +0 -2
  704. package/dist/__tests__/seo/robots.test.d.ts.map +0 -1
  705. package/dist/__tests__/seo/robots.test.js +0 -72
  706. package/dist/__tests__/seo/robots.test.js.map +0 -1
  707. package/dist/__tests__/seo/schema-sync.test.d.ts +0 -2
  708. package/dist/__tests__/seo/schema-sync.test.d.ts.map +0 -1
  709. package/dist/__tests__/seo/schema-sync.test.js +0 -59
  710. package/dist/__tests__/seo/schema-sync.test.js.map +0 -1
  711. package/dist/__tests__/seo/score.test.d.ts +0 -2
  712. package/dist/__tests__/seo/score.test.d.ts.map +0 -1
  713. package/dist/__tests__/seo/score.test.js +0 -152
  714. package/dist/__tests__/seo/score.test.js.map +0 -1
  715. package/dist/__tests__/seo/settings-defaults.test.d.ts +0 -2
  716. package/dist/__tests__/seo/settings-defaults.test.d.ts.map +0 -1
  717. package/dist/__tests__/seo/settings-defaults.test.js +0 -189
  718. package/dist/__tests__/seo/settings-defaults.test.js.map +0 -1
  719. package/dist/__tests__/seo/sitemap-notify.test.d.ts +0 -2
  720. package/dist/__tests__/seo/sitemap-notify.test.d.ts.map +0 -1
  721. package/dist/__tests__/seo/sitemap-notify.test.js +0 -267
  722. package/dist/__tests__/seo/sitemap-notify.test.js.map +0 -1
  723. package/dist/__tests__/seo/sitemap-public.test.d.ts +0 -2
  724. package/dist/__tests__/seo/sitemap-public.test.d.ts.map +0 -1
  725. package/dist/__tests__/seo/sitemap-public.test.js +0 -52
  726. package/dist/__tests__/seo/sitemap-public.test.js.map +0 -1
  727. package/dist/__tests__/server-site.test.d.ts +0 -2
  728. package/dist/__tests__/server-site.test.d.ts.map +0 -1
  729. package/dist/__tests__/server-site.test.js +0 -173
  730. package/dist/__tests__/server-site.test.js.map +0 -1
  731. package/dist/__tests__/setup/index.test.d.ts +0 -2
  732. package/dist/__tests__/setup/index.test.d.ts.map +0 -1
  733. package/dist/__tests__/setup/index.test.js +0 -128
  734. package/dist/__tests__/setup/index.test.js.map +0 -1
  735. package/dist/__tests__/site.test.d.ts +0 -2
  736. package/dist/__tests__/site.test.d.ts.map +0 -1
  737. package/dist/__tests__/site.test.js +0 -81
  738. package/dist/__tests__/site.test.js.map +0 -1
  739. package/dist/__tests__/storage/auto-wire.test.d.ts +0 -2
  740. package/dist/__tests__/storage/auto-wire.test.d.ts.map +0 -1
  741. package/dist/__tests__/storage/auto-wire.test.js +0 -73
  742. package/dist/__tests__/storage/auto-wire.test.js.map +0 -1
  743. package/dist/__tests__/upgrade/version-check.test.d.ts +0 -2
  744. package/dist/__tests__/upgrade/version-check.test.d.ts.map +0 -1
  745. package/dist/__tests__/upgrade/version-check.test.js +0 -98
  746. package/dist/__tests__/upgrade/version-check.test.js.map +0 -1
  747. package/dist/__tests__/validation/publish.test.d.ts +0 -2
  748. package/dist/__tests__/validation/publish.test.d.ts.map +0 -1
  749. package/dist/__tests__/validation/publish.test.js +0 -164
  750. package/dist/__tests__/validation/publish.test.js.map +0 -1
  751. package/dist/__tests__/webhooks/webhooks.test.d.ts +0 -2
  752. package/dist/__tests__/webhooks/webhooks.test.d.ts.map +0 -1
  753. package/dist/__tests__/webhooks/webhooks.test.js +0 -96
  754. package/dist/__tests__/webhooks/webhooks.test.js.map +0 -1
  755. package/dist/cache/__tests__/http.test.d.ts +0 -2
  756. package/dist/cache/__tests__/http.test.d.ts.map +0 -1
  757. package/dist/cache/__tests__/http.test.js +0 -285
  758. package/dist/cache/__tests__/http.test.js.map +0 -1
  759. package/dist/db/__tests__/find-in-batches.test.d.ts +0 -2
  760. package/dist/db/__tests__/find-in-batches.test.d.ts.map +0 -1
  761. package/dist/db/__tests__/find-in-batches.test.js +0 -26
  762. package/dist/db/__tests__/find-in-batches.test.js.map +0 -1
  763. package/dist/fields/__tests__/presets.test.d.ts +0 -2
  764. package/dist/fields/__tests__/presets.test.d.ts.map +0 -1
  765. package/dist/fields/__tests__/presets.test.js +0 -29
  766. package/dist/fields/__tests__/presets.test.js.map +0 -1
  767. package/dist/page-builder/__tests__/a11y-fix.test.d.ts +0 -2
  768. package/dist/page-builder/__tests__/a11y-fix.test.d.ts.map +0 -1
  769. package/dist/page-builder/__tests__/a11y-fix.test.js +0 -242
  770. package/dist/page-builder/__tests__/a11y-fix.test.js.map +0 -1
  771. package/dist/page-builder/__tests__/blocks.test.d.ts +0 -2
  772. package/dist/page-builder/__tests__/blocks.test.d.ts.map +0 -1
  773. package/dist/page-builder/__tests__/blocks.test.js +0 -194
  774. package/dist/page-builder/__tests__/blocks.test.js.map +0 -1
  775. package/dist/page-builder/__tests__/design-scorer.test.d.ts +0 -2
  776. package/dist/page-builder/__tests__/design-scorer.test.d.ts.map +0 -1
  777. package/dist/page-builder/__tests__/design-scorer.test.js +0 -301
  778. package/dist/page-builder/__tests__/design-scorer.test.js.map +0 -1
  779. package/dist/page-builder/__tests__/schema.test.d.ts +0 -2
  780. package/dist/page-builder/__tests__/schema.test.d.ts.map +0 -1
  781. package/dist/page-builder/__tests__/schema.test.js +0 -191
  782. package/dist/page-builder/__tests__/schema.test.js.map +0 -1
  783. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts +0 -2
  784. package/dist/page-builder/__tests__/seo-analyzer.test.d.ts.map +0 -1
  785. package/dist/page-builder/__tests__/seo-analyzer.test.js +0 -346
  786. package/dist/page-builder/__tests__/seo-analyzer.test.js.map +0 -1
  787. package/dist/page-builder/__tests__/tree.test.d.ts +0 -2
  788. package/dist/page-builder/__tests__/tree.test.d.ts.map +0 -1
  789. package/dist/page-builder/__tests__/tree.test.js +0 -257
  790. package/dist/page-builder/__tests__/tree.test.js.map +0 -1
  791. package/dist/posts/__tests__/query.test.d.ts +0 -2
  792. package/dist/posts/__tests__/query.test.d.ts.map +0 -1
  793. package/dist/posts/__tests__/query.test.js +0 -70
  794. package/dist/posts/__tests__/query.test.js.map +0 -1
  795. package/dist/sections/__tests__/bridge.test.d.ts +0 -2
  796. package/dist/sections/__tests__/bridge.test.d.ts.map +0 -1
  797. package/dist/sections/__tests__/bridge.test.js +0 -171
  798. package/dist/sections/__tests__/bridge.test.js.map +0 -1
  799. package/dist/sections/__tests__/define.test.d.ts +0 -2
  800. package/dist/sections/__tests__/define.test.d.ts.map +0 -1
  801. package/dist/sections/__tests__/define.test.js +0 -132
  802. package/dist/sections/__tests__/define.test.js.map +0 -1
  803. package/dist/sections/__tests__/embed.test.d.ts +0 -2
  804. package/dist/sections/__tests__/embed.test.d.ts.map +0 -1
  805. package/dist/sections/__tests__/embed.test.js +0 -54
  806. package/dist/sections/__tests__/embed.test.js.map +0 -1
  807. package/dist/sections/__tests__/media-enrich.test.d.ts +0 -2
  808. package/dist/sections/__tests__/media-enrich.test.d.ts.map +0 -1
  809. package/dist/sections/__tests__/media-enrich.test.js +0 -97
  810. package/dist/sections/__tests__/media-enrich.test.js.map +0 -1
  811. package/dist/sections/__tests__/sections.test.d.ts +0 -2
  812. package/dist/sections/__tests__/sections.test.d.ts.map +0 -1
  813. package/dist/sections/__tests__/sections.test.js +0 -453
  814. package/dist/sections/__tests__/sections.test.js.map +0 -1
@@ -1,392 +0,0 @@
1
- import { afterEach, describe, expect, it, vi } from 'vitest';
2
- import { generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, } from '../../ai/runtime.js';
3
- const NO_CAPS = {
4
- text: false,
5
- vision: false,
6
- imageGeneration: false,
7
- embeddings: false,
8
- toolCalling: false,
9
- structuredOutput: false,
10
- streaming: false,
11
- reasoning: false,
12
- longContext: false,
13
- };
14
- function model(id, caps, over = {}) {
15
- const [provider = 'openai', providerModelId = id] = id.split(':');
16
- return {
17
- id,
18
- provider: provider,
19
- providerModelId,
20
- displayName: id,
21
- status: 'available',
22
- capabilities: { ...NO_CAPS, ...caps },
23
- inputModalities: ['text'],
24
- outputModalities: ['text'],
25
- lastSyncedAt: '2026-01-01T00:00:00.000Z',
26
- source: 'provider',
27
- metadata: {},
28
- ...over,
29
- };
30
- }
31
- function conn(over = {}) {
32
- return {
33
- id: 'p-openai',
34
- provider: 'openai',
35
- displayName: 'OpenAI',
36
- enabled: true,
37
- status: 'connected',
38
- createdAt: '2026-01-01T00:00:00.000Z',
39
- updatedAt: '2026-01-01T00:00:00.000Z',
40
- updatedBy: 'u1',
41
- ...over,
42
- };
43
- }
44
- const CONTENT_FEATURE = {
45
- key: 'ai.features.contentWriting',
46
- label: 'Content writing',
47
- description: '',
48
- enabled: true,
49
- category: 'content',
50
- requiredCapabilities: ['text'],
51
- approvalRequired: false,
52
- allowBulkApply: false,
53
- rolesAllowed: ['ADMIN'],
54
- permissionsRequired: ['ai.use'],
55
- };
56
- function makeDb(opts) {
57
- const created = [];
58
- const data = {
59
- providers: opts.providers ?? [],
60
- settings: opts.settings ?? {},
61
- catalog: opts.catalog,
62
- };
63
- const db = {
64
- document: {
65
- findFirst: vi.fn(async () => ({ data })),
66
- },
67
- auditLog: {
68
- findMany: vi.fn(async () => opts.auditRows ?? []),
69
- create: vi.fn(async (args) => {
70
- created.push(args.data);
71
- return args.data;
72
- }),
73
- },
74
- };
75
- return { db, created };
76
- }
77
- const KEY = CONTENT_FEATURE.key;
78
- afterEach(() => {
79
- delete process.env.OPENAI_API_KEY;
80
- delete process.env.ANTHROPIC_API_KEY;
81
- });
82
- describe('isAiFeatureEnabled', () => {
83
- it('reflects the stored toggle and defaults unknown keys to enabled', async () => {
84
- const { db } = makeDb({
85
- providers: [conn()],
86
- settings: { features: [{ ...CONTENT_FEATURE, enabled: false }] },
87
- });
88
- expect(await isAiFeatureEnabled(db, KEY)).toBe(false);
89
- expect(await isAiFeatureEnabled(db, 'ai.features.unknown')).toBe(true);
90
- });
91
- });
92
- describe('resolveFeatureRuntime', () => {
93
- it('blocks a disabled feature', async () => {
94
- const { db } = makeDb({
95
- providers: [conn()],
96
- settings: { features: [{ ...CONTENT_FEATURE, enabled: false }] },
97
- });
98
- const r = await resolveFeatureRuntime(db, KEY);
99
- expect(r.ok).toBe(false);
100
- if (!r.ok)
101
- expect(r.code).toBe('feature_disabled');
102
- });
103
- it('returns no_model when nothing is configured', async () => {
104
- const { db } = makeDb({ providers: [], settings: { features: [CONTENT_FEATURE] } });
105
- const r = await resolveFeatureRuntime(db, KEY);
106
- expect(r.ok).toBe(false);
107
- if (!r.ok)
108
- expect(r.code).toBe('no_model');
109
- });
110
- it('returns no_provider when the only matching connection is disabled', async () => {
111
- process.env.OPENAI_API_KEY = 'sk-env-test';
112
- const { db } = makeDb({
113
- providers: [conn({ enabled: false })],
114
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
115
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
116
- });
117
- const r = await resolveFeatureRuntime(db, KEY);
118
- expect(r.ok).toBe(false);
119
- if (!r.ok)
120
- expect(r.code).toBe('no_provider');
121
- });
122
- it('returns no_key when neither env nor a stored key exists', async () => {
123
- const { db } = makeDb({
124
- providers: [conn({ provider: 'anthropic', id: 'p-anthropic' })],
125
- settings: { defaultModelId: 'anthropic:claude-x', features: [CONTENT_FEATURE] },
126
- catalog: { 'p-anthropic': { models: [model('anthropic:claude-x', { text: true })] } },
127
- });
128
- const r = await resolveFeatureRuntime(db, KEY);
129
- expect(r.ok).toBe(false);
130
- if (!r.ok)
131
- expect(r.code).toBe('no_key');
132
- });
133
- it('resolves a ready runtime, stripping the provider prefix from the model id', async () => {
134
- process.env.OPENAI_API_KEY = 'sk-env-test';
135
- const { db } = makeDb({
136
- providers: [conn()],
137
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
138
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
139
- });
140
- const r = await resolveFeatureRuntime(db, KEY);
141
- expect(r.ok).toBe(true);
142
- if (r.ok) {
143
- expect(r.providerKey).toBe('openai');
144
- expect(r.apiKey).toBe('sk-env-test');
145
- expect(r.modelId).toBe('openai:gpt-x');
146
- expect(r.providerModelId).toBe('gpt-x');
147
- }
148
- });
149
- it('blocks when the monthly budget is exceeded and enforcement is on', async () => {
150
- process.env.OPENAI_API_KEY = 'sk-env-test';
151
- const { db } = makeDb({
152
- providers: [conn()],
153
- settings: {
154
- defaultModelId: 'openai:gpt-x',
155
- features: [CONTENT_FEATURE],
156
- budget: { alertAtPercentages: [], disableWhenExceeded: true, monthlyTokenLimit: 100 },
157
- },
158
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
159
- auditRows: [{ details: { totalTokensUsed: 250 } }],
160
- });
161
- const r = await resolveFeatureRuntime(db, KEY);
162
- expect(r.ok).toBe(false);
163
- if (!r.ok)
164
- expect(r.code).toBe('budget_exceeded');
165
- });
166
- });
167
- describe('generateTextForFeature', () => {
168
- function okFetch(body) {
169
- return vi.fn(async () => new Response(JSON.stringify(body), {
170
- status: 200,
171
- headers: { 'content-type': 'application/json' },
172
- }));
173
- }
174
- it('generates text and records real token usage', async () => {
175
- process.env.OPENAI_API_KEY = 'sk-env-test';
176
- const { db, created } = makeDb({
177
- providers: [conn()],
178
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
179
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
180
- });
181
- const fetchImpl = okFetch({
182
- choices: [{ message: { content: 'rewritten copy' } }],
183
- usage: { prompt_tokens: 12, completion_tokens: 34, total_tokens: 46 },
184
- });
185
- const r = await generateTextForFeature(db, KEY, {
186
- prompt: 'hello',
187
- system: 'be terse',
188
- userId: 'u1',
189
- fetchImpl,
190
- });
191
- expect(r.ok).toBe(true);
192
- if (r.ok) {
193
- expect(r.text).toBe('rewritten copy');
194
- expect(r.usage.totalTokens).toBe(46);
195
- expect(r.modelId).toBe('openai:gpt-x');
196
- }
197
- expect(fetchImpl).toHaveBeenCalledTimes(1);
198
- // A usage audit row is recorded with fields the usage meter reads.
199
- expect(created).toHaveLength(1);
200
- expect(created[0].event).toBe('ai_usage');
201
- expect(created[0].details.totalTokensUsed).toBe(46);
202
- expect(created[0].details.feature).toBe(KEY);
203
- });
204
- it('surfaces a provider HTTP failure as provider_error without recording usage', async () => {
205
- process.env.OPENAI_API_KEY = 'sk-env-test';
206
- const { db, created } = makeDb({
207
- providers: [conn()],
208
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
209
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
210
- });
211
- const fetchImpl = vi.fn(async () => new Response('nope', { status: 401 }));
212
- const r = await generateTextForFeature(db, KEY, { prompt: 'hello', fetchImpl });
213
- expect(r.ok).toBe(false);
214
- if (!r.ok)
215
- expect(r.code).toBe('provider_error');
216
- expect(created).toHaveLength(0);
217
- });
218
- it('includes provider error detail for HTTP 400 responses', async () => {
219
- process.env.OPENAI_API_KEY = 'sk-env-test';
220
- const { db } = makeDb({
221
- providers: [conn()],
222
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
223
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
224
- });
225
- const fetchImpl = vi.fn(async () => new Response(JSON.stringify({ error: { message: 'The model `gpt-x` does not exist.' } }), {
226
- status: 400,
227
- headers: { 'content-type': 'application/json' },
228
- }));
229
- const r = await generateTextForFeature(db, KEY, { prompt: 'hello', fetchImpl });
230
- expect(r.ok).toBe(false);
231
- if (!r.ok) {
232
- expect(r.code).toBe('provider_error');
233
- expect(r.message).toContain('does not exist');
234
- }
235
- });
236
- it('remaps legacy Anthropic curated model ids before calling the provider', async () => {
237
- process.env.ANTHROPIC_API_KEY = 'sk-ant-test';
238
- const { db } = makeDb({
239
- providers: [{ ...conn(), id: 'p-anthropic', provider: 'anthropic' }],
240
- settings: {
241
- defaultModelId: 'anthropic:claude-sonnet-4-latest',
242
- defaultProviderId: 'p-anthropic',
243
- features: [CONTENT_FEATURE],
244
- },
245
- catalog: {
246
- 'p-anthropic': {
247
- models: [model('anthropic:claude-sonnet-4-latest', { text: true })],
248
- },
249
- },
250
- });
251
- let sentBody;
252
- const fetchImpl = vi.fn(async (_url, init) => {
253
- sentBody = JSON.parse(init.body);
254
- return new Response(JSON.stringify({
255
- content: [{ type: 'text', text: 'ok' }],
256
- usage: { input_tokens: 1, output_tokens: 1 },
257
- }), { status: 200, headers: { 'content-type': 'application/json' } });
258
- });
259
- const r = await generateTextForFeature(db, KEY, { prompt: 'hello', fetchImpl });
260
- expect(r.ok).toBe(true);
261
- expect(sentBody?.model).toBe('claude-sonnet-4-6');
262
- });
263
- it('omits temperature for reasoning models such as claude-opus-4-8', async () => {
264
- process.env.ANTHROPIC_API_KEY = 'sk-ant-test';
265
- const { db } = makeDb({
266
- providers: [{ ...conn(), id: 'p-anthropic', provider: 'anthropic' }],
267
- settings: {
268
- defaultModelId: 'anthropic:claude-opus-4-8',
269
- defaultProviderId: 'p-anthropic',
270
- features: [CONTENT_FEATURE],
271
- },
272
- catalog: {
273
- 'p-anthropic': {
274
- models: [model('anthropic:claude-opus-4-8', { text: true, reasoning: true })],
275
- },
276
- },
277
- });
278
- let sentBody;
279
- const fetchImpl = vi.fn(async (_url, init) => {
280
- sentBody = JSON.parse(init.body);
281
- return new Response(JSON.stringify({
282
- content: [{ type: 'text', text: 'ok' }],
283
- usage: { input_tokens: 1, output_tokens: 1 },
284
- }), { status: 200, headers: { 'content-type': 'application/json' } });
285
- });
286
- const r = await generateTextForFeature(db, KEY, {
287
- prompt: 'hello',
288
- temperature: 0.3,
289
- fetchImpl,
290
- });
291
- expect(r.ok).toBe(true);
292
- expect(sentBody?.model).toBe('claude-opus-4-8');
293
- expect(sentBody?.temperature).toBeUndefined();
294
- });
295
- it('still sends temperature for non-reasoning text models', async () => {
296
- process.env.OPENAI_API_KEY = 'sk-env-test';
297
- const { db } = makeDb({
298
- providers: [conn()],
299
- settings: { defaultModelId: 'openai:gpt-x', features: [CONTENT_FEATURE] },
300
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
301
- });
302
- let sentBody;
303
- const fetchImpl = vi.fn(async (_url, init) => {
304
- sentBody = JSON.parse(init.body);
305
- return new Response(JSON.stringify({
306
- choices: [{ message: { content: 'ok' } }],
307
- usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 },
308
- }), { status: 200, headers: { 'content-type': 'application/json' } });
309
- });
310
- const r = await generateTextForFeature(db, KEY, {
311
- prompt: 'hello',
312
- temperature: 0.3,
313
- fetchImpl,
314
- });
315
- expect(r.ok).toBe(true);
316
- expect(sentBody?.temperature).toBe(0.3);
317
- });
318
- it('injects the active brand voice into the system prompt when opted in', async () => {
319
- process.env.OPENAI_API_KEY = 'sk-env-test';
320
- const { db } = makeDb({
321
- providers: [conn()],
322
- settings: {
323
- defaultModelId: 'openai:gpt-x',
324
- features: [CONTENT_FEATURE],
325
- brandVoice: {
326
- enabled: true,
327
- name: 'Acme',
328
- tone: 'confident, warm',
329
- guidelines: 'No jargon.',
330
- },
331
- },
332
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
333
- });
334
- let sentBody;
335
- const fetchImpl = vi.fn(async (_url, init) => {
336
- sentBody = JSON.parse(init.body);
337
- return new Response(JSON.stringify({
338
- choices: [{ message: { content: 'ok' } }],
339
- usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 },
340
- }), { status: 200, headers: { 'content-type': 'application/json' } });
341
- });
342
- const r = await generateTextForFeature(db, KEY, {
343
- prompt: 'write a headline',
344
- system: 'Be concise.',
345
- useBrandVoice: true,
346
- fetchImpl,
347
- });
348
- expect(r.ok).toBe(true);
349
- const systemMsg = sentBody?.messages.find((m) => m.role === 'system')?.content ?? '';
350
- expect(systemMsg).toContain('brand voice');
351
- expect(systemMsg).toContain('confident, warm');
352
- // Task instruction still present, after the voice.
353
- expect(systemMsg).toContain('Be concise.');
354
- });
355
- it('does NOT inject brand voice unless the caller opts in', async () => {
356
- process.env.OPENAI_API_KEY = 'sk-env-test';
357
- const { db } = makeDb({
358
- providers: [conn()],
359
- settings: {
360
- defaultModelId: 'openai:gpt-x',
361
- features: [CONTENT_FEATURE],
362
- brandVoice: { enabled: true, name: 'Acme', tone: 'confident', guidelines: 'No jargon.' },
363
- },
364
- catalog: { 'p-openai': { models: [model('openai:gpt-x', { text: true })] } },
365
- });
366
- let sentBody;
367
- const fetchImpl = vi.fn(async (_url, init) => {
368
- sentBody = JSON.parse(init.body);
369
- return new Response(JSON.stringify({
370
- choices: [{ message: { content: 'ok' } }],
371
- usage: { prompt_tokens: 1, completion_tokens: 1, total_tokens: 2 },
372
- }), { status: 200, headers: { 'content-type': 'application/json' } });
373
- });
374
- await generateTextForFeature(db, KEY, { prompt: 'x', system: 'Be concise.', fetchImpl });
375
- const systemMsg = sentBody?.messages.find((m) => m.role === 'system')?.content ?? '';
376
- expect(systemMsg).toBe('Be concise.');
377
- expect(systemMsg).not.toContain('brand voice');
378
- });
379
- it('short-circuits a disabled feature before any network call', async () => {
380
- const { db } = makeDb({
381
- providers: [conn()],
382
- settings: { features: [{ ...CONTENT_FEATURE, enabled: false }] },
383
- });
384
- const fetchImpl = vi.fn();
385
- const r = await generateTextForFeature(db, KEY, { prompt: 'hi', fetchImpl });
386
- expect(r.ok).toBe(false);
387
- if (!r.ok)
388
- expect(r.code).toBe('feature_disabled');
389
- expect(fetchImpl).not.toHaveBeenCalled();
390
- });
391
- });
392
- //# sourceMappingURL=runtime.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"runtime.test.js","sourceRoot":"","sources":["../../../src/__tests__/ai/runtime.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=sampling.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sampling.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/ai/sampling.test.ts"],"names":[],"mappings":""}
@@ -1,25 +0,0 @@
1
- import { describe, expect, it } from 'vitest';
2
- import { modelDisallowsSampling, providerModelIdDisallowsSampling, resolveTemperatureForModel, samplingParamProviderMessage, } from '../../ai/sampling.js';
3
- describe('ai/sampling', () => {
4
- it('blocks sampling for catalog reasoning models', () => {
5
- expect(modelDisallowsSampling('claude-sonnet-4-6', { reasoning: true })).toBe(true);
6
- expect(modelDisallowsSampling('claude-sonnet-4-6', { reasoning: false })).toBe(false);
7
- });
8
- it('blocks sampling for Anthropic Opus 4.7+ wire ids', () => {
9
- expect(providerModelIdDisallowsSampling('claude-opus-4-7')).toBe(true);
10
- expect(providerModelIdDisallowsSampling('claude-opus-4-8')).toBe(true);
11
- expect(providerModelIdDisallowsSampling('claude-opus-4-6')).toBe(false);
12
- });
13
- it('blocks sampling for OpenAI o-series wire ids', () => {
14
- expect(providerModelIdDisallowsSampling('o3-mini')).toBe(true);
15
- expect(providerModelIdDisallowsSampling('gpt-4o')).toBe(false);
16
- });
17
- it('strips temperature when sampling is disallowed', () => {
18
- expect(resolveTemperatureForModel('claude-opus-4-8', { reasoning: true }, 0.3)).toBeUndefined();
19
- expect(resolveTemperatureForModel('claude-sonnet-4-6', { reasoning: false }, 0.3)).toBe(0.3);
20
- });
21
- it('maps provider temperature deprecation to an actionable message', () => {
22
- expect(samplingParamProviderMessage('temperature is deprecated for this model')).toContain('does not support temperature');
23
- });
24
- });
25
- //# sourceMappingURL=sampling.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"sampling.test.js","sourceRoot":"","sources":["../../../src/__tests__/ai/sampling.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAE7C,OAAO,EACL,sBAAsB,EACtB,gCAAgC,EAChC,0BAA0B,EAC1B,4BAA4B,GAC7B,MAAM,sBAAsB,CAAA;AAE7B,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACnF,MAAM,CAAC,sBAAsB,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACvF,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtE,MAAM,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACtE,MAAM,CAAC,gCAAgC,CAAC,iBAAiB,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACzE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,gCAAgC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9D,MAAM,CAAC,gCAAgC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;QACxD,MAAM,CAAC,0BAA0B,CAAC,iBAAiB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,aAAa,EAAE,CAAA;QAC/F,MAAM,CAAC,0BAA0B,CAAC,mBAAmB,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC9F,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,MAAM,CAAC,4BAA4B,CAAC,0CAA0C,CAAC,CAAC,CAAC,SAAS,CACxF,8BAA8B,CAC/B,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=admin-contracts.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"admin-contracts.test.d.ts","sourceRoot":"","sources":["../../../src/__tests__/api/admin-contracts.test.ts"],"names":[],"mappings":""}
@@ -1,186 +0,0 @@
1
- import { beforeEach, describe, expect, it } from 'vitest';
2
- import { handleActuateAPI } from '../../api/index.js';
3
- import { createSession } from '../../auth/session.js';
4
- import { initDB } from '../../db.js';
5
- const SECRET = 'test-secret-for-admin-contracts-1234567890';
6
- async function authHeaders() {
7
- const token = await createSession({ userId: 'admin-1', role: 'ADMIN', sessionId: 'session-1' }, { secret: SECRET });
8
- return { cookie: `actuate_session=${token}` };
9
- }
10
- function createMockDB() {
11
- return {
12
- session: {
13
- findUnique: async () => ({ revokedAt: null }),
14
- },
15
- user: {},
16
- media: {
17
- findMany: async () => [
18
- {
19
- id: 'media-1',
20
- filename: 'hero.jpg',
21
- mimeType: 'image/jpeg',
22
- fileSize: 2048,
23
- storageKey: 'uploads/hero.jpg',
24
- altText: 'Hero image',
25
- title: 'Hero',
26
- width: 1200,
27
- height: 800,
28
- createdAt: new Date('2026-01-01T00:00:00.000Z'),
29
- updatedAt: new Date('2026-01-02T00:00:00.000Z'),
30
- },
31
- ],
32
- count: async () => 1,
33
- },
34
- document: {
35
- findMany: async (args) => {
36
- if (args?.where?.collection === 'forms') {
37
- return [
38
- {
39
- id: 'form-1',
40
- title: 'Legacy Title',
41
- data: {
42
- name: 'Contact Form',
43
- description: 'Contact us',
44
- fields: [{ name: 'email' }, { name: 'message' }],
45
- },
46
- createdAt: new Date('2026-01-03T00:00:00.000Z'),
47
- updatedAt: new Date('2026-01-04T00:00:00.000Z'),
48
- },
49
- ];
50
- }
51
- return [
52
- {
53
- id: 'page-1',
54
- collection: 'pages',
55
- title: 'Home',
56
- slug: 'home',
57
- data: {
58
- title: 'Home',
59
- slug: 'home',
60
- metaTitle: 'Home Meta',
61
- metaDescription: 'Home description',
62
- canonical: 'https://example.com/',
63
- schemaType: 'WebPage',
64
- },
65
- structuredData: { score: 82, issues: ['missing-og'] },
66
- updatedAt: new Date('2026-01-05T00:00:00.000Z'),
67
- },
68
- ];
69
- },
70
- },
71
- formSubmission: {
72
- findMany: async () => [
73
- {
74
- id: 'submission-1',
75
- data: { name: 'Ada', email: 'ada@example.com', message: 'Hello' },
76
- attribution: { source: 'google', medium: 'cpc' },
77
- status: 'new',
78
- submittedAt: new Date('2026-01-06T00:00:00.000Z'),
79
- },
80
- ],
81
- count: async () => 1,
82
- groupBy: async () => [{ formId: 'form-1', _count: { _all: 1 } }],
83
- },
84
- redirect: {
85
- findMany: async () => [
86
- {
87
- id: 'redirect-1',
88
- source: '/old',
89
- destination: '/new',
90
- statusCode: 301,
91
- createdAt: new Date('2026-01-07T00:00:00.000Z'),
92
- updatedAt: new Date('2026-01-08T00:00:00.000Z'),
93
- },
94
- ],
95
- count: async () => 1,
96
- },
97
- };
98
- }
99
- describe('admin API response contracts', () => {
100
- beforeEach(() => {
101
- process.env.CMS_SECRET = SECRET;
102
- const db = createMockDB();
103
- initDB(db);
104
- });
105
- it('normalizes media list items to the shape consumed by cms-admin', async () => {
106
- const handler = handleActuateAPI({ prismaClient: createMockDB() });
107
- const response = await handler(new Request('https://example.com/api/cms/media', {
108
- headers: await authHeaders(),
109
- }));
110
- await expect(response.json()).resolves.toMatchObject({
111
- data: {
112
- data: [
113
- {
114
- id: 'media-1',
115
- name: 'hero.jpg',
116
- type: 'image/jpeg',
117
- size: '2.0 KB',
118
- sizeBytes: 2048,
119
- url: '',
120
- altTag: 'Hero image',
121
- title: 'Hero',
122
- dimensions: '1200x800',
123
- },
124
- ],
125
- total: 1,
126
- },
127
- });
128
- });
129
- it('normalizes forms, submissions, redirects, and SEO pages for cms-admin', async () => {
130
- const handler = handleActuateAPI({ prismaClient: createMockDB() });
131
- const headers = await authHeaders();
132
- const [forms, submissions, redirects, seoPages] = await Promise.all([
133
- handler(new Request('https://example.com/api/cms/forms', { headers })),
134
- handler(new Request('https://example.com/api/cms/forms/form-1/submissions', { headers })),
135
- handler(new Request('https://example.com/api/cms/redirects', { headers })),
136
- handler(new Request('https://example.com/api/cms/seo/pages', { headers })),
137
- ]);
138
- // `fields` is now the typed field array; `fieldCount` is the legacy count
139
- // alias and `submissions` mirrors `totalEntries` for older admin views.
140
- const formsBody = (await forms.json());
141
- expect(formsBody.data[0]).toMatchObject({
142
- id: 'form-1',
143
- name: 'Contact Form',
144
- fieldCount: 2,
145
- submissions: 1,
146
- });
147
- expect(Array.isArray(formsBody.data[0].fields)).toBe(true);
148
- expect(formsBody.data[0].fields.length).toBe(2);
149
- await expect(submissions.json()).resolves.toMatchObject({
150
- data: {
151
- submissions: [
152
- {
153
- id: 'submission-1',
154
- name: 'Ada',
155
- email: 'ada@example.com',
156
- message: 'Hello',
157
- status: 'new',
158
- attribution: { source: 'google', medium: 'cpc' },
159
- },
160
- ],
161
- total: 1,
162
- },
163
- });
164
- await expect(redirects.json()).resolves.toMatchObject({
165
- data: [{ id: 'redirect-1', from: '/old', to: '/new', type: '301' }],
166
- total: 1,
167
- page: 1,
168
- pageSize: 100,
169
- totalPages: 1,
170
- });
171
- await expect(seoPages.json()).resolves.toMatchObject({
172
- data: [
173
- {
174
- id: 'page-1',
175
- url: '/',
176
- title: 'Home',
177
- score: 82,
178
- issues: 1,
179
- metaTitle: 'Home Meta',
180
- metaDescription: 'Home description',
181
- },
182
- ],
183
- });
184
- });
185
- });
186
- //# sourceMappingURL=admin-contracts.test.js.map