@growth-labs/cms 0.5.29 → 0.5.31

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 (151) hide show
  1. package/dist/engine/foundry-dispatch.d.ts +7 -2
  2. package/dist/engine/foundry-dispatch.d.ts.map +1 -1
  3. package/dist/engine/foundry-dispatch.js +24 -6
  4. package/dist/engine/foundry-dispatch.js.map +1 -1
  5. package/dist/engine/fronts-publish-intent.d.ts +174 -0
  6. package/dist/engine/fronts-publish-intent.d.ts.map +1 -0
  7. package/dist/engine/fronts-publish-intent.js +352 -0
  8. package/dist/engine/fronts-publish-intent.js.map +1 -0
  9. package/dist/engine/fronts-publish.d.ts +80 -0
  10. package/dist/engine/fronts-publish.d.ts.map +1 -0
  11. package/dist/engine/fronts-publish.js +286 -0
  12. package/dist/engine/fronts-publish.js.map +1 -0
  13. package/dist/engine/index.d.ts +7 -0
  14. package/dist/engine/index.d.ts.map +1 -1
  15. package/dist/engine/index.js +10 -0
  16. package/dist/engine/index.js.map +1 -1
  17. package/dist/engine/publication-continuity.d.ts +77 -0
  18. package/dist/engine/publication-continuity.d.ts.map +1 -0
  19. package/dist/engine/publication-continuity.js +94 -0
  20. package/dist/engine/publication-continuity.js.map +1 -0
  21. package/dist/engine/publication-receipt/canonical-json.d.ts +34 -0
  22. package/dist/engine/publication-receipt/canonical-json.d.ts.map +1 -0
  23. package/dist/engine/publication-receipt/canonical-json.js +100 -0
  24. package/dist/engine/publication-receipt/canonical-json.js.map +1 -0
  25. package/dist/engine/publication-receipt/receipt.d.ts +316 -0
  26. package/dist/engine/publication-receipt/receipt.d.ts.map +1 -0
  27. package/dist/engine/publication-receipt/receipt.js +131 -0
  28. package/dist/engine/publication-receipt/receipt.js.map +1 -0
  29. package/dist/engine/publication-receipt/signature.d.ts +36 -0
  30. package/dist/engine/publication-receipt/signature.d.ts.map +1 -0
  31. package/dist/engine/publication-receipt/signature.js +79 -0
  32. package/dist/engine/publication-receipt/signature.js.map +1 -0
  33. package/dist/engine/publication.d.ts.map +1 -1
  34. package/dist/engine/publication.js +2 -0
  35. package/dist/engine/publication.js.map +1 -1
  36. package/dist/engine/publisher.d.ts.map +1 -1
  37. package/dist/engine/publisher.js +23 -1
  38. package/dist/engine/publisher.js.map +1 -1
  39. package/dist/engine/source-sections.d.ts +20 -0
  40. package/dist/engine/source-sections.d.ts.map +1 -0
  41. package/dist/engine/source-sections.js +130 -0
  42. package/dist/engine/source-sections.js.map +1 -0
  43. package/dist/engine/validator/checks/source-section-diagnostics.d.ts +7 -0
  44. package/dist/engine/validator/checks/source-section-diagnostics.d.ts.map +1 -0
  45. package/dist/engine/validator/checks/source-section-diagnostics.js +120 -0
  46. package/dist/engine/validator/checks/source-section-diagnostics.js.map +1 -0
  47. package/dist/engine/validator/index.d.ts +10 -0
  48. package/dist/engine/validator/index.d.ts.map +1 -1
  49. package/dist/engine/validator/index.js +4 -0
  50. package/dist/engine/validator/index.js.map +1 -1
  51. package/dist/engine/validator/types.d.ts +1 -1
  52. package/dist/engine/validator/types.d.ts.map +1 -1
  53. package/dist/engine/validator/types.js +10 -0
  54. package/dist/engine/validator/types.js.map +1 -1
  55. package/dist/integration/index.d.ts.map +1 -1
  56. package/dist/integration/index.js +10 -0
  57. package/dist/integration/index.js.map +1 -1
  58. package/dist/providers/types.d.ts +1 -0
  59. package/dist/providers/types.d.ts.map +1 -1
  60. package/dist/routes/content.d.ts.map +1 -1
  61. package/dist/routes/content.js +22 -2
  62. package/dist/routes/content.js.map +1 -1
  63. package/dist/routes/fronts-publish.d.ts +10 -0
  64. package/dist/routes/fronts-publish.d.ts.map +1 -0
  65. package/dist/routes/fronts-publish.js +250 -0
  66. package/dist/routes/fronts-publish.js.map +1 -0
  67. package/dist/routes/index.d.ts +3 -0
  68. package/dist/routes/index.d.ts.map +1 -1
  69. package/dist/routes/index.js +4 -0
  70. package/dist/routes/index.js.map +1 -1
  71. package/dist/routes/surveys.d.ts.map +1 -1
  72. package/dist/routes/surveys.js +13 -1
  73. package/dist/routes/surveys.js.map +1 -1
  74. package/dist/schema/insights-ingest.d.ts +28 -28
  75. package/dist/schema/layout.d.ts +2 -2
  76. package/dist/schema/migrations.d.ts.map +1 -1
  77. package/dist/schema/migrations.js +36 -0
  78. package/dist/schema/migrations.js.map +1 -1
  79. package/dist/schema/portable-text.d.ts +2 -2
  80. package/dist/schema/tables.d.ts +1 -1
  81. package/dist/schema/tables.d.ts.map +1 -1
  82. package/dist/schema/tables.js +2 -0
  83. package/dist/schema/tables.js.map +1 -1
  84. package/dist/schema/types.d.ts +59 -0
  85. package/dist/schema/types.d.ts.map +1 -1
  86. package/dist/schema/types.js.map +1 -1
  87. package/dist/surveys/access.d.ts +2 -0
  88. package/dist/surveys/access.d.ts.map +1 -1
  89. package/dist/surveys/access.js +7 -0
  90. package/dist/surveys/access.js.map +1 -1
  91. package/dist/surveys/errors.d.ts +8 -0
  92. package/dist/surveys/errors.d.ts.map +1 -1
  93. package/dist/surveys/errors.js +12 -0
  94. package/dist/surveys/errors.js.map +1 -1
  95. package/dist/surveys/schema.d.ts +129 -54
  96. package/dist/surveys/schema.d.ts.map +1 -1
  97. package/dist/surveys/schema.js +45 -0
  98. package/dist/surveys/schema.js.map +1 -1
  99. package/dist/ui/api/fronts/publish-callback.d.ts +3 -0
  100. package/dist/ui/api/fronts/publish-callback.d.ts.map +1 -0
  101. package/dist/ui/api/fronts/publish-callback.js +8 -0
  102. package/dist/ui/api/fronts/publish-callback.js.map +1 -0
  103. package/dist/ui/api/fronts/schedule.d.ts +3 -0
  104. package/dist/ui/api/fronts/schedule.d.ts.map +1 -0
  105. package/dist/ui/api/fronts/schedule.js +8 -0
  106. package/dist/ui/api/fronts/schedule.js.map +1 -0
  107. package/dist/ui/editor/ContentForm.d.ts.map +1 -1
  108. package/dist/ui/editor/ContentForm.js +52 -1
  109. package/dist/ui/editor/ContentForm.js.map +1 -1
  110. package/dist/ui/editor/body-warnings.d.ts +27 -0
  111. package/dist/ui/editor/body-warnings.d.ts.map +1 -0
  112. package/dist/ui/editor/body-warnings.js +58 -0
  113. package/dist/ui/editor/body-warnings.js.map +1 -0
  114. package/dist/ui/screens/SurveyResponsesScreen.d.ts +7 -1
  115. package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -1
  116. package/dist/ui/screens/SurveyResponsesScreen.js +141 -32
  117. package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -1
  118. package/migrations/0026_fronts_publish.sql +31 -0
  119. package/migrations/0027_fronts_publish_intent.sql +44 -0
  120. package/package.json +1 -1
  121. package/src/engine/foundry-dispatch.ts +22 -6
  122. package/src/engine/fronts-publish-intent.ts +676 -0
  123. package/src/engine/fronts-publish.ts +417 -0
  124. package/src/engine/index.ts +60 -0
  125. package/src/engine/publication-continuity.ts +140 -0
  126. package/src/engine/publication-receipt/canonical-json.ts +123 -0
  127. package/src/engine/publication-receipt/receipt.ts +160 -0
  128. package/src/engine/publication-receipt/signature.ts +112 -0
  129. package/src/engine/publication.ts +2 -0
  130. package/src/engine/publisher.ts +23 -1
  131. package/src/engine/source-sections.ts +153 -0
  132. package/src/engine/validator/checks/source-section-diagnostics.ts +187 -0
  133. package/src/engine/validator/index.ts +12 -0
  134. package/src/engine/validator/types.ts +19 -0
  135. package/src/integration/index.ts +10 -0
  136. package/src/providers/types.ts +1 -1
  137. package/src/routes/content.ts +23 -2
  138. package/src/routes/fronts-publish.ts +292 -0
  139. package/src/routes/index.ts +8 -0
  140. package/src/routes/surveys.ts +12 -1
  141. package/src/schema/migrations.ts +36 -0
  142. package/src/schema/tables.ts +2 -0
  143. package/src/schema/types.ts +61 -0
  144. package/src/surveys/access.ts +9 -0
  145. package/src/surveys/errors.ts +12 -0
  146. package/src/surveys/schema.ts +47 -0
  147. package/src/ui/api/fronts/publish-callback.ts +18 -0
  148. package/src/ui/api/fronts/schedule.ts +18 -0
  149. package/src/ui/editor/ContentForm.tsx +93 -0
  150. package/src/ui/editor/body-warnings.ts +78 -0
  151. package/src/ui/screens/SurveyResponsesScreen.tsx +369 -121
