@growth-labs/cms 0.5.6 → 0.5.8

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 (106) hide show
  1. package/README.md +15 -0
  2. package/dist/engine/ai-dek-notifications.d.ts +16 -0
  3. package/dist/engine/ai-dek-notifications.d.ts.map +1 -0
  4. package/dist/engine/ai-dek-notifications.js +34 -0
  5. package/dist/engine/ai-dek-notifications.js.map +1 -0
  6. package/dist/engine/ai-dek.d.ts +35 -0
  7. package/dist/engine/ai-dek.d.ts.map +1 -0
  8. package/dist/engine/ai-dek.js +99 -0
  9. package/dist/engine/ai-dek.js.map +1 -0
  10. package/dist/engine/ai-prompts.d.ts +12 -0
  11. package/dist/engine/ai-prompts.d.ts.map +1 -1
  12. package/dist/engine/ai-prompts.js +17 -0
  13. package/dist/engine/ai-prompts.js.map +1 -1
  14. package/dist/engine/index.d.ts +3 -1
  15. package/dist/engine/index.d.ts.map +1 -1
  16. package/dist/engine/index.js +4 -1
  17. package/dist/engine/index.js.map +1 -1
  18. package/dist/integration/index.d.ts.map +1 -1
  19. package/dist/integration/index.js +4 -0
  20. package/dist/integration/index.js.map +1 -1
  21. package/dist/integration/options.d.ts +26 -0
  22. package/dist/integration/options.d.ts.map +1 -1
  23. package/dist/integration/options.js +5 -0
  24. package/dist/integration/options.js.map +1 -1
  25. package/dist/routes/ai.d.ts +2 -0
  26. package/dist/routes/ai.d.ts.map +1 -1
  27. package/dist/routes/ai.js +42 -0
  28. package/dist/routes/ai.js.map +1 -1
  29. package/dist/routes/authz-matrix.d.ts +2 -1
  30. package/dist/routes/authz-matrix.d.ts.map +1 -1
  31. package/dist/routes/authz-matrix.js +3 -0
  32. package/dist/routes/authz-matrix.js.map +1 -1
  33. package/dist/routes/content.d.ts.map +1 -1
  34. package/dist/routes/content.js +49 -2
  35. package/dist/routes/content.js.map +1 -1
  36. package/dist/routes/context.d.ts +1 -1
  37. package/dist/routes/context.d.ts.map +1 -1
  38. package/dist/routes/context.js.map +1 -1
  39. package/dist/surveys/schema.d.ts +6 -6
  40. package/dist/ui/api/_content-config.d.ts.map +1 -1
  41. package/dist/ui/api/_content-config.js +1 -0
  42. package/dist/ui/api/_content-config.js.map +1 -1
  43. package/dist/ui/api/content/[id]/ai/dek.d.ts +3 -0
  44. package/dist/ui/api/content/[id]/ai/dek.d.ts.map +1 -0
  45. package/dist/ui/api/content/[id]/ai/dek.js +5 -0
  46. package/dist/ui/api/content/[id]/ai/dek.js.map +1 -0
  47. package/dist/ui/client/mount.d.ts.map +1 -1
  48. package/dist/ui/client/mount.js +1 -0
  49. package/dist/ui/client/mount.js.map +1 -1
  50. package/dist/ui/editor/AiAssistPanel.d.ts +3 -1
  51. package/dist/ui/editor/AiAssistPanel.d.ts.map +1 -1
  52. package/dist/ui/editor/AiAssistPanel.js +28 -4
  53. package/dist/ui/editor/AiAssistPanel.js.map +1 -1
  54. package/dist/ui/editor/ContentForm.d.ts +5 -1
  55. package/dist/ui/editor/ContentForm.d.ts.map +1 -1
  56. package/dist/ui/editor/ContentForm.js +8 -2
  57. package/dist/ui/editor/ContentForm.js.map +1 -1
  58. package/dist/ui/editor/ai-assist.d.ts +2 -2
  59. package/dist/ui/editor/ai-assist.d.ts.map +1 -1
  60. package/dist/ui/editor/content-payload.d.ts +1 -0
  61. package/dist/ui/editor/content-payload.d.ts.map +1 -1
  62. package/dist/ui/editor/content-payload.js +6 -1
  63. package/dist/ui/editor/content-payload.js.map +1 -1
  64. package/dist/ui/screens/ContentRoute.d.ts +5 -1
  65. package/dist/ui/screens/ContentRoute.d.ts.map +1 -1
  66. package/dist/ui/screens/ContentRoute.js +3 -3
  67. package/dist/ui/screens/ContentRoute.js.map +1 -1
  68. package/dist/ui/screens/EditorScreen.d.ts +5 -1
  69. package/dist/ui/screens/EditorScreen.d.ts.map +1 -1
  70. package/dist/ui/screens/EditorScreen.js +2 -2
  71. package/dist/ui/screens/EditorScreen.js.map +1 -1
  72. package/dist/ui/screens/LibraryScreen.d.ts +5 -1
  73. package/dist/ui/screens/LibraryScreen.d.ts.map +1 -1
  74. package/dist/ui/screens/LibraryScreen.js +20 -14
  75. package/dist/ui/screens/LibraryScreen.js.map +1 -1
  76. package/dist/ui/screens/library-data.d.ts +6 -0
  77. package/dist/ui/screens/library-data.d.ts.map +1 -1
  78. package/dist/ui/screens/library-data.js +8 -1
  79. package/dist/ui/screens/library-data.js.map +1 -1
  80. package/dist/ui/screens/registry.d.ts +5 -1
  81. package/dist/ui/screens/registry.d.ts.map +1 -1
  82. package/dist/ui/screens/registry.js +2 -2
  83. package/dist/ui/screens/registry.js.map +1 -1
  84. package/package.json +1 -1
  85. package/src/engine/ai-dek-notifications.ts +50 -0
  86. package/src/engine/ai-dek.ts +138 -0
  87. package/src/engine/ai-prompts.ts +25 -0
  88. package/src/engine/index.ts +14 -0
  89. package/src/integration/index.ts +4 -0
  90. package/src/integration/options.ts +6 -0
  91. package/src/routes/ai.ts +44 -0
  92. package/src/routes/authz-matrix.ts +12 -1
  93. package/src/routes/content.ts +52 -2
  94. package/src/routes/context.ts +1 -0
  95. package/src/ui/api/_content-config.ts +2 -0
  96. package/src/ui/api/content/[id]/ai/dek.ts +8 -0
  97. package/src/ui/client/mount.tsx +1 -0
  98. package/src/ui/editor/AiAssistPanel.tsx +55 -3
  99. package/src/ui/editor/ContentForm.tsx +33 -1
  100. package/src/ui/editor/ai-assist.ts +2 -2
  101. package/src/ui/editor/content-payload.ts +6 -1
  102. package/src/ui/screens/ContentRoute.tsx +10 -1
  103. package/src/ui/screens/EditorScreen.tsx +3 -0
  104. package/src/ui/screens/LibraryScreen.tsx +76 -6
  105. package/src/ui/screens/library-data.ts +12 -1
  106. package/src/ui/screens/registry.tsx +8 -1
