@prenta/core 5.8.1 → 5.10.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 (201) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/actions.d.ts +5 -0
  3. package/dist/actions.d.ts.map +1 -1
  4. package/dist/actions.js +35 -3
  5. package/dist/actions.js.map +1 -1
  6. package/dist/ai/brand-voice-alignment.d.ts.map +1 -1
  7. package/dist/ai/brand-voice-alignment.js +2 -0
  8. package/dist/ai/brand-voice-alignment.js.map +1 -1
  9. package/dist/ai/brand-voice-analyze.d.ts.map +1 -1
  10. package/dist/ai/brand-voice-analyze.js +1 -0
  11. package/dist/ai/brand-voice-analyze.js.map +1 -1
  12. package/dist/ai/index.d.ts +1 -1
  13. package/dist/ai/index.d.ts.map +1 -1
  14. package/dist/ai/index.js +1 -1
  15. package/dist/ai/index.js.map +1 -1
  16. package/dist/ai/runtime.d.ts +40 -2
  17. package/dist/ai/runtime.d.ts.map +1 -1
  18. package/dist/ai/runtime.js +60 -0
  19. package/dist/ai/runtime.js.map +1 -1
  20. package/dist/api/handler-factory.d.ts.map +1 -1
  21. package/dist/api/handler-factory.js +15 -6
  22. package/dist/api/handler-factory.js.map +1 -1
  23. package/dist/api/handlers.d.ts.map +1 -1
  24. package/dist/api/handlers.js +2 -0
  25. package/dist/api/handlers.js.map +1 -1
  26. package/dist/api/route-helpers.d.ts +8 -13
  27. package/dist/api/route-helpers.d.ts.map +1 -1
  28. package/dist/api/route-helpers.js +19 -39
  29. package/dist/api/route-helpers.js.map +1 -1
  30. package/dist/api/routes/scheduling.d.ts.map +1 -1
  31. package/dist/api/routes/scheduling.js +8 -1
  32. package/dist/api/routes/scheduling.js.map +1 -1
  33. package/dist/api/routes/seo-geo.d.ts +23 -0
  34. package/dist/api/routes/seo-geo.d.ts.map +1 -0
  35. package/dist/api/routes/seo-geo.js +188 -0
  36. package/dist/api/routes/seo-geo.js.map +1 -0
  37. package/dist/api/routes/seo.d.ts.map +1 -1
  38. package/dist/api/routes/seo.js +49 -4
  39. package/dist/api/routes/seo.js.map +1 -1
  40. package/dist/astro-redirects.d.ts +5 -0
  41. package/dist/astro-redirects.d.ts.map +1 -1
  42. package/dist/astro-redirects.js +13 -1
  43. package/dist/astro-redirects.js.map +1 -1
  44. package/dist/config/collection-lookup.d.ts +21 -0
  45. package/dist/config/collection-lookup.d.ts.map +1 -0
  46. package/dist/config/collection-lookup.js +44 -0
  47. package/dist/config/collection-lookup.js.map +1 -0
  48. package/dist/cron/index.d.ts +8 -0
  49. package/dist/cron/index.d.ts.map +1 -1
  50. package/dist/cron/index.js +21 -0
  51. package/dist/cron/index.js.map +1 -1
  52. package/dist/db/model-types.d.ts +21 -0
  53. package/dist/db/model-types.d.ts.map +1 -1
  54. package/dist/forms/attribution.d.ts +6 -2
  55. package/dist/forms/attribution.d.ts.map +1 -1
  56. package/dist/forms/attribution.js +5 -0
  57. package/dist/forms/attribution.js.map +1 -1
  58. package/dist/forms/index.d.ts +2 -2
  59. package/dist/forms/index.d.ts.map +1 -1
  60. package/dist/forms/index.js +1 -1
  61. package/dist/forms/index.js.map +1 -1
  62. package/dist/generated/browser.d.ts +18 -0
  63. package/dist/generated/client.d.ts +18 -0
  64. package/dist/generated/internal/class.d.ts +22 -0
  65. package/dist/generated/internal/class.js +4 -4
  66. package/dist/generated/internal/prismaNamespace.d.ts +187 -1
  67. package/dist/generated/internal/prismaNamespace.js +32 -0
  68. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +36 -0
  69. package/dist/generated/internal/prismaNamespaceBrowser.js +32 -0
  70. package/dist/generated/models/GeoCrawlDaily.d.ts +1144 -0
  71. package/dist/generated/models/GeoCrawlDaily.js +1 -0
  72. package/dist/generated/models/GeoReferralDaily.d.ts +1116 -0
  73. package/dist/generated/models/GeoReferralDaily.js +1 -0
  74. package/dist/generated/models.d.ts +2 -0
  75. package/dist/index.d.ts +7 -4
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +5 -2
  78. package/dist/index.js.map +1 -1
  79. package/dist/public-geo.d.ts +39 -0
  80. package/dist/public-geo.d.ts.map +1 -0
  81. package/dist/public-geo.js +79 -0
  82. package/dist/public-geo.js.map +1 -0
  83. package/dist/security/rate-limit-policy.d.ts +23 -0
  84. package/dist/security/rate-limit-policy.d.ts.map +1 -1
  85. package/dist/security/rate-limit-policy.js +36 -2
  86. package/dist/security/rate-limit-policy.js.map +1 -1
  87. package/dist/seo/ai-bots.d.ts +38 -7
  88. package/dist/seo/ai-bots.d.ts.map +1 -1
  89. package/dist/seo/ai-bots.js +82 -27
  90. package/dist/seo/ai-bots.js.map +1 -1
  91. package/dist/seo/ai-crawler-log.d.ts +2 -0
  92. package/dist/seo/ai-crawler-log.d.ts.map +1 -1
  93. package/dist/seo/ai-crawler-log.js +19 -1
  94. package/dist/seo/ai-crawler-log.js.map +1 -1
  95. package/dist/seo/ai-referrers.d.ts +25 -0
  96. package/dist/seo/ai-referrers.d.ts.map +1 -0
  97. package/dist/seo/ai-referrers.js +96 -0
  98. package/dist/seo/ai-referrers.js.map +1 -0
  99. package/dist/seo/audit-engine.d.ts +5 -0
  100. package/dist/seo/audit-engine.d.ts.map +1 -1
  101. package/dist/seo/audit-engine.js +63 -0
  102. package/dist/seo/audit-engine.js.map +1 -1
  103. package/dist/seo/audit-runner.d.ts.map +1 -1
  104. package/dist/seo/audit-runner.js +23 -1
  105. package/dist/seo/audit-runner.js.map +1 -1
  106. package/dist/seo/autopilot-gate.d.ts.map +1 -1
  107. package/dist/seo/autopilot-gate.js +30 -2
  108. package/dist/seo/autopilot-gate.js.map +1 -1
  109. package/dist/seo/autopilot-policy.d.ts +2 -2
  110. package/dist/seo/autopilot-policy.d.ts.map +1 -1
  111. package/dist/seo/autopilot-policy.js +1 -0
  112. package/dist/seo/autopilot-policy.js.map +1 -1
  113. package/dist/seo/autopilot-revert.d.ts.map +1 -1
  114. package/dist/seo/autopilot-revert.js +5 -2
  115. package/dist/seo/autopilot-revert.js.map +1 -1
  116. package/dist/seo/autopilot.d.ts.map +1 -1
  117. package/dist/seo/autopilot.js +18 -11
  118. package/dist/seo/autopilot.js.map +1 -1
  119. package/dist/seo/config-store.d.ts +4 -0
  120. package/dist/seo/config-store.d.ts.map +1 -1
  121. package/dist/seo/config-store.js +3 -0
  122. package/dist/seo/config-store.js.map +1 -1
  123. package/dist/seo/digest.d.ts +23 -0
  124. package/dist/seo/digest.d.ts.map +1 -1
  125. package/dist/seo/digest.js +89 -3
  126. package/dist/seo/digest.js.map +1 -1
  127. package/dist/seo/faq-eligibility.d.ts +32 -0
  128. package/dist/seo/faq-eligibility.d.ts.map +1 -0
  129. package/dist/seo/faq-eligibility.js +61 -0
  130. package/dist/seo/faq-eligibility.js.map +1 -0
  131. package/dist/seo/faq-schema.d.ts +13 -0
  132. package/dist/seo/faq-schema.d.ts.map +1 -0
  133. package/dist/seo/faq-schema.js +41 -0
  134. package/dist/seo/faq-schema.js.map +1 -0
  135. package/dist/seo/faq-signals.d.ts +54 -0
  136. package/dist/seo/faq-signals.d.ts.map +1 -0
  137. package/dist/seo/faq-signals.js +176 -0
  138. package/dist/seo/faq-signals.js.map +1 -0
  139. package/dist/seo/geo-record.d.ts +75 -0
  140. package/dist/seo/geo-record.d.ts.map +1 -0
  141. package/dist/seo/geo-record.js +252 -0
  142. package/dist/seo/geo-record.js.map +1 -0
  143. package/dist/seo/geo-report.d.ts +96 -0
  144. package/dist/seo/geo-report.d.ts.map +1 -0
  145. package/dist/seo/geo-report.js +315 -0
  146. package/dist/seo/geo-report.js.map +1 -0
  147. package/dist/seo/geo-retention.d.ts +19 -0
  148. package/dist/seo/geo-retention.d.ts.map +1 -0
  149. package/dist/seo/geo-retention.js +23 -0
  150. package/dist/seo/geo-retention.js.map +1 -0
  151. package/dist/seo/index.d.ts +10 -3
  152. package/dist/seo/index.d.ts.map +1 -1
  153. package/dist/seo/index.js +5 -1
  154. package/dist/seo/index.js.map +1 -1
  155. package/dist/seo/issue-fix-ai.d.ts +34 -5
  156. package/dist/seo/issue-fix-ai.d.ts.map +1 -1
  157. package/dist/seo/issue-fix-ai.js +59 -23
  158. package/dist/seo/issue-fix-ai.js.map +1 -1
  159. package/dist/seo/issue-fix-apply.d.ts +32 -2
  160. package/dist/seo/issue-fix-apply.d.ts.map +1 -1
  161. package/dist/seo/issue-fix-apply.js +231 -3
  162. package/dist/seo/issue-fix-apply.js.map +1 -1
  163. package/dist/seo/issue-fix-faq.d.ts +131 -0
  164. package/dist/seo/issue-fix-faq.d.ts.map +1 -0
  165. package/dist/seo/issue-fix-faq.js +455 -0
  166. package/dist/seo/issue-fix-faq.js.map +1 -0
  167. package/dist/seo/issue-fix-verify.d.ts +9 -0
  168. package/dist/seo/issue-fix-verify.d.ts.map +1 -1
  169. package/dist/seo/issue-fix-verify.js +61 -0
  170. package/dist/seo/issue-fix-verify.js.map +1 -1
  171. package/dist/seo/issue-fix.d.ts +5 -2
  172. package/dist/seo/issue-fix.d.ts.map +1 -1
  173. package/dist/seo/issue-fix.js +35 -0
  174. package/dist/seo/issue-fix.js.map +1 -1
  175. package/dist/seo/page-meta.d.ts +8 -0
  176. package/dist/seo/page-meta.d.ts.map +1 -1
  177. package/dist/seo/page-meta.js +85 -12
  178. package/dist/seo/page-meta.js.map +1 -1
  179. package/dist/seo/proposals-bulk-apply.d.ts +6 -3
  180. package/dist/seo/proposals-bulk-apply.d.ts.map +1 -1
  181. package/dist/seo/proposals-bulk-apply.js +1 -0
  182. package/dist/seo/proposals-bulk-apply.js.map +1 -1
  183. package/dist/seo/proposals.d.ts +24 -0
  184. package/dist/seo/proposals.d.ts.map +1 -1
  185. package/dist/seo/proposals.js +35 -4
  186. package/dist/seo/proposals.js.map +1 -1
  187. package/dist/seo/search-console/sync.d.ts +8 -0
  188. package/dist/seo/search-console/sync.d.ts.map +1 -1
  189. package/dist/seo/search-console/sync.js +6 -3
  190. package/dist/seo/search-console/sync.js.map +1 -1
  191. package/dist/seo/seo-field-values.d.ts +18 -0
  192. package/dist/seo/seo-field-values.d.ts.map +1 -0
  193. package/dist/seo/seo-field-values.js +25 -0
  194. package/dist/seo/seo-field-values.js.map +1 -0
  195. package/dist/site.d.ts +5 -0
  196. package/dist/site.d.ts.map +1 -1
  197. package/dist/site.js +3 -0
  198. package/dist/site.js.map +1 -1
  199. package/package.json +1 -1
  200. package/prisma/migrations/0018_geo_daily/migration.sql +35 -0
  201. package/prisma/schema.prisma +41 -0
