@prenta/core 5.5.0 → 5.6.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 (44) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/ai/governance.d.ts +6 -0
  3. package/dist/ai/governance.d.ts.map +1 -1
  4. package/dist/ai/governance.js +19 -0
  5. package/dist/ai/governance.js.map +1 -1
  6. package/dist/api/routes/redirects.d.ts.map +1 -1
  7. package/dist/api/routes/redirects.js +17 -65
  8. package/dist/api/routes/redirects.js.map +1 -1
  9. package/dist/api/routes/seo.d.ts.map +1 -1
  10. package/dist/api/routes/seo.js +195 -360
  11. package/dist/api/routes/seo.js.map +1 -1
  12. package/dist/redirects/suggestion-accept.d.ts +28 -0
  13. package/dist/redirects/suggestion-accept.d.ts.map +1 -0
  14. package/dist/redirects/suggestion-accept.js +98 -0
  15. package/dist/redirects/suggestion-accept.js.map +1 -0
  16. package/dist/seo/index.d.ts +6 -2
  17. package/dist/seo/index.d.ts.map +1 -1
  18. package/dist/seo/index.js +5 -1
  19. package/dist/seo/index.js.map +1 -1
  20. package/dist/seo/issue-fix-ai.d.ts +40 -1
  21. package/dist/seo/issue-fix-ai.d.ts.map +1 -1
  22. package/dist/seo/issue-fix-ai.js +53 -1
  23. package/dist/seo/issue-fix-ai.js.map +1 -1
  24. package/dist/seo/issue-fix-apply.d.ts +85 -0
  25. package/dist/seo/issue-fix-apply.d.ts.map +1 -0
  26. package/dist/seo/issue-fix-apply.js +400 -0
  27. package/dist/seo/issue-fix-apply.js.map +1 -0
  28. package/dist/seo/issue-fix.d.ts +9 -0
  29. package/dist/seo/issue-fix.d.ts.map +1 -1
  30. package/dist/seo/issue-fix.js +1 -0
  31. package/dist/seo/issue-fix.js.map +1 -1
  32. package/dist/seo/proposals-bulk-apply.d.ts +52 -0
  33. package/dist/seo/proposals-bulk-apply.d.ts.map +1 -0
  34. package/dist/seo/proposals-bulk-apply.js +183 -0
  35. package/dist/seo/proposals-bulk-apply.js.map +1 -0
  36. package/dist/seo/proposals-generate.d.ts +43 -0
  37. package/dist/seo/proposals-generate.d.ts.map +1 -0
  38. package/dist/seo/proposals-generate.js +138 -0
  39. package/dist/seo/proposals-generate.js.map +1 -0
  40. package/dist/seo/proposals.d.ts +116 -0
  41. package/dist/seo/proposals.d.ts.map +1 -0
  42. package/dist/seo/proposals.js +236 -0
  43. package/dist/seo/proposals.js.map +1 -0
  44. package/package.json +1 -1