@@ -0,0 +1,250 @@
1
+ // Fronts publish routes (cms/Masthead side) — the two machine-to-machine seams
2
+ // the out-of-process Fronts publish worker (foundryd) drives:
3
+ //
4
+ // GET /admin/api/fronts/schedule?window=<from>..<to> — the poll surface.
5
+ // POST /admin/api/fronts/publish-callback — the callback receiver.
6
+ //
7
+ // AUTH reuses the existing M2M primitive (`verifyHmac` + `X-Foundry-Signature`
8
+ // against `ctx.env.FOUNDRY_HMAC_SECRET` — a per-Worker secret string OR a Secrets
9
+ // Store binding `{ get() }`; no new auth scheme, no shared secret in code/D1),
10
+ // hardened against replay with a REQUIRED `X-Foundry-Timestamp`:
11
+ //
12
+ // X-Foundry-Timestamp: <unix seconds, within ±300s of now>
13
+ // X-Foundry-Signature: sha256=HMAC(secret, `${timestamp}\n${payload}`)
14
+ //
15
+ // where payload is the raw query string (`url.search`) for the GET poll and the
16
+ // raw body for the POST callback. Binding the signature to a fresh timestamp
17
+ // stops replay: without it a no-`window` GET would sign HMAC(secret,"") — a
18
+ // CONSTANT — so one captured URL+header pair would be a permanent bearer
19
+ // credential for the pre-publication embargo schedule.
20
+ //
21
+ // Both endpoints ship ENABLED behind FRONTS_PUBLISH_ENABLED (a rollback lever,
22
+ // default ON). Failures are loud: bad/stale HMAC → 401 + warn log; a `live`
23
+ // callback that cannot commit through the ledger → 500 + error log; disabled → 503.
24
+ import { z } from 'zod';
25
+ import { verifyHmac } from '../engine/foundry-dispatch.js';
26
+ import { applyFrontsPublishCallback, isFrontsPublishEnabled, listFrontsPublishSchedule, } from '../engine/fronts-publish.js';
27
+ import { hydrateFrontsPublishIntents } from '../engine/fronts-publish-intent.js';
28
+ import { publicUrlFor } from '../ui/screens/public-url.js';
29
+ import { resolveConfig } from './config.js';
30
+ import { json } from './context.js';
31
+ /**
32
+ * Resolve the Foundry HMAC secret from ctx.env.FOUNDRY_HMAC_SECRET — the SAME
33
+ * binding the existing foundry-callback route uses. Supports a plain string
34
+ * (test injection / per-Worker secret) or a Secrets Store binding `{ get() }`.
35
+ * Returns null → the route answers 500 "not configured".
36
+ */
37
+ async function resolveFoundryHmacSecret(env) {
38
+ const raw = env?.FOUNDRY_HMAC_SECRET;
39
+ if (typeof raw === 'string')
40
+ return raw || null;
41
+ if (raw && typeof raw.get === 'function') {
42
+ try {
43
+ const val = await raw.get();
44
+ return typeof val === 'string' && val.length > 0 ? val : null;
45
+ }
46
+ catch {
47
+ return null;
48
+ }
49
+ }
50
+ return null;
51
+ }
52
+ /** Max clock skew (seconds) tolerated on X-Foundry-Timestamp — the replay window. */
53
+ const SIGNATURE_MAX_SKEW_SECONDS = 300;
54
+ /** Parse the X-Foundry-Timestamp header (strict unix epoch seconds) or null. */
55
+ function parseTimestampSeconds(raw) {
56
+ const trimmed = raw.trim();
57
+ // Strict integer seconds so the exact header bytes are what foundryd signs.
58
+ if (!/^\d{1,15}$/.test(trimmed))
59
+ return null;
60
+ const seconds = Number.parseInt(trimmed, 10);
61
+ return Number.isSafeInteger(seconds) ? seconds : null;
62
+ }
63
+ /**
64
+ * Verify a foundryd-signed M2M request: a fresh `X-Foundry-Timestamp` (unix
65
+ * seconds within ±{@link SIGNATURE_MAX_SKEW_SECONDS}) plus `X-Foundry-Signature`
66
+ * = HMAC over `${timestamp}\n${payload}`. Returns null when authentic, or a 401
67
+ * Response (with a loud warn log) to short-circuit the handler.
68
+ */
69
+ async function verifyFoundrySignedRequest(request, secret, payload, label) {
70
+ const tsRaw = (request.headers.get('X-Foundry-Timestamp') ?? '').trim();
71
+ const ts = parseTimestampSeconds(tsRaw);
72
+ if (ts === null) {
73
+ console.warn(`[cms] ${label} rejected: missing or invalid X-Foundry-Timestamp`);
74
+ return json({ error: 'Missing or invalid X-Foundry-Timestamp' }, 401);
75
+ }
76
+ const now = Math.floor(Date.now() / 1_000);
77
+ if (Math.abs(now - ts) > SIGNATURE_MAX_SKEW_SECONDS) {
78
+ console.warn(`[cms] ${label} rejected: stale X-Foundry-Timestamp (skew ${now - ts}s)`);
79
+ return json({ error: 'Stale or future X-Foundry-Timestamp' }, 401);
80
+ }
81
+ const signature = request.headers.get('X-Foundry-Signature') ?? '';
82
+ const valid = await verifyHmac(secret, `${tsRaw}\n${payload}`, signature);
83
+ if (!valid) {
84
+ console.warn(`[cms] ${label} rejected: invalid X-Foundry-Signature`);
85
+ return json({ error: 'Invalid signature' }, 401);
86
+ }
87
+ return null;
88
+ }
89
+ const ReceiptSchema = z.object({
90
+ published_urls: z.array(z.string()).nullish(),
91
+ platform_post_ids: z.array(z.string()).nullish(),
92
+ sha256: z.string().nullish(),
93
+ });
94
+ const CallbackSchema = z
95
+ .object({
96
+ event_id: z.string().min(1).optional(),
97
+ intent_id: z.string().min(1).nullish(),
98
+ content_id: z.string().min(1),
99
+ version: z.number().int().nullish(),
100
+ correlation_id: z.string().min(1).nullish(),
101
+ status: z.enum(['queued', 'publishing', 'live', 'late', 'failed']),
102
+ occurred_at: z.union([z.string(), z.number()]).nullish(),
103
+ receipt: ReceiptSchema.nullish(),
104
+ error: z.string().nullish(),
105
+ })
106
+ .strip();
107
+ /** Parse `window=<from>..<to>` into unix-seconds bounds; defaults to now..now+1h. */
108
+ function parseWindow(value, nowSeconds) {
109
+ if (!value)
110
+ return { fromSeconds: nowSeconds, toSeconds: nowSeconds + 3600 };
111
+ const parts = value.split('..');
112
+ if (parts.length !== 2)
113
+ return { error: 'window must be "<from>..<to>"' };
114
+ const parseBound = (raw) => {
115
+ const trimmed = raw.trim();
116
+ if (!trimmed)
117
+ return null;
118
+ if (/^\d+$/.test(trimmed))
119
+ return Number.parseInt(trimmed, 10);
120
+ const ms = Date.parse(trimmed);
121
+ return Number.isNaN(ms) ? null : Math.floor(ms / 1_000);
122
+ };
123
+ const fromSeconds = parseBound(parts[0]);
124
+ const toSeconds = parseBound(parts[1]);
125
+ if (fromSeconds === null || toSeconds === null) {
126
+ return { error: 'window bounds must be ISO-8601 timestamps or unix seconds' };
127
+ }
128
+ if (toSeconds < fromSeconds)
129
+ return { error: 'window end precedes its start' };
130
+ return { fromSeconds, toSeconds };
131
+ }
132
+ export function createFrontsPublishRoutes(config) {
133
+ const resolved = resolveConfig(config);
134
+ return {
135
+ async schedule(ctx) {
136
+ const hmacSecret = await resolveFoundryHmacSecret(ctx.env);
137
+ if (!hmacSecret)
138
+ return json({ error: 'FOUNDRY_HMAC_SECRET is not configured' }, 500);
139
+ const url = new URL(ctx.request.url);
140
+ // The GET poll has no body; the payload is the exact query string
141
+ // foundryd sent (leading '?' included, or '' when empty), bound to the
142
+ // required timestamp so an empty-window poll can't sign a constant.
143
+ const denied = await verifyFoundrySignedRequest(ctx.request, hmacSecret, url.search, 'fronts/schedule');
144
+ if (denied)
145
+ return denied;
146
+ if (!isFrontsPublishEnabled(ctx.env)) {
147
+ return json({ error: 'fronts_publish_disabled' }, 503);
148
+ }
149
+ const now = Math.floor(Date.now() / 1_000);
150
+ const window = parseWindow(url.searchParams.get('window'), now);
151
+ if ('error' in window)
152
+ return json({ error: window.error }, 400);
153
+ // `items` is the UNCHANGED 0026 legacy schedule shape — an existing
154
+ // consumer keeps working byte-for-byte. `intents` is the canonical
155
+ // publish-intent contract (packages#500) hydrated over the SAME due
156
+ // predicate, and `incomplete` names every due item that cannot form a
157
+ // complete intent, so a missing canonical field is an explicit, visible
158
+ // contract error rather than a silently short `intents` array.
159
+ const items = await listFrontsPublishSchedule(ctx.db, {
160
+ toSeconds: window.toSeconds,
161
+ nowSeconds: now,
162
+ });
163
+ const hydrated = await hydrateFrontsPublishIntents(ctx.db, {
164
+ toSeconds: window.toSeconds,
165
+ nowSeconds: now,
166
+ mediaPublicDomain: resolved.mediaPublicDomain,
167
+ // Site-RELATIVE paths: the CMS does not know the site origin, and the
168
+ // consumer joins its own trusted configured origin. A host-supplied
169
+ // origin is deliberately deferred (packages-docs/cms.md).
170
+ resolveContentUrl: (row) => publicUrlFor(row),
171
+ });
172
+ return json({
173
+ ok: true,
174
+ now,
175
+ window: { from: window.fromSeconds, to: window.toSeconds },
176
+ count: items.length,
177
+ items,
178
+ intents: hydrated.intents,
179
+ incomplete: hydrated.incomplete,
180
+ });
181
+ },
182
+ async publishCallback(ctx) {
183
+ const hmacSecret = await resolveFoundryHmacSecret(ctx.env);
184
+ if (!hmacSecret)
185
+ return json({ error: 'FOUNDRY_HMAC_SECRET is not configured' }, 500);
186
+ let rawBody;
187
+ try {
188
+ rawBody = await ctx.request.text();
189
+ }
190
+ catch {
191
+ return json({ error: 'Failed to read request body' }, 400);
192
+ }
193
+ const denied = await verifyFoundrySignedRequest(ctx.request, hmacSecret, rawBody, 'fronts/publish-callback');
194
+ if (denied)
195
+ return denied;
196
+ if (!isFrontsPublishEnabled(ctx.env)) {
197
+ return json({ error: 'fronts_publish_disabled' }, 503);
198
+ }
199
+ let raw;
200
+ try {
201
+ raw = JSON.parse(rawBody);
202
+ }
203
+ catch {
204
+ return json({ error: 'Invalid JSON body' }, 400);
205
+ }
206
+ const parsed = CallbackSchema.safeParse(raw);
207
+ if (!parsed.success) {
208
+ return json({ error: 'Invalid payload', details: parsed.error.flatten() }, 400);
209
+ }
210
+ // Idempotency key: body event_id, else the Idempotency-Key header.
211
+ const eventId = parsed.data.event_id ?? ctx.request.headers.get('Idempotency-Key') ?? null;
212
+ if (!eventId) {
213
+ return json({ error: 'Missing event_id / Idempotency-Key' }, 400);
214
+ }
215
+ const result = await applyFrontsPublishCallback(ctx.db, {
216
+ eventId,
217
+ intentId: parsed.data.intent_id ?? null,
218
+ contentId: parsed.data.content_id,
219
+ version: parsed.data.version ?? null,
220
+ correlationId: parsed.data.correlation_id ?? null,
221
+ status: parsed.data.status,
222
+ occurredAt: parsed.data.occurred_at ?? null,
223
+ receipt: parsed.data.receipt ?? null,
224
+ error: parsed.data.error ?? null,
225
+ });
226
+ if (!result.contentFound) {
227
+ return json({ error: 'content_not_found', contentId: parsed.data.content_id }, 404);
228
+ }
229
+ if (result.ledgerError) {
230
+ // A confirmed `live` that could not be committed through the ledger is a
231
+ // hard, loud failure — never a silent zero.
232
+ console.error(`[cms] fronts/publish-callback ledger commit failed for content ${parsed.data.content_id}: ${result.ledgerError}`);
233
+ return json({
234
+ ok: false,
235
+ error: 'ledger_publish_failed',
236
+ detail: result.ledgerError,
237
+ status: result.status,
238
+ }, 500);
239
+ }
240
+ return json({
241
+ ok: true,
242
+ deduped: result.deduped,
243
+ status: result.status,
244
+ published: result.published,
245
+ attemptId: result.attemptId,
246
+ });
247
+ },
248
+ };
249
+ }
250
+ //# sourceMappingURL=fronts-publish.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fronts-publish.js","sourceRoot":"","sources":["../../src/routes/fronts-publish.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,7 @@ export { type ContentInsightsRouteConfig, type ContentInsightsRouteHandlers, cre
11
11
  export { type Authz, type CmsRole, type CmsUser, json, type R2BucketLike, type R2HeadResult, type R2MultipartUpload, type R2UploadedPart, type RouteContext, requireId, } from './context.js';