@@ -1,18 +1,34 @@
1
- import { updateDocumentSeoFields } from '../actions.js';
1
+ import { updateDocument, updateDocumentSeoFields } from '../actions.js';
2
2
  import { getPrentaConfig } from '../config/runtime.js';
3
3
  import { assertPlanFeature } from '../plan/features.js';
4
+ import { notifyPreviewUpdate } from '../preview/event-bus.js';
5
+ import { addSection, coerceSections, createSection } from '../sections/helpers.js';
6
+ import { readDocumentTemplate } from '../sections/registry.js';
7
+ import { validateSectionContent } from '../sections/validate.js';
4
8
  import { logEvent } from '../security/audit.js';
5
9
  import { documentToAuditEntity, frontEndContentCollectionTypes } from './audit-runner.js';
6
10
  import { applySeoOverrides, getSeoOverrides } from './config-store.js';
11
+ import { canAddFaqSection, hasFaqSection } from './faq-eligibility.js';
7
12
  import { buildFixFingerprint, suggestDeterministicFix, } from './issue-fix.js';
8
13
  import { pendingFixFromMetadata } from './issue-fix-ai.js';
14
+ import { FAQ_HEADING_MAX, readFaqSectionPatch } from './issue-fix-faq.js';
9
15
  import { INSERT_LINK_FIX_TYPES, applyAndVerifyInternalLinkInsert, buildInsertLinkFingerprint, } from './issue-fix-link-insert.js';
