@cogenta/cli 0.3.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. package/CHANGELOG.md +3856 -0
  2. package/dist/admin-assets/assets/index-CxZHGwVA.css +1 -0
  3. package/dist/admin-assets/assets/index-fYXyHpn8.js +1090 -0
  4. package/dist/admin-assets/assets/vips-_dmTUXFO.wasm +0 -0
  5. package/dist/admin-assets/assets/vips-es6-DrQTTS8Q.js +7 -0
  6. package/dist/admin-assets/branding/logo-cogenta-dark.png +0 -0
  7. package/dist/admin-assets/branding/logo-cogenta-icon.png +0 -0
  8. package/dist/admin-assets/branding/logo-cogenta-light.png +0 -0
  9. package/dist/admin-assets/branding/logo-cogenta-small.png +0 -0
  10. package/dist/admin-assets/branding/logo-cogenta-transparent.png +0 -0
  11. package/dist/admin-assets/branding/logo-cogenta.png +0 -0
  12. package/dist/admin-assets/favicon.png +0 -0
  13. package/dist/admin-assets/fonts/ibm-plex-mono-400.woff2 +0 -0
  14. package/dist/admin-assets/fonts/ibm-plex-mono-500.woff2 +0 -0
  15. package/dist/admin-assets/fonts/ibm-plex-mono-600.woff2 +0 -0
  16. package/dist/admin-assets/fonts/ibm-plex-mono-700.woff2 +0 -0
  17. package/dist/admin-assets/fonts/ibm-plex-sans-var.woff2 +0 -0
  18. package/dist/admin-assets/fonts/jetbrains-mono-var.woff2 +0 -0
  19. package/dist/admin-assets/fonts/space-grotesk-var.woff2 +0 -0
  20. package/dist/admin-assets/index.html +3 -2
  21. package/dist/bin.js +6 -0
  22. package/dist/bin.js.map +1 -1
  23. package/dist/commands/admin-assets.d.ts +1 -0
  24. package/dist/commands/admin-assets.d.ts.map +1 -1
  25. package/dist/commands/admin-assets.js +19 -1
  26. package/dist/commands/admin-assets.js.map +1 -1
  27. package/dist/commands/agent-runtime.d.ts +151 -0
  28. package/dist/commands/agent-runtime.d.ts.map +1 -0
  29. package/dist/commands/agent-runtime.js +519 -0
  30. package/dist/commands/agent-runtime.js.map +1 -0
  31. package/dist/commands/assistant.d.ts +89 -3
  32. package/dist/commands/assistant.d.ts.map +1 -1
  33. package/dist/commands/assistant.js +206 -39
  34. package/dist/commands/assistant.js.map +1 -1
  35. package/dist/commands/audit-integrity-alert.d.ts +23 -0
  36. package/dist/commands/audit-integrity-alert.d.ts.map +1 -0
  37. package/dist/commands/audit-integrity-alert.js +33 -0
  38. package/dist/commands/audit-integrity-alert.js.map +1 -0
  39. package/dist/commands/backup.d.ts +78 -0
  40. package/dist/commands/backup.d.ts.map +1 -0
  41. package/dist/commands/backup.js +238 -0
  42. package/dist/commands/backup.js.map +1 -0
  43. package/dist/commands/channels.d.ts +47 -0
  44. package/dist/commands/channels.d.ts.map +1 -0
  45. package/dist/commands/channels.js +277 -0
  46. package/dist/commands/channels.js.map +1 -0
  47. package/dist/commands/default-logo.d.ts +27 -0
  48. package/dist/commands/default-logo.d.ts.map +1 -0
  49. package/dist/commands/default-logo.js +30 -0
  50. package/dist/commands/default-logo.js.map +1 -0
  51. package/dist/commands/doctor.d.ts +5 -1
  52. package/dist/commands/doctor.d.ts.map +1 -1
  53. package/dist/commands/doctor.js +74 -2
  54. package/dist/commands/doctor.js.map +1 -1
  55. package/dist/commands/export.d.ts +22 -0
  56. package/dist/commands/export.d.ts.map +1 -0
  57. package/dist/commands/export.js +182 -0
  58. package/dist/commands/export.js.map +1 -0
  59. package/dist/commands/forms-page.d.ts +75 -0
  60. package/dist/commands/forms-page.d.ts.map +1 -0
  61. package/dist/commands/forms-page.js +191 -0
  62. package/dist/commands/forms-page.js.map +1 -0
  63. package/dist/commands/import.d.ts.map +1 -1
  64. package/dist/commands/import.js +13 -1
  65. package/dist/commands/import.js.map +1 -1
  66. package/dist/commands/mcp.d.ts +35 -0
  67. package/dist/commands/mcp.d.ts.map +1 -0
  68. package/dist/commands/mcp.js +277 -0
  69. package/dist/commands/mcp.js.map +1 -0
  70. package/dist/commands/roles.d.ts +22 -0
  71. package/dist/commands/roles.d.ts.map +1 -0
  72. package/dist/commands/roles.js +79 -0
  73. package/dist/commands/roles.js.map +1 -0
  74. package/dist/commands/search-page.d.ts +15 -0
  75. package/dist/commands/search-page.d.ts.map +1 -1
  76. package/dist/commands/search-page.js +22 -16
  77. package/dist/commands/search-page.js.map +1 -1
  78. package/dist/commands/seo.d.ts +92 -4
  79. package/dist/commands/seo.d.ts.map +1 -1
  80. package/dist/commands/seo.js +168 -4
  81. package/dist/commands/seo.js.map +1 -1
  82. package/dist/commands/serve.d.ts +489 -6
  83. package/dist/commands/serve.d.ts.map +1 -1
  84. package/dist/commands/serve.js +3883 -164
  85. package/dist/commands/serve.js.map +1 -1
  86. package/dist/commands/site-plan.d.ts +27 -1
  87. package/dist/commands/site-plan.d.ts.map +1 -1
  88. package/dist/commands/site-plan.js +71 -4
  89. package/dist/commands/site-plan.js.map +1 -1
  90. package/dist/commands/term-archive-page.d.ts +94 -0
  91. package/dist/commands/term-archive-page.d.ts.map +1 -0
  92. package/dist/commands/term-archive-page.js +195 -0
  93. package/dist/commands/term-archive-page.js.map +1 -0
  94. package/dist/commands/theme-css.d.ts +22 -7
  95. package/dist/commands/theme-css.d.ts.map +1 -1
  96. package/dist/commands/theme-css.js +33 -8
  97. package/dist/commands/theme-css.js.map +1 -1
  98. package/dist/commands/theme-registry.d.ts +94 -0
  99. package/dist/commands/theme-registry.d.ts.map +1 -0
  100. package/dist/commands/theme-registry.js +130 -0
  101. package/dist/commands/theme-registry.js.map +1 -0
  102. package/dist/commands/theme-render.d.ts +360 -2
  103. package/dist/commands/theme-render.d.ts.map +1 -1
  104. package/dist/commands/theme-render.js +984 -29
  105. package/dist/commands/theme-render.js.map +1 -1
  106. package/dist/commands/theme-wiring.d.ts +107 -0
  107. package/dist/commands/theme-wiring.d.ts.map +1 -0
  108. package/dist/commands/theme-wiring.js +295 -0
  109. package/dist/commands/theme-wiring.js.map +1 -0
  110. package/dist/commands/tools.d.ts +71 -0
  111. package/dist/commands/tools.d.ts.map +1 -0
  112. package/dist/commands/tools.js +330 -0
  113. package/dist/commands/tools.js.map +1 -0
  114. package/dist/commands/update.d.ts +25 -0
  115. package/dist/commands/update.d.ts.map +1 -0
  116. package/dist/commands/update.js +193 -0
  117. package/dist/commands/update.js.map +1 -0
  118. package/dist/commands/users.d.ts.map +1 -1
  119. package/dist/commands/users.js +6 -36
  120. package/dist/commands/users.js.map +1 -1
  121. package/dist/index.d.ts +15 -0
  122. package/dist/index.d.ts.map +1 -1
  123. package/dist/index.js +146 -4
  124. package/dist/index.js.map +1 -1
  125. package/dist/invite-mail.d.ts +39 -0
  126. package/dist/invite-mail.d.ts.map +1 -0
  127. package/dist/invite-mail.js +39 -0
  128. package/dist/invite-mail.js.map +1 -0
  129. package/dist/reset-mail.d.ts +39 -0
  130. package/dist/reset-mail.d.ts.map +1 -0
  131. package/dist/reset-mail.js +45 -0
  132. package/dist/reset-mail.js.map +1 -0
  133. package/dist/update/apply.d.ts +54 -0
  134. package/dist/update/apply.d.ts.map +1 -0
  135. package/dist/update/apply.js +77 -0
  136. package/dist/update/apply.js.map +1 -0
  137. package/dist/update/changelog-risk.d.ts +20 -0
  138. package/dist/update/changelog-risk.d.ts.map +1 -0
  139. package/dist/update/changelog-risk.js +55 -0
  140. package/dist/update/changelog-risk.js.map +1 -0
  141. package/dist/update/check.d.ts +60 -0
  142. package/dist/update/check.d.ts.map +1 -0
  143. package/dist/update/check.js +56 -0
  144. package/dist/update/check.js.map +1 -0
  145. package/dist/update/contract-risk.d.ts +55 -0
  146. package/dist/update/contract-risk.d.ts.map +1 -0
  147. package/dist/update/contract-risk.js +75 -0
  148. package/dist/update/contract-risk.js.map +1 -0
  149. package/dist/update/history.d.ts +30 -0
  150. package/dist/update/history.d.ts.map +1 -0
  151. package/dist/update/history.js +38 -0
  152. package/dist/update/history.js.map +1 -0
  153. package/dist/update/index.d.ts +28 -0
  154. package/dist/update/index.d.ts.map +1 -0
  155. package/dist/update/index.js +11 -0
  156. package/dist/update/index.js.map +1 -0
  157. package/dist/update/list-restore-points.d.ts +20 -0
  158. package/dist/update/list-restore-points.d.ts.map +1 -0
  159. package/dist/update/list-restore-points.js +35 -0
  160. package/dist/update/list-restore-points.js.map +1 -0
  161. package/dist/update/npm-registry.d.ts +11 -0
  162. package/dist/update/npm-registry.d.ts.map +1 -0
  163. package/dist/update/npm-registry.js +74 -0
  164. package/dist/update/npm-registry.js.map +1 -0
  165. package/dist/update/restore-point.d.ts +26 -0
  166. package/dist/update/restore-point.d.ts.map +1 -0
  167. package/dist/update/restore-point.js +23 -0
  168. package/dist/update/restore-point.js.map +1 -0
  169. package/dist/update/tar.d.ts +27 -0
  170. package/dist/update/tar.d.ts.map +1 -0
  171. package/dist/update/tar.js +56 -0
  172. package/dist/update/tar.js.map +1 -0
  173. package/dist/update/version-compare.d.ts +17 -0
  174. package/dist/update/version-compare.d.ts.map +1 -0
  175. package/dist/update/version-compare.js +42 -0
  176. package/dist/update/version-compare.js.map +1 -0
  177. package/dist/version.d.ts +13 -0
  178. package/dist/version.d.ts.map +1 -0
  179. package/dist/version.js +18 -0
  180. package/dist/version.js.map +1 -0
  181. package/package.json +33 -13
  182. package/dist/admin-assets/assets/index-Buwdj1V2.js +0 -71
  183. package/dist/admin-assets/assets/index-Csef0SiA.css +0 -1