@@ -0,0 +1,236 @@
1
+ import { getFeatureGovernance } from '../ai/governance.js';
2
+ import { buildFixFingerprint } from './issue-fix.js';
3
+ import { pendingFixFromMetadata, stickyFingerprintsFromMetadata, } from './issue-fix-ai.js';
4
+ import { INSERT_LINK_FIX_TYPES, buildInsertLinkFingerprint } from './issue-fix-link-insert.js';
5
+ export const ISSUE_FIX_FEATURE_KEY = 'ai.features.seoMetaGeneration';
6
+ export const REDIRECT_FEATURE_KEY = 'ai.features.seo404Recovery';
7
+ const SEVERITY_RANK = { critical: 0, warning: 1, info: 2 };
8
+ function severityOf(value) {
9
+ return value === 'critical' || value === 'warning' || value === 'info' ? value : null;
10
+ }
11
+ function toDate(value) {
12
+ return value instanceof Date ? value : new Date(String(value));
13
+ }
14
+ /**
15
+ * Open/recurring issues (any fixability) plus the documents they reference, in
16
+ * two queries. "Reference" covers the issue entity AND, for cached insert-link
17
+ * fixes, the SOURCE document named by `pendingFix.patch.sourceEntityId` — that
18
+ * is the document the fix writes to and the one its fingerprint is built from,
19
+ * so without it `liveFingerprintFor` could never detect a stale link proposal.
20
+ */
21
+ export async function loadOpenFixableIssuesWithDocs(db) {
22
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- optional-model guard
23
+ const d = db;
24
+ const issues = d?.seoIssue?.findMany
25
+ ? await d.seoIssue.findMany({
26
+ where: { status: { in: ['open', 'recurring'] } },
27
+ orderBy: { lastDetectedAt: 'desc' },
28
+ take: 500,
29
+ })
30
+ : [];
31
+ const docIds = new Set();
32
+ for (const issue of issues) {
33
+ if (typeof issue.entityId === 'string' && issue.entityId.length > 0) {
34
+ docIds.add(issue.entityId);
35
+ }
36
+ const sourceId = pendingFixFromMetadata(issue.metadata)?.patch.sourceEntityId;
37
+ if (typeof sourceId === 'string' && sourceId.length > 0)
38
+ docIds.add(sourceId);
39
+ }
40
+ const docsById = new Map();
41
+ if (docIds.size > 0 && d?.document?.findMany) {
42
+ const docs = (await d.document.findMany({
43
+ where: { id: { in: [...docIds] }, deletedAt: null },
44
+ select: { id: true, updatedAt: true, title: true, slug: true, collection: true },
45
+ }));
46
+ for (const doc of docs) {
47
+ docsById.set(String(doc.id), {
48
+ id: String(doc.id),
49
+ updatedAt: toDate(doc.updatedAt),
50
+ title: typeof doc.title === 'string' ? doc.title : null,
51
+ slug: typeof doc.slug === 'string' ? doc.slug : null,
52
+ collection: String(doc.collection ?? ''),
53
+ });
54
+ }
55
+ }
56
+ return { issues, docsById };
57
+ }
58
+ /**
59
+ * The fingerprint a fresh suggestion for this issue would carry right now.
60
+ * Insert-link fixes are fingerprinted on the SOURCE document (the one that
61
+ * gets written), so their live value needs the cache to know the source.
62
+ * `loadOpenFixableIssuesWithDocs` loads sources alongside entities; if one is
63
+ * still missing (deleted since generation) we fall back to the cached value
64
+ * rather than guessing.
65
+ */
66
+ export function liveFingerprintFor(issue, cache, docsById) {
67
+ const entityId = typeof issue.entityId === 'string' ? issue.entityId : null;
68
+ if (!entityId)
69
+ return null;
70
+ if (cache &&
71
+ (INSERT_LINK_FIX_TYPES.has(issue.type) || cache.patch.fixStrategy === 'insert-link')) {
72
+ const sourceId = typeof cache.patch.sourceEntityId === 'string' ? cache.patch.sourceEntityId : null;
73
+ const source = sourceId ? docsById.get(sourceId) : undefined;
74
+ if (!source)
75
+ return cache.fingerprint;
76
+ return buildInsertLinkFingerprint(sourceId, typeof cache.patch.targetEntityId === 'string' ? cache.patch.targetEntityId : entityId, typeof cache.patch.anchorText === 'string' ? cache.patch.anchorText : '', source.updatedAt);
77
+ }
78
+ const doc = docsById.get(entityId);
79
+ if (!doc)
80
+ return null;
81
+ return buildFixFingerprint(entityId, issue.type, doc.updatedAt);
82
+ }
83
+ /**
84
+ * The marker `dismiss-fix` stores. After a dismissal there is no cache, so
85
+ * `selectEligibleForGeneration` compares the marker against the ENTITY-based
86
+ * live fingerprint. Insert-link caches are fingerprinted on the source
87
+ * document instead, so for them we store the entity-based value the no-cache
88
+ * path will compute; for every other type the cached fingerprint already is
89
+ * that value.
90
+ */
91
+ export function dismissalFingerprintFor(issue, cache, entityUpdatedAt) {
92
+ const isInsertLink = INSERT_LINK_FIX_TYPES.has(issue.type) || cache.patch.fixStrategy === 'insert-link';
93
+ if (!isInsertLink || !entityUpdatedAt || typeof issue.entityId !== 'string') {
94
+ return cache.fingerprint;
95
+ }
96
+ return buildFixFingerprint(issue.entityId, issue.type, entityUpdatedAt);
97
+ }
98
+ /**
99
+ * Issues batch generation should attempt: fixable, open, document present,
100
+ * no LIVE cache (a stale one counts as none), and neither sticky marker
101
+ * equals the live fingerprint. Ordered critical → warning → info.
102
+ */
103
+ export function selectEligibleForGeneration(issues, docsById) {
104
+ const out = [];
105
+ for (const issue of issues) {
106
+ if (issue.fixable !== true)
107
+ continue;
108
+ if (issue.status !== 'open' && issue.status !== 'recurring')
109
+ continue;
110
+ const cache = pendingFixFromMetadata(issue.metadata);
111
+ const live = liveFingerprintFor(issue, cache, docsById);
112
+ if (!live)
113
+ continue;
114
+ if (cache && cache.fingerprint === live)
115
+ continue;
116
+ const sticky = stickyFingerprintsFromMetadata(issue.metadata);
117
+ if (sticky.dismissed === live || sticky.generateSkipped === live)
118
+ continue;
119
+ out.push({ issue, liveFingerprint: live });
120
+ }
121
+ out.sort((a, b) => (SEVERITY_RANK[String(a.issue.severity)] ?? 99) -
122
+ (SEVERITY_RANK[String(b.issue.severity)] ?? 99));
123
+ return out;
124
+ }
125
+ function issueFixProposal(issue, cache, docsById) {
126
+ const live = liveFingerprintFor(issue, cache, docsById);
127
+ const doc = typeof issue.entityId === 'string' ? docsById.get(issue.entityId) : undefined;
128
+ return {
129
+ id: `issue:${issue.id}`,
130
+ kind: 'issue-fix',
131
+ title: String(issue.title ?? issue.type),
132
+ entity: {
133
+ type: typeof issue.entityType === 'string' ? issue.entityType : null,
134
+ id: typeof issue.entityId === 'string' ? issue.entityId : null,
135
+ title: (typeof issue.entityTitle === 'string' ? issue.entityTitle : null) ?? doc?.title ?? null,
136
+ url: typeof issue.url === 'string' ? issue.url : null,
137
+ },
138
+ changes: cache.changes,
139
+ justification: cache.justification,
140
+ source: cache.source,
141
+ confidence: null,
142
+ brandAlignment: cache.brandAlignment,
143
+ generatedAt: cache.generatedAt,
144
+ fingerprint: cache.fingerprint,
145
+ stale: live !== null && live !== cache.fingerprint,
146
+ issueType: String(issue.type),
147
+ severity: severityOf(issue.severity),
148
+ issueId: String(issue.id),
149
+ suggestionId: null,
150
+ };
151
+ }
152
+ function redirectProposal(s) {
153
+ const fromPath = String(s.fromPath ?? '');
154
+ const toPath = String(s.toPath ?? '');
155
+ return {
156
+ id: `redirect:${String(s.id)}`,
157
+ kind: 'redirect',
158
+ title: `Redirect ${fromPath} → ${toPath}`,
159
+ entity: { type: null, id: null, title: null, url: fromPath },
160
+ changes: [{ field: 'redirect', label: 'Redirect', before: fromPath, after: toPath }],
161
+ justification: typeof s.reason === 'string' ? s.reason : '',
162
+ source: 'ai-404-recovery',
163
+ // Stored as a 0-100 Int; the UI contract is a 0-1 fraction.
164
+ confidence: Number(s.confidence ?? 0) / 100,
165
+ brandAlignment: null,
166
+ generatedAt: s.createdAt ? toDate(s.createdAt).toISOString() : null,
167
+ fingerprint: null,
168
+ stale: false,
169
+ issueType: null,
170
+ severity: null,
171
+ issueId: null,
172
+ suggestionId: String(s.id),
173
+ };
174
+ }
175
+ export async function listSeoProposals(db) {
176
+ const { issues, docsById } = await loadOpenFixableIssuesWithDocs(db);
177
+ const fixes = [];
178
+ for (const issue of issues) {
179
+ const cache = pendingFixFromMetadata(issue.metadata);
180
+ if (!cache)
181
+ continue;
182
+ fixes.push(issueFixProposal(issue, cache, docsById));
183
+ }
184
+ fixes.sort((a, b) => {
185
+ const band = (SEVERITY_RANK[String(a.severity)] ?? 99) - (SEVERITY_RANK[String(b.severity)] ?? 99);
186
+ if (band !== 0)
187
+ return band;
188
+ return Number(a.stale) - Number(b.stale);
189
+ });
190
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- optional-model guard
191
+ const d = db;
192
+ const redirectRows = d?.redirectSuggestion?.findMany
193
+ ? await d.redirectSuggestion.findMany({
194
+ where: { status: 'open' },
195
+ orderBy: { confidence: 'desc' },
196
+ })
197
+ : [];
198
+ // Sort defensively: the DB already orders by confidence, but the shape of the
199
+ // payload should not depend on that (fakes in tests do not honor orderBy).
200
+ const redirects = redirectRows
201
+ .map(redirectProposal)
202
+ .sort((a, b) => (b.confidence ?? 0) - (a.confidence ?? 0));
203
+ const [issueGov, redirectGov] = await Promise.all([
204
+ getFeatureGovernance(db, ISSUE_FIX_FEATURE_KEY),
205
+ getFeatureGovernance(db, REDIRECT_FEATURE_KEY),
206
+ ]);
207
+ const stale = fixes.filter((p) => p.stale).length;
208
+ return {
209
+ proposals: [...fixes, ...redirects],
210
+ counts: {
211
+ issueFixes: fixes.length - stale,
212
+ redirects: redirects.length,
213
+ stale,
214
+ eligibleForGeneration: selectEligibleForGeneration(issues, docsById).length,
215
+ },
216
+ governance: {
217
+ issueFixBulk: issueGov.allowBulkApply,
218
+ redirectBulk: redirectGov.allowBulkApply,
219
+ },
220
+ };
221
+ }
222
+ /**
223
+ * Cheap counts for the overview badge: every cached fix (stale ones are still
224
+ * rows in the inbox) + open redirect suggestions. Callers pass the open issues
225
+ * they already loaded so this adds at most one `count` query.
226
+ */
227
+ export async function countPendingProposals(db, openIssues) {
228
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any -- optional-model guard
229
+ const d = db;
230
+ const redirects = d?.redirectSuggestion?.count
231
+ ? ((await d.redirectSuggestion.count({ where: { status: 'open' } })) ?? 0)
232
+ : 0;
233
+ const issueFixes = openIssues.filter((i) => pendingFixFromMetadata(i.metadata) !== null).length;
234
+ return { issueFixes, redirects };
235
+ }
236
+ //# sourceMappingURL=proposals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"proposals.js","sourceRoot":"","sources":["../../src/seo/proposals.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prenta/core",
3
- "version": "5.5.0",
3
+ "version": "5.6.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",