package/README.md CHANGED
@@ -98,6 +98,11 @@ await runScheduledPublish(env.SITE_DB)
98
98
  `primaryCategory` (stored in `content_items.channel`) is site-supplied taxonomy;
99
99
  it defaults to `'analysis'` (the Fronts default) when omitted.
100
100
 
101
+ Masthead consumers can expose named category controls by passing
102
+ `primaryCategories: [{ slug, label }]` to the Astro integration. The editor
103
+ persists the selected slug through `primaryCategory`, and the Library can filter
104
+ the same canonical `content_items.channel` value.
105
+
101
106
  ### The `duplicateContentItem` column-alignment gotcha
102
107
 
103
108
  `duplicateContentItem` does four `INSERT…SELECT` copies whose explicit column
@@ -214,6 +219,16 @@ The article-takeaways **publish** dispatch (Foundry/Hermes) is an OPTIONAL
214
219
  injected `dispatchTakeaways` hook on the content config — the package carries no
215
220
  Foundry coupling. Omit it and publish simply skips queuing takeaways.
216
221
 
222
+ Display-subheading generation uses the injected `hooks.llm` provider. The
223
+ editor's “Suggest subheading” action writes `content_items.excerpt` only when it
224
+ is not protected by `ai_locked_fields`, using up to six deterministic recent
225
+ published title/dek pairs from the same database as house-voice exemplars. A
226
+ manual publish synchronously generates a missing subheading; if generation is
227
+ unavailable, publication continues and Masthead creates an unread
228
+ `ai_dek_failed` notification so the omission is visible and actionable.
229
+ Published copy edits require the explicit `edit_published` capability, granted
230
+ to owner, senior editor, and editor roles.
231
+
217
232
  Media transcription dispatch is also injected. When the host supplies the
218
233
  Foundry media hook, `dispatch-to-foundry` works for video and podcast content,
219
234
  and podcast create/update/publish automatically queues processing when