12
12
  export { type CronRouteHandlers, createCronRoutes } from './cron.js';
13
13
  export { createDashboardRoutes, type DashboardRouteConfig, type DashboardRouteHandlers, } from './dashboard.js';
14
+ export { createFrontsPublishRoutes, type FrontsPublishRouteHandlers, } from './fronts-publish.js';
14
15
  export { createImportRoutes, type ImportRouteHandlers } from './imports.js';
15
16
  export { createMediaRoutes, type MediaRouteHandlers } from './media.js';
16
17
  export { buildImageAssetKey, buildVideoSourceKey, contentTypeForVideoFileName, deleteStagedVideoSource, EDITOR_VIDEO_PART_SIZE, EDITORIAL_IMAGE_MAX_HERO_WIDTH, EDITORIAL_IMAGE_MAX_INLINE_WIDTH, getImageVariantUrl, getMediaPublicDomain, insertMediaAsset, isAllowedVideoSource, isVideoSourceKey, isVideoSourceKeyForVideoId, MAX_EDITOR_VIDEO_SOURCE_BYTES, type MediaAssetInsert, type MediaAssetStatus, type MediaAssetType, mediaKey, normalizeVideoFileExtension, normalizeVideoSourceContentType, parseVideoIdSlug, publicUrlFor, VIDEO_SOURCE_PREFIX, videoSourceKeyFromPublicUrl, } from './media-lib.js';
