@growth-labs/cms 0.8.7 → 0.8.14
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.
- package/dist/engine/fronts-publish.d.ts.map +1 -1
- package/dist/engine/fronts-publish.js +44 -8
- package/dist/engine/fronts-publish.js.map +1 -1
- package/dist/engine/publisher.d.ts +3 -1
- package/dist/engine/publisher.d.ts.map +1 -1
- package/dist/engine/publisher.js +21 -11
- package/dist/engine/publisher.js.map +1 -1
- package/dist/migration-vendor.d.ts.map +1 -1
- package/dist/migration-vendor.js +129 -12
- package/dist/migration-vendor.js.map +1 -1
- package/dist/routes/content.d.ts +1 -0
- package/dist/routes/content.d.ts.map +1 -1
- package/dist/routes/content.js +166 -10
- package/dist/routes/content.js.map +1 -1
- package/dist/ui/api-error.d.ts +17 -0
- package/dist/ui/api-error.d.ts.map +1 -0
- package/dist/ui/api-error.js +46 -0
- package/dist/ui/api-error.js.map +1 -0
- package/dist/ui/editor/ContentForm.d.ts.map +1 -1
- package/dist/ui/editor/ContentForm.js +5 -4
- package/dist/ui/editor/ContentForm.js.map +1 -1
- package/dist/ui/editor/editor-media-upload.d.ts.map +1 -1
- package/dist/ui/editor/editor-media-upload.js +2 -1
- package/dist/ui/editor/editor-media-upload.js.map +1 -1
- package/dist/ui/inspector/PublishTab.d.ts.map +1 -1
- package/dist/ui/inspector/PublishTab.js +2 -1
- package/dist/ui/inspector/PublishTab.js.map +1 -1
- package/dist/ui/screens/LibraryScreen.d.ts.map +1 -1
- package/dist/ui/screens/LibraryScreen.js +4 -3
- package/dist/ui/screens/LibraryScreen.js.map +1 -1
- package/dist/ui/screens/SettingsScreen.d.ts.map +1 -1
- package/dist/ui/screens/SettingsScreen.js +14 -13
- package/dist/ui/screens/SettingsScreen.js.map +1 -1
- package/dist/ui/screens/TopicsScreen.d.ts.map +1 -1
- package/dist/ui/screens/TopicsScreen.js +3 -2
- package/dist/ui/screens/TopicsScreen.js.map +1 -1
- package/dist/ui/screens/author-recovery.d.ts.map +1 -1
- package/dist/ui/screens/author-recovery.js +2 -1
- package/dist/ui/screens/author-recovery.js.map +1 -1
- package/dist/ui/screens/media-upload.d.ts.map +1 -1
- package/dist/ui/screens/media-upload.js +2 -1
- package/dist/ui/screens/media-upload.js.map +1 -1
- package/package.json +1 -1
- package/src/engine/fronts-publish.ts +45 -6
- package/src/engine/publisher.ts +24 -11
- package/src/migration-vendor.ts +146 -14
- package/src/routes/content.ts +188 -18
- package/src/ui/api-error.ts +55 -0
- package/src/ui/editor/ContentForm.tsx +8 -13
- package/src/ui/editor/editor-media-upload.ts +2 -1
- package/src/ui/inspector/PublishTab.tsx +2 -1
- package/src/ui/screens/LibraryScreen.tsx +4 -3
- package/src/ui/screens/SettingsScreen.tsx +14 -13
- package/src/ui/screens/TopicsScreen.tsx +3 -2
- package/src/ui/screens/author-recovery.ts +3 -1
- package/src/ui/screens/media-upload.ts +3 -2
package/dist/migration-vendor.js
CHANGED
|
@@ -45,21 +45,129 @@ function assertStartSequence(value) {
|
|
|
45
45
|
function sequencePrefix(sequence) {
|
|
46
46
|
return String(sequence).padStart(4, '0');
|
|
47
47
|
}
|
|
48
|
-
|
|
48
|
+
function targetSequence(target) {
|
|
49
|
+
return Number.parseInt(target.slice(0, 4), 10);
|
|
50
|
+
}
|
|
51
|
+
function managedSuffix(source) {
|
|
52
|
+
return `_growth_labs_cms_${source.replace(/^\d{4}_/, '')}`;
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Sequences already spoken for in the consumer's migrations directory.
|
|
56
|
+
*
|
|
57
|
+
* Wrangler accepts one `migrations_dir`, so a consumer's own analytics, SEO or
|
|
58
|
+
* product migrations are interleaved with the vendored package ones. Those
|
|
59
|
+
* numbers are not ours to take.
|
|
60
|
+
*/
|
|
61
|
+
async function occupiedSequences(migrationsDir) {
|
|
62
|
+
const names = await readdir(migrationsDir);
|
|
63
|
+
const taken = new Set();
|
|
64
|
+
for (const name of names) {
|
|
65
|
+
if (!name.endsWith('.sql'))
|
|
66
|
+
continue;
|
|
67
|
+
const sequence = targetSequence(name);
|
|
68
|
+
if (Number.isSafeInteger(sequence))
|
|
69
|
+
taken.add(sequence);
|
|
70
|
+
}
|
|
71
|
+
return taken;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Resolve each package migration to the consumer filename it must occupy.
|
|
75
|
+
*
|
|
76
|
+
* The hard invariant: a migration this consumer has ALREADY vendored keeps its
|
|
77
|
+
* exact filename forever. D1's `d1_migrations` ledger keys off that name, so
|
|
78
|
+
* renumbering an applied migration would re-run it. Every branch below either
|
|
79
|
+
* reuses a name or allocates an unused one; none ever rewrites an assigned one.
|
|
80
|
+
*
|
|
81
|
+
* Resolution order per source:
|
|
82
|
+
* 1. recorded in the receipt -> reuse that target verbatim;
|
|
83
|
+
* 2. an on-disk file with our managed suffix whose bytes hash identical
|
|
84
|
+
* -> adopt it (reconciles migrations vendored by hand before the receipt
|
|
85
|
+
* existed, without creating a duplicate that would apply the same SQL
|
|
86
|
+
* twice);
|
|
87
|
+
* 3. otherwise -> the next sequence above everything already assigned or
|
|
88
|
+
* occupied, skipping consumer-owned numbers.
|
|
89
|
+
*/
|
|
90
|
+
async function planMigrations(sourceDir, startSequence, context = { recorded: new Map() }) {
|
|
49
91
|
assertStartSequence(startSequence);
|
|
50
92
|
const sourceNames = (await readdir(sourceDir)).filter((name) => MIGRATION_FILE.test(name)).sort();
|
|
51
93
|
if (sourceNames.length === 0)
|
|
52
94
|
throw new Error('installed CMS package has no migration SQL');
|
|
53
|
-
|
|
54
|
-
|
|
95
|
+
const occupied = context.migrationsDir
|
|
96
|
+
? await occupiedSequences(context.migrationsDir)
|
|
97
|
+
: new Set();
|
|
98
|
+
const existingNames = context.migrationsDir ? await readdir(context.migrationsDir) : [];
|
|
99
|
+
const assigned = new Set();
|
|
100
|
+
let highWater = startSequence - 1;
|
|
101
|
+
for (const sequence of occupied) {
|
|
102
|
+
if (sequence > highWater)
|
|
103
|
+
highWater = sequence;
|
|
55
104
|
}
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
const suffix = source.replace(/^\d{4}_/, '');
|
|
59
|
-
const target = `${sequencePrefix(sequence)}_growth_labs_cms_${suffix}`;
|
|
105
|
+
const planned = [];
|
|
106
|
+
for (const source of sourceNames) {
|
|
60
107
|
const bytes = new Uint8Array(await readFile(join(sourceDir, source)));
|
|
61
|
-
|
|
62
|
-
|
|
108
|
+
const hash = await sha256(bytes);
|
|
109
|
+
const suffix = managedSuffix(source);
|
|
110
|
+
const recorded = context.recorded.get(source);
|
|
111
|
+
if (recorded) {
|
|
112
|
+
const sequence = targetSequence(recorded.target);
|
|
113
|
+
assigned.add(sequence);
|
|
114
|
+
if (sequence > highWater)
|
|
115
|
+
highWater = sequence;
|
|
116
|
+
planned.push({ source, target: recorded.target, sequence, sha256: hash, bytes });
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
const adopted = await findAdoptableTarget(context.migrationsDir, existingNames, suffix, hash, assigned);
|
|
120
|
+
if (adopted) {
|
|
121
|
+
const sequence = targetSequence(adopted);
|
|
122
|
+
assigned.add(sequence);
|
|
123
|
+
if (sequence > highWater)
|
|
124
|
+
highWater = sequence;
|
|
125
|
+
planned.push({ source, target: adopted, sequence, sha256: hash, bytes });
|
|
126
|
+
continue;
|
|
127
|
+
}
|
|
128
|
+
let sequence = Math.max(startSequence, highWater + 1);
|
|
129
|
+
while (occupied.has(sequence) || assigned.has(sequence))
|
|
130
|
+
sequence += 1;
|
|
131
|
+
if (sequence > 9999)
|
|
132
|
+
throw new Error('reserved CMS migration sequence exceeds 9999');
|
|
133
|
+
assigned.add(sequence);
|
|
134
|
+
highWater = sequence;
|
|
135
|
+
planned.push({
|
|
136
|
+
source,
|
|
137
|
+
target: `${sequencePrefix(sequence)}${suffix}`,
|
|
138
|
+
sequence,
|
|
139
|
+
sha256: hash,
|
|
140
|
+
bytes,
|
|
141
|
+
});
|
|
142
|
+
}
|
|
143
|
+
return planned;
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* An existing consumer file that IS this package migration, byte for byte.
|
|
147
|
+
*
|
|
148
|
+
* Content-addressed on purpose: adopting by filename alone would let an
|
|
149
|
+
* unrelated file with a colliding suffix be claimed as ours.
|
|
150
|
+
*/
|
|
151
|
+
async function findAdoptableTarget(migrationsDir, existingNames, suffix, hash, assigned) {
|
|
152
|
+
if (!migrationsDir)
|
|
153
|
+
return null;
|
|
154
|
+
for (const name of existingNames.slice().sort()) {
|
|
155
|
+
if (!name.endsWith('.sql') || !name.endsWith(`${suffix}`))
|
|
156
|
+
continue;
|
|
157
|
+
const sequence = targetSequence(name);
|
|
158
|
+
if (!Number.isSafeInteger(sequence) || assigned.has(sequence))
|
|
159
|
+
continue;
|
|
160
|
+
let existingHash;
|
|
161
|
+
try {
|
|
162
|
+
existingHash = await sha256(new Uint8Array(await readFile(join(migrationsDir, name))));
|
|
163
|
+
}
|
|
164
|
+
catch {
|
|
165
|
+
continue;
|
|
166
|
+
}
|
|
167
|
+
if (existingHash === hash)
|
|
168
|
+
return name;
|
|
169
|
+
}
|
|
170
|
+
return null;
|
|
63
171
|
}
|
|
64
172
|
function manifestFor(packageVersion, startSequence, plan) {
|
|
65
173
|
return {
|
|
@@ -245,9 +353,15 @@ export async function syncCmsMigrations(options) {
|
|
|
245
353
|
const manifestPath = await resolveManifestPath(migrationsDir, options.manifestPath);
|
|
246
354
|
return withManifestLock(manifestPath, async () => {
|
|
247
355
|
const contract = await packageContract();
|
|
248
|
-
const plan = await planMigrations(contract.sourceDir, options.startSequence);
|
|
249
|
-
const nextManifest = manifestFor(contract.packageVersion, options.startSequence, plan);
|
|
250
356
|
const currentManifest = await readManifest(manifestPath);
|
|
357
|
+
// The receipt is the authority for anything already vendored: plan with it
|
|
358
|
+
// so recorded migrations keep their exact filenames and only genuinely new
|
|
359
|
+
// ones are allocated a sequence.
|
|
360
|
+
const plan = await planMigrations(contract.sourceDir, options.startSequence, {
|
|
361
|
+
recorded: new Map((currentManifest?.files ?? []).map((entry) => [entry.source, entry])),
|
|
362
|
+
migrationsDir,
|
|
363
|
+
});
|
|
364
|
+
const nextManifest = manifestFor(contract.packageVersion, options.startSequence, plan);
|
|
251
365
|
assertManifestCanAdvance(currentManifest, nextManifest);
|
|
252
366
|
await assertNoSequenceCollisions(migrationsDir, plan);
|
|
253
367
|
const preflight = await verifyTargets(migrationsDir, plan, true);
|
|
@@ -299,7 +413,10 @@ export async function verifyCmsMigrations(options) {
|
|
|
299
413
|
if (manifest.packageVersion !== contract.packageVersion) {
|
|
300
414
|
throw new Error(`CMS migration manifest version ${manifest.packageVersion} does not match installed ${contract.packageVersion}`);
|
|
301
415
|
}
|
|
302
|
-
const plan = await planMigrations(contract.sourceDir, manifest.startSequence
|
|
416
|
+
const plan = await planMigrations(contract.sourceDir, manifest.startSequence, {
|
|
417
|
+
recorded: new Map(manifest.files.map((entry) => [entry.source, entry])),
|
|
418
|
+
migrationsDir,
|
|
419
|
+
});
|
|
303
420
|
const expected = manifestFor(contract.packageVersion, manifest.startSequence, plan);
|
|
304
421
|
if (expected.files.length !== manifest.files.length ||
|
|
305
422
|
expected.files.some((entry, index) => !entriesEqual(entry, manifest.files[index]))) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-vendor.js","sourceRoot":"","sources":["../src/migration-vendor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"migration-vendor.js","sourceRoot":"","sources":["../src/migration-vendor.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/content.d.ts
CHANGED
|
@@ -103,6 +103,7 @@ export interface ContentRouteConfig extends CmsRouteConfig {
|
|
|
103
103
|
activeWorkspaceId?: string;
|
|
104
104
|
}
|
|
105
105
|
type ContentType = 'article' | 'video' | 'podcast' | 'newsletter' | 'page';
|
|
106
|
+
export declare function normaliseNextcloudShareUrl(value: string): string;
|
|
106
107
|
export interface ContentRouteHandlers {
|
|
107
108
|
/** GET /content — cursor-paginated list (q, author, status, types filters; excludes deleted). */
|
|
108
109
|
list(ctx: RouteContext): Promise<Response>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/content.js
CHANGED
|
@@ -211,21 +211,46 @@ const ContentMetadataSchema = z
|
|
|
211
211
|
}
|
|
212
212
|
})
|
|
213
213
|
.transform((metadata) => metadata);
|
|
214
|
-
//
|
|
215
|
-
// must
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
214
|
+
// A Nextcloud share PAGE is HTML, never ingestable media, so the stored source
|
|
215
|
+
// must be the direct-download URL. Editors paste the share link -- that is what
|
|
216
|
+
// Nextcloud's "Copy link" button yields -- so normalise it here instead of
|
|
217
|
+
// refusing the save. Refusing it stranded every video upload from the 0.8.5
|
|
218
|
+
// deploy until 0.8.8, because the masthead only rendered the top-level
|
|
219
|
+
// 'Invalid request' and never the field message telling them what to change.
|
|
220
|
+
//
|
|
221
|
+
// Only the onboarded share host is claimed, and only the share-link shape:
|
|
222
|
+
// https, no credentials, default port, /s/<token> with an optional /download.
|
|
223
|
+
// Nextcloud's folder-listing "Copy link" appends ?dir=/ to a single-file share;
|
|
224
|
+
// it carries nothing the download route needs, so it is dropped. Anything else
|
|
225
|
+
// -- another host, another path, a non-URL -- is returned untouched for the
|
|
226
|
+
// normal URL validation to accept or reject on its own terms.
|
|
227
|
+
const NEXTCLOUD_SHARE_HOSTS = ['drive.fulcrum-portal.com'];
|
|
228
|
+
const NEXTCLOUD_SHARE_PATH_RE = /^\/s\/[A-Za-z0-9_-]+(?:\/download)?\/?$/;
|
|
229
|
+
export function normaliseNextcloudShareUrl(value) {
|
|
220
230
|
let url;
|
|
221
231
|
try {
|
|
222
232
|
url = new URL(value);
|
|
223
233
|
}
|
|
224
234
|
catch {
|
|
225
|
-
return
|
|
235
|
+
return value;
|
|
236
|
+
}
|
|
237
|
+
if (url.protocol !== 'https:' ||
|
|
238
|
+
url.username ||
|
|
239
|
+
url.password ||
|
|
240
|
+
(url.port && url.port !== '443') ||
|
|
241
|
+
!NEXTCLOUD_SHARE_HOSTS.includes(url.hostname.toLowerCase().replace(/\.$/, '')) ||
|
|
242
|
+
!NEXTCLOUD_SHARE_PATH_RE.test(url.pathname)) {
|
|
243
|
+
return value;
|
|
226
244
|
}
|
|
227
|
-
|
|
228
|
-
|
|
245
|
+
if (url.searchParams.get('dir') !== null && url.searchParams.size === 1) {
|
|
246
|
+
url.search = '';
|
|
247
|
+
}
|
|
248
|
+
if (!/\/download\/?$/.test(url.pathname)) {
|
|
249
|
+
url.pathname = `${url.pathname.replace(/\/$/, '')}/download`;
|
|
250
|
+
}
|
|
251
|
+
return url.toString();
|
|
252
|
+
}
|
|
253
|
+
const MediaSourceUrlSchema = z.string().url().transform(normaliseNextcloudShareUrl);
|
|
229
254
|
function buildSchemas(resolved) {
|
|
230
255
|
const category = slugEnum(resolved.primaryCategorySlugs);
|
|
231
256
|
const topic = slugEnum(resolved.primaryTopicSlugs);
|
|
@@ -779,6 +804,64 @@ export function createContentRoutes(config) {
|
|
|
779
804
|
return { result: null, reason: 'dispatch_failed' };
|
|
780
805
|
}
|
|
781
806
|
}
|
|
807
|
+
/**
|
|
808
|
+
* The video sibling of maybeDispatchPodcastToFoundry: capture a sourced video
|
|
809
|
+
* that holds no capture. A row with no trigger token is invisible to the
|
|
810
|
+
* producer whatever its state says (trash and restore clears the token and
|
|
811
|
+
* leaves `queued`), so only `ready` media and `failed` — the editor's Re-run
|
|
812
|
+
* decision — are left alone. An archived item is inactive to the dispatcher;
|
|
813
|
+
* it is captured once scheduling has made it active again.
|
|
814
|
+
* The editor form captures after a save too, but it de-dupes on local state; a
|
|
815
|
+
* later save that reset the capture left the video scheduled and never
|
|
816
|
+
* prepared, with nothing to notice (Fronts, 2026-09-15..17).
|
|
817
|
+
*/
|
|
818
|
+
async function maybeCaptureVideoSource(ctx, contentId) {
|
|
819
|
+
const hook = resolved.hooks.foundryVideo;
|
|
820
|
+
if (!hook)
|
|
821
|
+
return null;
|
|
822
|
+
const readCapture = () => ctx.db
|
|
823
|
+
.prepare(`SELECT vc.processing_source_url, vc.processing_trigger_token, vc.processing_state,
|
|
824
|
+
vc.hls_ready, ci.status
|
|
825
|
+
FROM video_content vc JOIN content_items ci ON ci.id = vc.content_id
|
|
826
|
+
WHERE vc.content_id = ?
|
|
827
|
+
LIMIT 1`)
|
|
828
|
+
.bind(contentId)
|
|
829
|
+
.first();
|
|
830
|
+
const row = await readCapture();
|
|
831
|
+
if (!row?.processing_source_url?.trim())
|
|
832
|
+
return null;
|
|
833
|
+
if (row.processing_trigger_token?.trim())
|
|
834
|
+
return null;
|
|
835
|
+
if (row.status === 'archived')
|
|
836
|
+
return null;
|
|
837
|
+
if (row.hls_ready === 1)
|
|
838
|
+
return null;
|
|
839
|
+
if (row.processing_state === 'ready' || row.processing_state === 'failed')
|
|
840
|
+
return null;
|
|
841
|
+
try {
|
|
842
|
+
return await dispatchToFoundry(ctx.db, contentId, hook, { ifUncaptured: true });
|
|
843
|
+
}
|
|
844
|
+
catch (error) {
|
|
845
|
+
// The editor form fires its own capture after every save. Losing that
|
|
846
|
+
// race fails this call's compare-and-set, and the capture exists.
|
|
847
|
+
const raced = await readCapture();
|
|
848
|
+
if (raced?.processing_trigger_token?.trim())
|
|
849
|
+
return null;
|
|
850
|
+
throw error;
|
|
851
|
+
}
|
|
852
|
+
}
|
|
853
|
+
async function captureScheduledVideoAfterSave(ctx, contentId) {
|
|
854
|
+
try {
|
|
855
|
+
return { result: await maybeCaptureVideoSource(ctx, contentId), reason: null };
|
|
856
|
+
}
|
|
857
|
+
catch (error) {
|
|
858
|
+
if (error instanceof FoundryDispatchPrerequisiteError) {
|
|
859
|
+
return { result: null, reason: 'missing_duration' };
|
|
860
|
+
}
|
|
861
|
+
console.error('Scheduled video source capture failed after content save', error);
|
|
862
|
+
return { result: null, reason: 'dispatch_failed' };
|
|
863
|
+
}
|
|
864
|
+
}
|
|
782
865
|
function missingDurationResponse() {
|
|
783
866
|
return json({
|
|
784
867
|
error: 'Content requires a positive finite duration before dispatch',
|
|
@@ -1002,6 +1085,31 @@ export function createContentRoutes(config) {
|
|
|
1002
1085
|
const publishAtSeconds = Math.floor(publishAtMs / 1000);
|
|
1003
1086
|
const expectedTargets = new Map();
|
|
1004
1087
|
for (const id of ids) {
|
|
1088
|
+
// Same gate as the single-item path: no item in a bulk schedule
|
|
1089
|
+
// may take a slot with a body publish will refuse.
|
|
1090
|
+
const bulkGuard = await evaluateContentBodyForPublish(ctx.db, id, 'cms.schedule', {
|
|
1091
|
+
requireBody: false,
|
|
1092
|
+
});
|
|
1093
|
+
if (bulkGuard && !bulkGuard.ok) {
|
|
1094
|
+
return json({
|
|
1095
|
+
error: 'Article body failed pre-publish validation',
|
|
1096
|
+
source: 'cms.schedule',
|
|
1097
|
+
contentId: id,
|
|
1098
|
+
errors: bulkGuard.errors,
|
|
1099
|
+
}, 422);
|
|
1100
|
+
}
|
|
1101
|
+
// And the same capture guarantee: no sourced video in a bulk
|
|
1102
|
+
// schedule may take a slot the producer cannot see.
|
|
1103
|
+
try {
|
|
1104
|
+
await maybeCaptureVideoSource(ctx, id);
|
|
1105
|
+
}
|
|
1106
|
+
catch (error) {
|
|
1107
|
+
if (error instanceof FoundryDispatchPrerequisiteError) {
|
|
1108
|
+
return missingDurationResponse();
|
|
1109
|
+
}
|
|
1110
|
+
console.error('Video source capture failed before bulk schedule', error);
|
|
1111
|
+
return json({ error: 'Foundry dispatch failed', contentId: id }, 502);
|
|
1112
|
+
}
|
|
1005
1113
|
const prepared = await prepareScheduleTargets(ctx, id);
|
|
1006
1114
|
if ('error' in prepared)
|
|
1007
1115
|
return prepared.error;
|
|
@@ -1014,6 +1122,8 @@ export function createContentRoutes(config) {
|
|
|
1014
1122
|
if (targets !== undefined && !changed) {
|
|
1015
1123
|
return json({ error: 'schedule_targets_changed', contentId: id, scheduled }, 409);
|
|
1016
1124
|
}
|
|
1125
|
+
// Covers an item that was archived above, now active again.
|
|
1126
|
+
await captureScheduledVideoAfterSave(ctx, id);
|
|
1017
1127
|
scheduled.push(id);
|
|
1018
1128
|
}
|
|
1019
1129
|
return json({ scheduled });
|
|
@@ -1282,6 +1392,11 @@ export function createContentRoutes(config) {
|
|
|
1282
1392
|
const podcastAttempt = existing.type === 'podcast'
|
|
1283
1393
|
? await dispatchPodcastAfterSave(ctx, id)
|
|
1284
1394
|
: { result: null, reason: null };
|
|
1395
|
+
// A scheduled video is committed to a slot: a save that reset its capture
|
|
1396
|
+
// must not leave it unprepared until someone notices the missed publish.
|
|
1397
|
+
const videoAttempt = existing.type === 'video' && existing.status === 'scheduled'
|
|
1398
|
+
? await captureScheduledVideoAfterSave(ctx, id)
|
|
1399
|
+
: { result: null, reason: null };
|
|
1285
1400
|
// If the slug changed, record the old slug as a redirect (spec §8)
|
|
1286
1401
|
// and drop any stale redirect row for the now-live slug — atomically,
|
|
1287
1402
|
// so a live slug is never also a redirect source (rename-back safety).
|
|
@@ -1294,6 +1409,8 @@ export function createContentRoutes(config) {
|
|
|
1294
1409
|
podcastFoundryQueued: Boolean(podcastAttempt.result),
|
|
1295
1410
|
podcastFoundryCorrelationId: podcastAttempt.result?.correlationId ?? null,
|
|
1296
1411
|
podcastFoundryReason: podcastAttempt.reason,
|
|
1412
|
+
videoFoundryQueued: Boolean(videoAttempt.result && !videoAttempt.result.skipped),
|
|
1413
|
+
videoFoundryReason: videoAttempt.reason,
|
|
1297
1414
|
...(mediaSourceReadiness ? { mediaSourceReadiness } : {}),
|
|
1298
1415
|
// Present and empty when the body linted clean, so a client can
|
|
1299
1416
|
// distinguish "no warnings" from "this build does not report them".
|
|
@@ -1344,6 +1461,39 @@ export function createContentRoutes(config) {
|
|
|
1344
1461
|
if (!Number.isFinite(publishAtSeconds)) {
|
|
1345
1462
|
return json({ error: 'Missing publish time' }, 400);
|
|
1346
1463
|
}
|
|
1464
|
+
// A body the publish guard will refuse must not be allowed to take a
|
|
1465
|
+
// slot. Scheduling was the one write in this lane that never ran
|
|
1466
|
+
// the guard, so a defect an editor could not see at save time
|
|
1467
|
+
// surfaced only when foundryd tried to publish — at 16:30 on a
|
|
1468
|
+
// Monday, as a missed premium article (2026-09-15).
|
|
1469
|
+
const scheduleGuard = await evaluateContentBodyForPublish(ctx.db, id, 'cms.schedule', {
|
|
1470
|
+
// Claiming a slot before the piece is written stays allowed;
|
|
1471
|
+
// claiming one with an already-broken body does not.
|
|
1472
|
+
requireBody: false,
|
|
1473
|
+
});
|
|
1474
|
+
if (scheduleGuard && !scheduleGuard.ok) {
|
|
1475
|
+
return json({
|
|
1476
|
+
error: 'Article body failed pre-publish validation',
|
|
1477
|
+
source: 'cms.schedule',
|
|
1478
|
+
errors: scheduleGuard.errors,
|
|
1479
|
+
}, 422);
|
|
1480
|
+
}
|
|
1481
|
+
// A sourced video that holds no capture is invisible to the producer:
|
|
1482
|
+
// it would take the slot and never publish. Capture it here, and refuse
|
|
1483
|
+
// the slot if that cannot be done. A video with no source yet may still
|
|
1484
|
+
// claim a slot early.
|
|
1485
|
+
if (existing.type === 'video') {
|
|
1486
|
+
try {
|
|
1487
|
+
await maybeCaptureVideoSource(ctx, id);
|
|
1488
|
+
}
|
|
1489
|
+
catch (error) {
|
|
1490
|
+
if (error instanceof FoundryDispatchPrerequisiteError) {
|
|
1491
|
+
return missingDurationResponse();
|
|
1492
|
+
}
|
|
1493
|
+
console.error('Video source capture failed before schedule', error);
|
|
1494
|
+
return json({ error: 'Foundry dispatch failed' }, 502);
|
|
1495
|
+
}
|
|
1496
|
+
}
|
|
1347
1497
|
const prepared = await prepareScheduleTargets(ctx, id);
|
|
1348
1498
|
if ('error' in prepared)
|
|
1349
1499
|
return prepared.error;
|
|
@@ -1351,6 +1501,9 @@ export function createContentRoutes(config) {
|
|
|
1351
1501
|
if (prepared.targets !== undefined && !changed) {
|
|
1352
1502
|
return json({ error: 'schedule_targets_changed', contentId: id }, 409);
|
|
1353
1503
|
}
|
|
1504
|
+
// Covers an item that was archived above, now active again.
|
|
1505
|
+
if (existing.type === 'video')
|
|
1506
|
+
await captureScheduledVideoAfterSave(ctx, id);
|
|
1354
1507
|
// Fire content.scheduled webhook.
|
|
1355
1508
|
await fireWebhook(ctx, 'content.scheduled', {
|
|
1356
1509
|
id,
|
|
@@ -1363,6 +1516,9 @@ export function createContentRoutes(config) {
|
|
|
1363
1516
|
if (action === 'publish') {
|
|
1364
1517
|
const now = Math.floor(Date.now() / 1000);
|
|
1365
1518
|
const wasDraft = existing.status === 'draft';
|
|
1519
|
+
const publishedAt = existing.status === 'published' && existing.published_at !== null
|
|
1520
|
+
? existing.published_at
|
|
1521
|
+
: now;
|
|
1366
1522
|
let podcastDispatch = null;
|
|
1367
1523
|
if (existing.type === 'podcast') {
|
|
1368
1524
|
try {
|
|
@@ -1458,7 +1614,7 @@ export function createContentRoutes(config) {
|
|
|
1458
1614
|
throw error;
|
|
1459
1615
|
}
|
|
1460
1616
|
try {
|
|
1461
|
-
await publishContent(ctx.db, id, now);
|
|
1617
|
+
await publishContent(ctx.db, id, publishedAt, now);
|
|
1462
1618
|
await createRevision(ctx.db, id, ctx.userId || null);
|
|
1463
1619
|
}
|
|
1464
1620
|
catch (error) {
|