@@ -0,0 +1,16 @@
1
+ import type { D1Database } from './d1.js';
2
+ export interface DekFailureNotificationInput {
3
+ db: D1Database;
4
+ workspaceId: string;
5
+ contentId: string;
6
+ title: string;
7
+ reason: string;
8
+ userId?: string | null;
9
+ }
10
+ /**
11
+ * Create unread, in-app notifications when publication ships without a dek.
12
+ * Interactive publishes target the actor; background publishes target every
13
+ * editorial member because no actor is present to receive the failure.
14
+ */
15
+ export declare function createDekFailureNotifications(input: DekFailureNotificationInput): Promise<number>;
16
+ //# sourceMappingURL=ai-dek-notifications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-dek-notifications.d.ts","sourceRoot":"","sources":["../../src/engine/ai-dek-notifications.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEzC,MAAM,WAAW,2BAA2B;IAC3C,EAAE,EAAE,UAAU,CAAA;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,SAAS,EAAE,MAAM,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACtB;AAED;;;;GAIG;AACH,wBAAsB,6BAA6B,CAClD,KAAK,EAAE,2BAA2B,GAChC,OAAO,CAAC,MAAM,CAAC,CA+BjB"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Create unread, in-app notifications when publication ships without a dek.
3
+ * Interactive publishes target the actor; background publishes target every
4
+ * editorial member because no actor is present to receive the failure.
5
+ */
6
+ export async function createDekFailureNotifications(input) {
7
+ let userIds;
8
+ if (input.userId) {
9
+ userIds = [input.userId];
10
+ }
11
+ else {
12
+ const rows = await input.db
13
+ .prepare(`SELECT user_id
14
+ FROM workspace_memberships
15
+ WHERE workspace_id = ?
16
+ AND role IN ('owner', 'senior_editor', 'editor')
17
+ ORDER BY user_id ASC`)
18
+ .bind(input.workspaceId)
19
+ .all();
20
+ userIds = (rows.results ?? []).map((row) => row.user_id);
21
+ }
22
+ const reason = input.reason.trim().slice(0, 160) || 'unknown error';
23
+ const body = `Content was published without a subheading: “${input.title}”. AI generation failed (${reason}). Open the item to add one manually.`;
24
+ for (const userId of [...new Set(userIds)]) {
25
+ await input.db
26
+ .prepare(`INSERT INTO cms_notifications
27
+ (id, workspace_id, user_id, kind, body, created_at)
28
+ VALUES (?, ?, ?, 'ai_dek_failed', ?, unixepoch())`)
29
+ .bind(crypto.randomUUID(), input.workspaceId, userId, body)
30
+ .run();
31
+ }
32
+ return new Set(userIds).size;
33
+ }
34
+ //# sourceMappingURL=ai-dek-notifications.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-dek-notifications.js","sourceRoot":"","sources":["../../src/engine/ai-dek-notifications.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,6BAA6B,CAClD,KAAkC;IAElC,IAAI,OAAiB,CAAA;IACrB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,OAAO,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IACzB,CAAC;SAAM,CAAC;QACP,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,EAAE;aACzB,OAAO,CACP;;;;0BAIsB,CACtB;aACA,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC;aACvB,GAAG,EAAuB,CAAA;QAC5B,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACzD,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,eAAe,CAAA;IACnE,MAAM,IAAI,GAAG,gDAAgD,KAAK,CAAC,KAAK,4BAA4B,MAAM,uCAAuC,CAAA;IACjJ,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;QAC5C,MAAM,KAAK,CAAC,EAAE;aACZ,OAAO,CACP;;uDAEmD,CACnD;aACA,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,EAAE,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC;aAC1D,GAAG,EAAE,CAAA;IACR,CAAC;IACD,OAAO,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,CAAA;AAC7B,CAAC"}
@@ -0,0 +1,35 @@
1
+ import type { LlmDispatch } from '../providers/types.js';
2
+ import type { D1Database } from './d1.js';
3
+ import { type ContentItemRecord } from './publisher.js';
4
+ export declare const DEK_EXEMPLAR_LIMIT = 6;
5
+ export interface DekGenerationContext {
6
+ item: ContentItemRecord;
7
+ source: string;
8
+ exemplars: string[];
9
+ }
10
+ export type GenerateContentDekResult = {
11
+ status: 'generated';
12
+ dek: string;
13
+ written: true;
14
+ } | {
15
+ status: 'locked';
16
+ dek: string;
17
+ written: false;
18
+ } | {
19
+ status: 'unavailable';
20
+ dek: null;
21
+ written: false;
22
+ reason: string;
23
+ } | {
24
+ status: 'not_found';
25
+ dek: null;
26
+ written: false;
27
+ reason: 'not_found';
28
+ };
29
+ export declare function loadDekGenerationContext(db: D1Database, contentId: string): Promise<DekGenerationContext | null>;
30
+ export declare function generateContentDek(input: {
31
+ db: D1Database;
32
+ contentId: string;
33
+ llm: LlmDispatch;
34
+ }): Promise<GenerateContentDekResult>;
35
+ //# sourceMappingURL=ai-dek.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-dek.d.ts","sourceRoot":"","sources":["../../src/engine/ai-dek.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AAGxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACzC,OAAO,EAAE,KAAK,iBAAiB,EAAkB,MAAM,gBAAgB,CAAA;AAEvE,eAAO,MAAM,kBAAkB,IAAI,CAAA;AAEnC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,iBAAiB,CAAA;IACvB,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,MAAM,wBAAwB,GACjC;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,IAAI,CAAA;CAAE,GACnD;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,KAAK,CAAA;CAAE,GACjD;IAAE,MAAM,EAAE,aAAa,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACpE;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,GAAG,EAAE,IAAI,CAAC;IAAC,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,WAAW,CAAA;CAAE,CAAA;AA+B1E,wBAAsB,wBAAwB,CAC7C,EAAE,EAAE,UAAU,EACd,SAAS,EAAE,MAAM,GACf,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC,CA4BtC;AAUD,wBAAsB,kBAAkB,CAAC,KAAK,EAAE;IAC/C,EAAE,EAAE,UAAU,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,GAAG,EAAE,WAAW,CAAA;CAChB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CA2CpC"}
@@ -0,0 +1,99 @@
1
+ import { dekPrompt } from './ai-prompts.js';
2
+ import { applyAiWrite, parseLockedFields } from './ai-writeback.js';
3
+ import { getContentItem } from './publisher.js';
4
+ export const DEK_EXEMPLAR_LIMIT = 6;
5
+ async function loadTypeSource(db, item) {
6
+ if (item.type === 'video') {
7
+ const row = await db
8
+ .prepare('SELECT script FROM video_content WHERE content_id = ? LIMIT 1')
9
+ .bind(item.id)
10
+ .first();
11
+ return row?.script?.trim() ?? '';
12
+ }
13
+ if (item.type === 'podcast') {
14
+ const row = await db
15
+ .prepare('SELECT transcript FROM podcast_content WHERE content_id = ? LIMIT 1')
16
+ .bind(item.id)
17
+ .first();
18
+ return row?.transcript?.trim() ?? '';
19
+ }
20
+ const row = await db
21
+ .prepare(`SELECT body_markdown, body_html, subtitle
22
+ FROM article_content WHERE content_id = ? LIMIT 1`)
23
+ .bind(item.id)
24
+ .first();
25
+ return (row?.body_markdown || row?.body_html || row?.subtitle || '').trim();
26
+ }
27
+ export async function loadDekGenerationContext(db, contentId) {
28
+ const item = await getContentItem(db, contentId);
29
+ if (!item)
30
+ return null;
31
+ const typeSource = await loadTypeSource(db, item);
32
+ const description = item.description?.trim() ?? '';
33
+ const source = [description, typeSource].filter(Boolean).join('\n\n');
34
+ const rows = await db
35
+ .prepare(`SELECT title, excerpt
36
+ FROM content_items
37
+ WHERE status = 'published'
38
+ AND deleted_at IS NULL
39
+ AND id <> ?
40
+ AND excerpt IS NOT NULL
41
+ AND trim(excerpt) <> ''
42
+ ORDER BY CASE WHEN type = ? THEN 0 ELSE 1 END,
43
+ COALESCE(published_at, 0) DESC,
44
+ id ASC
45
+ LIMIT ?`)
46
+ .bind(contentId, item.type, DEK_EXEMPLAR_LIMIT)
47
+ .all();
48
+ const exemplars = (rows.results ?? []).map((row) => `Headline: ${row.title}\nDek: ${row.excerpt.trim()}`);
49
+ return { item, source, exemplars };
50
+ }
51
+ function normalizeDek(text) {
52
+ return text
53
+ .trim()
54
+ .replace(/^(["“])|(["”])$/g, '')
55
+ .replace(/\s+/g, ' ')
56
+ .trim();
57
+ }
58
+ export async function generateContentDek(input) {
59
+ const context = await loadDekGenerationContext(input.db, input.contentId);
60
+ if (!context) {
61
+ return { status: 'not_found', dek: null, written: false, reason: 'not_found' };
62
+ }
63
+ const result = await input.llm.dispatch({
64
+ ...dekPrompt({
65
+ title: context.item.title,
66
+ source: context.source,
67
+ exemplars: context.exemplars,
68
+ }),
69
+ stream: false,
70
+ });
71
+ if (result instanceof ReadableStream) {
72
+ return { status: 'unavailable', dek: null, written: false, reason: 'stream_result' };
73
+ }
74
+ if (result.status === 'unavailable') {
75
+ return {
76
+ status: 'unavailable',
77
+ dek: null,
78
+ written: false,
79
+ reason: result.reason ?? 'unavailable',
80
+ };
81
+ }
82
+ const dek = normalizeDek(result.text);
83
+ if (!dek) {
84
+ return { status: 'unavailable', dek: null, written: false, reason: 'empty_result' };
85
+ }
86
+ const write = applyAiWrite({
87
+ locked: parseLockedFields(context.item.ai_locked_fields),
88
+ field: 'excerpt',
89
+ value: dek,
90
+ });
91
+ if (!write.written)
92
+ return { status: 'locked', dek, written: false };
93
+ await input.db
94
+ .prepare('UPDATE content_items SET excerpt = ?, updated_at = unixepoch() WHERE id = ?')
95
+ .bind(dek, input.contentId)
96
+ .run();
97
+ return { status: 'generated', dek, written: true };
98
+ }
99
+ //# sourceMappingURL=ai-dek.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-dek.js","sourceRoot":"","sources":["../../src/engine/ai-dek.ts"],"names":[],"mappings":"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"}
@@ -28,11 +28,23 @@ export interface MetaDescriptionPromptInput {
28
28
  title: string;
29
29
  body: string;
30
30
  }
