@prenta/core 6.0.0 → 7.0.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 (430) hide show
  1. package/CHANGELOG.md +32 -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 +0 -5
  120. package/dist/api/routes/seo-public.d.ts.map +1 -1
  121. package/dist/api/routes/seo-public.js +1 -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/security-headers.d.ts +8 -0
  127. package/dist/api/security-headers.d.ts.map +1 -0
  128. package/dist/api/security-headers.js +13 -0
  129. package/dist/api/security-headers.js.map +1 -0
  130. package/dist/appearance/favicon-icon.d.ts +1 -1
  131. package/dist/appearance/favicon-icon.d.ts.map +1 -1
  132. package/dist/appearance/favicon-icon.js +1 -1
  133. package/dist/appearance/favicon-icon.js.map +1 -1
  134. package/dist/auth/index.d.ts +0 -6
  135. package/dist/auth/index.d.ts.map +1 -1
  136. package/dist/auth/index.js +0 -3
  137. package/dist/auth/index.js.map +1 -1
  138. package/dist/auth/invites.d.ts +0 -5
  139. package/dist/auth/invites.d.ts.map +1 -1
  140. package/dist/auth/invites.js +3 -3
  141. package/dist/auth/invites.js.map +1 -1
  142. package/dist/auth/team.d.ts +4 -3
  143. package/dist/auth/team.d.ts.map +1 -1
  144. package/dist/auth/user-admin.d.ts +2 -1
  145. package/dist/auth/user-admin.d.ts.map +1 -1
  146. package/dist/billing/stripe-meter.d.ts +2 -1
  147. package/dist/billing/stripe-meter.d.ts.map +1 -1
  148. package/dist/cache/http.d.ts +0 -11
  149. package/dist/cache/http.d.ts.map +1 -1
  150. package/dist/cache/http.js +1 -1
  151. package/dist/cache/http.js.map +1 -1
  152. package/dist/cache/index.d.ts +0 -5
  153. package/dist/cache/index.d.ts.map +1 -1
  154. package/dist/config/types.d.ts +19 -19
  155. package/dist/config/types.d.ts.map +1 -1
  156. package/dist/content/index.d.ts +2 -3
  157. package/dist/content/index.d.ts.map +1 -1
  158. package/dist/content/index.js +1 -2
  159. package/dist/content/index.js.map +1 -1
  160. package/dist/content/structured-data.d.ts +0 -14
  161. package/dist/content/structured-data.d.ts.map +1 -1
  162. package/dist/content/structured-data.js +3 -14
  163. package/dist/content/structured-data.js.map +1 -1
  164. package/dist/cron/index.d.ts +2 -3
  165. package/dist/cron/index.d.ts.map +1 -1
  166. package/dist/cron/index.js +0 -2
  167. package/dist/cron/index.js.map +1 -1
  168. package/dist/db/client-types.d.ts +2 -1
  169. package/dist/db/client-types.d.ts.map +1 -1
  170. package/dist/db.d.ts +0 -2
  171. package/dist/db.d.ts.map +1 -1
  172. package/dist/db.js +0 -1
  173. package/dist/db.js.map +1 -1
  174. package/dist/diagnostics/env.d.ts +1 -1
  175. package/dist/diagnostics/env.d.ts.map +1 -1
  176. package/dist/diagnostics/logger.d.ts +0 -24
  177. package/dist/diagnostics/logger.d.ts.map +1 -1
  178. package/dist/forms/entries.d.ts +0 -7
  179. package/dist/forms/entries.d.ts.map +1 -1
  180. package/dist/forms/entries.js +1 -19
  181. package/dist/forms/entries.js.map +1 -1
  182. package/dist/forms/files.d.ts +1 -1
  183. package/dist/forms/files.d.ts.map +1 -1
  184. package/dist/forms/index.d.ts +4 -6
  185. package/dist/forms/index.d.ts.map +1 -1
  186. package/dist/forms/index.js +3 -5
  187. package/dist/forms/index.js.map +1 -1
  188. package/dist/forms/prefetch.d.ts +0 -6
  189. package/dist/forms/prefetch.d.ts.map +1 -1
  190. package/dist/forms/service.d.ts +0 -4
  191. package/dist/forms/service.d.ts.map +1 -1
  192. package/dist/forms/service.js +2 -8
  193. package/dist/forms/service.js.map +1 -1
  194. package/dist/forms/webmcp.d.ts +0 -2
  195. package/dist/forms/webmcp.d.ts.map +1 -1
  196. package/dist/forms/webmcp.js +1 -1
  197. package/dist/forms/webmcp.js.map +1 -1
  198. package/dist/media/denormalize.d.ts +0 -7
  199. package/dist/media/denormalize.d.ts.map +1 -1
  200. package/dist/media/index.d.ts +0 -8
  201. package/dist/media/index.d.ts.map +1 -1
  202. package/dist/media/index.js +0 -5
  203. package/dist/media/index.js.map +1 -1
  204. package/dist/media/optimize.d.ts +0 -4
  205. package/dist/media/optimize.d.ts.map +1 -1
  206. package/dist/media/optimize.js +4 -4
  207. package/dist/media/optimize.js.map +1 -1
  208. package/dist/media/reoptimize.d.ts +2 -3
  209. package/dist/media/reoptimize.d.ts.map +1 -1
  210. package/dist/media/reoptimize.js +2 -2
  211. package/dist/media/reoptimize.js.map +1 -1
  212. package/dist/media/seo.d.ts +3 -8
  213. package/dist/media/seo.d.ts.map +1 -1
  214. package/dist/media/seo.js +1 -1
  215. package/dist/media/seo.js.map +1 -1
  216. package/dist/plan/features.d.ts +0 -1
  217. package/dist/plan/features.d.ts.map +1 -1
  218. package/dist/plan/features.js +0 -16
  219. package/dist/plan/features.js.map +1 -1
  220. package/dist/preview/event-bus.d.ts +2 -1
  221. package/dist/preview/event-bus.d.ts.map +1 -1
  222. package/dist/preview/index.d.ts +2 -1
  223. package/dist/preview/index.d.ts.map +1 -1
  224. package/dist/preview/sse-stream.d.ts +0 -13
  225. package/dist/preview/sse-stream.d.ts.map +1 -1
  226. package/dist/preview/sse-stream.js +2 -2
  227. package/dist/preview/sse-stream.js.map +1 -1
  228. package/dist/realtime/notifications.d.ts +4 -3
  229. package/dist/realtime/notifications.d.ts.map +1 -1
  230. package/dist/redirects/index.d.ts +4 -16
  231. package/dist/redirects/index.d.ts.map +1 -1
  232. package/dist/redirects/index.js +2 -9
  233. package/dist/redirects/index.js.map +1 -1
  234. package/dist/redirects/match.d.ts +0 -2
  235. package/dist/redirects/match.d.ts.map +1 -1
  236. package/dist/redirects/match.js +1 -1
  237. package/dist/redirects/match.js.map +1 -1
  238. package/dist/redirects/recovery.d.ts +0 -2
  239. package/dist/redirects/recovery.d.ts.map +1 -1
  240. package/dist/redirects/recovery.js +1 -1
  241. package/dist/redirects/recovery.js.map +1 -1
  242. package/dist/redirects/rerank.d.ts +4 -3
  243. package/dist/redirects/rerank.d.ts.map +1 -1
  244. package/dist/redirects/rerank.js +3 -18
  245. package/dist/redirects/rerank.js.map +1 -1
  246. package/dist/sections/validate.d.ts +0 -2
  247. package/dist/sections/validate.d.ts.map +1 -1
  248. package/dist/sections/validate.js +1 -1
  249. package/dist/sections/validate.js.map +1 -1
  250. package/dist/security/access.d.ts +0 -9
  251. package/dist/security/access.d.ts.map +1 -1
  252. package/dist/security/access.js +1 -1
  253. package/dist/security/access.js.map +1 -1
  254. package/dist/security/audit.d.ts +0 -20
  255. package/dist/security/audit.d.ts.map +1 -1
  256. package/dist/security/audit.js.map +1 -1
  257. package/dist/security/index.d.ts +2 -20
  258. package/dist/security/index.d.ts.map +1 -1
  259. package/dist/security/index.js +2 -7
  260. package/dist/security/index.js.map +1 -1
  261. package/dist/security/internal-keys.d.ts +0 -10
  262. package/dist/security/internal-keys.d.ts.map +1 -1
  263. package/dist/security/internal-keys.js +2 -2
  264. package/dist/security/internal-keys.js.map +1 -1
  265. package/dist/security/rate-limit-policy.d.ts +0 -2
  266. package/dist/security/rate-limit-policy.d.ts.map +1 -1
  267. package/dist/security/rate-limit-policy.js +1 -1
  268. package/dist/security/rate-limit-policy.js.map +1 -1
  269. package/dist/security/rate-limit.d.ts +2 -5
  270. package/dist/security/rate-limit.d.ts.map +1 -1
  271. package/dist/security/rate-limit.js +2 -2
  272. package/dist/security/rate-limit.js.map +1 -1
  273. package/dist/security/sanitize.d.ts +0 -3
  274. package/dist/security/sanitize.d.ts.map +1 -1
  275. package/dist/security/sanitize.js +0 -1
  276. package/dist/security/sanitize.js.map +1 -1
  277. package/dist/security/upload.d.ts +0 -3
  278. package/dist/security/upload.d.ts.map +1 -1
  279. package/dist/security/upload.js +0 -1
  280. package/dist/security/upload.js.map +1 -1
  281. package/dist/seo/ai-crawler-log.d.ts +0 -2
  282. package/dist/seo/ai-crawler-log.d.ts.map +1 -1
  283. package/dist/seo/ai-crawler-log.js +1 -1
  284. package/dist/seo/ai-crawler-log.js.map +1 -1
  285. package/dist/seo/audit-engine.d.ts +5 -5
  286. package/dist/seo/audit-engine.d.ts.map +1 -1
  287. package/dist/seo/audit-engine.js +1 -2
  288. package/dist/seo/audit-engine.js.map +1 -1
  289. package/dist/seo/audit-runner.d.ts +0 -7
  290. package/dist/seo/audit-runner.d.ts.map +1 -1
  291. package/dist/seo/audit-runner.js +1 -1
  292. package/dist/seo/audit-runner.js.map +1 -1
  293. package/dist/seo/audit-signals.d.ts +0 -2
  294. package/dist/seo/audit-signals.d.ts.map +1 -1
  295. package/dist/seo/audit-signals.js +1 -1
  296. package/dist/seo/audit-signals.js.map +1 -1
  297. package/dist/seo/autopilot-gate.d.ts +0 -1
  298. package/dist/seo/autopilot-gate.d.ts.map +1 -1
  299. package/dist/seo/autopilot-gate.js +1 -1
  300. package/dist/seo/autopilot-gate.js.map +1 -1
  301. package/dist/seo/autopilot-ledger.d.ts +2 -1
  302. package/dist/seo/autopilot-ledger.d.ts.map +1 -1
  303. package/dist/seo/autopilot-outcome.d.ts +0 -2
  304. package/dist/seo/autopilot-outcome.d.ts.map +1 -1
  305. package/dist/seo/autopilot-outcome.js +1 -1
  306. package/dist/seo/autopilot-outcome.js.map +1 -1
  307. package/dist/seo/autopilot-policy.d.ts +3 -38
  308. package/dist/seo/autopilot-policy.d.ts.map +1 -1
  309. package/dist/seo/autopilot-policy.js +3 -3
  310. package/dist/seo/autopilot-policy.js.map +1 -1
  311. package/dist/seo/autopilot.d.ts +4 -12
  312. package/dist/seo/autopilot.d.ts.map +1 -1
  313. package/dist/seo/autopilot.js +3 -3
  314. package/dist/seo/autopilot.js.map +1 -1
  315. package/dist/seo/config-store.d.ts +0 -2
  316. package/dist/seo/config-store.d.ts.map +1 -1
  317. package/dist/seo/config-store.js +1 -1
  318. package/dist/seo/config-store.js.map +1 -1
  319. package/dist/seo/digest.d.ts +8 -7
  320. package/dist/seo/digest.d.ts.map +1 -1
  321. package/dist/seo/faq-signals.d.ts +0 -4
  322. package/dist/seo/faq-signals.d.ts.map +1 -1
  323. package/dist/seo/faq-signals.js +4 -4
  324. package/dist/seo/faq-signals.js.map +1 -1
  325. package/dist/seo/fix-brief-export.d.ts +0 -2
  326. package/dist/seo/fix-brief-export.d.ts.map +1 -1
  327. package/dist/seo/fix-brief-export.js +1 -1
  328. package/dist/seo/fix-brief-export.js.map +1 -1
  329. package/dist/seo/geo-record.d.ts +0 -4
  330. package/dist/seo/geo-record.d.ts.map +1 -1
  331. package/dist/seo/geo-record.js +2 -2
  332. package/dist/seo/geo-record.js.map +1 -1
  333. package/dist/seo/geo-report.d.ts +4 -3
  334. package/dist/seo/geo-report.d.ts.map +1 -1
  335. package/dist/seo/geo-report.js +1 -1
  336. package/dist/seo/geo-report.js.map +1 -1
  337. package/dist/seo/index-status.d.ts +6 -5
  338. package/dist/seo/index-status.d.ts.map +1 -1
  339. package/dist/seo/index-status.js.map +1 -1
  340. package/dist/seo/index.d.ts +15 -90
  341. package/dist/seo/index.d.ts.map +1 -1
  342. package/dist/seo/index.js +10 -49
  343. package/dist/seo/index.js.map +1 -1
  344. package/dist/seo/issue-batch-briefs.d.ts +2 -3
  345. package/dist/seo/issue-batch-briefs.d.ts.map +1 -1
  346. package/dist/seo/issue-batch-briefs.js +2 -2
  347. package/dist/seo/issue-batch-briefs.js.map +1 -1
  348. package/dist/seo/issue-content-brief.d.ts +2 -1
  349. package/dist/seo/issue-content-brief.d.ts.map +1 -1
  350. package/dist/seo/issue-content-research.d.ts +2 -2
  351. package/dist/seo/issue-content-research.d.ts.map +1 -1
  352. package/dist/seo/issue-content-research.js +1 -1
  353. package/dist/seo/issue-content-research.js.map +1 -1
  354. package/dist/seo/issue-fix-ai.d.ts +5 -4
  355. package/dist/seo/issue-fix-ai.d.ts.map +1 -1
  356. package/dist/seo/issue-fix-ai.js +4 -19
  357. package/dist/seo/issue-fix-ai.js.map +1 -1
  358. package/dist/seo/issue-fix-apply.d.ts +2 -11
  359. package/dist/seo/issue-fix-apply.d.ts.map +1 -1
  360. package/dist/seo/issue-fix-apply.js +4 -4
  361. package/dist/seo/issue-fix-apply.js.map +1 -1
  362. package/dist/seo/issue-fix-faq.d.ts +4 -7
  363. package/dist/seo/issue-fix-faq.d.ts.map +1 -1
  364. package/dist/seo/issue-fix-faq.js +4 -4
  365. package/dist/seo/issue-fix-faq.js.map +1 -1
  366. package/dist/seo/issue-fix-link-insert.d.ts +4 -14
  367. package/dist/seo/issue-fix-link-insert.d.ts.map +1 -1
  368. package/dist/seo/issue-fix-link-insert.js +5 -4
  369. package/dist/seo/issue-fix-link-insert.js.map +1 -1
  370. package/dist/seo/issue-fix-redirect.d.ts +0 -1
  371. package/dist/seo/issue-fix-redirect.d.ts.map +1 -1
  372. package/dist/seo/issue-fix.d.ts.map +1 -1
  373. package/dist/seo/issue-fix.js +1 -0
  374. package/dist/seo/issue-fix.js.map +1 -1
  375. package/dist/seo/link-graph.d.ts +2 -3
  376. package/dist/seo/link-graph.d.ts.map +1 -1
  377. package/dist/seo/link-graph.js +0 -0
  378. package/dist/seo/link-graph.js.map +1 -1
  379. package/dist/seo/link-suggest.d.ts +8 -2
  380. package/dist/seo/link-suggest.d.ts.map +1 -1
  381. package/dist/seo/link-suggest.js +38 -50
  382. package/dist/seo/link-suggest.js.map +1 -1
  383. package/dist/seo/page-meta.d.ts +1 -10
  384. package/dist/seo/page-meta.d.ts.map +1 -1
  385. package/dist/seo/page-meta.js +1 -1
  386. package/dist/seo/page-meta.js.map +1 -1
  387. package/dist/seo/proposals-bulk-apply.d.ts +3 -2
  388. package/dist/seo/proposals-bulk-apply.d.ts.map +1 -1
  389. package/dist/seo/proposals.d.ts +2 -2
  390. package/dist/seo/proposals.d.ts.map +1 -1
  391. package/dist/seo/rendered-fetch.d.ts +2 -1
  392. package/dist/seo/rendered-fetch.d.ts.map +1 -1
  393. package/dist/seo/score.d.ts +3 -7
  394. package/dist/seo/score.d.ts.map +1 -1
  395. package/dist/seo/score.js.map +1 -1
  396. package/dist/seo/search-console/client.d.ts +0 -4
  397. package/dist/seo/search-console/client.d.ts.map +1 -1
  398. package/dist/seo/search-console/client.js +2 -2
  399. package/dist/seo/search-console/client.js.map +1 -1
  400. package/dist/seo/search-console/sync.d.ts +0 -4
  401. package/dist/seo/search-console/sync.d.ts.map +1 -1
  402. package/dist/seo/search-console/sync.js +2 -2
  403. package/dist/seo/search-console/sync.js.map +1 -1
  404. package/dist/seo/search-console/types.d.ts +2 -1
  405. package/dist/seo/search-console/types.d.ts.map +1 -1
  406. package/dist/seo/sitemap-notify.d.ts +0 -8
  407. package/dist/seo/sitemap-notify.d.ts.map +1 -1
  408. package/dist/seo/sitemap-notify.js +1 -1
  409. package/dist/seo/sitemap-notify.js.map +1 -1
  410. package/dist/seo/title-templates.d.ts +2 -5
  411. package/dist/seo/title-templates.d.ts.map +1 -1
  412. package/dist/seo/title-templates.js +2 -2
  413. package/dist/seo/title-templates.js.map +1 -1
  414. package/dist/server-site.d.ts +0 -1
  415. package/dist/server-site.d.ts.map +1 -1
  416. package/dist/server-site.js +0 -1
  417. package/dist/server-site.js.map +1 -1
  418. package/dist/storage/index.d.ts +0 -2
  419. package/dist/storage/index.d.ts.map +1 -1
  420. package/dist/storage/index.js +0 -4
  421. package/dist/storage/index.js.map +1 -1
  422. package/dist/upgrade/version-check.d.ts +0 -2
  423. package/dist/upgrade/version-check.d.ts.map +1 -1
  424. package/dist/upgrade/version-check.js +1 -1
  425. package/dist/upgrade/version-check.js.map +1 -1
  426. package/dist/webhooks/index.d.ts +0 -8
  427. package/dist/webhooks/index.d.ts.map +1 -1
  428. package/dist/webhooks/index.js +1 -16
  429. package/dist/webhooks/index.js.map +1 -1
  430. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"config-store.js","sourceRoot":"","sources":["../../src/ai/config-store.ts"],"names":[],"mappings":"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"}
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"}