10
16
  import { REDIRECT_FIX_TYPES, applyBrokenLinkContentFix, applyBrokenLinkRedirectFix, } from './issue-fix-redirect.js';
11
17
  import { verifySeoIssueFix } from './issue-fix-verify.js';
12
18
  import { gatherNavigationLinkTargets } from './nav-link-targets.js';
19
+ import { composeStructuredDataForPublish } from './schema-sync.js';
13
20
  export const STALE_FIX_MESSAGE = 'This fix is stale — the page changed since the suggestion was loaded. Expand the row again.';
14
21
  export const NOT_FIXABLE_MESSAGE = 'This issue does not support an automatic fix.';
15
22
  export const VERIFY_FAILED_MESSAGE = 'Fix applied but verification failed.';
23
+ export const FAQ_ALREADY_PRESENT_MESSAGE = 'This page already has an FAQ section.';
24
+ /**
25
+ * Fewest questions an editor may keep when trimming a proposal. Generation
26
+ * demands `FAQ_MIN_ITEMS` (3) so the model has to ground enough material; the
27
+ * floor here is the `faq` section type's own `minRows` — the smallest FAQ the
28
+ * editor can save by hand.
29
+ */
30
+ export const FAQ_APPLY_MIN_ITEMS = 2;
31
+ export const FAQ_TOO_FEW_ITEMS_MESSAGE = `At least ${FAQ_APPLY_MIN_ITEMS} questions are required.`;
16
32
  function asRecord(value) {
17
33
  return value && typeof value === 'object' && !Array.isArray(value)
18
34
  ? value
@@ -60,6 +76,40 @@ export async function loadIssueFixContext(db, issue, opts = {}) {
60
76
  },
61
77
  };