@@ -32,6 +33,7 @@ import { type ContentRouteConfig, type ContentRouteHandlers } from './content.js
32
33
  import { type ContentInsightsRouteHandlers } from './content-insights.js';
33
34
  import { type CronRouteHandlers } from './cron.js';
34
35
  import { type DashboardRouteHandlers } from './dashboard.js';
36
+ import { type FrontsPublishRouteHandlers } from './fronts-publish.js';
35
37
  import { type ImportRouteHandlers } from './imports.js';
36
38
  import { type MediaRouteHandlers } from './media.js';
37
39
  import { type PreviewRouteHandlers } from './preview.js';
@@ -60,6 +62,7 @@ export interface CmsRoutes {
60
62
  apiKeys: ApiKeyRouteHandlers;
61
63
  webhooks: WebhookRouteHandlers;
62
64
  contentInsights: ContentInsightsRouteHandlers;
65
+ frontsPublish: FrontsPublishRouteHandlers;
63
66
  }
64
67
  /**
65
68
  * Build the full set of CMS route handlers from one config object. The
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -36,6 +36,8 @@ export { json, requireId, } from './context.js';
36
36
  export { createCronRoutes } from './cron.js';
37
37
  // Dashboard summary route (P5 Task 4).
38
38
  export { createDashboardRoutes, } from './dashboard.js';
39
+ // Fronts publish surface — the HMAC schedule poll + publish-callback receiver.
40
+ export { createFrontsPublishRoutes, } from './fronts-publish.js';
39
41
  // Import routes — two-step parse→confirm pipeline.
40
42
  export { createImportRoutes } from './imports.js';
41
43
  // Media routes.
@@ -70,6 +72,7 @@ import { createContentRoutes, } from './content.js';
70
72
  import { createContentInsightsRoutes, } from './content-insights.js';
71
73
  import { createCronRoutes } from './cron.js';
72
74
  import { createDashboardRoutes } from './dashboard.js';
75
+ import { createFrontsPublishRoutes } from './fronts-publish.js';
73
76
  import { createImportRoutes } from './imports.js';
74
77
  import { createMediaRoutes } from './media.js';
75
78
  import { createPreviewRoutes } from './preview.js';
@@ -138,6 +141,7 @@ export function createCmsRoutes(config) {
138
141
  authz: config.authz,
139
142
  activeWorkspaceId: config.activeWorkspaceId,
140
143
  }),
144
+ frontsPublish: createFrontsPublishRoutes(base),
141
145
  };
142
146
  }
143
147
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routes/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"surveys.d.ts","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAA;AAQ5E,OAAO,KAAK,EAAE,KAAK,EAAc,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CA4CjF"}
1
+ {"version":3,"file":"surveys.d.ts","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAqB,MAAM,uBAAuB,CAAA;AAQ5E,OAAO,KAAK,EAAE,KAAK,EAAc,YAAY,EAAE,MAAM,cAAc,CAAA;AAEnE,MAAM,WAAW,iBAAiB;IACjC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,mBAAmB;IACnC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC7C,GAAG,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACzC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,iBAAiB,GAAG,mBAAmB,CA8CjF"}
@@ -12,8 +12,11 @@ export function createSurveyRoutes(config) {
12
12
  const surveyId = parseSurveyId(ctx);
13
13
  if (!surveyId)
14
14
  return surveyErrorResponse('survey_invalid_request');
15
+ const offset = parseOffset(ctx);
16
+ if (offset === null)
17
+ return surveyErrorResponse('survey_invalid_request');
15
18
  try {
16
- const parsed = SurveyResultsSchema.safeParse(await providers.surveys?.getResults({ surveyId }));
19
+ const parsed = SurveyResultsSchema.safeParse(await providers.surveys?.getResults({ surveyId, offset }));
17
20
  if (!parsed.success || parsed.data.survey.id !== surveyId) {
18
21
  return surveyErrorResponse('survey_provider_malformed');
19
22
  }
@@ -53,6 +56,13 @@ async function requireSurveyAccess(authz, ctx) {
53
56
  return surveyErrorResponse('survey_internal_failure');
54
57
  return authz.requireRole('view_survey_responses', ctx);
55
58
  }
59
+ function parseOffset(ctx) {
60
+ const raw = new URL(ctx.request.url).searchParams.get('offset');
61
+ if (raw === null)
62
+ return 0;
63
+ const value = Number(raw);
64
+ return Number.isInteger(value) && value >= 0 ? value : null;
65
+ }
56
66
  function parseSurveyId(ctx) {
57
67
  const value = ctx.params.surveyId ?? ctx.params.id;
58
68
  const parsed = SurveyIdSchema.safeParse(value);
@@ -83,6 +93,8 @@ const ProviderFailureAllowlist = new Map([
83
93
  ['404:survey_not_found', 'survey_not_found'],
84
94
  ['500:survey_internal_failure', 'survey_internal_failure'],
85
95
  ['502:survey_upstream_failure', 'survey_upstream_failure'],
96
+ ['502:survey_upstream_auth_failed', 'survey_upstream_auth_failed'],
97
+ ['502:survey_invalid_response', 'survey_invalid_response'],
86
98
  ['503:survey_provider_unavailable', 'survey_provider_unavailable'],
87
99
  ['503:survey_upstream_unavailable', 'survey_upstream_unavailable'],
88
100
  ]);
@@ -1 +1 @@
1
- {"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"surveys.js","sourceRoot":"","sources":["../../src/routes/surveys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAqB,iBAAiB,EAAE,MAAM,uBAAuB,CAAA;AAC5E,OAAO,EACN,wBAAwB,EACxB,wBAAwB,EAExB,eAAe,GACf,MAAM,sBAAsB,CAAA;AAC7B,OAAO,EAAE,qBAAqB,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAA;AAajG,MAAM,UAAU,kBAAkB,CAAC,MAAyB;IAC3D,MAAM,SAAS,GAAiB,EAAE,GAAG,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAA;IAEjF,OAAO;QACN,KAAK,CAAC,OAAO,CAAC,GAAG;YAChB,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC3D,IAAI,MAAM;gBAAE,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ;gBAAE,OAAO,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;YACnE,MAAM,MAAM,GAAG,WAAW,CAAC,GAAG,CAAC,CAAA;YAC/B,IAAI,MAAM,KAAK,IAAI;gBAAE,OAAO,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;YACzE,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,mBAAmB,CAAC,SAAS,CAC3C,MAAM,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,CACzD,CAAA;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,KAAK,QAAQ,EAAE,CAAC;oBAC3D,OAAO,mBAAmB,CAAC,2BAA2B,CAAC,CAAA;gBACxD,CAAC;gBACD,OAAO,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;YACjC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;QAED,KAAK,CAAC,GAAG,CAAC,GAAG;YACZ,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;YAC3D,IAAI,MAAM;gBAAE,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAA;YACjD,MAAM,QAAQ,GAAG,aAAa,CAAC,GAAG,CAAC,CAAA;YACnC,IAAI,CAAC,QAAQ;gBAAE,OAAO,mBAAmB,CAAC,wBAAwB,CAAC,CAAA;YACnE,IAAI,CAAC;gBACJ,MAAM,MAAM,GAAG,qBAAqB,CAAC,SAAS,CAC7C,MAAM,SAAS,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,CAAC,CAC7C,CAAA;gBACD,IAAI,CAAC,MAAM,CAAC,OAAO;oBAAE,OAAO,mBAAmB,CAAC,2BAA2B,CAAC,CAAA;gBAC5E,OAAO,IAAI,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE;oBACxC,OAAO,EAAE;wBACR,eAAe,EAAE,UAAU;wBAC3B,qBAAqB,EAAE,yBAAyB,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG;wBACxF,cAAc,EAAE,yBAAyB;qBACzC;iBACD,CAAC,CAAA;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAChB,OAAO,eAAe,CAAC,KAAK,CAAC,CAAA;YAC9B,CAAC;QACF,CAAC;KACD,CAAA;AACF,CAAC;AAED,KAAK,UAAU,mBAAmB,CAAC,KAAY,EAAE,GAAiB;IACjE,IAAI,CAAC,KAAK,CAAC,WAAW;QAAE,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAA;IAC7E,OAAO,KAAK,CAAC,WAAW,CAAC,uBAA4C,EAAE,GAAG,CAAC,CAAA;AAC5E,CAAC;AAED,SAAS,WAAW,CAAC,GAAiB;IACrC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IAC/D,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,CAAC,CAAA;IAC1B,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAA;IACzB,OAAO,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,GAAiB;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,IAAI,GAAG,CAAC,MAAM,CAAC,EAAE,CAAA;IAClD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA;AAC3C,CAAC;AAED,SAAS,eAAe,CAAC,KAAa;IACrC,MAAM,QAAQ,GACb,KAAK;SACH,KAAK,CAAC,OAAO,CAAC;SACd,EAAE,CAAC,CAAC,CAAC,CAAC;QACP,EAAE,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,EAAE,CAAA;IAChC,MAAM,IAAI,GAAG,QAAQ;SACnB,OAAO,CAAC,mBAAmB,EAAE,GAAG,CAAC;SACjC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC;SACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;IACf,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,kBAAkB,MAAM,CAAA;AAC1E,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,iBAAiB,EAAE,CAAC;QACxC,MAAM,MAAM,GAAG,wBAAwB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAA;QAC5E,IAAI,MAAM;YAAE,OAAO,mBAAmB,CAAC,MAAM,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,mBAAmB,CAAC,yBAAyB,CAAC,CAAA;AACtD,CAAC;AAED,MAAM,wBAAwB,GAAG,IAAI,GAAG,CAA0B;IACjE,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;IAC5C,CAAC,sBAAsB,EAAE,kBAAkB,CAAC;IAC5C,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IAC1D,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IAC1D,CAAC,iCAAiC,EAAE,6BAA6B,CAAC;IAClE,CAAC,6BAA6B,EAAE,yBAAyB,CAAC;IAC1D,CAAC,iCAAiC,EAAE,6BAA6B,CAAC;IAClE,CAAC,iCAAiC,EAAE,6BAA6B,CAAC;CAClE,CAAC,CAAA;AAEF,SAAS,mBAAmB,CAAC,IAAqB;IACjD,OAAO,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,EAAE,wBAAwB,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA;AACxF,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAkB;IACjD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,CAAA;IAC/B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;IAC/C,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACpD,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,kBAAkB,CAAC,CAAA;IACjE,CAAC;IACD,OAAO,MAAM,CAAA;AACd,CAAC;AAED,SAAS,YAAY,CAAC,IAAa,EAAE,MAAM,GAAG,GAAG,EAAE,IAAsB;IACxE,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,EAAE,eAAe,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAA;IAChG,IAAI,IAAI;QAAE,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,IAAI,CAAC,CAAA;IACrD,OAAO,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;QACzC,MAAM;QACN,OAAO;KACP,CAAC,CAAA;AACH,CAAC"}
@@ -1024,12 +1024,12 @@ export declare const InsightBriefSchema: z.ZodObject<{
1024
1024
  canonical: string;
1025
1025
  spokes: string[];
1026
1026
  };
1027
- why_now: string;
1028
- angle: string;
1029
1027
  sources: {
1030
1028
  title: string;
1031
1029
  url: string;
1032
1030
  }[];
1031
+ why_now: string;
1032
+ angle: string;
1033
1033
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1034
1034
  content_outline?: {
1035
1035
  question: string;
@@ -1053,12 +1053,12 @@ export declare const InsightBriefSchema: z.ZodObject<{
1053
1053
  canonical: string;
1054
1054
  spokes: string[];
1055
1055
  };
1056
- why_now: string;
1057
- angle: string;
1058
1056
  sources: {
1059
1057
  title: string;
1060
1058
  url: string;
1061
1059
  }[];
1060
+ why_now: string;
1061
+ angle: string;
1062
1062
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1063
1063
  content_outline?: {
1064
1064
  question: string;
@@ -1573,12 +1573,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
1573
1573
  canonical: string;
1574
1574
  spokes: string[];
1575
1575
  };
1576
- why_now: string;
1577
- angle: string;
1578
1576
  sources: {
1579
1577
  title: string;
1580
1578
  url: string;
1581
1579
  }[];
1580
+ why_now: string;
1581
+ angle: string;
1582
1582
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1583
1583
  content_outline?: {
1584
1584
  question: string;
@@ -1602,12 +1602,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
1602
1602
  canonical: string;
1603
1603
  spokes: string[];
1604
1604
  };
1605
- why_now: string;
1606
- angle: string;
1607
1605
  sources: {
1608
1606
  title: string;
1609
1607
  url: string;
1610
1608
  }[];
1609
+ why_now: string;
1610
+ angle: string;
1611
1611
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1612
1612
  content_outline?: {
1613
1613
  question: string;
@@ -1725,12 +1725,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
1725
1725
  canonical: string;
1726
1726
  spokes: string[];
1727
1727
  };
1728
- why_now: string;
1729
- angle: string;
1730
1728
  sources: {
1731
1729
  title: string;
1732
1730
  url: string;
1733
1731
  }[];
1732
+ why_now: string;
1733
+ angle: string;
1734
1734
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1735
1735
  content_outline?: {
1736
1736
  question: string;
@@ -1848,12 +1848,12 @@ export declare const InsightSuggestionRowSchema: z.ZodObject<{
1848
1848
  canonical: string;
1849
1849
  spokes: string[];
1850
1850
  };
1851
- why_now: string;
1852
- angle: string;
1853
1851
  sources: {
1854
1852
  title: string;
1855
1853
  url: string;
1856
1854
  }[];
1855
+ why_now: string;
1856
+ angle: string;
1857
1857
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
1858
1858
  content_outline?: {
1859
1859
  question: string;
@@ -2470,12 +2470,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2470
2470
  canonical: string;
2471
2471
  spokes: string[];
2472
2472
  };
2473
- why_now: string;
2474
- angle: string;
2475
2473
  sources: {
2476
2474
  title: string;
2477
2475
  url: string;
2478
2476
  }[];
2477
+ why_now: string;
2478
+ angle: string;
2479
2479
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
2480
2480
  content_outline?: {
2481
2481
  question: string;
@@ -2499,12 +2499,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2499
2499
  canonical: string;
2500
2500
  spokes: string[];
2501
2501
  };
2502
- why_now: string;
2503
- angle: string;
2504
2502
  sources: {
2505
2503
  title: string;
2506
2504
  url: string;
2507
2505
  }[];
2506
+ why_now: string;
2507
+ angle: string;
2508
2508
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
2509
2509
  content_outline?: {
2510
2510
  question: string;
@@ -2622,12 +2622,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2622
2622
  canonical: string;
2623
2623
  spokes: string[];
2624
2624
  };
2625
- why_now: string;
2626
- angle: string;
2627
2625
  sources: {
2628
2626
  title: string;
2629
2627
  url: string;
2630
2628
  }[];
2629
+ why_now: string;
2630
+ angle: string;
2631
2631
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
2632
2632
  content_outline?: {
2633
2633
  question: string;
@@ -2745,12 +2745,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2745
2745
  canonical: string;
2746
2746
  spokes: string[];
2747
2747
  };
2748
- why_now: string;
2749
- angle: string;
2750
2748
  sources: {
2751
2749
  title: string;
2752
2750
  url: string;
2753
2751
  }[];
2752
+ why_now: string;
2753
+ angle: string;
2754
2754
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
2755
2755
  content_outline?: {
2756
2756
  question: string;
@@ -2870,12 +2870,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
2870
2870
  canonical: string;
2871
2871
  spokes: string[];
2872
2872
  };
2873
- why_now: string;
2874
- angle: string;
2875
2873
  sources: {
2876
2874
  title: string;
2877
2875
  url: string;
2878
2876
  }[];
2877
+ why_now: string;
2878
+ angle: string;
2879
2879
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
2880
2880
  content_outline?: {
2881
2881
  question: string;
@@ -3010,12 +3010,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3010
3010
  canonical: string;
3011
3011
  spokes: string[];
3012
3012
  };
3013
- why_now: string;
3014
- angle: string;
3015
3013
  sources: {
3016
3014
  title: string;
3017
3015
  url: string;
3018
3016
  }[];
3017
+ why_now: string;
3018
+ angle: string;
3019
3019
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
3020
3020
  content_outline?: {
3021
3021
  question: string;
@@ -3150,12 +3150,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3150
3150
  canonical: string;
3151
3151
  spokes: string[];
3152
3152
  };
3153
- why_now: string;
3154
- angle: string;
3155
3153
  sources: {
3156
3154
  title: string;
3157
3155
  url: string;
3158
3156
  }[];
3157
+ why_now: string;
3158
+ angle: string;
3159
3159
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
3160
3160
  content_outline?: {
3161
3161
  question: string;
@@ -3290,12 +3290,12 @@ export declare const InsightsIngestPayloadSchema: z.ZodEffects<z.ZodObject<{
3290
3290
  canonical: string;
3291
3291
  spokes: string[];
3292
3292
  };
3293
- why_now: string;
3294
- angle: string;
3295
3293
  sources: {
3296
3294
  title: string;
3297
3295
  url: string;
3298
3296
  }[];
3297
+ why_now: string;
3298
+ angle: string;
3299
3299
  format?: "cornerstone" | "pillar" | "standalone" | undefined;
3300
3300
  content_outline?: {
3301
3301
  question: string;