@@ -1,9 +1,10 @@
1
1
  import { writeFile } from 'node:fs/promises';
2
2
  import { join } from 'node:path';
3
- import { createAnthropicClient, createFileSitePlanStore, createGoogleClient, createOpenAiClient, extractDocumentText, proposeSitePlan, resolveApprovedPlan, summarisePlan, } from '@cogenta/agents';
3
+ import { createAnthropicClient, createFileSitePlanStore, createGoogleClient, createOpenAiClient, describeExistingSite, extractDocumentText, proposeSitePlan, resolveApprovedPlan, summarisePlan, } from '@cogenta/agents';
4
4
  import { CogentaError } from '@cogenta/core';
5
- import { createContentStore, createSchemaTables } from '@cogenta/schema';
5
+ import { createContentStore, createSchemaTables, createTaxonomyStore, createThemeStore, ensureThemeTable, } from '@cogenta/schema';
6
6
  import { findSchemaFile } from './serve.js';
7
+ import { DEFAULT_THEME_NAME } from './theme-registry.js';
7
8
  /**
8
9
  * L19 task 7 — the same document-driven planning the installer offers, on a
9
10
  * site that is already running.
@@ -38,18 +39,76 @@ function providerClient(llm, apiKey) {
38
39
  return createGoogleClient(config);
39
40
  return undefined;
40
41
  }
41
- function createPlanner(client, model, siteName) {
42
+ /**
43
+ * Fiche 60 task 2 — detected by config presence alone, never guessed: a
44
+ * section absent from `CogentaConfig` (R2's own vocabulary — "sans
45
+ * fournisseur configuré") is simply not listed here, rather than inferred
46
+ * from some other signal.
47
+ */
48
+ export function detectActiveIntegrations(config) {
49
+ const active = [];
50
+ if (config.llm !== undefined)
51
+ active.push('llm');
52
+ if (config.imageGeneration !== undefined)
53
+ active.push('image generation');
54
+ if (config.billing !== undefined)
55
+ active.push('billing');
56
+ if (config.webhooks.endpoints.length > 0)
57
+ active.push('webhooks');
58
+ if (config.payment.stripeSecretKey !== undefined)
59
+ active.push('stripe payments');
60
+ return active;
61
+ }
62
+ /**
63
+ * Fiche 60 task 6 — read fresh on every call, never cached across the
64
+ * process's lifetime (same discipline `theme-wiring.ts`'s own
65
+ * `computeEffectiveStyles` documents for the theme overlay): a proposal made
66
+ * an hour into a running `cogenta serve` has to see the entries and terms
67
+ * written since boot, not the count at start-up.
68
+ */
69
+ export async function buildExistingSiteSnapshot(context) {
70
+ const entryCounts = {};
71
+ for (const collection of context.collections) {
72
+ const store = createContentStore({
73
+ db: context.db,
74
+ collection,
75
+ defaultLocale: context.defaultLocale,
76
+ });
77
+ const counts = await store.count();
78
+ entryCounts[collection.name] = { total: counts.total, published: counts.published };
79
+ }
80
+ const termCounts = {};
81
+ for (const taxonomy of context.taxonomies) {
82
+ const store = createTaxonomyStore({ db: context.db, taxonomy });
83
+ termCounts[taxonomy.name] = (await store.list()).length;
84
+ }
85
+ // Idempotent (`create table if not exists`) — safe even when
86
+ // `createThemeWiring` already ran this earlier in the same boot.
87
+ await ensureThemeTable(context.db);
88
+ const theme = await createThemeStore({ db: context.db }).get();
89
+ return describeExistingSite({
90
+ collections: context.collections,
91
+ taxonomies: context.taxonomies,
92
+ entryCounts,
93
+ termCounts,
94
+ activeTheme: theme.activeTheme ?? DEFAULT_THEME_NAME,
95
+ integrations: detectActiveIntegrations(context.config),
96
+ });
97
+ }
98
+ function createPlanner(client, model, siteName, siteContext) {
42
99
  return {
43
100
  async propose(input) {
44
101
  const documents = input.documents.map((document) => extractDocumentText({
45
102
  filename: document.filename,
46
103
  bytes: Buffer.from(document.contentBase64, 'base64'),
47
104
  }));
105
+ const existingSite = await buildExistingSiteSnapshot(siteContext);
48
106
  const result = await proposeSitePlan({
49
107
  client,
50
108
  model,
51
109
  documents,
52
110
  siteName: input.siteName ?? siteName,
111
+ existingSite,
53
112
  });
54
113
  return result.ok
55
114
  ? { ok: true, draft: result.draft }
@@ -215,7 +274,15 @@ export async function createSitePlanning(options) {
215
274
  store,
216
275
  ...(client === undefined || llm === undefined
217
276
  ? {}
218
- : { planner: createPlanner(client, llm.model, options.config.site.name) }),
277
+ : {
278
+ planner: createPlanner(client, llm.model, options.config.site.name, {
279
+ db: options.db,
280
+ collections: options.collections,
281
+ taxonomies: options.taxonomies ?? [],
282
+ defaultLocale: options.config.site.defaultLocale,
283
+ config: options.config,
284
+ }),
285
+ }),
219
286
  ...(schemaPath === undefined
220
287
  ? {}
221
288
  : {
@@ -1 +1 @@
1
- {"version":3,"file":"site-plan.js","sourceRoot":"","sources":["../../src/commands/site-plan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"site-plan.js","sourceRoot":"","sources":["../../src/commands/site-plan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ import type { AccessContext, ContentGateway } from '@cogenta/api';
2
+ import type { MediaAsset } from '@cogenta/render';
3
+ import { type CollectionDefinition } from '@cogenta/schema';
4
+ import { type TermArchiveLabels } from '@cogenta/theme-kit';
5
+ import type { SeoRenderDefaults } from './seo.js';
6
+ import type { BrandingSettings } from './theme-render.js';
7
+ import { type PageChromeMenus, type SiteIdentityMedia } from './theme-render.js';
8
+ /**
9
+ * `GET /{taxonomy}/{term-slug}` — the public archive page of one taxonomy
10
+ * term (audit 2026-09-01, 04-taxonomies-menus.md T01).
11
+ *
12
+ * ADR-0022 shipped native taxonomies, the admin has let an editor point a
13
+ * menu item at a term ever since, and `resolveMenuTerm` answered `route:
14
+ * null` for every one of them — with a comment saying, honestly, that no
15
+ * site rendered such a page yet. Until this file, a term was a filing
16
+ * cabinet with no door.
17
+ *
18
+ * **The URL pattern is resolved here, in the host, and nowhere else.** A
19
+ * taxonomy has no `routing` in ADR-0022, and giving it one would be a
20
+ * contract A change for a feature that does not need it — exactly the same
21
+ * reasoning that keeps `/search` a route rather than a collection. So the
22
+ * pattern is fixed (`/{taxonomy name}/{term slug}`) and it is tried only
23
+ * *after* every real collection route has failed to match, which is what
24
+ * makes a collision with a `/blog/:slug` route impossible by construction
25
+ * rather than by a rule someone has to remember.
26
+ */
27
+ /** One page of an archive. Small on purpose: an archive is a browsing surface, not a data dump. */
28
+ export declare const ARCHIVE_PAGE_SIZE = 12;
29
+ /** What the host resolved out of the taxonomy store before any rendering happened. */
30
+ export interface TermArchiveResolution {
31
+ readonly taxonomyName: string;
32
+ readonly term: {
33
+ readonly slug: string;
34
+ readonly label: string;
35
+ };
36
+ /** Root-most first, down to the direct parent. */
37
+ readonly ancestors: readonly {
38
+ readonly slug: string;
39
+ readonly label: string;
40
+ }[];
41
+ readonly children: readonly {
42
+ readonly slug: string;
43
+ readonly label: string;
44
+ }[];
45
+ /**
46
+ * Every published entry filed under this term, newest first, as
47
+ * `(collection, id)` pairs. Ids rather than entries: each one is still read
48
+ * back through the permission-checked gateway below, so an entry this
49
+ * visitor may not see never reaches the page even though the SQL that
50
+ * found it knows nothing about roles (R4 — the check is the runtime's, not
51
+ * the query's).
52
+ */
53
+ readonly entries: readonly {
54
+ readonly collection: string;
55
+ readonly id: string;
56
+ }[];
57
+ }
58
+ export interface TermArchivePageOptions {
59
+ readonly collections: readonly CollectionDefinition[];
60
+ readonly gateway: ContentGateway;
61
+ readonly site: {
62
+ readonly name: string;
63
+ readonly url: string;
64
+ readonly locales: readonly string[];
65
+ readonly defaultLocale: string;
66
+ };
67
+ readonly styles: string | null;
68
+ readonly menus?: PageChromeMenus;
69
+ readonly branding?: () => Promise<BrandingSettings>;
70
+ readonly activeTheme?: () => Promise<string | null>;
71
+ readonly seo?: () => Promise<SeoRenderDefaults>;
72
+ readonly identity?: () => Promise<SiteIdentityMedia>;
73
+ readonly loadMedia?: (ids: readonly string[]) => Promise<ReadonlyMap<string, MediaAsset>>;
74
+ }
75
+ /**
76
+ * The archive's own chrome strings, in the page's language.
77
+ *
78
+ * Resolved here rather than in each theme for the same reason the admin
79
+ * bar's are (`theme-render.ts`): this is server-rendered HTML with no React
80
+ * runtime near it, and five theme packages each carrying their own
81
+ * English-only "Previous"/"Next" is precisely the drift `@cogenta/theme-kit`
82
+ * exists to prevent. `fr-CA` resolves like `fr`; an unknown language gets
83
+ * English rather than a key or a blank.
84
+ */
85
+ export declare function archiveLabels(locale: string): TermArchiveLabels;
86
+ /**
87
+ * Renders the archive page, or `null` when the requested page number is past
88
+ * the end — which the caller turns into the same 404 any other unresolvable
89
+ * path gets. An *empty* term is not that: it answers 200 with an empty list,
90
+ * because "this category exists and nothing is filed under it" is a true
91
+ * answer, and 404 would be a lie.
92
+ */
93
+ export declare function renderTermArchivePage(resolution: TermArchiveResolution, page: number, options: TermArchivePageOptions, context: AccessContext): Promise<string | null>;
94
+ //# sourceMappingURL=term-archive-page.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-archive-page.d.ts","sourceRoot":"","sources":["../../src/commands/term-archive-page.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ import { buildPath } from '@cogenta/schema';
2
+ import { escapeHtmlAttribute, escapeHtmlText } from '@cogenta/seo';
3
+ import { h, serialize, } from '@cogenta/theme-kit';
4
+ import { resolveTheme } from './theme-registry.js';
5
+ import { entryTitle, renderPageChrome, } from './theme-render.js';
6
+ /**
7
+ * `GET /{taxonomy}/{term-slug}` — the public archive page of one taxonomy
8
+ * term (audit 2026-09-01, 04-taxonomies-menus.md T01).
9
+ *
10
+ * ADR-0022 shipped native taxonomies, the admin has let an editor point a
11
+ * menu item at a term ever since, and `resolveMenuTerm` answered `route:
12
+ * null` for every one of them — with a comment saying, honestly, that no
13
+ * site rendered such a page yet. Until this file, a term was a filing
14
+ * cabinet with no door.
15
+ *
16
+ * **The URL pattern is resolved here, in the host, and nowhere else.** A
17
+ * taxonomy has no `routing` in ADR-0022, and giving it one would be a
18
+ * contract A change for a feature that does not need it — exactly the same
19
+ * reasoning that keeps `/search` a route rather than a collection. So the
20
+ * pattern is fixed (`/{taxonomy name}/{term slug}`) and it is tried only
21
+ * *after* every real collection route has failed to match, which is what
22
+ * makes a collision with a `/blog/:slug` route impossible by construction
23
+ * rather than by a rule someone has to remember.
24
+ */
25
+ /** One page of an archive. Small on purpose: an archive is a browsing surface, not a data dump. */
26
+ export const ARCHIVE_PAGE_SIZE = 12;
27
+ const LABELS = {
28
+ en: {
29
+ empty: 'Nothing is filed here yet.',
30
+ previous: 'Previous',
31
+ next: 'Next',
32
+ breadcrumb: 'Breadcrumb',
33
+ pagination: 'Pagination',
34
+ subterms: 'Sub-categories',
35
+ },
36
+ fr: {
37
+ empty: 'Rien n’est encore classé ici.',
38
+ previous: 'Précédent',
39
+ next: 'Suivant',
40
+ breadcrumb: 'Fil d’Ariane',
41
+ pagination: 'Pagination',
42
+ subterms: 'Sous-catégories',
43
+ },
44
+ };
45
+ /**
46
+ * The archive's own chrome strings, in the page's language.
47
+ *
48
+ * Resolved here rather than in each theme for the same reason the admin
49
+ * bar's are (`theme-render.ts`): this is server-rendered HTML with no React
50
+ * runtime near it, and five theme packages each carrying their own
51
+ * English-only "Previous"/"Next" is precisely the drift `@cogenta/theme-kit`
52
+ * exists to prevent. `fr-CA` resolves like `fr`; an unknown language gets
53
+ * English rather than a key or a blank.
54
+ */
55
+ export function archiveLabels(locale) {
56
+ const base = locale.split('-')[0]?.toLowerCase() ?? 'en';
57
+ return LABELS[base] ?? LABELS.en;
58
+ }
59
+ /** The fields a summary may come from — the same list `@cogenta/seo`'s feed builder uses, so an archive and a feed describe an entry the same way. */
60
+ const SUMMARY_FIELDS = ['excerpt', 'description', 'summary', 'subtitle', 'teaser'];
61
+ function summaryOf(collection, entry) {
62
+ for (const candidate of SUMMARY_FIELDS) {
63
+ if (collection.fields[candidate] === undefined)
64
+ continue;
65
+ const value = entry.values[candidate];
66
+ if (typeof value === 'string' && value.trim() !== '')
67
+ return value.trim();
68
+ }
69
+ return null;
70
+ }
71
+ function hrefOf(collection, entry) {
72
+ if (collection.routing === undefined)
73
+ return null;
74
+ try {
75
+ return buildPath(collection, Object.fromEntries(Object.entries(entry.values).filter((pair) => typeof pair[1] === 'string')), entry.locale ?? undefined);
76
+ }
77
+ catch {
78
+ // A routed collection whose slug field is empty on this entry: listed
79
+ // without a link rather than with a URL that 404s. Same rule
80
+ // `search-page.ts` already applies.
81
+ return null;
82
+ }
83
+ }
84
+ /** `/{taxonomy}/{slug}`, and `?page=N` past the first. */
85
+ function archiveHref(taxonomy, slug, page) {
86
+ const path = `/${encodeURIComponent(taxonomy)}/${encodeURIComponent(slug)}`;
87
+ return page <= 1 ? path : `${path}?page=${page}`;
88
+ }
89
+ /**
90
+ * The minimal archive the host renders for a theme that does not implement
91
+ * `renderTermArchive`.
92
+ *
93
+ * It uses the same `cg-main`/`cg-page__title` classes every built-in theme
94
+ * already styles, so it is not unstyled — but it is deliberately plain: a
95
+ * theme that wants an archive of its own has one extra export to write, and
96
+ * this exists so that not writing it never breaks a site.
97
+ */
98
+ function fallbackArchive(input) {
99
+ return h('main', { class: 'cg-main cg-archive', id: 'cg-main' }, h('h1', { class: 'cg-page__title' }, input.term.label), input.entries.length === 0
100
+ ? h('p', {}, input.labels.empty)
101
+ : h('ul', {}, ...input.entries.map((entry) => h('li', {}, entry.href === null ? entry.title : h('a', { href: entry.href }, entry.title)))));
102
+ }
103
+ function headFor(input, options, page) {
104
+ const title = `${input.term.label} — ${options.site.name}`;
105
+ const canonical = new URL(archiveHref(input.taxonomyName, input.term.slug, page), options.site.url).toString();
106
+ // Page 2 and beyond are `noindex, follow`: they are the same set of entries
107
+ // sliced differently, so indexing them competes with page 1 for the same
108
+ // query while adding nothing — and `follow` still lets a crawler reach
109
+ // every entry they link to, which is the whole reason they exist.
110
+ const robots = page > 1 ? 'noindex, follow' : 'index, follow';
111
+ return [
112
+ `<title>${escapeHtmlText(title)}</title>`,
113
+ `<meta name="robots" content="${robots}">`,
114
+ `<link rel="canonical" href="${escapeHtmlAttribute(canonical)}">`,
115
+ input.page.previousHref === null
116
+ ? ''
117
+ : `<link rel="prev" href="${escapeHtmlAttribute(new URL(input.page.previousHref, options.site.url).toString())}">`,
118
+ input.page.nextHref === null
119
+ ? ''
120
+ : `<link rel="next" href="${escapeHtmlAttribute(new URL(input.page.nextHref, options.site.url).toString())}">`,
121
+ ]
122
+ .filter((part) => part !== '')
123
+ .join('\n');
124
+ }
125
+ /**
126
+ * Renders the archive page, or `null` when the requested page number is past
127
+ * the end — which the caller turns into the same 404 any other unresolvable
128
+ * path gets. An *empty* term is not that: it answers 200 with an empty list,
129
+ * because "this category exists and nothing is filed under it" is a true
130
+ * answer, and 404 would be a lie.
131
+ */
132
+ export async function renderTermArchivePage(resolution, page, options, context) {
133
+ const totalPages = Math.max(1, Math.ceil(resolution.entries.length / ARCHIVE_PAGE_SIZE));
134
+ if (page < 1 || page > totalPages)
135
+ return null;
136
+ const byName = new Map(options.collections.map((collection) => [collection.name, collection]));
137
+ const slice = resolution.entries.slice((page - 1) * ARCHIVE_PAGE_SIZE, page * ARCHIVE_PAGE_SIZE);
138
+ const entries = [];
139
+ for (const reference of slice) {
140
+ const collection = byName.get(reference.collection);
141
+ if (collection === undefined)
142
+ continue;
143
+ // R4: the permission check is here, in the runtime, on every single
144
+ // entry — never a `WHERE role = …` bolted onto the query that found it.
145
+ const entry = await options.gateway.read(reference.collection, reference.id, context);
146
+ if (entry === null)
147
+ continue;
148
+ entries.push({
149
+ title: entryTitle(entry),
150
+ href: hrefOf(collection, entry),
151
+ summary: summaryOf(collection, entry),
152
+ collection: collection.name,
153
+ publishedAt: entry.publishedAt ?? null,
154
+ });
155
+ }
156
+ const locale = options.site.defaultLocale;
157
+ const taxonomy = resolution.taxonomyName;
158
+ const input = {
159
+ taxonomyName: taxonomy,
160
+ term: resolution.term,
161
+ ancestors: resolution.ancestors.map((ancestor) => ({
162
+ label: ancestor.label,
163
+ href: archiveHref(taxonomy, ancestor.slug, 1),
164
+ })),
165
+ children: resolution.children.map((child) => ({
166
+ label: child.label,
167
+ href: archiveHref(taxonomy, child.slug, 1),
168
+ })),
169
+ entries,
170
+ page: {
171
+ current: page,
172
+ totalPages,
173
+ previousHref: page > 1 ? archiveHref(taxonomy, resolution.term.slug, page - 1) : null,
174
+ nextHref: page < totalPages ? archiveHref(taxonomy, resolution.term.slug, page + 1) : null,
175
+ },
176
+ locale,
177
+ labels: archiveLabels(locale),
178
+ };
179
+ const theme = await resolveTheme(options.activeTheme === undefined ? null : await options.activeTheme());
180
+ const body = serialize(theme.renderTermArchive === undefined ? fallbackArchive(input) : theme.renderTermArchive(input));
181
+ return renderPageChrome({
182
+ site: options.site,
183
+ locale,
184
+ styles: options.styles,
185
+ headHtml: headFor(input, options, page),
186
+ bodyHtml: body,
187
+ ...(options.menus === undefined ? {} : { menus: options.menus }),
188
+ ...(options.branding === undefined ? {} : { branding: options.branding }),
189
+ ...(options.activeTheme === undefined ? {} : { activeTheme: options.activeTheme }),
190
+ ...(options.seo === undefined ? {} : { seo: options.seo }),
191
+ ...(options.identity === undefined ? {} : { identity: options.identity }),
192
+ ...(options.loadMedia === undefined ? {} : { loadMedia: options.loadMedia }),
193
+ }, context);
194
+ }
195
+ //# sourceMappingURL=term-archive-page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"term-archive-page.js","sourceRoot":"","sources":["../../src/commands/term-archive-page.ts"],"names":[],"mappings":"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"}
@@ -38,17 +38,32 @@ export interface InlineImportsOptions {
38
38
  * untouched for the browser to refuse or fetch as it sees fit.
39
39
  */
40
40
  export declare function inlineImports(entry: URL, options: InlineImportsOptions): Promise<string>;
41
- /**
42
- * The whole theme stylesheet as one minified string, or `null` when the theme
43
- * package cannot be resolved — a site then renders with the skin's custom
44
- * properties alone rather than refusing to serve, the same degradation
45
- * `loadSkinCss` already chose for a missing `theme.tokens.json`.
46
- */
47
41
  /**
48
42
  * FNV-1a, 32 bits. A cache key, never a security boundary — and deliberately
49
43
  * not `node:crypto`, to match the hash `@cogenta/render` already uses for the
50
44
  * skin sheet's ETag rather than introduce a second convention beside it.
51
45
  */
52
46
  export declare function cssEtag(css: string): string;
53
- export declare function loadThemeCss(options: InlineImportsOptions): Promise<string | null>;
47
+ /**
48
+ * The whole theme stylesheet as one minified string, or `null` when the named
49
+ * theme package cannot be resolved — a site then renders with the skin's
50
+ * custom properties alone rather than refusing to serve, the same degradation
51
+ * `loadSkinCss` already chose for a missing `theme.tokens.json`.
52
+ *
53
+ * Every theme package publishes its stylesheet at the same `./styles/theme.css`
54
+ * export subpath (contract D, mirrored by every theme package's `package.json`)
55
+ * so this stays a one-line lookup regardless of which theme is active — a
56
+ * per-theme convention, not a per-theme code branch.
57
+ */
58
+ export declare function loadThemeCss(options: InlineImportsOptions, themeName: string): Promise<string | null>;
59
+ /**
60
+ * A theme's own stylesheet is code, not data — installing a second theme
61
+ * package is a redeploy, unlike the skin tokens `resolveStyles` re-reads on
62
+ * every request. So each theme's CSS is loaded and flattened once per name
63
+ * and kept for the life of the process, memoised by this factory rather than
64
+ * reloaded on a request that merely switched *which* already-installed theme
65
+ * is active — switching is still live (fiche L23): only the file I/O is not
66
+ * repeated for a theme this process has already read.
67
+ */
68
+ export declare function createThemeCssResolver(options: InlineImportsOptions): (themeName: string) => Promise<string | null>;
54
69
  //# sourceMappingURL=theme-css.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-css.d.ts","sourceRoot":"","sources":["../../src/commands/theme-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiC7C;AAID,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB9F;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxF"}
1
+ {"version":3,"file":"theme-css.d.ts","sourceRoot":"","sources":["../../src/commands/theme-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAeH;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAiC7C;AAID,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5C,kFAAkF;IAClF,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CACxB;AAED;;;;;;;GAOG;AACH,wBAAsB,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,MAAM,CAAC,CAmB9F;AAED;;;;GAIG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAO3C;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,oBAAoB,EAC7B,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAOxB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,oBAAoB,GAC5B,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAS/C"}
@@ -90,12 +90,6 @@ export async function inlineImports(entry, options) {
90
90
  parts.push(css.slice(cursor));
91
91
  return parts.join('\n');
92
92
  }
93
- /**
94
- * The whole theme stylesheet as one minified string, or `null` when the theme
95
- * package cannot be resolved — a site then renders with the skin's custom
96
- * properties alone rather than refusing to serve, the same degradation
97
- * `loadSkinCss` already chose for a missing `theme.tokens.json`.
98
- */
99
93
  /**
100
94
  * FNV-1a, 32 bits. A cache key, never a security boundary — and deliberately
101
95
  * not `node:crypto`, to match the hash `@cogenta/render` already uses for the
@@ -109,13 +103,44 @@ export function cssEtag(css) {
109
103
  }
110
104
  return `"${value.toString(16).padStart(8, '0')}"`;
111
105
  }
112
- export async function loadThemeCss(options) {
106
+ /**
107
+ * The whole theme stylesheet as one minified string, or `null` when the named
108
+ * theme package cannot be resolved — a site then renders with the skin's
109
+ * custom properties alone rather than refusing to serve, the same degradation
110
+ * `loadSkinCss` already chose for a missing `theme.tokens.json`.
111
+ *
112
+ * Every theme package publishes its stylesheet at the same `./styles/theme.css`
113
+ * export subpath (contract D, mirrored by every theme package's `package.json`)
114
+ * so this stays a one-line lookup regardless of which theme is active — a
115
+ * per-theme convention, not a per-theme code branch.
116
+ */
117
+ export async function loadThemeCss(options, themeName) {
113
118
  try {
114
- const entry = new URL(import.meta.resolve('@cogenta/theme-canonical/styles/theme.css'));
119
+ const entry = new URL(import.meta.resolve(`${themeName}/styles/theme.css`));
115
120
  return minifyCss(await inlineImports(entry, options));
116
121
  }
117
122
  catch {
118
123
  return null;
119
124
  }
120
125
  }
126
+ /**
127
+ * A theme's own stylesheet is code, not data — installing a second theme
128
+ * package is a redeploy, unlike the skin tokens `resolveStyles` re-reads on
129
+ * every request. So each theme's CSS is loaded and flattened once per name
130
+ * and kept for the life of the process, memoised by this factory rather than
131
+ * reloaded on a request that merely switched *which* already-installed theme
132
+ * is active — switching is still live (fiche L23): only the file I/O is not
133
+ * repeated for a theme this process has already read.
134
+ */
135
+ export function createThemeCssResolver(options) {
136
+ const cache = new Map();
137
+ return (themeName) => {
138
+ const cached = cache.get(themeName);
139
+ if (cached !== undefined)
140
+ return cached;
141
+ const promise = loadThemeCss(options, themeName);
142
+ cache.set(themeName, promise);
143
+ return promise;
144
+ };
145
+ }
121
146
  //# sourceMappingURL=theme-css.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"theme-css.js","sourceRoot":"","sources":["../../src/commands/theme-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,CACL,IAAI;SACD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;QACrB,0EAA0E;QAC1E,+DAA+D;QAC/D,wEAAwE;QACxE,iEAAiE;SAChE,OAAO,CAAC,iBAAiB,EAAE,IAAI,CAAC;SAChC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CACvB,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACnC,IAAI,GAAG,GAAG,EAAE,CAAA;IACZ,IAAI,IAAI,GAAG,EAAE,CAAA;IACb,IAAI,KAAK,GAAG,CAAC,CAAA;IAEb,OAAO,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC;QAC1B,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;YAChC,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;YACxC,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;YACzC,sEAAsE;YACtE,iDAAiD;YACjD,IAAI,IAAI,GAAG,CAAA;YACX,SAAQ;QACV,CAAC;QAED,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAW,CAAA;QACtC,IAAI,SAAS,KAAK,GAAG,IAAI,SAAS,KAAK,GAAG,EAAE,CAAC;YAC3C,IAAI,IAAI,SAAS,CAAA;YACjB,KAAK,IAAI,CAAC,CAAA;YACV,SAAQ;QACV,CAAC;QAED,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,GAAG,EAAE,CAAA;QACT,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAA;QACnB,OAAO,GAAG,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;YAClD,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAClC,CAAC;QACD,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;QACtD,KAAK,GAAG,GAAG,GAAG,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;AACrC,CAAC;AAED,MAAM,MAAM,GAAG,8CAA8C,CAAA;AAS7D;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,KAAU,EAAE,OAA6B;IAC3E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,CAAC,CAAA;IAChC,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACrC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,CAAA;IAE1B,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,IAAI,MAAM,GAAG,CAAC,CAAA;IACd,KAAK,MAAM,KAAK,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,CAAW,CAAA;QACpC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAQ;QACxC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,CAAC,CAAA;QAC9B,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAA;QACpC,KAAK,CAAC,IAAI,CACR,MAAM,aAAa,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,GAAG,CAAC,EAAE,CAAC,CACzF,CAAA;QACD,MAAM,GAAG,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAA;IAClC,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACzB,CAAC;AAED;;;;;GAKG;AACH;;;;GAIG;AACH,MAAM,UAAU,OAAO,CAAC,GAAW;IACjC,IAAI,KAAK,GAAG,UAAU,CAAA;IACtB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QAChD,KAAK,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,CAAA;QAC9B,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,UAAU,CAAC,KAAK,CAAC,CAAA;IAC5C,CAAC;IACD,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;AACnD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,OAA6B;IAC9D,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,2CAA2C,CAAC,CAAC,CAAA;QACvF,OAAO,SAAS,CAAC,MAAM,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAA;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"theme-css.js","sourceRoot":"","sources":["../../src/commands/theme-css.ts"],"names":[],"mappings":"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"}