62
78
  }
79
+ /** Distinct, in-range, ascending indices — `includeItems` is a selection, so proposal order wins. */
80
+ function selectFaqItemIndices(includeItems, total) {
81
+ if (!includeItems)
82
+ return Array.from({ length: total }, (_, i) => i);
83
+ const keep = new Set();
84
+ for (const i of includeItems) {
85
+ if (Number.isInteger(i) && i >= 0 && i < total)
86
+ keep.add(i);
87
+ }
88
+ return [...keep].sort((a, b) => a - b);
89
+ }
90
+ /** Human reason for an `add-section` refusal; shares the eligibility rules with the scanner. */
91
+ function faqIneligibleMessage(reason, collection) {
92
+ switch (reason) {
93
+ case 'no-sections-field':
94
+ return `Collection "${collection}" does not declare a "sections" JSON field, so it cannot store page sections.`;
95
+ case 'legacy-layout':
96
+ // The editor compiles the `_layout` tree on first open.
97
+ return 'This page still uses the legacy layout tree. Open it in the editor first.';
98
+ case 'unknown-type':
99
+ case 'not-addable':
100
+ case 'template-disallows':
101
+ return `An FAQ section cannot be added to this page (${reason}).`;
102
+ default: {
103
+ const _exhaustive = reason;
104
+ return _exhaustive;
105
+ }
106
+ }
107
+ }
108
+ /** Where a new FAQ lands: just above a trailing CTA band, otherwise at the end. */
109
+ function faqInsertIndex(sections) {
110
+ const last = sections[sections.length - 1];
111
+ return last && last.sectionType === 'cta' ? sections.length - 1 : sections.length;
112
+ }
63
113
  function mapInternalLinkInsertError(err) {
64
114
  const msg = err instanceof Error ? err.message : '';
65
115
  switch (msg) {
@@ -169,10 +219,13 @@ export async function applyIssueFix(db, input) {
169
219
  }
170
220
  const source = await db.document.findFirst({
171
221
  where: { id: sourceEntityId, deletedAt: null },
172
- select: { id: true, updatedAt: true },
222
+ select: { id: true, collection: true, updatedAt: true },
173
223
  });
174
224
  if (!source)
175
225
  return { status: 'not-found', reason: 'Source document not found' };
226
+ const denied = input.authorizeContentWrite?.(source.collection);
227
+ if (denied)
228
+ return { status: 'not-allowed', httpStatus: 403, reason: denied };
176
229
  const sourceUpdatedAt = staleAgainst ??
177
230
  (source.updatedAt instanceof Date ? source.updatedAt : new Date(source.updatedAt));
178
231
  const liveFingerprint = buildInsertLinkFingerprint(sourceEntityId, targetEntityId, anchorText, sourceUpdatedAt);
@@ -236,6 +289,11 @@ export async function applyIssueFix(db, input) {
236
289
  return { status: 'stale', reason: STALE_FIX_MESSAGE };
237
290
  }
238
291
  const fixStrategy = cached.patch.fixStrategy === 'fix-link' ? 'fix-link' : 'redirect';
292
+ if (fixStrategy === 'fix-link') {
293
+ const denied = input.authorizeContentWrite?.(collection);
294
+ if (denied)
295
+ return { status: 'not-allowed', httpStatus: 403, reason: denied };
296
+ }
239
297
  try {
240
298
  if (fixStrategy === 'fix-link') {
241
299
  await applyBrokenLinkContentFix(collection, entity.entityId, cached.patch, actionCtx);
@@ -291,7 +349,170 @@ export async function applyIssueFix(db, input) {
291
349
  });
292
350
  return { status: 'applied', issue: { ...resolved }, applied: cached.changes };
293
351
  }
294
- // ── Branch 3: metadata (deterministic first, cached AI otherwise) ──────
352
+ // ── Branch 3: add-section (missing-faq) ────────────────────────────────
353
+ // The cache drops the suggestion's top-level `fixStrategy`, so the strategy
354
+ // is read from the patch; the issue type is the fallback so a `missing-faq`
355
+ // issue never falls through to the metadata writer.
356
+ if (cachedPending?.patch.fixStrategy === 'add-section' || issue.type === 'missing-faq') {
357
+ const inlinePlanErr = assertPlanFeature('seo.inlineApply');
358
+ if (inlinePlanErr)
359
+ return { status: 'plan-required', denial: inlinePlanErr };
360
+ const sectionPatch = readFaqSectionPatch(cachedPending);
361
+ if (!cachedPending?.autoFixable || !sectionPatch) {
362
+ return { status: 'not-fixable', httpStatus: 422, reason: NOT_FIXABLE_MESSAGE };
363
+ }
364
+ if (input.fingerprint && input.fingerprint !== cachedPending.fingerprint) {
365
+ return { status: 'stale', reason: STALE_FIX_MESSAGE };
366
+ }
367
+ const liveFingerprint = buildFixFingerprint(entity.entityId, issue.type, staleAgainst ?? loaded.ctx.updatedAt);
368
+ if (cachedPending.fingerprint !== liveFingerprint) {
369
+ return { status: 'stale', reason: STALE_FIX_MESSAGE };
370
+ }
371
+ // Eligibility is re-checked here, not trusted from scan time: templates and
372
+ // type pins are registered per isolate, and an editor may have added an FAQ
373
+ // by hand since the proposal was generated.
374
+ const denied = input.authorizeContentWrite?.(collection);
375
+ if (denied)
376
+ return { status: 'not-allowed', httpStatus: 403, reason: denied };
377
+ const liveData = asRecord(entity.sourceData);
378
+ if (hasFaqSection(liveData))
379
+ return { status: 'stale', reason: FAQ_ALREADY_PRESENT_MESSAGE };
380
+ const eligible = canAddFaqSection(liveData, { collection });
381
+ if (!eligible.ok) {
382
+ return {
383
+ status: 'not-fixable',
384
+ httpStatus: 422,
385
+ reason: faqIneligibleMessage(eligible.reason, collection),
386
+ };
387
+ }
388
+ const allItems = sectionPatch.section.content.items;
389
+ const keepIndices = selectFaqItemIndices(input.includeItems, allItems.length);
390
+ const selected = keepIndices.map((i) => allItems[i]);
391
+ if (selected.length < FAQ_APPLY_MIN_ITEMS) {
392
+ return { status: 'not-fixable', httpStatus: 400, reason: FAQ_TOO_FEW_ITEMS_MESSAGE };
393
+ }
394
+ const heading = (input.headingOverride?.trim() || sectionPatch.section.content.heading).slice(0, FAQ_HEADING_MAX);
395
+ let section;
396
+ try {
397
+ section = createSection('faq', { template: readDocumentTemplate(liveData) });
398
+ }
399
+ catch (err) {
400
+ const msg = err instanceof Error ? err.message : 'Cannot create an FAQ section';
401
+ return { status: 'not-fixable', httpStatus: 422, reason: msg };
402
+ }
403
+ section.content = {
404
+ ...section.content,
405
+ heading,
406
+ // Only the two renderer fields — grounding quotes stay in the cache/audit trail.
407
+ items: selected.map(({ question, answer }) => ({ question, answer })),
408
+ };
409
+ const validation = validateSectionContent('faq', section.content, section.settings);
410
+ if (!validation.valid) {
411
+ return {
412
+ status: 'not-fixable',
413
+ httpStatus: 422,
414
+ reason: validation.errors[0]?.message ?? 'Invalid FAQ section',
415
+ };
416
+ }
417
+ // Preserve unregistered (seed/code-owned) sections verbatim, like the
418
+ // page-sections API does; drop the derived `unmanaged` marker on persist.
419
+ // (A legacy `_layout`-only page was already refused by `canAddFaqSection`.)
420
+ const existing = coerceSections(liveData.sections, { onUnknown: 'preserve' });
421
+ const sections = addSection(existing, section, faqInsertIndex(existing)).map(({ unmanaged: _unmanaged, ...rest }) => rest);
422
+ let written;
423
+ try {
424
+ written = await updateDocument(collection, entity.entityId, { sections }, actionCtx);
425
+ }
426
+ catch (err) {
427
+ const msg = err instanceof Error ? err.message : '';
428
+ if (msg.includes('Access denied')) {
429
+ return { status: 'not-allowed', httpStatus: 403, reason: 'Insufficient permissions' };
430
+ }
431
+ if (msg.includes('not found'))
432
+ return { status: 'not-found', reason: 'Document not found' };
433
+ if (msg.startsWith('Cannot publish')) {
434
+ return { status: 'not-fixable', httpStatus: 422, reason: msg };
435
+ }
436
+ throw err;
437
+ }
438
+ notifyPreviewUpdate(collection, entity.entityId, {
439
+ values: written.data,
440
+ status: written.status,
441
+ updatedAt: written.updatedAt instanceof Date ? written.updatedAt.toISOString() : undefined,
442
+ });
443
+ const afterDoc = await db.document.findFirst({
444
+ where: { id: entity.entityId, deletedAt: null },
445
+ select: { id: true, slug: true, data: true, publishedAt: true, updatedAt: true },
446
+ });
447
+ const afterData = asRecord(afterDoc?.data);
448
+ const appliedChanges = cachedPending.changes.filter((c) => c.field === 'sections.faq.heading' ||
449
+ keepIndices.some((i) => c.field === `sections.faq.items[${i}]`));
450
+ const appliedPatch = {
451
+ ...sectionPatch,
452
+ section: { sectionType: 'faq', content: { heading, items: selected } },
453
+ grounding: keepIndices.map((i) => sectionPatch.grounding[i] ?? { sourceQuote: '' }),
454
+ };
455
+ const verified = await verifySeoIssueFix({
456
+ issueType: issue.type,
457
+ suggestion: {
458
+ autoFixable: true,
459
+ source: 'ai',
460
+ fixStrategy: 'add-section',
461
+ fingerprint: cachedPending.fingerprint,
462
+ // FaqSectionPatch is a plain JSON object; the suggestion contract is Record<string, unknown>.
463
+ patch: appliedPatch,
464
+ changes: appliedChanges,
465
+ justification: cachedPending.justification,
466
+ },
467
+ entityId: entity.entityId,
468
+ live: {
469
+ data: afterData,
470
+ jsonLd: afterDoc
471
+ ? composeStructuredDataForPublish({
472
+ collection,
473
+ doc: {
474
+ id: afterDoc.id,
475
+ slug: afterDoc.slug,
476
+ data: afterData,
477
+ publishedAt: afterDoc.publishedAt,
478
+ updatedAt: afterDoc.updatedAt,
479
+ },
480
+ config: getPrentaConfig(),
481
+ })
482
+ : null,
483
+ },
484
+ db,
485
+ siteUrl,
486
+ navLinks: [],
487
+ });
488
+ if (!verified.ok)
489
+ return { status: 'verify-failed', reason: verified.reason };
490
+ const resolved = await db.seoIssue.update({
491
+ where: { id: issue.id },
492
+ data: {
493
+ status: 'resolved',
494
+ resolvedAt: new Date(),
495
+ resolvedById: actor.userId,
496
+ metadata: { ...existingMeta, pendingFix: null },
497
+ },
498
+ });
499
+ await audit(actor.userId, {
500
+ action: 'seo_issue_fix_applied',
501
+ seoFix: 'add-section',
502
+ issueId: issue.id,
503
+ issueType: issue.type,
504
+ entityId: entity.entityId,
505
+ sectionId: section.id,
506
+ items: selected.length,
507
+ });
508
+ return {
509
+ status: 'applied',
510
+ issue: { ...resolved },
511
+ applied: appliedChanges,
512
+ sectionId: section.id,
513
+ };
514
+ }
515
+ // ── Branch 4: metadata (deterministic first, cached AI otherwise) ──────
295
516
  const deterministic = suggestDeterministicFix(issueInput, fixCtx);
296
517
  let suggestion = deterministic;
297
518
  const liveFingerprint = buildFixFingerprint(entity.entityId, issue.type, staleAgainst ?? loaded.ctx.updatedAt);
@@ -330,6 +551,12 @@ export async function applyIssueFix(db, input) {
330
551
  if (!suggestion.autoFixable || Object.keys(suggestion.patch).length === 0) {
331
552
  return { status: 'not-fixable', httpStatus: 422, reason: NOT_FIXABLE_MESSAGE };
332
553
  }
554
+ // Invariant: Branch 3 returns for every `add-section` cache, so this is
555
+ // unreachable. Kept as a hard stop — a section patch must never be spilled
556
+ // into document data by updateDocumentSeoFields if the routing above changes.
557
+ if (suggestion.patch.fixStrategy === 'add-section') {
558
+ return { status: 'not-fixable', httpStatus: 422, reason: NOT_FIXABLE_MESSAGE };
559
+ }
333
560
  try {
334
561
  await updateDocumentSeoFields(collection, entity.entityId, suggestion.patch, actionCtx);
335
562
  }
@@ -376,6 +603,7 @@ export async function applyIssueFix(db, input) {
376
603
  canonical: liveEntity.canonicalUrl ?? null,
377
604
  noindex: liveEntity.noindex ?? null,
378
605
  structuredDataType: liveEntity.structuredDataType ?? null,
606
+ structuredData: afterDoc ? asRecord(afterDoc.structuredData) : null,
379
607
  status: afterDoc ? String(afterDoc.status) : undefined,
380
608
  },
381
609
  db,
@@ -1 +1 @@
1
- {"version":3,"file":"issue-fix-apply.js","sourceRoot":"","sources":["../../src/seo/issue-fix-apply.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"issue-fix-apply.js","sourceRoot":"","sources":["../../src/seo/issue-fix-apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * `missing-faq` AI fix: propose a visible `faq` section grounded in the page's
3
+ * own text. Every answer must carry a verbatim `sourceQuote`; the deterministic
4
+ * grounding gate ({@link groundFaqDraft}) drops anything the page does not
5
+ * support. Inbox-only — never autopilot.
6
+ *
7
+ * Cycle note: this module imports helpers from `./issue-fix-ai.js`, which
8
+ * imports {@link suggestFaqSectionFix} for its `suggestAiFix` switch. Both
9
+ * modules export only functions/consts and neither calls the other at
10
+ * module-evaluation time, so the ESM cycle is safe.
11
+ */
12
+ import { z } from 'zod';
13
+ import type { FaqSignals } from './faq-signals.js';
14
+ import { runSeoJson, type AiFixDeps, type AiFixResult, type PendingFixCache } from './issue-fix-ai.js';
15
+ import { type SeoIssueFixContext, type SeoIssueFixInput } from './issue-fix.js';
16
+ export declare const FAQ_MIN_ITEMS = 3;
17
+ export declare const FAQ_MAX_ITEMS = 6;
18
+ export declare const FAQ_ANSWER_MIN = 40;
19
+ export declare const FAQ_ANSWER_MAX = 300;
20
+ export declare const FAQ_QUESTION_MAX = 160;
21
+ export declare const FAQ_HEADING_MAX = 80;
22
+ export declare const FAQ_QUOTE_MAX = 300;
23
+ export declare const FAQ_EXTRACTIVENESS_MIN = 0.4;
24
+ /** Used when the model's heading fails the banned-term gate. */
25
+ export declare const FAQ_DEFAULT_HEADING = "Frequently asked questions";
26
+ export declare const FaqDraftSchema: z.ZodObject<{
27
+ heading: z.ZodString;
28
+ items: z.ZodArray<z.ZodObject<{
29
+ question: z.ZodString;
30
+ answer: z.ZodString;
31
+ sourceQuote: z.ZodString;
32
+ }, "strip", z.ZodTypeAny, {
33
+ question: string;
34
+ answer: string;
35
+ sourceQuote: string;
36
+ }, {
37
+ question: string;
38
+ answer: string;
39
+ sourceQuote: string;
40
+ }>, "many">;
41
+ }, "strip", z.ZodTypeAny, {
42
+ heading: string;
43
+ items: {
44
+ question: string;
45
+ answer: string;
46
+ sourceQuote: string;
47
+ }[];
48
+ }, {
49
+ heading: string;
50
+ items: {
51
+ question: string;
52
+ answer: string;
53
+ sourceQuote: string;
54
+ }[];
55
+ }>;
56
+ export type FaqDraft = z.infer<typeof FaqDraftSchema>;
57
+ export type FaqDraftItem = FaqDraft['items'][number];
58
+ /** Lowercase, whitespace-collapsed — the comparison form for quotes and banned terms. */
59
+ export declare function normalizeForMatch(text: string): string;
60
+ /** Share (0..1) of the answer's content words that appear anywhere in the page text. */
61
+ export declare function extractiveness(answer: string, pageText: string): number;
62
+ export type FaqDropReason = 'quote-missing' | 'not-extractive' | 'unsupported-number' | 'duplicate-question' | 'matches-heading' | 'banned-term' | 'answer-length';
63
+ export interface FaqGroundingInput {
64
+ draft: FaqDraft;
65
+ pageText: string;
66
+ existingHeadings: string[];
67
+ bannedTerms: string[];
68
+ }
69
+ export interface FaqGroundingResult {
70
+ heading: string;
71
+ items: FaqDraftItem[];
72
+ dropped: Array<{
73
+ question: string;
74
+ reason: FaqDropReason;
75
+ }>;
76
+ }
77
+ /**
78
+ * Deterministic grounding gate. Checks run in order and the first failure is
79
+ * the recorded reason: the quote must appear verbatim (case/whitespace-
80
+ * insensitive) in the page text, the answer length must be in range, the
81
+ * answer must be mostly built from words on the page, every number in the
82
+ * answer must appear on the page, questions must be unique and not echo an
83
+ * existing heading, and no banned brand term may appear. A heading that
84
+ * contains a banned term is replaced with {@link FAQ_DEFAULT_HEADING}.
85
+ */
86
+ export declare function groundFaqDraft(input: FaqGroundingInput): FaqGroundingResult;
87
+ export interface FaqSectionPatch {
88
+ fixStrategy: 'add-section';
89
+ section: {
90
+ sectionType: 'faq';
91
+ content: {
92
+ heading: string;
93
+ items: Array<{
94
+ question: string;
95
+ answer: string;
96
+ }>;
97
+ };
98
+ };
99
+ /** One entry per item, same order — the verbatim page excerpt each answer rests on. */
100
+ grounding: Array<{
101
+ sourceQuote: string;
102
+ }>;
103
+ }
104
+ /**
105
+ * Read the cached `add-section` patch. The cache round-trips through JSON
106
+ * (and is editable as issue metadata), so neither its shape nor its prose is
107
+ * trusted: heading and every row are re-checked against the same limits
108
+ * generation enforced (`FaqDraftSchema`), so a blank or over-long value can
109
+ * never reach the document — or the inbox. `grounding` stays parallel to
110
+ * `items`: a row without a string `sourceQuote` reads as an empty quote rather
111
+ * than shifting later rows.
112
+ */
113
+ export declare function readFaqSectionPatch(cache: PendingFixCache | null): FaqSectionPatch | null;
114
+ /** Structural read of `metadata.faqSignals` (stored JSON — never trust the shape). */
115
+ export declare function readFaqSignals(metadata: unknown): FaqSignals | null;
116
+ /** Test seam: swap the governed JSON call and the brand-profile lookup. */
117
+ export interface FaqFixDeps {
118
+ generateJson?: typeof runSeoJson;
119
+ loadBannedTerms?: (deps: AiFixDeps) => Promise<string[]>;
120
+ }
121
+ /**
122
+ * Generate a grounded FAQ section proposal for a `missing-faq` issue.
123
+ *
124
+ * Failure semantics mirror the other AI fixes: provider-unavailable /
125
+ * feature-disabled yield an `aiUnavailable` suggestion; other runtime errors
126
+ * pass through; a draft that cannot ground at least {@link FAQ_MIN_ITEMS}
127
+ * answers returns `code: 'error'` so batch generation stamps its sticky
128
+ * `generateSkippedFingerprint` and does not retry the same document state.
129
+ */
130
+ export declare function suggestFaqSectionFix(issue: SeoIssueFixInput, ctx: SeoIssueFixContext, deps: AiFixDeps, overrides?: FaqFixDeps): Promise<AiFixResult>;
131
+ //# sourceMappingURL=issue-fix-faq.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-fix-faq.d.ts","sourceRoot":"","sources":["../../src/seo/issue-fix-faq.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAOvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAClD,OAAO,EAML,UAAU,EACV,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,KAAK,eAAe,EACrB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAuB,KAAK,kBAAkB,EAAE,KAAK,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAGpG,eAAO,MAAM,aAAa,IAAI,CAAA;AAC9B,eAAO,MAAM,aAAa,IAAI,CAAA;AAC9B,eAAO,MAAM,cAAc,KAAK,CAAA;AAChC,eAAO,MAAM,cAAc,MAAM,CAAA;AACjC,eAAO,MAAM,gBAAgB,MAAM,CAAA;AACnC,eAAO,MAAM,eAAe,KAAK,CAAA;AACjC,eAAO,MAAM,aAAa,MAAM,CAAA;AAChC,eAAO,MAAM,sBAAsB,MAAM,CAAA;AACzC,gEAAgE;AAChE,eAAO,MAAM,mBAAmB,+BAA+B,CAAA;AAO/D,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYzB,CAAA;AACF,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AACrD,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpD,yFAAyF;AACzF,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEtD;AAwFD,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAMvE;AAiBD,MAAM,MAAM,aAAa,GACrB,eAAe,GACf,gBAAgB,GAChB,oBAAoB,GACpB,oBAAoB,GACpB,iBAAiB,GACjB,aAAa,GACb,eAAe,CAAA;AAEnB,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,MAAM,CAAA;IAChB,gBAAgB,EAAE,MAAM,EAAE,CAAA;IAC1B,WAAW,EAAE,MAAM,EAAE,CAAA;CACtB;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAA;IACf,KAAK,EAAE,YAAY,EAAE,CAAA;IACrB,OAAO,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,aAAa,CAAA;KAAE,CAAC,CAAA;CAC5D;AAED;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,iBAAiB,GAAG,kBAAkB,CAgC3E;AAED,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,aAAa,CAAA;IAC1B,OAAO,EAAE;QACP,WAAW,EAAE,KAAK,CAAA;QAClB,OAAO,EAAE;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,KAAK,CAAC;gBAAE,QAAQ,EAAE,MAAM,CAAC;gBAAC,MAAM,EAAE,MAAM,CAAA;aAAE,CAAC,CAAA;SAAE,CAAA;KACjF,CAAA;IACD,uFAAuF;IACvF,SAAS,EAAE,KAAK,CAAC;QAAE,WAAW,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC1C;AAWD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI,GAAG,eAAe,GAAG,IAAI,CA6BzF;AAED,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,OAAO,GAAG,UAAU,GAAG,IAAI,CA0BnE;AAiDD,2EAA2E;AAC3E,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,OAAO,UAAU,CAAA;IAChC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,SAAS,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAA;CACzD;AAmCD;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CACxC,KAAK,EAAE,gBAAgB,EACvB,GAAG,EAAE,kBAAkB,EACvB,IAAI,EAAE,SAAS,EACf,SAAS,GAAE,UAAe,GACzB,OAAO,CAAC,WAAW,CAAC,CAyFtB"}