@prenta/core 6.0.0 → 7.1.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 (441) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/dist/ai/brand-voice-analyze.d.ts +1 -4
  3. package/dist/ai/brand-voice-analyze.d.ts.map +1 -1
  4. package/dist/ai/brand-voice-analyze.js +1 -2
  5. package/dist/ai/brand-voice-analyze.js.map +1 -1
  6. package/dist/ai/brand-voice-sources.d.ts +0 -2
  7. package/dist/ai/brand-voice-sources.d.ts.map +1 -1
  8. package/dist/ai/brand-voice-sources.js +2 -2
  9. package/dist/ai/brand-voice-sources.js.map +1 -1
  10. package/dist/ai/brand-voice-structured.d.ts +6 -6
  11. package/dist/ai/brand-voice-structured.d.ts.map +1 -1
  12. package/dist/ai/catalog.d.ts +8 -0
  13. package/dist/ai/catalog.d.ts.map +1 -1
  14. package/dist/ai/catalog.js +22 -0
  15. package/dist/ai/catalog.js.map +1 -1
  16. package/dist/ai/config-store.d.ts +18 -4
  17. package/dist/ai/config-store.d.ts.map +1 -1
  18. package/dist/ai/config-store.js +115 -20
  19. package/dist/ai/config-store.js.map +1 -1
  20. package/dist/ai/content-writing-generate.d.ts +10 -8
  21. package/dist/ai/content-writing-generate.d.ts.map +1 -1
  22. package/dist/ai/content-writing-generate.js +24 -56
  23. package/dist/ai/content-writing-generate.js.map +1 -1
  24. package/dist/ai/embeddings.d.ts +28 -0
  25. package/dist/ai/embeddings.d.ts.map +1 -0
  26. package/dist/ai/embeddings.js +36 -0
  27. package/dist/ai/embeddings.js.map +1 -0
  28. package/dist/ai/feature-defaults.d.ts +3 -3
  29. package/dist/ai/feature-defaults.d.ts.map +1 -1
  30. package/dist/ai/feature-defaults.js +24 -14
  31. package/dist/ai/feature-defaults.js.map +1 -1
  32. package/dist/ai/index.d.ts +15 -16
  33. package/dist/ai/index.d.ts.map +1 -1
  34. package/dist/ai/index.js +14 -15
  35. package/dist/ai/index.js.map +1 -1
  36. package/dist/ai/models.d.ts +7 -3
  37. package/dist/ai/models.d.ts.map +1 -1
  38. package/dist/ai/models.js +10 -5
  39. package/dist/ai/models.js.map +1 -1
  40. package/dist/ai/plugin-errors.d.ts +9 -3
  41. package/dist/ai/plugin-errors.d.ts.map +1 -1
  42. package/dist/ai/plugin-errors.js +9 -3
  43. package/dist/ai/plugin-errors.js.map +1 -1
  44. package/dist/ai/plugin-import.d.ts +9 -1
  45. package/dist/ai/plugin-import.d.ts.map +1 -1
  46. package/dist/ai/plugin-import.js +9 -1
  47. package/dist/ai/plugin-import.js.map +1 -1
  48. package/dist/ai/prompt-safety.d.ts +23 -0
  49. package/dist/ai/prompt-safety.d.ts.map +1 -0
  50. package/dist/ai/prompt-safety.js +34 -0
  51. package/dist/ai/prompt-safety.js.map +1 -0
  52. package/dist/ai/providers/anthropic.d.ts.map +1 -1
  53. package/dist/ai/providers/anthropic.js +16 -1
  54. package/dist/ai/providers/anthropic.js.map +1 -1
  55. package/dist/ai/providers/http.d.ts +7 -2
  56. package/dist/ai/providers/http.d.ts.map +1 -1
  57. package/dist/ai/providers/http.js +13 -2
  58. package/dist/ai/providers/http.js.map +1 -1
  59. package/dist/ai/providers/index.d.ts +0 -7
  60. package/dist/ai/providers/index.d.ts.map +1 -1
  61. package/dist/ai/providers/index.js +1 -1
  62. package/dist/ai/providers/index.js.map +1 -1
  63. package/dist/ai/resolve.d.ts +7 -1
  64. package/dist/ai/resolve.d.ts.map +1 -1
  65. package/dist/ai/resolve.js +36 -3
  66. package/dist/ai/resolve.js.map +1 -1
  67. package/dist/ai/runtime-response.d.ts +27 -0
  68. package/dist/ai/runtime-response.d.ts.map +1 -0
  69. package/dist/ai/runtime-response.js +75 -0
  70. package/dist/ai/runtime-response.js.map +1 -0
  71. package/dist/ai/runtime.d.ts +9 -7
  72. package/dist/ai/runtime.d.ts.map +1 -1
  73. package/dist/ai/runtime.js +14 -19
  74. package/dist/ai/runtime.js.map +1 -1
  75. package/dist/ai/tasks/alt-text.d.ts +82 -0
  76. package/dist/ai/tasks/alt-text.d.ts.map +1 -0
  77. package/dist/ai/tasks/alt-text.js +171 -0
  78. package/dist/ai/tasks/alt-text.js.map +1 -0
  79. package/dist/ai/tasks/document-generation.d.ts +102 -0
  80. package/dist/ai/tasks/document-generation.d.ts.map +1 -0
  81. package/dist/ai/tasks/document-generation.js +321 -0
  82. package/dist/ai/tasks/document-generation.js.map +1 -0
  83. package/dist/ai/tasks/link-embeddings.d.ts +55 -0
  84. package/dist/ai/tasks/link-embeddings.d.ts.map +1 -0
  85. package/dist/ai/tasks/link-embeddings.js +160 -0
  86. package/dist/ai/tasks/link-embeddings.js.map +1 -0
  87. package/dist/ai/types.d.ts +15 -19
  88. package/dist/ai/types.d.ts.map +1 -1
  89. package/dist/ai/types.js +6 -7
  90. package/dist/ai/types.js.map +1 -1
  91. package/dist/ai/usage.d.ts +6 -4
  92. package/dist/ai/usage.d.ts.map +1 -1
  93. package/dist/ai/usage.js +6 -4
  94. package/dist/ai/usage.js.map +1 -1
  95. package/dist/ai/vector.d.ts +8 -0
  96. package/dist/ai/vector.d.ts.map +1 -0
  97. package/dist/ai/vector.js +24 -0
  98. package/dist/ai/vector.js.map +1 -0
  99. package/dist/api/responses.d.ts +1 -1
  100. package/dist/api/responses.d.ts.map +1 -1
  101. package/dist/api/responses.js +1 -1
  102. package/dist/api/responses.js.map +1 -1
  103. package/dist/api/route-helpers.d.ts +2 -19
  104. package/dist/api/route-helpers.d.ts.map +1 -1
  105. package/dist/api/route-helpers.js +11 -22
  106. package/dist/api/route-helpers.js.map +1 -1
  107. package/dist/api/routes/ai-authoring.d.ts.map +1 -1
  108. package/dist/api/routes/ai-authoring.js +132 -144
  109. package/dist/api/routes/ai-authoring.js.map +1 -1
  110. package/dist/api/routes/ai-seo.d.ts.map +1 -1
  111. package/dist/api/routes/ai-seo.js +44 -120
  112. package/dist/api/routes/ai-seo.js.map +1 -1
  113. package/dist/api/routes/ai-settings.d.ts.map +1 -1
  114. package/dist/api/routes/ai-settings.js +76 -28
  115. package/dist/api/routes/ai-settings.js.map +1 -1
  116. package/dist/api/routes/security-center.d.ts.map +1 -1
  117. package/dist/api/routes/security-center.js +5 -39
  118. package/dist/api/routes/security-center.js.map +1 -1
  119. package/dist/api/routes/seo-public.d.ts +7 -5
  120. package/dist/api/routes/seo-public.d.ts.map +1 -1
  121. package/dist/api/routes/seo-public.js +16 -1
  122. package/dist/api/routes/seo-public.js.map +1 -1
  123. package/dist/api/routes/seo.d.ts.map +1 -1
  124. package/dist/api/routes/seo.js +11 -10
  125. package/dist/api/routes/seo.js.map +1 -1
  126. package/dist/api/routes/url-resolution.d.ts.map +1 -1
  127. package/dist/api/routes/url-resolution.js +2 -1
  128. package/dist/api/routes/url-resolution.js.map +1 -1
  129. package/dist/api/security-headers.d.ts +8 -0
  130. package/dist/api/security-headers.d.ts.map +1 -0
  131. package/dist/api/security-headers.js +13 -0
  132. package/dist/api/security-headers.js.map +1 -0
  133. package/dist/appearance/favicon-icon.d.ts +1 -1
  134. package/dist/appearance/favicon-icon.d.ts.map +1 -1
  135. package/dist/appearance/favicon-icon.js +1 -1
  136. package/dist/appearance/favicon-icon.js.map +1 -1
  137. package/dist/auth/index.d.ts +0 -6
  138. package/dist/auth/index.d.ts.map +1 -1
  139. package/dist/auth/index.js +0 -3
  140. package/dist/auth/index.js.map +1 -1
  141. package/dist/auth/invites.d.ts +0 -5
  142. package/dist/auth/invites.d.ts.map +1 -1
  143. package/dist/auth/invites.js +3 -3
  144. package/dist/auth/invites.js.map +1 -1
  145. package/dist/auth/team.d.ts +4 -3
  146. package/dist/auth/team.d.ts.map +1 -1
  147. package/dist/auth/user-admin.d.ts +2 -1
  148. package/dist/auth/user-admin.d.ts.map +1 -1
  149. package/dist/billing/stripe-meter.d.ts +2 -1
  150. package/dist/billing/stripe-meter.d.ts.map +1 -1
  151. package/dist/cache/http.d.ts +0 -11
  152. package/dist/cache/http.d.ts.map +1 -1
  153. package/dist/cache/http.js +1 -1
  154. package/dist/cache/http.js.map +1 -1
  155. package/dist/cache/index.d.ts +0 -5
  156. package/dist/cache/index.d.ts.map +1 -1
  157. package/dist/collections/presets.d.ts +21 -3
  158. package/dist/collections/presets.d.ts.map +1 -1
  159. package/dist/collections/presets.js +64 -12
  160. package/dist/collections/presets.js.map +1 -1
  161. package/dist/config/types.d.ts +26 -19
  162. package/dist/config/types.d.ts.map +1 -1
  163. package/dist/content/index.d.ts +2 -3
  164. package/dist/content/index.d.ts.map +1 -1
  165. package/dist/content/index.js +1 -2
  166. package/dist/content/index.js.map +1 -1
  167. package/dist/content/structured-data.d.ts +0 -14
  168. package/dist/content/structured-data.d.ts.map +1 -1
  169. package/dist/content/structured-data.js +3 -14
  170. package/dist/content/structured-data.js.map +1 -1
  171. package/dist/cron/index.d.ts +2 -3
  172. package/dist/cron/index.d.ts.map +1 -1
  173. package/dist/cron/index.js +0 -2
  174. package/dist/cron/index.js.map +1 -1
  175. package/dist/db/client-types.d.ts +2 -1
  176. package/dist/db/client-types.d.ts.map +1 -1
  177. package/dist/db.d.ts +0 -2
  178. package/dist/db.d.ts.map +1 -1
  179. package/dist/db.js +0 -1
  180. package/dist/db.js.map +1 -1
  181. package/dist/diagnostics/env.d.ts +1 -1
  182. package/dist/diagnostics/env.d.ts.map +1 -1
  183. package/dist/diagnostics/logger.d.ts +0 -24
  184. package/dist/diagnostics/logger.d.ts.map +1 -1
  185. package/dist/fields/presets.d.ts +7 -0
  186. package/dist/fields/presets.d.ts.map +1 -1
  187. package/dist/fields/presets.js +17 -0
  188. package/dist/fields/presets.js.map +1 -1
  189. package/dist/forms/entries.d.ts +0 -7
  190. package/dist/forms/entries.d.ts.map +1 -1
  191. package/dist/forms/entries.js +1 -19
  192. package/dist/forms/entries.js.map +1 -1
  193. package/dist/forms/files.d.ts +1 -1
  194. package/dist/forms/files.d.ts.map +1 -1
  195. package/dist/forms/index.d.ts +4 -6
  196. package/dist/forms/index.d.ts.map +1 -1
  197. package/dist/forms/index.js +3 -5
  198. package/dist/forms/index.js.map +1 -1
  199. package/dist/forms/prefetch.d.ts +0 -6
  200. package/dist/forms/prefetch.d.ts.map +1 -1
  201. package/dist/forms/service.d.ts +0 -4
  202. package/dist/forms/service.d.ts.map +1 -1
  203. package/dist/forms/service.js +2 -8
  204. package/dist/forms/service.js.map +1 -1
  205. package/dist/forms/webmcp.d.ts +0 -2
  206. package/dist/forms/webmcp.d.ts.map +1 -1
  207. package/dist/forms/webmcp.js +1 -1
  208. package/dist/forms/webmcp.js.map +1 -1
  209. package/dist/media/denormalize.d.ts +0 -7
  210. package/dist/media/denormalize.d.ts.map +1 -1
  211. package/dist/media/index.d.ts +0 -8
  212. package/dist/media/index.d.ts.map +1 -1
  213. package/dist/media/index.js +0 -5
  214. package/dist/media/index.js.map +1 -1
  215. package/dist/media/optimize.d.ts +0 -4
  216. package/dist/media/optimize.d.ts.map +1 -1
  217. package/dist/media/optimize.js +4 -4
  218. package/dist/media/optimize.js.map +1 -1
  219. package/dist/media/reoptimize.d.ts +2 -3
  220. package/dist/media/reoptimize.d.ts.map +1 -1
  221. package/dist/media/reoptimize.js +2 -2
  222. package/dist/media/reoptimize.js.map +1 -1
  223. package/dist/media/seo.d.ts +3 -8
  224. package/dist/media/seo.d.ts.map +1 -1
  225. package/dist/media/seo.js +1 -1
  226. package/dist/media/seo.js.map +1 -1
  227. package/dist/plan/features.d.ts +0 -1
  228. package/dist/plan/features.d.ts.map +1 -1
  229. package/dist/plan/features.js +0 -16
  230. package/dist/plan/features.js.map +1 -1
  231. package/dist/preview/event-bus.d.ts +2 -1
  232. package/dist/preview/event-bus.d.ts.map +1 -1
  233. package/dist/preview/index.d.ts +2 -1
  234. package/dist/preview/index.d.ts.map +1 -1
  235. package/dist/preview/sse-stream.d.ts +0 -13
  236. package/dist/preview/sse-stream.d.ts.map +1 -1
  237. package/dist/preview/sse-stream.js +2 -2
  238. package/dist/preview/sse-stream.js.map +1 -1
  239. package/dist/realtime/notifications.d.ts +4 -3
  240. package/dist/realtime/notifications.d.ts.map +1 -1
  241. package/dist/redirects/index.d.ts +4 -16
  242. package/dist/redirects/index.d.ts.map +1 -1
  243. package/dist/redirects/index.js +2 -9
  244. package/dist/redirects/index.js.map +1 -1
  245. package/dist/redirects/match.d.ts +0 -2
  246. package/dist/redirects/match.d.ts.map +1 -1
  247. package/dist/redirects/match.js +1 -1
  248. package/dist/redirects/match.js.map +1 -1
  249. package/dist/redirects/recovery.d.ts +0 -2
  250. package/dist/redirects/recovery.d.ts.map +1 -1
  251. package/dist/redirects/recovery.js +1 -1
  252. package/dist/redirects/recovery.js.map +1 -1
  253. package/dist/redirects/rerank.d.ts +4 -3
  254. package/dist/redirects/rerank.d.ts.map +1 -1
  255. package/dist/redirects/rerank.js +3 -18
  256. package/dist/redirects/rerank.js.map +1 -1
  257. package/dist/sections/validate.d.ts +0 -2
  258. package/dist/sections/validate.d.ts.map +1 -1
  259. package/dist/sections/validate.js +1 -1
  260. package/dist/sections/validate.js.map +1 -1
  261. package/dist/security/access.d.ts +0 -9
  262. package/dist/security/access.d.ts.map +1 -1
  263. package/dist/security/access.js +1 -1
  264. package/dist/security/access.js.map +1 -1
  265. package/dist/security/audit.d.ts +0 -20
  266. package/dist/security/audit.d.ts.map +1 -1
  267. package/dist/security/audit.js.map +1 -1
  268. package/dist/security/index.d.ts +2 -20
  269. package/dist/security/index.d.ts.map +1 -1
  270. package/dist/security/index.js +2 -7
  271. package/dist/security/index.js.map +1 -1
  272. package/dist/security/internal-keys.d.ts +0 -10
  273. package/dist/security/internal-keys.d.ts.map +1 -1
  274. package/dist/security/internal-keys.js +2 -2
  275. package/dist/security/internal-keys.js.map +1 -1
  276. package/dist/security/rate-limit-policy.d.ts +0 -2
  277. package/dist/security/rate-limit-policy.d.ts.map +1 -1
  278. package/dist/security/rate-limit-policy.js +1 -1
  279. package/dist/security/rate-limit-policy.js.map +1 -1
  280. package/dist/security/rate-limit.d.ts +2 -5
  281. package/dist/security/rate-limit.d.ts.map +1 -1
  282. package/dist/security/rate-limit.js +2 -2
  283. package/dist/security/rate-limit.js.map +1 -1
  284. package/dist/security/sanitize.d.ts +0 -3
  285. package/dist/security/sanitize.d.ts.map +1 -1
  286. package/dist/security/sanitize.js +0 -1
  287. package/dist/security/sanitize.js.map +1 -1
  288. package/dist/security/upload.d.ts +0 -3
  289. package/dist/security/upload.d.ts.map +1 -1
  290. package/dist/security/upload.js +0 -1
  291. package/dist/security/upload.js.map +1 -1
  292. package/dist/seo/ai-crawler-log.d.ts +0 -2
  293. package/dist/seo/ai-crawler-log.d.ts.map +1 -1
  294. package/dist/seo/ai-crawler-log.js +1 -1
  295. package/dist/seo/ai-crawler-log.js.map +1 -1
  296. package/dist/seo/audit-engine.d.ts +5 -5
  297. package/dist/seo/audit-engine.d.ts.map +1 -1
  298. package/dist/seo/audit-engine.js +1 -2
  299. package/dist/seo/audit-engine.js.map +1 -1
  300. package/dist/seo/audit-runner.d.ts +0 -7
  301. package/dist/seo/audit-runner.d.ts.map +1 -1
  302. package/dist/seo/audit-runner.js +1 -1
  303. package/dist/seo/audit-runner.js.map +1 -1
  304. package/dist/seo/audit-signals.d.ts +0 -2
  305. package/dist/seo/audit-signals.d.ts.map +1 -1
  306. package/dist/seo/audit-signals.js +1 -1
  307. package/dist/seo/audit-signals.js.map +1 -1
  308. package/dist/seo/autopilot-gate.d.ts +0 -1
  309. package/dist/seo/autopilot-gate.d.ts.map +1 -1
  310. package/dist/seo/autopilot-gate.js +1 -1
  311. package/dist/seo/autopilot-gate.js.map +1 -1
  312. package/dist/seo/autopilot-ledger.d.ts +2 -1
  313. package/dist/seo/autopilot-ledger.d.ts.map +1 -1
  314. package/dist/seo/autopilot-outcome.d.ts +0 -2
  315. package/dist/seo/autopilot-outcome.d.ts.map +1 -1
  316. package/dist/seo/autopilot-outcome.js +1 -1
  317. package/dist/seo/autopilot-outcome.js.map +1 -1
  318. package/dist/seo/autopilot-policy.d.ts +3 -38
  319. package/dist/seo/autopilot-policy.d.ts.map +1 -1
  320. package/dist/seo/autopilot-policy.js +3 -3
  321. package/dist/seo/autopilot-policy.js.map +1 -1
  322. package/dist/seo/autopilot.d.ts +4 -12
  323. package/dist/seo/autopilot.d.ts.map +1 -1
  324. package/dist/seo/autopilot.js +3 -3
  325. package/dist/seo/autopilot.js.map +1 -1
  326. package/dist/seo/config-store.d.ts +0 -2
  327. package/dist/seo/config-store.d.ts.map +1 -1
  328. package/dist/seo/config-store.js +1 -1
  329. package/dist/seo/config-store.js.map +1 -1
  330. package/dist/seo/digest.d.ts +8 -7
  331. package/dist/seo/digest.d.ts.map +1 -1
  332. package/dist/seo/faq-signals.d.ts +0 -4
  333. package/dist/seo/faq-signals.d.ts.map +1 -1
  334. package/dist/seo/faq-signals.js +4 -4
  335. package/dist/seo/faq-signals.js.map +1 -1
  336. package/dist/seo/fix-brief-export.d.ts +0 -2
  337. package/dist/seo/fix-brief-export.d.ts.map +1 -1
  338. package/dist/seo/fix-brief-export.js +1 -1
  339. package/dist/seo/fix-brief-export.js.map +1 -1
  340. package/dist/seo/geo-record.d.ts +0 -4
  341. package/dist/seo/geo-record.d.ts.map +1 -1
  342. package/dist/seo/geo-record.js +2 -2
  343. package/dist/seo/geo-record.js.map +1 -1
  344. package/dist/seo/geo-report.d.ts +4 -3
  345. package/dist/seo/geo-report.d.ts.map +1 -1
  346. package/dist/seo/geo-report.js +1 -1
  347. package/dist/seo/geo-report.js.map +1 -1
  348. package/dist/seo/index-status.d.ts +6 -5
  349. package/dist/seo/index-status.d.ts.map +1 -1
  350. package/dist/seo/index-status.js.map +1 -1
  351. package/dist/seo/index.d.ts +15 -90
  352. package/dist/seo/index.d.ts.map +1 -1
  353. package/dist/seo/index.js +10 -49
  354. package/dist/seo/index.js.map +1 -1
  355. package/dist/seo/issue-batch-briefs.d.ts +2 -3
  356. package/dist/seo/issue-batch-briefs.d.ts.map +1 -1
  357. package/dist/seo/issue-batch-briefs.js +2 -2
  358. package/dist/seo/issue-batch-briefs.js.map +1 -1
  359. package/dist/seo/issue-content-brief.d.ts +2 -1
  360. package/dist/seo/issue-content-brief.d.ts.map +1 -1
  361. package/dist/seo/issue-content-research.d.ts +2 -2
  362. package/dist/seo/issue-content-research.d.ts.map +1 -1
  363. package/dist/seo/issue-content-research.js +1 -1
  364. package/dist/seo/issue-content-research.js.map +1 -1
  365. package/dist/seo/issue-fix-ai.d.ts +5 -4
  366. package/dist/seo/issue-fix-ai.d.ts.map +1 -1
  367. package/dist/seo/issue-fix-ai.js +4 -19
  368. package/dist/seo/issue-fix-ai.js.map +1 -1
  369. package/dist/seo/issue-fix-apply.d.ts +2 -11
  370. package/dist/seo/issue-fix-apply.d.ts.map +1 -1
  371. package/dist/seo/issue-fix-apply.js +4 -4
  372. package/dist/seo/issue-fix-apply.js.map +1 -1
  373. package/dist/seo/issue-fix-faq.d.ts +4 -7
  374. package/dist/seo/issue-fix-faq.d.ts.map +1 -1
  375. package/dist/seo/issue-fix-faq.js +4 -4
  376. package/dist/seo/issue-fix-faq.js.map +1 -1
  377. package/dist/seo/issue-fix-link-insert.d.ts +4 -14
  378. package/dist/seo/issue-fix-link-insert.d.ts.map +1 -1
  379. package/dist/seo/issue-fix-link-insert.js +5 -4
  380. package/dist/seo/issue-fix-link-insert.js.map +1 -1
  381. package/dist/seo/issue-fix-redirect.d.ts +0 -1
  382. package/dist/seo/issue-fix-redirect.d.ts.map +1 -1
  383. package/dist/seo/issue-fix.d.ts.map +1 -1
  384. package/dist/seo/issue-fix.js +1 -0
  385. package/dist/seo/issue-fix.js.map +1 -1
  386. package/dist/seo/link-graph.d.ts +2 -3
  387. package/dist/seo/link-graph.d.ts.map +1 -1
  388. package/dist/seo/link-graph.js +0 -0
  389. package/dist/seo/link-graph.js.map +1 -1
  390. package/dist/seo/link-suggest.d.ts +8 -2
  391. package/dist/seo/link-suggest.d.ts.map +1 -1
  392. package/dist/seo/link-suggest.js +38 -50
  393. package/dist/seo/link-suggest.js.map +1 -1
  394. package/dist/seo/page-meta.d.ts +15 -10
  395. package/dist/seo/page-meta.d.ts.map +1 -1
  396. package/dist/seo/page-meta.js +31 -9
  397. package/dist/seo/page-meta.js.map +1 -1
  398. package/dist/seo/proposals-bulk-apply.d.ts +3 -2
  399. package/dist/seo/proposals-bulk-apply.d.ts.map +1 -1
  400. package/dist/seo/proposals.d.ts +2 -2
  401. package/dist/seo/proposals.d.ts.map +1 -1
  402. package/dist/seo/rendered-fetch.d.ts +2 -1
  403. package/dist/seo/rendered-fetch.d.ts.map +1 -1
  404. package/dist/seo/score.d.ts +3 -7
  405. package/dist/seo/score.d.ts.map +1 -1
  406. package/dist/seo/score.js.map +1 -1
  407. package/dist/seo/search-console/client.d.ts +0 -4
  408. package/dist/seo/search-console/client.d.ts.map +1 -1
  409. package/dist/seo/search-console/client.js +2 -2
  410. package/dist/seo/search-console/client.js.map +1 -1
  411. package/dist/seo/search-console/sync.d.ts +0 -4
  412. package/dist/seo/search-console/sync.d.ts.map +1 -1
  413. package/dist/seo/search-console/sync.js +2 -2
  414. package/dist/seo/search-console/sync.js.map +1 -1
  415. package/dist/seo/search-console/types.d.ts +2 -1
  416. package/dist/seo/search-console/types.d.ts.map +1 -1
  417. package/dist/seo/sitemap-notify.d.ts +0 -8
  418. package/dist/seo/sitemap-notify.d.ts.map +1 -1
  419. package/dist/seo/sitemap-notify.js +1 -1
  420. package/dist/seo/sitemap-notify.js.map +1 -1
  421. package/dist/seo/title-templates.d.ts +2 -5
  422. package/dist/seo/title-templates.d.ts.map +1 -1
  423. package/dist/seo/title-templates.js +2 -2
  424. package/dist/seo/title-templates.js.map +1 -1
  425. package/dist/server-site.d.ts +0 -1
  426. package/dist/server-site.d.ts.map +1 -1
  427. package/dist/server-site.js +0 -1
  428. package/dist/server-site.js.map +1 -1
  429. package/dist/storage/index.d.ts +0 -2
  430. package/dist/storage/index.d.ts.map +1 -1
  431. package/dist/storage/index.js +0 -4
  432. package/dist/storage/index.js.map +1 -1
  433. package/dist/upgrade/version-check.d.ts +0 -2
  434. package/dist/upgrade/version-check.d.ts.map +1 -1
  435. package/dist/upgrade/version-check.js +1 -1
  436. package/dist/upgrade/version-check.js.map +1 -1
  437. package/dist/webhooks/index.d.ts +0 -8
  438. package/dist/webhooks/index.d.ts.map +1 -1
  439. package/dist/webhooks/index.js +1 -16
  440. package/dist/webhooks/index.js.map +1 -1
  441. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/ai/config-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC5E,OAAO,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAW3E,MAAM,CAAC,MAAM,oBAAoB,GAAG,eAAe,CAAA;AAEnD,4EAA4E;AAC5E,MAAM,mBAAmB,GAAyC;IAChE,MAAM,EAAE,gBAAgB;IACxB,SAAS,EAAE,mBAAmB;IAC9B,GAAG,EAAE,aAAa;IAClB,MAAM,EAAE,IAAI;CACb,CAAA;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAqB;IACjD,kBAAkB,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,GAAG,CAAC;IACjC,mBAAmB,EAAE,KAAK;CAC3B,CAAA;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO;QACL,QAAQ,EAAE,oBAAoB,EAAE;QAChC,MAAM,EAAE,EAAE,GAAG,iBAAiB,EAAE,kBAAkB,EAAE,CAAC,GAAG,iBAAiB,CAAC,kBAAkB,CAAC,EAAE;QAC/F,iBAAiB,EAAE,EAAE;KACtB,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,YAAY,CAAC,QAAuB;IAClD,MAAM,MAAM,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,MAAM;QAAE,OAAO,IAAI,CAAA;IACxB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAC/B,OAAO,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,KAAK,CAAC,GAA8B;IAClD,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAA;IAC1B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,OAAO,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;AAC1D,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,IAAgE;IAEhE,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,IAAI,MAAM;QAAE,OAAO,MAAM,CAAA;IACzB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,OAAO,MAAM,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,oEAAoE;AACpE,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,IAAI,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,aAAa,CAAA;IACrD,IAAI,IAAI,CAAC,eAAe;QAAE,OAAO,UAAU,CAAA;IAC3C,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,4DAA4D;AAC5D,MAAM,UAAU,gBAAgB,CAAC,IAA0B;IACzD,MAAM,MAAM,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAA;IACrC,MAAM,oBAAoB,GAAG,MAAM,KAAK,aAAa,CAAA;IACrD,yEAAyE;IACzE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAA;IAC3D,MAAM,EAAE,eAAe,EAAE,KAAK,EAAE,GAAG,IAAI,EAAE,GAAG,IAAI,CAAA;IAChD,OAAO;QACL,GAAG,IAAI;QACP,WAAW,EAAE,SAAS;QACtB,YAAY,EAAE,MAAM;QACpB,oBAAoB;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,CAAC;KAChD,CAAA;AACH,CAAC;AAED,yEAAyE;AACzE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,SAAiB;IAEjB,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,SAAS,CAAC,CAAA;IACtD,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAA;AACjE,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,EAAW;IAC3C,MAAM,CAAC,GAAG,EAAS,CAAA;IACnB,MAAM,KAAK,GAAqB,EAAE,SAAS,EAAE,EAAE,EAAE,QAAQ,EAAE,iBAAiB,EAAE,EAAE,CAAA;IAChF,IAAI,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS;QAAE,OAAO,KAAK,CAAA;IACzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;YACrC,KAAK,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;YAC5D,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE;SACvB,CAAC,CAAA;QACF,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAA;QAC5D,MAAM,IAAI,GAAG,GAAG,CAAC,IAAiC,CAAA;QAClD,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,EAAE,CAAwB,CAAA;QAC7D,OAAO;YACL,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,SAAoC,CAAC,CAAC,CAAC,EAAE;YAC1F,QAAQ,EAAE;gBACR,GAAG,iBAAiB,EAAE;gBACtB,GAAG,QAAQ;gBACX,QAAQ,EAAE,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC;gBAC1C,MAAM,EAAE,EAAE,GAAG,iBAAiB,EAAE,GAAG,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE;gBAC5D,iBAAiB,EAAE,QAAQ,CAAC,iBAAiB,IAAI,EAAE;aACpD;YACD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,EAAW,EACX,IAAsB,EACtB,MAAc;IAEd,MAAM,CAAC,GAAG,EAAS,CAAA;IACnB,MAAM,IAAI,GAAqB;QAC7B,GAAG,IAAI;QACP,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,MAAM;KAClB,CAAA;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC1C,KAAK,EAAE,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,IAAI,EAAE;QAC5D,MAAM,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE;KACrB,CAAC,CAAA;IACF,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,CAAC,CAAA;IAC9F,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;YACtB,IAAI,EAAE;gBACJ,UAAU,EAAE,oBAAoB;gBAChC,IAAI;gBACJ,MAAM,EAAE,WAAW;gBACnB,KAAK,EAAE,aAAa;gBACpB,IAAI,EAAE,WAAW;gBACjB,WAAW,EAAE,MAAM;gBACnB,WAAW,EAAE,MAAM;aACpB;SACF,CAAC,CAAA;IACJ,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,cAAc,CAAC,GAAqB;IAIlD,OAAO;QACL,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC9C,QAAQ,EAAE,GAAG,CAAC,QAAQ;KACvB,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/ai/config-store.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,11 @@