31
+ /** Input to dekPrompt. A dek is display copy, not SEO metadata. */
32
+ export interface DekPromptInput {
33
+ title: string;
34
+ source: string;
35
+ exemplars?: string[];
36
+ }
31
37
  /** The typed prompt contract shape consumed by LlmDispatch.dispatch(). */
32
38
  export interface AiPromptContract {
33
39
  task: string;
34
40
  prompt: string;
35
41
  }
42
+ /**
43
+ * Build the prompt for a standfirst-style display subheading (dek).
44
+ * This deliberately differs from the SEO meta-description task: it tells the
45
+ * reader what the piece argues, reveals, or shows in the publication's voice.
46
+ */
47
+ export declare function dekPrompt(input: DekPromptInput): AiPromptContract;
36
48
  /**
37
49
  * Build the prompt for "Proofread & tighten".
38
50
  * The LLM should fix grammar and trim approximately 8% of body length,
@@ -1 +1 @@
1
- {"version":3,"file":"ai-prompts.d.ts","sourceRoot":"","sources":["../../src/engine/ai-prompts.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,k7BASqD,CAAA;AAEpF,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,sCAAsC;AACtC,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACd;AASD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAS7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAW7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAQ7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,gBAAgB,CAUzF"}
1
+ {"version":3,"file":"ai-prompts.d.ts","sourceRoot":"","sources":["../../src/engine/ai-prompts.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB,k7BASqD,CAAA;AAEpF,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,gCAAgC;AAChC,MAAM,WAAW,oBAAoB;IACpC,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,sCAAsC;AACtC,MAAM,WAAW,0BAA0B;IAC1C,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;CACZ;AAED,mEAAmE;AACnE,MAAM,WAAW,cAAc;IAC9B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;CACpB;AAED,0EAA0E;AAC1E,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,MAAM,CAAA;CACd;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,gBAAgB,CAWjE;AASD;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAS7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAW7E;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,gBAAgB,CAQ7E;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,0BAA0B,GAAG,gBAAgB,CAUzF"}
@@ -21,6 +21,23 @@ Style guide:
21
21
  - Meta descriptions: factual summaries that state what the article covers; never a teaser or a question.
22
22
  - Takeaways: distil the three most important facts or conclusions; do not repeat the headline.
23
23
  - Length discipline: tighter is better. Cut redundant words before adding new ones.`;
24
+ /**
25
+ * Build the prompt for a standfirst-style display subheading (dek).
26
+ * This deliberately differs from the SEO meta-description task: it tells the
27
+ * reader what the piece argues, reveals, or shows in the publication's voice.
28
+ */
29
+ export function dekPrompt(input) {
30
+ const exemplarsBlock = buildExemplarsBlock(input.exemplars);
31
+ const prompt = `${HOUSE_STYLE_SYSTEM}${exemplarsBlock}
32
+
33
+ Task: Write one standfirst-style subheading (dek) for this piece. It must be 1–2 sentences, roughly 120–200 characters, and reader-facing. State what the piece argues, reveals, or shows. It must not repeat or lightly rephrase the headline. Avoid clickbait and never use the boilerplate shape “with context on the stakes for…”. Return only the dek text with no label, quotation marks, commentary, or preamble.
34
+
35
+ Headline: ${input.title}
36
+
37
+ Source material:
38
+ ${input.source}`;
39
+ return { task: 'cms.dek', prompt };
40
+ }
24
41
  /** Build the exemplars block when exemplars are supplied. */
