@growth-labs/cms 0.8.20 → 0.8.23
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/cli/foundry-emit.d.ts +14 -0
- package/dist/cli/foundry-emit.d.ts.map +1 -0
- package/dist/cli/foundry-emit.js +69 -0
- package/dist/cli/foundry-emit.js.map +1 -0
- package/dist/engine/fronts-publish-intent.d.ts +1 -1
- package/dist/engine/fronts-publish-intent.d.ts.map +1 -1
- package/dist/engine/fronts-publish-intent.js +12 -1
- package/dist/engine/fronts-publish-intent.js.map +1 -1
- package/dist/engine/publication-receipt/receipt.d.ts +20 -20
- package/dist/engine/publisher.d.ts +16 -1
- package/dist/engine/publisher.d.ts.map +1 -1
- package/dist/engine/publisher.js +55 -4
- package/dist/engine/publisher.js.map +1 -1
- package/dist/engine/tags.d.ts.map +1 -1
- package/dist/engine/tags.js +18 -1
- package/dist/engine/tags.js.map +1 -1
- package/dist/engine/topics.d.ts.map +1 -1
- package/dist/engine/topics.js +4 -1
- package/dist/engine/topics.js.map +1 -1
- package/dist/engine/video-source.d.ts +21 -0
- package/dist/engine/video-source.d.ts.map +1 -1
- package/dist/engine/video-source.js +40 -0
- package/dist/engine/video-source.js.map +1 -1
- package/dist/foundry-emit.d.ts +146 -0
- package/dist/foundry-emit.d.ts.map +1 -0
- package/dist/foundry-emit.js +189 -0
- package/dist/foundry-emit.js.map +1 -0
- package/dist/integration/index.d.ts.map +1 -1
- package/dist/integration/index.js +9 -0
- package/dist/integration/index.js.map +1 -1
- package/dist/integration/options.d.ts +24 -0
- package/dist/integration/options.d.ts.map +1 -1
- package/dist/integration/options.js +22 -0
- package/dist/integration/options.js.map +1 -1
- package/dist/providers/null.d.ts.map +1 -1
- package/dist/providers/null.js +6 -0
- package/dist/providers/null.js.map +1 -1
- package/dist/providers/types.d.ts +56 -0
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js.map +1 -1
- package/dist/routes/ai.d.ts.map +1 -1
- package/dist/routes/ai.js +21 -13
- package/dist/routes/ai.js.map +1 -1
- package/dist/routes/analytics.d.ts +1 -0
- package/dist/routes/analytics.d.ts.map +1 -1
- package/dist/routes/analytics.js +20 -0
- package/dist/routes/analytics.js.map +1 -1
- package/dist/routes/content.d.ts +27 -0
- package/dist/routes/content.d.ts.map +1 -1
- package/dist/routes/content.js +58 -12
- package/dist/routes/content.js.map +1 -1
- package/dist/routes/foundry-publish.d.ts +50 -0
- package/dist/routes/foundry-publish.d.ts.map +1 -1
- package/dist/routes/foundry-publish.js +540 -27
- package/dist/routes/foundry-publish.js.map +1 -1
- package/dist/routes/machine-context.d.ts +6 -0
- package/dist/routes/machine-context.d.ts.map +1 -0
- package/dist/routes/machine-context.js +20 -0
- package/dist/routes/machine-context.js.map +1 -0
- package/dist/routes/surveys.d.ts +14 -1
- package/dist/routes/surveys.d.ts.map +1 -1
- package/dist/routes/surveys.js +515 -10
- package/dist/routes/surveys.js.map +1 -1
- package/dist/schema/insights-ingest.d.ts +8 -8
- package/dist/schema/migrations.d.ts.map +1 -1
- package/dist/schema/migrations.js +15 -0
- package/dist/schema/migrations.js.map +1 -1
- package/dist/schema/tables.d.ts +1 -1
- package/dist/schema/tables.d.ts.map +1 -1
- package/dist/schema/tables.js +2 -0
- package/dist/schema/tables.js.map +1 -1
- package/dist/surveys/access.d.ts +1 -0
- package/dist/surveys/access.d.ts.map +1 -1
- package/dist/surveys/access.js +13 -4
- package/dist/surveys/access.js.map +1 -1
- package/dist/surveys/auto-label.d.ts +100 -0
- package/dist/surveys/auto-label.d.ts.map +1 -0
- package/dist/surveys/auto-label.js +325 -0
- package/dist/surveys/auto-label.js.map +1 -0
- package/dist/surveys/schema.d.ts +38 -12
- package/dist/surveys/schema.d.ts.map +1 -1
- package/dist/surveys/schema.js +18 -1
- package/dist/surveys/schema.js.map +1 -1
- package/dist/ui/api/_content-config.d.ts.map +1 -1
- package/dist/ui/api/_content-config.js +4 -0
- package/dist/ui/api/_content-config.js.map +1 -1
- package/dist/ui/api/analytics.d.ts.map +1 -1
- package/dist/ui/api/analytics.js +5 -2
- package/dist/ui/api/analytics.js.map +1 -1
- package/dist/ui/api/foundry/articles/[external_id]/publish.d.ts +3 -0
- package/dist/ui/api/foundry/articles/[external_id]/publish.d.ts.map +1 -0
- package/dist/ui/api/foundry/articles/[external_id]/publish.js +14 -0
- package/dist/ui/api/foundry/articles/[external_id]/publish.js.map +1 -0
- package/dist/ui/api/surveys/[surveyId]/answers/label.d.ts +3 -0
- package/dist/ui/api/surveys/[surveyId]/answers/label.d.ts.map +1 -0
- package/dist/ui/api/surveys/[surveyId]/answers/label.js +17 -0
- package/dist/ui/api/surveys/[surveyId]/answers/label.js.map +1 -0
- package/dist/ui/api/surveys/[surveyId].d.ts.map +1 -1
- package/dist/ui/api/surveys/[surveyId].js +28 -1
- package/dist/ui/api/surveys/[surveyId].js.map +1 -1
- package/dist/ui/commands.d.ts.map +1 -1
- package/dist/ui/commands.js +2 -0
- package/dist/ui/commands.js.map +1 -1
- package/dist/ui/hash-router.d.ts +1 -1
- package/dist/ui/hash-router.d.ts.map +1 -1
- package/dist/ui/hash-router.js +1 -0
- package/dist/ui/hash-router.js.map +1 -1
- package/dist/ui/nav.d.ts.map +1 -1
- package/dist/ui/nav.js +1 -0
- package/dist/ui/nav.js.map +1 -1
- package/dist/ui/screens/AnalyticsScreen.d.ts +6 -1
- package/dist/ui/screens/AnalyticsScreen.d.ts.map +1 -1
- package/dist/ui/screens/AnalyticsScreen.js +13 -8
- package/dist/ui/screens/AnalyticsScreen.js.map +1 -1
- package/dist/ui/screens/PodcastListeningScreen.d.ts +6 -0
- package/dist/ui/screens/PodcastListeningScreen.d.ts.map +1 -0
- package/dist/ui/screens/PodcastListeningScreen.js +244 -0
- package/dist/ui/screens/PodcastListeningScreen.js.map +1 -0
- package/dist/ui/screens/SurveyResponsesScreen.d.ts +4 -2
- package/dist/ui/screens/SurveyResponsesScreen.d.ts.map +1 -1
- package/dist/ui/screens/SurveyResponsesScreen.js +71 -12
- package/dist/ui/screens/SurveyResponsesScreen.js.map +1 -1
- package/dist/ui/screens/analytics-data.d.ts +14 -0
- package/dist/ui/screens/analytics-data.d.ts.map +1 -1
- package/dist/ui/screens/analytics-data.js +16 -0
- package/dist/ui/screens/analytics-data.js.map +1 -1
- package/dist/ui/screens/podcast-listening-data.d.ts +19 -0
- package/dist/ui/screens/podcast-listening-data.d.ts.map +1 -0
- package/dist/ui/screens/podcast-listening-data.js +98 -0
- package/dist/ui/screens/podcast-listening-data.js.map +1 -0
- package/dist/ui/screens/registry.d.ts.map +1 -1
- package/dist/ui/screens/registry.js +2 -0
- package/dist/ui/screens/registry.js.map +1 -1
- package/docs/foundry-publish.md +208 -0
- package/migrations/0033_survey_answer_labels.sql +15 -0
- package/package.json +9 -3
- package/src/cli/foundry-emit.ts +85 -0
- package/src/engine/fronts-publish-intent.ts +23 -1
- package/src/engine/publisher.ts +80 -4
- package/src/engine/tags.ts +21 -1
- package/src/engine/topics.ts +4 -1
- package/src/engine/video-source.ts +44 -0
- package/src/foundry-emit.ts +255 -0
- package/src/integration/index.ts +9 -0
- package/src/integration/options.ts +23 -0
- package/src/providers/null.ts +6 -0
- package/src/providers/types.ts +52 -0
- package/src/routes/ai.ts +29 -17
- package/src/routes/analytics.ts +21 -0
- package/src/routes/content.ts +81 -15
- package/src/routes/foundry-publish.ts +746 -29
- package/src/routes/machine-context.ts +24 -0
- package/src/routes/surveys.ts +587 -12
- package/src/schema/migrations.ts +15 -0
- package/src/schema/tables.ts +2 -0
- package/src/surveys/access.ts +14 -4
- package/src/surveys/auto-label.ts +420 -0
- package/src/surveys/schema.ts +25 -1
- package/src/ui/api/_content-config.ts +6 -0
- package/src/ui/api/analytics.ts +5 -2
- package/src/ui/api/foundry/articles/[external_id]/publish.ts +18 -0
- package/src/ui/api/surveys/[surveyId]/answers/label.ts +23 -0
- package/src/ui/api/surveys/[surveyId].ts +37 -3
- package/src/ui/commands.ts +2 -0
- package/src/ui/hash-router.ts +1 -0
- package/src/ui/nav.ts +1 -0
- package/src/ui/screens/AnalyticsScreen.tsx +34 -6
- package/src/ui/screens/PodcastListeningScreen.tsx +529 -0
- package/src/ui/screens/SurveyResponsesScreen.tsx +179 -13
- package/src/ui/screens/analytics-data.ts +18 -0
- package/src/ui/screens/podcast-listening-data.ts +114 -0
- package/src/ui/screens/registry.tsx +2 -0
package/dist/routes/ai.js
CHANGED
|
@@ -17,7 +17,7 @@ import { generateContentDek } from '../engine/ai-dek.js';
|
|
|
17
17
|
import { headlinesPrompt, metaDescriptionPrompt, proofreadPrompt, takeawaysPrompt, } from '../engine/ai-prompts.js';
|
|
18
18
|
import { applyAiWrite, parseLockedFields } from '../engine/ai-writeback.js';
|
|
19
19
|
import { buildOgCardSpec } from '../engine/og-render.js';
|
|
20
|
-
import { getContentItem } from '../engine/publisher.js';
|
|
20
|
+
import { canonicalEditStatement, getContentItem, updateContentItem, } from '../engine/publisher.js';
|
|
21
21
|
import { canPerformContentAction } from './authz-matrix.js';
|
|
22
22
|
import { resolveConfig } from './config.js';
|
|
23
23
|
import { json, requireId } from './context.js';
|
|
@@ -163,6 +163,9 @@ export function createAiRoutes(config) {
|
|
|
163
163
|
if (result.status === 'unavailable') {
|
|
164
164
|
return llmUnavailableResponse({ reason: result.reason }, { dek: null, written: false });
|
|
165
165
|
}
|
|
166
|
+
// An editor-triggered dek is a human-initiated canonical change.
|
|
167
|
+
if (result.written)
|
|
168
|
+
await canonicalEditStatement(ctx.db, idResult.id).run();
|
|
166
169
|
return json({
|
|
167
170
|
dek: result.dek,
|
|
168
171
|
written: result.written,
|
|
@@ -263,14 +266,17 @@ export function createAiRoutes(config) {
|
|
|
263
266
|
});
|
|
264
267
|
if (writeResult.written) {
|
|
265
268
|
const now = Math.floor(Date.now() / 1000);
|
|
266
|
-
|
|
267
|
-
|
|
269
|
+
// An editor-triggered write-back is a human-initiated canonical change.
|
|
270
|
+
await ctx.db.batch([
|
|
271
|
+
ctx.db
|
|
272
|
+
.prepare(`UPDATE article_content
|
|
268
273
|
SET ai_takeaways = ?,
|
|
269
274
|
ai_takeaways_at = ?,
|
|
270
275
|
ai_takeaways_model = ?
|
|
271
276
|
WHERE content_id = ?`)
|
|
272
|
-
|
|
273
|
-
.
|
|
277
|
+
.bind(JSON.stringify(takeaways), now, 'llm-dispatch', id),
|
|
278
|
+
canonicalEditStatement(ctx.db, id),
|
|
279
|
+
]);
|
|
274
280
|
}
|
|
275
281
|
return json({
|
|
276
282
|
takeaways: writeResult.value,
|
|
@@ -323,10 +329,9 @@ export function createAiRoutes(config) {
|
|
|
323
329
|
value: description,
|
|
324
330
|
});
|
|
325
331
|
if (writeResult.written) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
.run();
|
|
332
|
+
// Through the editor's own save path, so it is a canonical edit. The
|
|
333
|
+
// existing category is passed through so the save changes nothing else.
|
|
334
|
+
await updateContentItem(ctx.db, id, { description, primaryCategory: item.channel });
|
|
330
335
|
}
|
|
331
336
|
return json({
|
|
332
337
|
description: writeResult.value,
|
|
@@ -399,10 +404,13 @@ export function createAiRoutes(config) {
|
|
|
399
404
|
value: imageKey,
|
|
400
405
|
});
|
|
401
406
|
if (writeResult.written) {
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
.
|
|
405
|
-
|
|
407
|
+
// An editor-triggered write-back is a human-initiated canonical change.
|
|
408
|
+
await ctx.db.batch([
|
|
409
|
+
ctx.db
|
|
410
|
+
.prepare('UPDATE content_items SET ai_og_image_id = ?, updated_at = unixepoch() WHERE id = ?')
|
|
411
|
+
.bind(imageKey, id),
|
|
412
|
+
canonicalEditStatement(ctx.db, id),
|
|
413
|
+
]);
|
|
406
414
|
}
|
|
407
415
|
return json({
|
|
408
416
|
ogImageId: imageKey,
|
package/dist/routes/ai.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/routes/ai.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ai.js","sourceRoot":"","sources":["../../src/routes/ai.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ export interface AnalyticsRouteHandlers {
|
|
|
10
10
|
topContent(ctx: RouteContext): Promise<Response>;
|
|
11
11
|
trafficSources(ctx: RouteContext): Promise<Response>;
|
|
12
12
|
articleDetail(ctx: RouteContext): Promise<Response>;
|
|
13
|
+
podcastListening(ctx: RouteContext): Promise<Response>;
|
|
13
14
|
}
|
|
14
15
|
export declare function createAnalyticsRoutes(config: AnalyticsRouteConfig): AnalyticsRouteHandlers;
|
|
15
16
|
//# sourceMappingURL=analytics.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGvD,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1C,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrD,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpD,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,YAAY,EAAa,MAAM,uBAAuB,CAAA;AACpE,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAGvD,MAAM,WAAW,oBAAoB;IACpC,KAAK,EAAE,KAAK,CAAA;IACZ,SAAS,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAA;CACjC;AAED,MAAM,WAAW,sBAAsB;IACtC,IAAI,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAC1C,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACrD,UAAU,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IAChD,cAAc,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACpD,aAAa,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;IACnD,gBAAgB,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAA;CACtD;AAaD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,sBAAsB,CA6D1F"}
|
package/dist/routes/analytics.js
CHANGED
|
@@ -56,6 +56,26 @@ export function createAnalyticsRoutes(config) {
|
|
|
56
56
|
const slug = url.searchParams.get('slug') ?? '';
|
|
57
57
|
return json(await providers.analytics.getArticleDetail(slug, range));
|
|
58
58
|
},
|
|
59
|
+
// Podcast listening panel — same publisher gate and ?range=<Nd> window
|
|
60
|
+
// as the other analytics handlers, but NOT a ProviderResult envelope:
|
|
61
|
+
// the provider returns null when the site has no podcast listening
|
|
62
|
+
// analytics at all, which this route answers with a 404 the screen
|
|
63
|
+
// renders as an explicit "not available" state. A provider that is
|
|
64
|
+
// implemented but fails throws — the route 500s loudly, never zeros.
|
|
65
|
+
async podcastListening(ctx) {
|
|
66
|
+
const denied = await config.authz.requirePublisher(ctx);
|
|
67
|
+
if (denied)
|
|
68
|
+
return denied;
|
|
69
|
+
const range = parseRange(ctx.request.url);
|
|
70
|
+
const listening = await providers.analytics.getPodcastListening({
|
|
71
|
+
from: new Date(range.from * 1000).toISOString(),
|
|
72
|
+
to: new Date(range.to * 1000).toISOString(),
|
|
73
|
+
});
|
|
74
|
+
if (!listening) {
|
|
75
|
+
return json({ error: 'podcast listening analytics is not available' }, 404);
|
|
76
|
+
}
|
|
77
|
+
return json(listening);
|
|
78
|
+
},
|
|
59
79
|
};
|
|
60
80
|
}
|
|
61
81
|
//# sourceMappingURL=analytics.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,8EAA8E;AAC9E,yEAAyE;AACzE,qEAAqE;AACrE,qEAAqE;AACrE,gFAAgF;AAEhF,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AAGpD,OAAO,EAAE,IAAI,EAAE,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/routes/analytics.ts"],"names":[],"mappings":"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"}
|
package/dist/routes/content.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ContentStatus } from '../schema/types.js';
|
|
2
2
|
import type { CmsRouteConfig } from './config.js';
|
|
3
3
|
import { type RouteContext } from './context.js';
|
|
4
|
+
import type { FoundryPublishOptions } from './foundry-publish.js';
|
|
4
5
|
import type { DispatchWebhookHook } from './webhooks.js';
|
|
5
6
|
export type { DispatchWebhookHook };
|
|
6
7
|
export interface MediaSourceReadiness {
|
|
@@ -87,6 +88,17 @@ export interface ContentRouteConfig extends CmsRouteConfig {
|
|
|
87
88
|
videoSourceProductionEnabled?: boolean;
|
|
88
89
|
/** Internal machine-route constraint: atomically update only in this status. */
|
|
89
90
|
updateStatusConstraint?: ContentStatus;
|
|
91
|
+
/**
|
|
92
|
+
* Internal (Foundry machine route, M3-18): replaces ONLY the publish action's
|
|
93
|
+
* commit step (publishContent + createRevision) with the caller's — publishOne
|
|
94
|
+
* with the publication's live surfaces. Every other step of the native publish
|
|
95
|
+
* action (readiness, body guard, dek, tag check, activity log, takeaways, FAQ,
|
|
96
|
+
* the content.published webhook) runs unchanged, through the same handler.
|
|
97
|
+
*/
|
|
98
|
+
publishCommit?: (ctx: RouteContext, input: {
|
|
99
|
+
contentId: string;
|
|
100
|
+
now: number;
|
|
101
|
+
}) => Promise<void>;
|
|
90
102
|
/**
|
|
91
103
|
* Optional webhook dispatcher hook (P7 Task 9). Fired at each content
|
|
92
104
|
* lifecycle transition (publish, unpublish, schedule, archive, create, etc.).
|
|
@@ -101,6 +113,21 @@ export interface ContentRouteConfig extends CmsRouteConfig {
|
|
|
101
113
|
* when absent so callers without a workspace concept still produce a scoped row.
|
|
102
114
|
*/
|
|
103
115
|
activeWorkspaceId?: string;
|
|
116
|
+
/**
|
|
117
|
+
* Per-publication opt-in for the Foundry machine route's publish transition
|
|
118
|
+
* (M3-18). Omitted, or `autoPublish` anything but `true`, keeps that route
|
|
119
|
+
* draft-only and byte-identical to the v1 route. Read only by routes/foundry-publish.ts.
|
|
120
|
+
*/
|
|
121
|
+
foundryPublish?: FoundryPublishOptions;
|
|
122
|
+
/**
|
|
123
|
+
* This publication's canonical host for the Foundry route family, declared
|
|
124
|
+
* statically (the integration's `foundryCanonicalHost`, so it reaches every
|
|
125
|
+
* request whatever the host's per-request hooks set). Once a host is declared
|
|
126
|
+
* here or in `foundryPublish.canonicalHost`, the Foundry route verifies only
|
|
127
|
+
* the host-bound `foundry-cms-v2` string and never the legacy dot form.
|
|
128
|
+
* Read only by routes/foundry-publish.ts.
|
|
129
|
+
*/
|
|
130
|
+
foundryCanonicalHost?: string;
|
|
104
131
|
}
|
|
105
132
|
type ContentType = 'article' | 'video' | 'podcast' | 'newsletter' | 'page';
|
|
106
133
|
export declare function normaliseNextcloudShareUrl(value: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../src/routes/content.ts"],"names":[],"mappings":"
|
|
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
|
@@ -29,12 +29,14 @@ import { applySlugRenameRedirects } from '../engine/slug-redirects.js';
|
|
|
29
29
|
import { invalidateMediaCaptureStatements, softDeleteContent } from '../engine/soft-delete.js';
|
|
30
30
|
import { normalizeSourceSections } from '../engine/source-sections.js';
|
|
31
31
|
import { TagInputError } from '../engine/taxonomy.js';
|
|
32
|
+
import { VideoSourceNotIngestableError } from '../engine/video-source.js';
|
|
32
33
|
import { isValidTimeZone, PUBLISH_TIMEZONE_FALLBACK, parseLocalDateTimeInZoneToUnixSeconds, } from '../lib/publish-timezone.js';
|
|
33
34
|
import { parseLayoutEnvelope } from '../schema/layout.js';
|
|
34
35
|
import { parsePortableTextEnvelope } from '../schema/portable-text.js';
|
|
35
36
|
import { canPerformContentAction } from './authz-matrix.js';
|
|
36
37
|
import { resolveConfig } from './config.js';
|
|
37
38
|
import { json, requireId } from './context.js';
|
|
39
|
+
import { isFoundryMachineContext } from './machine-context.js';
|
|
38
40
|
function positiveIntegerDuration(value) {
|
|
39
41
|
if (typeof value !== 'number' || !Number.isFinite(value) || value <= 0)
|
|
40
42
|
return null;
|
|
@@ -61,6 +63,11 @@ function mediaSourceProviderErrorResponse(error) {
|
|
|
61
63
|
return null;
|
|
62
64
|
return json({ error: failure.message, reason: failure.code }, failure.status);
|
|
63
65
|
}
|
|
66
|
+
function videoSourceNotIngestableResponse(error) {
|
|
67
|
+
if (!(error instanceof VideoSourceNotIngestableError))
|
|
68
|
+
return null;
|
|
69
|
+
return json({ error: error.message, reason: 'video_source_not_ingestable' }, 400);
|
|
70
|
+
}
|
|
64
71
|
function verifiedMediaDurationConflictResponse(error) {
|
|
65
72
|
if (!(error instanceof VerifiedMediaDurationConflictError))
|
|
66
73
|
return null;
|
|
@@ -238,6 +245,7 @@ const ContentMetadataSchema = z
|
|
|
238
245
|
const NEXTCLOUD_SHARE_HOSTS = ['drive.fulcrum-portal.com'];
|
|
239
246
|
const NEXTCLOUD_SHARE_PATH_RE = /^\/s\/([A-Za-z0-9_-]+)(?:\/download)?\/?$/;
|
|
240
247
|
const NEXTCLOUD_DIRECT_PATH_RE = /^\/public\.php\/dav\/files\/[A-Za-z0-9_-]+$/;
|
|
248
|
+
const NEXTCLOUD_SHARE_NOISE_PARAMS = new Set(['dir', 'editing', 'openfile']);
|
|
241
249
|
export function normaliseNextcloudShareUrl(value) {
|
|
242
250
|
let url;
|
|
243
251
|
try {
|
|
@@ -255,12 +263,18 @@ export function normaliseNextcloudShareUrl(value) {
|
|
|
255
263
|
url.hash) {
|
|
256
264
|
return value;
|
|
257
265
|
}
|
|
258
|
-
|
|
266
|
+
// Nextcloud's copy-link output adds page-navigation noise -- `?dir=/` from a
|
|
267
|
+
// folder listing, `?dir=/&editing=false&openfile=true` from the viewer --
|
|
268
|
+
// none of which changes the file a share serves. Any other parameter may
|
|
269
|
+
// select a different resource, so the URL is kept and the publisher's
|
|
270
|
+
// ingest guard refuses it (HomeFronts 2026-10-01T18:05Z).
|
|
271
|
+
const onlyNoiseQuery = url.search === '' ||
|
|
272
|
+
[...url.searchParams.keys()].every((key) => NEXTCLOUD_SHARE_NOISE_PARAMS.has(key));
|
|
259
273
|
if (NEXTCLOUD_DIRECT_PATH_RE.test(url.pathname)) {
|
|
260
|
-
return url.search === '' ? value :
|
|
274
|
+
return url.search === '' ? value : onlyNoiseQuery ? `https://${host}${url.pathname}` : value;
|
|
261
275
|
}
|
|
262
276
|
const share = NEXTCLOUD_SHARE_PATH_RE.exec(url.pathname);
|
|
263
|
-
if (!share || !
|
|
277
|
+
if (!share || !onlyNoiseQuery)
|
|
264
278
|
return value;
|
|
265
279
|
return `https://${host}/public.php/dav/files/${share[1]}`;
|
|
266
280
|
}
|
|
@@ -842,6 +856,14 @@ export function createContentRoutes(config) {
|
|
|
842
856
|
* — identical guard pattern to dispatchTakeaways / logActivity.
|
|
843
857
|
* When no hook is injected this is a no-op (no 501, no error).
|
|
844
858
|
*/
|
|
859
|
+
/**
|
|
860
|
+
* Only a context the HMAC-verified Foundry route marked is the machine
|
|
861
|
+
* (routes/machine-context.ts); a subject or userId string never decides it,
|
|
862
|
+
* so no person can act as the machine. Any other actor is a person.
|
|
863
|
+
*/
|
|
864
|
+
async function isFoundryActor(ctx) {
|
|
865
|
+
return isFoundryMachineContext(ctx);
|
|
866
|
+
}
|
|
845
867
|
async function fireWebhook(ctx, eventType, data) {
|
|
846
868
|
if (!dispatchWebhook)
|
|
847
869
|
return;
|
|
@@ -1032,10 +1054,15 @@ export function createContentRoutes(config) {
|
|
|
1032
1054
|
if (op === 'topic') {
|
|
1033
1055
|
const { topic } = parsed.data;
|
|
1034
1056
|
for (const id of ids) {
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1057
|
+
// Through the editor's own save path, so it is a canonical edit; the
|
|
1058
|
+
// existing category is passed through so the save changes nothing else.
|
|
1059
|
+
const existing = await getContentItem(ctx.db, id);
|
|
1060
|
+
if (!existing || existing.deleted_at != null)
|
|
1061
|
+
continue;
|
|
1062
|
+
await updateContentItem(ctx.db, id, {
|
|
1063
|
+
primaryTopic: topic,
|
|
1064
|
+
primaryCategory: existing.channel,
|
|
1065
|
+
});
|
|
1039
1066
|
}
|
|
1040
1067
|
return json({ updated: ids });
|
|
1041
1068
|
}
|
|
@@ -1132,6 +1159,9 @@ export function createContentRoutes(config) {
|
|
|
1132
1159
|
catch (error) {
|
|
1133
1160
|
if (error instanceof TagInputError)
|
|
1134
1161
|
return tagInputErrorResponse(error);
|
|
1162
|
+
const notIngestable = videoSourceNotIngestableResponse(error);
|
|
1163
|
+
if (notIngestable)
|
|
1164
|
+
return notIngestable;
|
|
1135
1165
|
const conflict = verifiedMediaDurationConflictResponse(error);
|
|
1136
1166
|
if (conflict)
|
|
1137
1167
|
return conflict;
|
|
@@ -1341,6 +1371,9 @@ export function createContentRoutes(config) {
|
|
|
1341
1371
|
catch (error) {
|
|
1342
1372
|
if (error instanceof TagInputError)
|
|
1343
1373
|
return tagInputErrorResponse(error);
|
|
1374
|
+
const notIngestable = videoSourceNotIngestableResponse(error);
|
|
1375
|
+
if (notIngestable)
|
|
1376
|
+
return notIngestable;
|
|
1344
1377
|
const conflict = verifiedMediaDurationConflictResponse(error);
|
|
1345
1378
|
if (conflict)
|
|
1346
1379
|
return conflict;
|
|
@@ -1580,8 +1613,13 @@ export function createContentRoutes(config) {
|
|
|
1580
1613
|
throw error;
|
|
1581
1614
|
}
|
|
1582
1615
|
try {
|
|
1583
|
-
|
|
1584
|
-
|
|
1616
|
+
if (config.publishCommit) {
|
|
1617
|
+
await config.publishCommit(ctx, { contentId: id, now });
|
|
1618
|
+
}
|
|
1619
|
+
else {
|
|
1620
|
+
await publishContent(ctx.db, id, publishedAt, now);
|
|
1621
|
+
await createRevision(ctx.db, id, ctx.userId || null);
|
|
1622
|
+
}
|
|
1585
1623
|
}
|
|
1586
1624
|
catch (error) {
|
|
1587
1625
|
if (error instanceof TagInputError)
|
|
@@ -1674,7 +1712,10 @@ export function createContentRoutes(config) {
|
|
|
1674
1712
|
}
|
|
1675
1713
|
}
|
|
1676
1714
|
if (action === 'unpublish') {
|
|
1677
|
-
|
|
1715
|
+
// A person's unpublish sticks: it is a canonical edit, so a machine
|
|
1716
|
+
// publisher cannot put the item back without a new write. The
|
|
1717
|
+
// machine's own unpublish is not, so it can republish its item.
|
|
1718
|
+
await unpublishContent(ctx.db, id, { canonicalEdit: !(await isFoundryActor(ctx)) });
|
|
1678
1719
|
// Fire content.unpublished webhook.
|
|
1679
1720
|
await fireWebhook(ctx, 'content.unpublished', {
|
|
1680
1721
|
id,
|
|
@@ -1702,8 +1743,10 @@ export function createContentRoutes(config) {
|
|
|
1702
1743
|
if (action === 'unschedule') {
|
|
1703
1744
|
// publish_tz is NOT NULL (DEFAULT 'Europe/Paris'); reset it to the
|
|
1704
1745
|
// default rather than nulling it (a NULL violates the constraint).
|
|
1746
|
+
// A person pulling a scheduled item is a canonical edit (see unpublish).
|
|
1747
|
+
const pulledByPerson = !(await isFoundryActor(ctx));
|
|
1705
1748
|
await ctx.db
|
|
1706
|
-
.prepare(
|
|
1749
|
+
.prepare(`UPDATE content_items SET status = 'draft', publish_at = NULL, publish_tz = 'Europe/Paris', updated_at = unixepoch()${pulledByPerson ? ', canonical_version = canonical_version + 1' : ''} WHERE id = ?`)
|
|
1707
1750
|
.bind(id)
|
|
1708
1751
|
.run();
|
|
1709
1752
|
return json({ status: 'draft' });
|
|
@@ -1735,8 +1778,11 @@ export function createContentRoutes(config) {
|
|
|
1735
1778
|
// publish_at so a de-scheduled item doesn't carry a phantom publish time.
|
|
1736
1779
|
// publish_tz is NOT NULL (DEFAULT 'Europe/Paris'), so it is reset to the
|
|
1737
1780
|
// default rather than nulled.
|
|
1781
|
+
// A person moving the item back to draft or review is a canonical
|
|
1782
|
+
// edit (see unpublish); the machine never calls set-status.
|
|
1783
|
+
const movedByPerson = !(await isFoundryActor(ctx));
|
|
1738
1784
|
await ctx.db
|
|
1739
|
-
.prepare(
|
|
1785
|
+
.prepare(`UPDATE content_items SET status = ?, publish_at = NULL, publish_tz = 'Europe/Paris', updated_at = unixepoch()${movedByPerson ? ', canonical_version = canonical_version + 1' : ''} WHERE id = ?`)
|
|
1740
1786
|
.bind(status, id)
|
|
1741
1787
|
.run();
|
|
1742
1788
|
// Fire content.review when submitted for review.
|