1
1
  /**
2
- * Content-writing generation with legacy plugin-ai fallback.
3
- *
4
- * Brand voice analyze/fix and co-author share the governed Settings > AI path
5
- * first. When that path is not fully configured (no default model, missing key,
6
- * etc.) we fall back to @prenta/plugin-ai so existing installs keep
7
- * working.
2
+ * Content-writing generation through the governed Settings > AI path. Brand
3
+ * voice analyze/fix share this helper; it maps runtime refusals to the same
4
+ * `{ status, message, code, hint }` contract `runtimeErrorToResponse` uses (via
5
+ * `describeRuntimeError`), so routes can emit `{ error, code, hint }` bodies
6
+ * identical to every other AI route.
8
7
  */
9
- import { type GenerateForFeatureInput } from './runtime.js';
8
+ import { type GenerateForFeatureInput, type RuntimeErrorCode } from './runtime.js';
10
9
  export type ContentWritingGenerateResult = {
11
10
  ok: true;
12
11
  text: string;
@@ -14,6 +13,9 @@ export type ContentWritingGenerateResult = {
14
13
  ok: false;
15
14
  httpStatus: number;
16
15
  message: string;
16
+ code: RuntimeErrorCode;
17
+ /** Operator-facing next step; present only for the 503 "not configured" codes. */
18
+ hint?: string;
17
19
  };
18
- export declare function generateContentWritingWithFallback(db: unknown, input: GenerateForFeatureInput): Promise<ContentWritingGenerateResult>;
20
+ export declare function generateContentWriting(db: unknown, input: GenerateForFeatureInput): Promise<ContentWritingGenerateResult>;
19
21
  //# sourceMappingURL=content-writing-generate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-writing-generate.d.ts","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAE7B,MAAM,cAAc,CAAA;AAGrB,MAAM,MAAM,4BAA4B,GACpC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAA;AA2BtD,wBAAsB,kCAAkC,CACtD,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAyCvC"}
1
+ {"version":3,"file":"content-writing-generate.d.ts","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAEL,KAAK,uBAAuB,EAC5B,KAAK,gBAAgB,EACtB,MAAM,cAAc,CAAA;AAGrB,MAAM,MAAM,4BAA4B,GACpC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC1B;IACE,EAAE,EAAE,KAAK,CAAA;IACT,UAAU,EAAE,MAAM,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,EAAE,gBAAgB,CAAA;IACtB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAA;CACd,CAAA;AAEL,wBAAsB,sBAAsB,CAC1C,EAAE,EAAE,OAAO,EACX,KAAK,EAAE,uBAAuB,GAC7B,OAAO,CAAC,4BAA4B,CAAC,CAqBvC"}
@@ -1,64 +1,32 @@
1
1
  /**
2
- * Content-writing generation with legacy plugin-ai fallback.
3
- *
4
- * Brand voice analyze/fix and co-author share the governed Settings > AI path
5
- * first. When that path is not fully configured (no default model, missing key,
6
- * etc.) we fall back to @prenta/plugin-ai so existing installs keep
7
- * working.
2
+ * Content-writing generation through the governed Settings > AI path. Brand
3
+ * voice analyze/fix share this helper; it maps runtime refusals to the same
4
+ * `{ status, message, code, hint }` contract `runtimeErrorToResponse` uses (via
5
+ * `describeRuntimeError`), so routes can emit `{ error, code, hint }` bodies
6
+ * identical to every other AI route.
8
7
  */
9
8
  import { generateTextForFeature, } from './runtime.js';
10
- import { importAIPlugin } from './plugin-import.js';
11
- function setupHint(code) {
12
- switch (code) {
13
- case 'no_model':
14
- return ('No default AI model is selected. In Settings > AI, choose a default model ' +
15
- 'in the AI Assistant card and click Save changes.');
16
- case 'no_key':
17
- return ('No API key is available for the connected provider. Add a key under ' +
18
- 'Provider connections or set the provider API key env var on your host.');
19
- case 'no_provider':
20
- return ('No AI provider can serve the selected model. Check Provider connections, ' +
21
- 'refresh models, and save your default model.');
22
- default:
23
- return ('AI is not fully configured for content writing. Open Settings > AI, connect ' +
24
- 'a provider, choose a default model, and click Save changes.');
25
- }
26
- }
27
- export async function generateContentWritingWithFallback(db, input) {
28
- const FEATURE = 'ai.features.contentWriting';
29
- const result = await generateTextForFeature(db, FEATURE, input);
9
+ import { describeRuntimeError } from './runtime-response.js';
10
+ export async function generateContentWriting(db, input) {
11
+ const result = await generateTextForFeature(db, 'ai.features.contentWriting', input);
30
12
  if (result.ok) {
31
- return { ok: true, text: result.text };
32
- }
33
- if (result.code === 'feature_disabled') {
34
- return { ok: false, httpStatus: 403, message: result.message };
35
- }
36
- if (result.code === 'budget_exceeded') {
37
- return { ok: false, httpStatus: 429, message: result.message };
38
- }
39
- if (result.code === 'rate_limited') {
40
- return { ok: false, httpStatus: 429, message: result.message };
41
- }
42
- if (result.code === 'provider_error') {
43
- return { ok: false, httpStatus: 502, message: `AI provider error: ${result.message}` };
44
- }
45
- if (result.code === 'no_provider' || result.code === 'no_model' || result.code === 'no_key') {
46
- try {
47
- const aiModule = (await importAIPlugin());
48
- if (typeof aiModule.generate !== 'function') {
49
- return { ok: false, httpStatus: 501, message: setupHint(result.code) };
50
- }
51
- const parts = [input.system?.trim(), input.prompt.trim()].filter(Boolean);
52
- const text = await aiModule.generate(parts.join('\n\n'));
53
- if (!text?.trim()) {
54
- return { ok: false, httpStatus: 502, message: 'AI returned an empty response.' };
55
- }
56
- return { ok: true, text: text.trim() };
57
- }
58
- catch {
59
- return { ok: false, httpStatus: 503, message: setupHint(result.code) };
13
+ if (!result.text.trim()) {
14
+ return {
15
+ ok: false,
16
+ httpStatus: 502,
17
+ code: 'invalid_output',
18
+ message: 'AI returned an empty response.',
19
+ };
60
20
  }
21
+ return { ok: true, text: result.text.trim() };
61
22
  }
62
- return { ok: false, httpStatus: 502, message: result.message };
23
+ const { status, message, hint } = describeRuntimeError(result);
24
+ return {
25
+ ok: false,
26
+ httpStatus: status,
27
+ code: result.code,
28
+ message,
29
+ ...(hint !== undefined ? { hint } : {}),
30
+ };
63
31
  }
64
32
  //# sourceMappingURL=content-writing-generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"content-writing-generate.js","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content-writing-generate.js","sourceRoot":"","sources":["../../src/ai/content-writing-generate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EACL,sBAAsB,GAGvB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA;AAa5D,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAW,EACX,KAA8B;IAE9B,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,EAAE,EAAE,4BAA4B,EAAE,KAAK,CAAC,CAAA;IACpF,IAAI,MAAM,CAAC,EAAE,EAAE,CAAC;QACd,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;YACxB,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,UAAU,EAAE,GAAG;gBACf,IAAI,EAAE,gBAAgB;gBACtB,OAAO,EAAE,gCAAgC;aAC1C,CAAA;QACH,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAA;IAC/C,CAAC;IACD,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAA;IAC9D,OAAO;QACL,EAAE,EAAE,KAAK;QACT,UAAU,EAAE,MAAM;QAClB,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO;QACP,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAA;AACH,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Embedding capability facts shared by the resolver and the runtime. A leaf
3
+ * (imports only the provider adapters) so `resolve.ts` can consult it without
4
+ * a `resolve → runtime → resolve` cycle.
5
+ */
6
+ import type { AIProviderKey } from './types.js';
7
+ /**
8
+ * Default embedding model per provider. Providers absent from this map have no
9
+ * embeddings API — `embedForFeature` returns a typed `no_model` error for them
10
+ * and callers fall back to their non-AI behavior.
11
+ */
12
+ export declare const EMBEDDING_MODELS: Partial<Record<AIProviderKey, string>>;
13
+ /**
14
+ * Features whose model call is `embedForFeature`, not text generation. They
15
+ * declare `requiredCapabilities: ['text']` (the embedding model is provider-
16
+ * fixed, see `EMBEDDING_MODELS`), so the resolver uses this set to prefer a
17
+ * connection that can actually embed when picking a provider default.
18
+ */
19
+ export declare const EMBEDDING_FEATURES: ReadonlySet<string>;
20
+ /**
21
+ * Whether `embedForFeature` can serve a provider at all: the adapter must
22
+ * implement embeddings AND the runtime must know which model to send.
23
+ * Availability probes (e.g. `/seo/links/ai-index`) combine this with
24
+ * `resolveFeatureRuntime` so a text-resolvable Anthropic/xAI site is not
25
+ * advertised as having semantic link suggestions it will never produce.
26
+ */
27
+ export declare function embeddingsAvailableForProvider(provider: AIProviderKey): boolean;
28
+ //# sourceMappingURL=embeddings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.d.ts","sourceRoot":"","sources":["../../src/ai/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,OAAO,CAAC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAGnE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,CAGjD,CAAA;AAEF;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO,CAE/E"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Embedding capability facts shared by the resolver and the runtime. A leaf
3
+ * (imports only the provider adapters) so `resolve.ts` can consult it without
4
+ * a `resolve → runtime → resolve` cycle.
5
+ */
6
+ import { providerSupportsEmbeddings } from './providers/index.js';
7
+ /**
8
+ * Default embedding model per provider. Providers absent from this map have no
9
+ * embeddings API — `embedForFeature` returns a typed `no_model` error for them
10
+ * and callers fall back to their non-AI behavior.
11
+ */
12
+ export const EMBEDDING_MODELS = {
13
+ openai: 'text-embedding-3-small',
14
+ custom: 'text-embedding-3-small',
15
+ };
16
+ /**
17
+ * Features whose model call is `embedForFeature`, not text generation. They
18
+ * declare `requiredCapabilities: ['text']` (the embedding model is provider-
19
+ * fixed, see `EMBEDDING_MODELS`), so the resolver uses this set to prefer a
20
+ * connection that can actually embed when picking a provider default.
21
+ */
22
+ export const EMBEDDING_FEATURES = new Set([
23
+ 'ai.features.seoInternalLinks',
24
+ 'ai.features.seo404Recovery',
25
+ ]);
26
+ /**
27
+ * Whether `embedForFeature` can serve a provider at all: the adapter must
28
+ * implement embeddings AND the runtime must know which model to send.
29
+ * Availability probes (e.g. `/seo/links/ai-index`) combine this with
30
+ * `resolveFeatureRuntime` so a text-resolvable Anthropic/xAI site is not
31
+ * advertised as having semantic link suggestions it will never produce.
32
+ */
33
+ export function embeddingsAvailableForProvider(provider) {
34
+ return providerSupportsEmbeddings(provider) && EMBEDDING_MODELS[provider] !== undefined;
35
+ }
36
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/ai/embeddings.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,0BAA0B,EAAE,MAAM,sBAAsB,CAAA;AAGjE;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA2C;IACtE,MAAM,EAAE,wBAAwB;IAChC,MAAM,EAAE,wBAAwB;CACjC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAwB,IAAI,GAAG,CAAC;IAC7D,8BAA8B;IAC9B,4BAA4B;CAC7B,CAAC,CAAA;AAEF;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,QAAuB;IACpE,OAAO,0BAA0B,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,QAAQ,CAAC,KAAK,SAAS,CAAA;AACzF,CAAC"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Default AI feature catalog. These are the global feature flags surfaced in
3
- * Settings > AI and (from Phase 3) enforced across CMS modules via
4
- * `isAiFeatureEnabled(key)`. Seeded into the `__ai_config__` document on first
5
- * write; admins toggle `enabled` per feature.
3
+ * Settings > AI and enforced across CMS modules by the governed runtime
4
+ * (`resolveFeatureRuntime` enforces the toggle). Seeded into the
5
+ * `__ai_config__` document on first write; admins toggle `enabled` per feature.
6
6
  *
7
7
  * Keys follow the `ai.features.*` convention so a single shared service governs
8
8
  * every module instead of per-module flags.
@@ -1 +1 @@
1
- {"version":3,"file":"feature-defaults.d.ts","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAiDhD,CAAA;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAQxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAmBtF"}
1
+ {"version":3,"file":"feature-defaults.d.ts","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD,eAAO,MAAM,mBAAmB,EAAE,eAAe,EAgEhD,CAAA;AAED,mEAAmE;AACnE,wBAAgB,oBAAoB,IAAI,eAAe,EAAE,CAMxD;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,eAAe,EAAE,GAAG,SAAS,GAAG,eAAe,EAAE,CAkBtF"}
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * Default AI feature catalog. These are the global feature flags surfaced in
3
- * Settings > AI and (from Phase 3) enforced across CMS modules via
4
- * `isAiFeatureEnabled(key)`. Seeded into the `__ai_config__` document on first
5
- * write; admins toggle `enabled` per feature.
3
+ * Settings > AI and enforced across CMS modules by the governed runtime
4
+ * (`resolveFeatureRuntime` enforces the toggle). Seeded into the
5
+ * `__ai_config__` document on first write; admins toggle `enabled` per feature.
6
6
  *
7
7
  * Keys follow the `ai.features.*` convention so a single shared service governs
8
8
  * every module instead of per-module flags.
@@ -17,8 +17,6 @@ export const AI_FEATURE_DEFAULTS = [
17
17
  requiredCapabilities: ['text', 'reasoning'],
18
18
  approvalRequired: true,
19
19
  allowBulkApply: false,
20
- rolesAllowed: ['ADMIN', 'EDITOR'],
21
- permissionsRequired: ['ai.use'],
22
20
  },
23
21
  {
24
22
  key: 'ai.features.contentWriting',
@@ -29,8 +27,6 @@ export const AI_FEATURE_DEFAULTS = [
29
27
  requiredCapabilities: ['text'],
30
28
  approvalRequired: true,
31
29
  allowBulkApply: false,
32
- rolesAllowed: ['ADMIN', 'EDITOR'],
33
- permissionsRequired: ['ai.use'],
34
30
  },
35
31
  {
36
32
  key: 'ai.features.mediaAltText',
@@ -41,8 +37,6 @@ export const AI_FEATURE_DEFAULTS = [
41
37
  requiredCapabilities: ['vision'],
42
38
  approvalRequired: true,
43
39
  allowBulkApply: false,
44
- rolesAllowed: ['ADMIN', 'EDITOR'],
45
- permissionsRequired: ['ai.use'],
46
40
  },
47
41
  {
48
42
  key: 'ai.features.seoMetaGeneration',
@@ -53,8 +47,27 @@ export const AI_FEATURE_DEFAULTS = [
53
47
  requiredCapabilities: ['text'],
54
48
  approvalRequired: true,
55
49
  allowBulkApply: false,
56
- rolesAllowed: ['ADMIN', 'EDITOR'],
57
- permissionsRequired: ['ai.use'],
50
+ },
51
+ {
52
+ key: 'ai.features.documentGeneration',
53
+ label: 'Document generation (MCP)',
54
+ description: 'Generate whole documents from a prompt via the MCP create tools and POST /collections/:slug/ai-create.',
55
+ enabled: true,
56
+ category: 'content',
57
+ requiredCapabilities: ['text'],
58
+ approvalRequired: false,
59
+ allowBulkApply: false,
60
+ maxRequestsPerDay: 50,
61
+ },
62
+ {
63
+ key: 'ai.features.seoInternalLinks',
64
+ label: 'Internal link suggestions',
65
+ description: 'Rank candidate pages for internal links with embeddings. Falls back to phrase matching when unavailable.',
66
+ enabled: true,
67
+ category: 'seo',
68
+ requiredCapabilities: ['text'],
69
+ approvalRequired: true,
70
+ allowBulkApply: false,
58
71
  },
59
72
  ];
60
73
  /** Deep clone so callers can't mutate the shared default array. */
@@ -62,8 +75,6 @@ export function cloneFeatureDefaults() {
62
75
  return AI_FEATURE_DEFAULTS.map((f) => ({
63
76
  ...f,
64
77
  requiredCapabilities: [...f.requiredCapabilities],
65
- rolesAllowed: [...f.rolesAllowed],
66
- permissionsRequired: [...f.permissionsRequired],
67
78
  fallbackModelIds: f.fallbackModelIds ? [...f.fallbackModelIds] : undefined,
68
79
  }));
69
80
  }
@@ -86,7 +97,6 @@ export function mergeFeatures(stored) {
86
97
  providerId: prev.providerId ?? def.providerId,
87
98
  modelId: prev.modelId ?? def.modelId,
88
99
  fallbackModelIds: prev.fallbackModelIds ?? def.fallbackModelIds,
89
- maxMonthlyTokens: prev.maxMonthlyTokens ?? def.maxMonthlyTokens,
90
100
  maxRequestsPerDay: prev.maxRequestsPerDay ?? def.maxRequestsPerDay,
91
101
  };
92
102
  });
@@ -1 +1 @@
1
- {"version":3,"file":"feature-defaults.js","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"feature-defaults.js","sourceRoot":"","sources":["../../src/ai/feature-defaults.ts"],"names":[],"mappings":"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"}
@@ -4,22 +4,21 @@
4
4
  * enforces toggles/budget and records real token usage.
5
5
  */
6
6
  export * from './types.js';
7
- export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, last4, putAIConfig, resolveKeySource, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
8
- export { AI_FEATURE_DEFAULTS, cloneFeatureDefaults, mergeFeatures } from './feature-defaults.js';
9
- export { assertAutoApplyAllowed, getFeatureGovernance, type AutoApplyDecision, type FeatureGovernance, } from './governance.js';
10
- export { applyBrandVoice, buildBrandVoiceSystemPrompt, getActiveBrandVoice, normalizeBrandVoice, BRAND_VOICE_LIMITS, } from './brand-voice.js';
11
- export { prepareBrandVoiceForSave, type PrepareBrandVoiceOptions } from './brand-voice-save.js';
12
- export { applyParsedDocumentToProfile, BRAND_VOICE_DOCUMENT_MAX, BRAND_VOICE_EXPORT_FILENAME, deriveBrandVoiceFields, ensureBrandVoiceDocument, parseBrandVoiceDocument, serializeBrandVoiceDocument, splitBrandVoiceDocument, syncFieldsFromDocument, type BrandVoiceDocumentFields, type BrandVoiceDocumentMeta, type BrandVoiceDocumentStatus, type ParsedBrandVoiceDocument, type ParseBrandVoiceDocumentError, type ParseBrandVoiceDocumentResult, } from './brand-voice-document.js';
13
- export { applyStructuredProfileToDocument, defaultStructuredProfile, parseStructuredProfile, scoreBrandAlignment, BRAND_VOICE_CHANNEL_PRESETS, MAX_BANNED_TERMS, MAX_PREFERRED_TERMS, MAX_AVOID_PATTERNS, MAX_WORKED_EXAMPLES, type BrandAlignmentDimension, type BrandAlignmentIssue, type BrandAlignmentScoreResult, type BrandVoiceBannedTerm, type BrandVoiceChannelRule, type BrandVoiceMechanics, type BrandVoiceStructuredProfile, type BrandVoiceToneScales, type BrandVoiceWorkedExample, } from './brand-voice-structured.js';
14
- export { buildBrandVoiceAnalysisPrompt, fenceBrandVoiceSample, gatherBrandVoiceSamples, parseBrandVoiceAnalysisResponse, stripJsonFences, toBrandVoiceAnalyzeResult, BRAND_VOICE_ANALYZE_DEFAULT_SAMPLES, BRAND_VOICE_ANALYZE_MAX_SAMPLES, type BrandVoiceAnalysisDraft, type BrandVoiceAnalyzeResult, type BrandVoiceSample, type GatherBrandVoiceSamplesOptions, } from './brand-voice-analyze.js';
15
- export { alignContentWithBrandVoice, COAUTHOR_BRAND_CHANNEL, hasBrandVoiceForScoring, seoFieldToBrandChannel, } from './brand-voice-alignment.js';
16
- export { applyDeterministicBrandFixes, buildBrandVoiceFixPrompt, needsAiBrandFix, runDeterministicBrandFix, type BrandVoiceFixOutcome, type DeterministicFixResult, } from './brand-voice-fix.js';
17
- export { BrandVoiceSourceError, fetchBrandVoiceUrlSample, uploadToBrandVoiceSample, MAX_ANALYZE_UPLOADS, MAX_ANALYZE_URLS, MAX_UPLOAD_TEXT_CHARS, } from './brand-voice-sources.js';
18
- export { generateContentWritingWithFallback, type ContentWritingGenerateResult, } from './content-writing-generate.js';
7
+ export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, isEnvConnectionId, putAIConfig, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
8
+ export { AI_FEATURE_DEFAULTS } from './feature-defaults.js';
9
+ export { normalizeBrandVoice } from './brand-voice.js';
10
+ export { prepareBrandVoiceForSave } from './brand-voice-save.js';
11
+ export { ensureBrandVoiceDocument, serializeBrandVoiceDocument } from './brand-voice-document.js';
12
+ export { parseStructuredProfile, scoreBrandAlignment } from './brand-voice-structured.js';
13
+ export { buildBrandVoiceAnalysisPrompt, gatherBrandVoiceSamples, parseBrandVoiceAnalysisResponse, toBrandVoiceAnalyzeResult, } from './brand-voice-analyze.js';
14
+ export { alignContentWithBrandVoice, COAUTHOR_BRAND_CHANNEL, seoFieldToBrandChannel, } from './brand-voice-alignment.js';
15
+ export { buildBrandVoiceFixPrompt, needsAiBrandFix, runDeterministicBrandFix, } from './brand-voice-fix.js';
16
+ export { BrandVoiceSourceError, fetchBrandVoiceUrlSample, uploadToBrandVoiceSample, } from './brand-voice-sources.js';
17
+ export { generateContentWriting } from './content-writing-generate.js';
18
+ export { runtimeErrorToResponse } from './runtime-response.js';
19
19
  export { curatedFallbackCatalog, normalizeModel } from './catalog.js';
20
- export { getModels, resolveModelOrUnavailable, syncModels, type SyncModelsResult, } from './models.js';
20
+ export { getModels, resolveModelOrUnavailable, syncModels } from './models.js';
21
21
  export { getUsageSummary } from './usage.js';
22
- export { resolveFeatureModel, resolveAllFeatureModels, type FeatureModelSource, type ResolvedFeatureModel, } from './resolve.js';
23
- export { getAdapter, generateText as adapterGenerateText, listModels as adapterListModels, testConnection as adapterTestConnection, type AdapterContext, type GenerateTextOptions, type GenerateTextResult, } from './providers/index.js';
24
- export { embedForFeature, generateJsonForFeature, generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, type EmbedForFeatureInput, type EmbedForFeatureSuccess, type GenerateForFeatureInput, type GenerateForFeatureSuccess, type GenerateJsonForFeatureInput, type GenerateJsonForFeatureSuccess, type ResolvedFeatureRuntime, type RuntimeError, type RuntimeErrorCode, } from './runtime.js';
22
+ export { embeddingsAvailableForProvider } from './embeddings.js';
23
+ export { generateJsonForFeature, generateTextForFeature, resolveFeatureRuntime, type RuntimeError, } from './runtime.js';
25
24
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACjG,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACzF,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,EACrB,KAAK,YAAY,GAClB,MAAM,cAAc,CAAA"}
package/dist/ai/index.js CHANGED
@@ -4,22 +4,21 @@
4
4
  * enforces toggles/budget and records real token usage.
5
5
  */
6
6
  export * from './types.js';
7
- export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, last4, putAIConfig, resolveKeySource, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
8
- export { AI_FEATURE_DEFAULTS, cloneFeatureDefaults, mergeFeatures } from './feature-defaults.js';
9
- export { assertAutoApplyAllowed, getFeatureGovernance, } from './governance.js';
10
- export { applyBrandVoice, buildBrandVoiceSystemPrompt, getActiveBrandVoice, normalizeBrandVoice, BRAND_VOICE_LIMITS, } from './brand-voice.js';
7
+ export { AI_CONFIG_COLLECTION, DEFAULT_AI_BUDGET, defaultAISettings, encryptProviderKey, getAIConfig, getEnvApiKey, isEnvConnectionId, putAIConfig, resolveProviderKey, toPublicConfig, toPublicProvider, } from './config-store.js';
8
+ export { AI_FEATURE_DEFAULTS } from './feature-defaults.js';
9
+ export { normalizeBrandVoice } from './brand-voice.js';
11
10
  export { prepareBrandVoiceForSave } from './brand-voice-save.js';
12
- export { applyParsedDocumentToProfile, BRAND_VOICE_DOCUMENT_MAX, BRAND_VOICE_EXPORT_FILENAME, deriveBrandVoiceFields, ensureBrandVoiceDocument, parseBrandVoiceDocument, serializeBrandVoiceDocument, splitBrandVoiceDocument, syncFieldsFromDocument, } from './brand-voice-document.js';
13
- export { applyStructuredProfileToDocument, defaultStructuredProfile, parseStructuredProfile, scoreBrandAlignment, BRAND_VOICE_CHANNEL_PRESETS, MAX_BANNED_TERMS, MAX_PREFERRED_TERMS, MAX_AVOID_PATTERNS, MAX_WORKED_EXAMPLES, } from './brand-voice-structured.js';
14
- export { buildBrandVoiceAnalysisPrompt, fenceBrandVoiceSample, gatherBrandVoiceSamples, parseBrandVoiceAnalysisResponse, stripJsonFences, toBrandVoiceAnalyzeResult, BRAND_VOICE_ANALYZE_DEFAULT_SAMPLES, BRAND_VOICE_ANALYZE_MAX_SAMPLES, } from './brand-voice-analyze.js';
15
- export { alignContentWithBrandVoice, COAUTHOR_BRAND_CHANNEL, hasBrandVoiceForScoring, seoFieldToBrandChannel, } from './brand-voice-alignment.js';
16
- export { applyDeterministicBrandFixes, buildBrandVoiceFixPrompt, needsAiBrandFix, runDeterministicBrandFix, } from './brand-voice-fix.js';
17
- export { BrandVoiceSourceError, fetchBrandVoiceUrlSample, uploadToBrandVoiceSample, MAX_ANALYZE_UPLOADS, MAX_ANALYZE_URLS, MAX_UPLOAD_TEXT_CHARS, } from './brand-voice-sources.js';
18
- export { generateContentWritingWithFallback, } from './content-writing-generate.js';
11
+ export { ensureBrandVoiceDocument, serializeBrandVoiceDocument } from './brand-voice-document.js';
12
+ export { parseStructuredProfile, scoreBrandAlignment } from './brand-voice-structured.js';
13
+ export { buildBrandVoiceAnalysisPrompt, gatherBrandVoiceSamples, parseBrandVoiceAnalysisResponse, toBrandVoiceAnalyzeResult, } from './brand-voice-analyze.js';
14
+ export { alignContentWithBrandVoice, COAUTHOR_BRAND_CHANNEL, seoFieldToBrandChannel, } from './brand-voice-alignment.js';
15
+ export { buildBrandVoiceFixPrompt, needsAiBrandFix, runDeterministicBrandFix, } from './brand-voice-fix.js';
16
+ export { BrandVoiceSourceError, fetchBrandVoiceUrlSample, uploadToBrandVoiceSample, } from './brand-voice-sources.js';
17
+ export { generateContentWriting } from './content-writing-generate.js';
18
+ export { runtimeErrorToResponse } from './runtime-response.js';
19
19
  export { curatedFallbackCatalog, normalizeModel } from './catalog.js';
20
- export { getModels, resolveModelOrUnavailable, syncModels, } from './models.js';
20
+ export { getModels, resolveModelOrUnavailable, syncModels } from './models.js';
21
21
  export { getUsageSummary } from './usage.js';
22
- export { resolveFeatureModel, resolveAllFeatureModels, } from './resolve.js';
23
- export { getAdapter, generateText as adapterGenerateText, listModels as adapterListModels, testConnection as adapterTestConnection, } from './providers/index.js';
24
- export { embedForFeature, generateJsonForFeature, generateTextForFeature, isAiFeatureEnabled, resolveFeatureRuntime, } from './runtime.js';
22
+ export { embeddingsAvailableForProvider } from './embeddings.js';
23
+ export { generateJsonForFeature, generateTextForFeature, resolveFeatureRuntime, } from './runtime.js';
25
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,KAAK,EACL,WAAW,EACX,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAA;AAChG,OAAO,EACL,sBAAsB,EACtB,oBAAoB,GAGrB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,wBAAwB,EAAiC,MAAM,uBAAuB,CAAA;AAC/F,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,2BAA2B,EAC3B,sBAAsB,EACtB,wBAAwB,EACxB,uBAAuB,EACvB,2BAA2B,EAC3B,uBAAuB,EACvB,sBAAsB,GAOvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EACL,gCAAgC,EAChC,wBAAwB,EACxB,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GAUpB,MAAM,6BAA6B,CAAA;AACpC,OAAO,EACL,6BAA6B,EAC7B,qBAAqB,EACrB,uBAAuB,EACvB,+BAA+B,EAC/B,eAAe,EACf,yBAAyB,EACzB,mCAAmC,EACnC,+BAA+B,GAKhC,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,4BAA4B,EAC5B,wBAAwB,EACxB,eAAe,EACf,wBAAwB,GAGzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,GACtB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,kCAAkC,GAEnC,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EACL,SAAS,EACT,yBAAyB,EACzB,UAAU,GAEX,MAAM,aAAa,CAAA;AACpB,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EACL,mBAAmB,EACnB,uBAAuB,GAGxB,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,UAAU,EACV,YAAY,IAAI,mBAAmB,EACnC,UAAU,IAAI,iBAAiB,EAC/B,cAAc,IAAI,qBAAqB,GAIxC,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,eAAe,EACf,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,GAUtB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ai/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,YAAY,CAAA;AAC1B,OAAO,EACL,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,kBAAkB,EAClB,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAA;AACtD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA;AAChE,OAAO,EAAE,wBAAwB,EAAE,2BAA2B,EAAE,MAAM,2BAA2B,CAAA;AACjG,OAAO,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAA;AACzF,OAAO,EACL,6BAA6B,EAC7B,uBAAuB,EACvB,+BAA+B,EAC/B,yBAAyB,GAC1B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,wBAAwB,GACzB,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,sBAAsB,EAAE,MAAM,+BAA+B,CAAA;AACtE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AACrE,OAAO,EAAE,SAAS,EAAE,yBAAyB,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAE5C,OAAO,EAAE,8BAA8B,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,qBAAqB,GAEtB,MAAM,cAAc,CAAA"}
@@ -3,9 +3,7 @@
3
3
  * fallback, and resolution of a configured-but-missing model to an `unavailable`
4
4
  * entry so the UI can warn without silently dropping the admin's choice.
5
5
  */
6
- import { AI_CONFIG_COLLECTION } from './config-store.js';
7
6
  import type { AIModel } from './types.js';
8
- export { AI_CONFIG_COLLECTION };
9
7
  export interface SyncModelsResult {
10
8
  models: AIModel[];
11
9
  fromFallback: boolean;
@@ -17,8 +15,14 @@ export interface SyncModelsResult {
17
15
  * on any failure falls back to the curated catalog so the selector is never
18
16
  * empty. Persists the result on the `__ai_config__` document under
19
17
  * `catalog[connectionId]` and stamps `lastModelSyncAt`.
18
+ *
19
+ * `userId` is the acting user, written to the config row's `createdById` /
20
+ * `updatedById` FKs. Routes must pass the session user: env-synthesized
21
+ * connections carry `updatedBy: 'system'`, which is not a User id and would
22
+ * violate the FK on Postgres. The connection's `updatedBy` is only a fallback
23
+ * for callers with no session (scripts, tests).
20
24
  */
21
- export declare function syncModels(db: unknown, connectionId: string): Promise<SyncModelsResult>;
25
+ export declare function syncModels(db: unknown, connectionId: string, userId?: string): Promise<SyncModelsResult>;
22
26
  /**
23
27
  * Read the cached catalog for a connection (or all connections). Falls back to
24
28
  * the curated catalog for connections that have never been synced so the UI
@@ -1 +1 @@
1
- {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/ai/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EACL,oBAAoB,EAIrB,MAAM,mBAAmB,CAAA;AAS1B,OAAO,KAAK,EAAkB,OAAO,EAAwB,MAAM,YAAY,CAAA;AAE/E,OAAO,EAAE,oBAAoB,EAAE,CAAA;AAW/B,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;GAKG;AACH,wBAAsB,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CA2D7F;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,OAAO,EACX,MAAM,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,OAAO,EAAE,CAAC,CAiBpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,OAAO,EAAE,GACjB,OAAO,GAAG,IAAI,CAkBhB"}
1
+ {"version":3,"file":"models.d.ts","sourceRoot":"","sources":["../../src/ai/models.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EAAkB,OAAO,EAAwB,MAAM,YAAY,CAAA;AAW/E,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,OAAO,EAAE,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,6EAA6E;IAC7E,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,OAAO,EACX,YAAY,EAAE,MAAM,EACpB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,gBAAgB,CAAC,CA2D3B;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,OAAO,EACX,MAAM,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GACpD,OAAO,CAAC,OAAO,EAAE,CAAC,CAiBpB;AAED;;;;GAIG;AACH,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,OAAO,EAAE,OAAO,EAAE,GACjB,OAAO,GAAG,IAAI,CAkBhB"}
package/dist/ai/models.js CHANGED
@@ -3,10 +3,9 @@
3
3
  * fallback, and resolution of a configured-but-missing model to an `unavailable`
4
4
  * entry so the UI can warn without silently dropping the admin's choice.
5
5
  */
6
- import { AI_CONFIG_COLLECTION, getAIConfig, putAIConfig, resolveProviderKey, } from './config-store.js';
7
- import { curatedFallbackCatalog, modelsMatch, normalizeModel, } from './catalog.js';
6
+ import { getAIConfig, putAIConfig, resolveProviderKey } from './config-store.js';
7
+ import { curatedFallbackCatalog, modelsMatch, normalizeModel } from './catalog.js';
8
8
  import { listModels as adapterListModels } from './providers/index.js';
9
- export { AI_CONFIG_COLLECTION };
10
9
  function adapterContextFor(conn, apiKey) {
11
10
  return {
12
11
  apiKey,
@@ -20,8 +19,14 @@ function adapterContextFor(conn, apiKey) {
20
19
  * on any failure falls back to the curated catalog so the selector is never
21
20
  * empty. Persists the result on the `__ai_config__` document under
22
21
  * `catalog[connectionId]` and stamps `lastModelSyncAt`.
22
+ *
23
+ * `userId` is the acting user, written to the config row's `createdById` /
24
+ * `updatedById` FKs. Routes must pass the session user: env-synthesized
25
+ * connections carry `updatedBy: 'system'`, which is not a User id and would
26
+ * violate the FK on Postgres. The connection's `updatedBy` is only a fallback
27
+ * for callers with no session (scripts, tests).
23
28
  */
24
- export async function syncModels(db, connectionId) {
29
+ export async function syncModels(db, connectionId, userId) {
25
30
  const config = await getAIConfig(db);
26
31
  const conn = config.providers.find((p) => p.id === connectionId);
27
32
  if (!conn)
@@ -69,7 +74,7 @@ export async function syncModels(db, connectionId) {
69
74
  ...config,
70
75
  providers: nextProviders,
71
76
  catalog: { ...(config.catalog ?? {}), [connectionId]: entry },
72
- }, conn.updatedBy || 'system');
77
+ }, userId || conn.updatedBy || 'system');
73
78
  return { models, fromFallback, warning };
74
79
  }
75
80
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/ai/models.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models.js","sourceRoot":"","sources":["../../src/ai/models.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,10 @@
1
- /** Shared copy when `@prenta/plugin-ai` is missing from the host app. */
2
- export declare const AI_PLUGIN_NOT_INSTALLED = "AI plugin is not installed. Install @prenta/plugin-ai, add aiPlugin() to plugins in prenta.config.ts, configure a provider API key, then enable the feature in Settings \u2192 AI.";
3
- export declare const AI_PLUGIN_NOT_INSTALLED_MEDIA_ALT = "AI alt text is unavailable. Install @prenta/plugin-ai, add aiPlugin() to plugins in prenta.config.ts, configure a vision-capable provider API key, and enable Settings \u2192 AI \u2192 Auto alt-text for media.";
1
+ /**
2
+ * Shared copy when `@prenta/plugin-ai` is missing from the host app. Only the
3
+ * deterministic helpers (`/ai/audit-document`, `/ai/suggest-internal-links`)
4
+ * still import the plugin; every model call runs through the governed runtime
5
+ * and reports configuration problems via `runtimeErrorToResponse` instead.
6
+ * No API key or Settings > AI step is needed for these two routes — the
7
+ * plugin is a pure scoring/link toolkit since 3.0.
8
+ */
9
+ export declare const AI_PLUGIN_NOT_INSTALLED = "AI plugin is not installed. Install @prenta/plugin-ai and add aiPlugin() to plugins in prenta.config.ts.";
4
10
  //# sourceMappingURL=plugin-errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-errors.d.ts","sourceRoot":"","sources":["../../src/ai/plugin-errors.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,uBAAuB,uLAC6I,CAAA;AAEjL,eAAO,MAAM,iCAAiC,qNAC4J,CAAA"}
1
+ {"version":3,"file":"plugin-errors.d.ts","sourceRoot":"","sources":["../../src/ai/plugin-errors.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,6GACwE,CAAA"}