25
42
  function buildExemplarsBlock(exemplars) {
26
43
  if (!exemplars || exemplars.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"ai-prompts.js","sourceRoot":"","sources":["../../src/engine/ai-prompts.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,yEAAyE;AACzE,4EAA4E;AAC5E,6BAA6B;AAE7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;oFASkD,CAAA;AAgCpF,6DAA6D;AAC7D,SAAS,mBAAmB,CAAC,SAA+B;IAC3D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrF,OAAO,mGAAmG,KAAK,8BAA8B,CAAA;AAC9I,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,GAAG,kBAAkB,GAAG,cAAc;;;;;EAKpD,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,GAAG,kBAAkB,GAAG,cAAc;;;;iBAIrC,KAAK,CAAC,KAAK;;;EAG1B,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,MAAM,GAAG,GAAG,kBAAkB;;;;;EAKnC,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACtE,MAAM,MAAM,GAAG,GAAG,kBAAkB;;;;iBAIpB,KAAK,CAAC,KAAK;;;EAG1B,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AACpC,CAAC"}
1
+ {"version":3,"file":"ai-prompts.js","sourceRoot":"","sources":["../../src/engine/ai-prompts.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,yEAAyE;AACzE,4EAA4E;AAC5E,6BAA6B;AAE7B;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;;;;;;;;;oFASkD,CAAA;AAuCpF;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,KAAqB;IAC9C,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,GAAG,kBAAkB,GAAG,cAAc;;;;YAI1C,KAAK,CAAC,KAAK;;;EAGrB,KAAK,CAAC,MAAM,EAAE,CAAA;IACf,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,CAAA;AACnC,CAAC;AAED,6DAA6D;AAC7D,SAAS,mBAAmB,CAAC,SAA+B;IAC3D,IAAI,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IACnD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACrF,OAAO,mGAAmG,KAAK,8BAA8B,CAAA;AAC9I,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,GAAG,kBAAkB,GAAG,cAAc;;;;;EAKpD,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,cAAc,GAAG,mBAAmB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAA;IAC3D,MAAM,MAAM,GAAG,GAAG,kBAAkB,GAAG,cAAc;;;;iBAIrC,KAAK,CAAC,KAAK;;;EAG1B,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,KAA2B;IAC1D,MAAM,MAAM,GAAG,GAAG,kBAAkB;;;;;EAKnC,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,CAAA;AACzC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAiC;IACtE,MAAM,MAAM,GAAG,GAAG,kBAAkB;;;;iBAIpB,KAAK,CAAC,KAAK;;;EAG1B,KAAK,CAAC,IAAI,EAAE,CAAA;IACb,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,CAAA;AACpC,CAAC"}
@@ -1,5 +1,7 @@
1
1
  export { type ActivityEntry, logActivity } from './activity-log.js';
2
- export { type AiPromptContract, type HeadlinesPromptInput, HOUSE_STYLE_SYSTEM, headlinesPrompt, type MetaDescriptionPromptInput, metaDescriptionPrompt, type ProofreadPromptInput, proofreadPrompt, type TakeawaysPromptInput, takeawaysPrompt, } from './ai-prompts.js';
2
+ export { DEK_EXEMPLAR_LIMIT, type DekGenerationContext, type GenerateContentDekResult, generateContentDek, loadDekGenerationContext, } from './ai-dek.js';
3
+ export { createDekFailureNotifications, type DekFailureNotificationInput, } from './ai-dek-notifications.js';
4
+ export { type AiPromptContract, type DekPromptInput, dekPrompt, type HeadlinesPromptInput, HOUSE_STYLE_SYSTEM, headlinesPrompt, type MetaDescriptionPromptInput, metaDescriptionPrompt, type ProofreadPromptInput, proofreadPrompt, type TakeawaysPromptInput, takeawaysPrompt, } from './ai-prompts.js';
3
5
  export { type AiWriteInput, type AiWriteResult, applyAiWrite, canWriteField, parseLockedFields, } from './ai-writeback.js';
4
6
  export { type ApiKeyListEntry, type CreateApiKeyInput, type CreateApiKeyResult, createApiKey, generateRawKey, listApiKeys, revokeApiKey, sha256Hex, type VerifyApiKeyResult, verifyCmsApiKey, } from './api-keys.js';
5
7
  export { type ContentMetadata, ContentMetadataError, type ContentMetadataPrimitive, type ContentMetadataValue, MAX_CONTENT_METADATA_BYTES, parseContentMetadata, serializeContentMetadata, } from './content-metadata.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,11 @@
4
4
  // auth/authz injected) land in WS7-07.
5
5
  // Activity log write helper — first-party D1, cms_activity_log (P5 Task 3).
6
6
  export { logActivity } from './activity-log.js';
7
+ // Display-subheading generation with deterministic house exemplars.
8
+ export { DEK_EXEMPLAR_LIMIT, generateContentDek, loadDekGenerationContext, } from './ai-dek.js';
9
+ export { createDekFailureNotifications, } from './ai-dek-notifications.js';
7
10
  // AI prompt contracts + house-style system prompt (P4 Task 1).
8
- export { HOUSE_STYLE_SYSTEM, headlinesPrompt, metaDescriptionPrompt, proofreadPrompt, takeawaysPrompt, } from './ai-prompts.js';
11
+ export { dekPrompt, HOUSE_STYLE_SYSTEM, headlinesPrompt, metaDescriptionPrompt, proofreadPrompt, takeawaysPrompt, } from './ai-prompts.js';
9
12
  // ai_locked_fields write-back gate (P4 Task 2).
10
13
  export { applyAiWrite, canWriteField, parseLockedFields, } from './ai-writeback.js';
11
14
  // API key engine — create/list/revoke/verify (P7 Task 7).
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/engine/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,cAAc,CAAA;AActF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,gBAAgB,CA+R1F;AAED,YAAY,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AACxF,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,OAAO,CAAA;AAC7C,OAAO,EAAE,KAAK,qBAAqB,EAA+B,MAAM,cAAc,CAAA;AActF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,WAAW,EAAE,qBAAqB,GAAG,gBAAgB,CAmS1F;AAED,YAAY,EAAE,qBAAqB,EAAE,6BAA6B,EAAE,MAAM,cAAc,CAAA;AACxF,OAAO,EAAE,2BAA2B,EAAE,MAAM,cAAc,CAAA"}
@@ -118,6 +118,10 @@ export default function growthLabsCms(userOptions) {
118
118
  entrypoint: resolveEntrypoint('../ui/api/content/[id]'),
119
119
  });
120
120
  // AI sub-routes
121
+ injectRoute({
122
+ pattern: `${base}/api/content/[id]/ai/dek`,
123
+ entrypoint: resolveEntrypoint('../ui/api/content/[id]/ai/dek'),
124
+ });
121
125
  injectRoute({
122
126
  pattern: `${base}/api/content/[id]/ai/headlines`,
123
127
  entrypoint: resolveEntrypoint('../ui/api/content/[id]/ai/headlines'),
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/integration/index.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,16 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
16
16
  meta?: string | undefined;
17
17
  color?: string | undefined;
18
18
  }>, "many">;
19
+ primaryCategories: z.ZodDefault<z.ZodArray<z.ZodObject<{
20
+ slug: z.ZodString;
21
+ label: z.ZodString;
22
+ }, "strip", z.ZodTypeAny, {
23
+ slug: string;
24
+ label: string;
25
+ }, {
26
+ slug: string;
27
+ label: string;
28
+ }>, "many">>;
19
29
  activeWorkspaceId: z.ZodOptional<z.ZodString>;
20
30
  adminBasePath: z.ZodDefault<z.ZodString>;
21
31
  searchEnabled: z.ZodDefault<z.ZodBoolean>;
@@ -56,6 +66,10 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
56
66
  meta: string;
57
67
  color: string;
58
68
  }[];
69
+ primaryCategories: {
70
+ slug: string;
71
+ label: string;
72
+ }[];
59
73
  adminBasePath: string;
60
74
  searchEnabled: boolean;
61
75
  theme: {
@@ -78,6 +92,10 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
78
92
  meta?: string | undefined;
79
93
  color?: string | undefined;
80
94
  }[];
95
+ primaryCategories?: {
96
+ slug: string;
97
+ label: string;
98
+ }[] | undefined;
81
99
  activeWorkspaceId?: string | undefined;
82
100
  adminBasePath?: string | undefined;
83
101
  searchEnabled?: boolean | undefined;
@@ -101,6 +119,10 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
101
119
  meta: string;
102
120
  color: string;
103
121
  }[];
122
+ primaryCategories: {
123
+ slug: string;
124
+ label: string;
125
+ }[];
104
126
  adminBasePath: string;
105
127
  searchEnabled: boolean;
106
128
  theme: {
@@ -122,6 +144,10 @@ export declare const cmsIntegrationOptionsSchema: z.ZodEffects<z.ZodObject<{
122
144
  meta?: string | undefined;
123
145
  color?: string | undefined;
124
146
  }[];
147
+ primaryCategories?: {
148
+ slug: string;
149
+ label: string;
150
+ }[] | undefined;
125
151
  activeWorkspaceId?: string | undefined;
126
152
  adminBasePath?: string | undefined;
127
153
  searchEnabled?: boolean | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AA+BvB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUoD,CAAA;AAE5F,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoCvB,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWoD,CAAA;AAE5F,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAA;AAC/E,MAAM,MAAM,6BAA6B,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,2BAA2B,CAAC,CAAA"}
@@ -6,6 +6,10 @@ const workspaceSchema = z.object({
6
6
  meta: z.string().default(''),
7
7
  color: z.string().default('#0c4a6e'),
8
8
  });
9
+ const primaryCategorySchema = z.object({
10
+ slug: z.string().min(1),
11
+ label: z.string().min(1),
12
+ });
9
13
  const themeSchema = z
10
14
  .object({
11
15
  mode: z.enum(['light', 'dark']).default('dark'),
@@ -27,6 +31,7 @@ const surveyResultsSchema = z
27
31
  export const cmsIntegrationOptionsSchema = z
28
32
  .object({
29
33
  workspaces: z.array(workspaceSchema).min(1, 'at least one workspace is required'),
34
+ primaryCategories: z.array(primaryCategorySchema).default([]),
30
35
  activeWorkspaceId: z.string().optional(),
31
36
  adminBasePath: z.string().default('/admin'),
32
37
  searchEnabled: z.boolean().default(true),
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;CACpC,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,CAAC;KACnB,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACjF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACnE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACvC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,mBAAmB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpD,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,mBAAmB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,QAAQ,EAAE,cAAc;CACxB,CAAC;KACD,MAAM,EAAE,CAAA;AAEV,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACP,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;IACjF,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,KAAK,EAAE,WAAW;IAClB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../src/integration/options.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AAErD,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE;IACd,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IAC5B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC;CACpC,CAAC,CAAA;AAEF,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CACxB,CAAC,CAAA;AAEF,MAAM,WAAW,GAAG,CAAC;KACnB,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC;IAC/C,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC;IACjF,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC;IACnE,YAAY,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACvC,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,mBAAmB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,yBAAyB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACpD,CAAC;KACD,OAAO,CAAC,EAAE,CAAC,CAAA;AAEb,MAAM,mBAAmB,GAAG,CAAC;KAC3B,MAAM,CAAC;IACP,QAAQ,EAAE,cAAc;CACxB,CAAC;KACD,MAAM,EAAE,CAAA;AAEV,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC;KAC1C,MAAM,CAAC;IACP,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,oCAAoC,CAAC;IACjF,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC7D,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACxC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC;IAC3C,aAAa,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;IACxC,KAAK,EAAE,WAAW;IAClB,aAAa,EAAE,mBAAmB;IAClC,aAAa,EAAE,mBAAmB,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,iBAAiB,EAAE,CAAC,CAAC,iBAAiB,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA"}
@@ -1,6 +1,8 @@
1
1
  import type { CmsRouteConfig } from './config.js';
2
2
  import { type RouteContext } from './context.js';
3
3
  export interface AiRouteHandlers {
4
+ /** POST /content/:id/ai/dek — sync: generate + persist a display subheading. */
5
+ suggestDek(ctx: RouteContext): Promise<Response>;
4
6
  /** POST /content/:id/ai/proofread — SSE streaming proofread & tighten. */
5
7
  proofreadAndTighten(ctx: RouteContext): Promise<Response>;
6
8
  /** POST /content/:id/ai/headlines — SSE streaming 5-headline suggestions. */
@@ -1 +1 @@
1
- {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/routes/ai.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAqC,KAAK,YAAY,EAAa,MAAM,cAAc,CAAA;AAkB9F,MAAM,WAAW,eAAe;IAC/B,0EAA0E;IAC1E,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzD,6EAA6E;IAC7E,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtD,iFAAiF;IACjF,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,mGAAmG;IACnG,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,gHAAgH;IAChH,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY7D;AA2FD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CAkStE"}
1
+ {"version":3,"file":"ai.d.ts","sourceRoot":"","sources":["../../src/routes/ai.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAEjD,OAAO,EAAqC,KAAK,YAAY,EAAa,MAAM,cAAc,CAAA;AAkB9F,MAAM,WAAW,eAAe;IAC/B,gFAAgF;IAChF,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,0EAA0E;IAC1E,mBAAmB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACzD,6EAA6E;IAC7E,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACtD,iFAAiF;IACjF,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,mGAAmG;IACnG,oBAAoB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1D,gHAAgH;IAChH,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACrD;AAED;;;;;;;GAOG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAY7D;AA2FD,wBAAgB,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG,eAAe,CA0UtE"}
package/dist/routes/ai.js CHANGED
@@ -13,10 +13,12 @@
13
13
  // - Sync actions (takeaways, meta-description) call dispatch({ ...prompt, stream: false }),
14
14
  // apply the ai_locked_fields gate, persist when allowed, and return the result.
15
15
  // - OG-image generation lands in Task 5.
16
+ import { generateContentDek } from '../engine/ai-dek.js';
16
17
  import { headlinesPrompt, metaDescriptionPrompt, proofreadPrompt, takeawaysPrompt, } from '../engine/ai-prompts.js';
17
18
  import { applyAiWrite, parseLockedFields } from '../engine/ai-writeback.js';
18
19
  import { buildOgCardSpec } from '../engine/og-render.js';
19
20
  import { getContentItem } from '../engine/publisher.js';
21
+ import { canPerformContentAction } from './authz-matrix.js';
20
22
  import { resolveConfig } from './config.js';
21
23
  import { json, requireId } from './context.js';
22
24
  import { buildImageAssetKey, insertMediaAsset, publicUrlFor } from './media-lib.js';
@@ -128,6 +130,45 @@ async function loadArticleBody(ctx, id) {
128
130
  }
129
131
  export function createAiRoutes(config) {
130
132
  const resolved = resolveConfig(config);
133
+ async function suggestDek(ctx) {
134
+ const idResult = requireId(ctx);
135
+ if ('error' in idResult)
136
+ return idResult.error;
137
+ const item = await getContentItem(ctx.db, idResult.id);
138
+ if (!item)
139
+ return json({ error: 'Not found' }, 404);
140
+ if (resolved.authz.getUser) {
141
+ const user = await resolved.authz.getUser(ctx);
142
+ if (!user)
143
+ return json({ error: 'Unauthorized' }, 401);
144
+ const allowed = canPerformContentAction(user.role, { actorSubject: user.subject, contentAuthorId: item.author_id }, item.status === 'published' ? 'write_published' : 'write');
145
+ if (!allowed)
146
+ return json({ error: 'Forbidden', role: user.role }, 403);
147
+ }
148
+ else {
149
+ const authGuard = await aiGuard(resolved.authz, ctx);
150
+ if (authGuard)
151
+ return authGuard;
152
+ }
153
+ if (!resolved.hooks.llm) {
154
+ return json({ error: 'AI generation is not configured' }, 501);
155
+ }
156
+ const result = await generateContentDek({
157
+ db: ctx.db,
158
+ contentId: idResult.id,
159
+ llm: resolved.hooks.llm,
160
+ });
161
+ if (result.status === 'not_found')
162
+ return json({ error: 'Not found' }, 404);
163
+ if (result.status === 'unavailable') {
164
+ return llmUnavailableResponse({ reason: result.reason }, { dek: null, written: false });
165
+ }
166
+ return json({
167
+ dek: result.dek,
168
+ written: result.written,
169
+ ...(result.status === 'locked' ? { locked: true } : {}),
170
+ });
171
+ }
131
172
  async function proofreadAndTighten(ctx) {
132
173
  // Guard: edit_own_draft capability (any member; ownership-aware write-back).
133
174
  const authGuard = await aiGuard(resolved.authz, ctx);
@@ -371,6 +412,7 @@ export function createAiRoutes(config) {
371
412
  });
372
413
  }
373
414
  return {
415
+ suggestDek,
374
416
  proofreadAndTighten,
375
417
  suggestHeadlines,
376
418
  generateKeyTakeaways,