@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,12 +1,20 @@
1
1
  import { type IncomingMessage, type ServerResponse } from 'node:http';
2
- import { type AgentsRouter, type AssistantRouter, type AuditRouter, type AuthRouter, createContentGateway, type MediaImageProcessor, type MediaRouter, type NoticeRouter, type PermissionLayer, type RestRouter, type SearchRouter, type SitePlanRouter, type TaxonomyRouter, type UsersRouter } from '@cogenta/api';
2
+ import { type AnalyticsStore } from '@cogenta/analytics';
3
+ import { type AdminThemeRouter, type AgentSkillsRouter, type AgentsRouter, type AnalyticsRouter, type ApiKeysRouter, type AssistantRouter, type AuditRouter, type AuthRouter, createContentGateway, type FormsRouter, type HealthRouter, type ImportRouter, type MarketplaceRouter, type McpConnectionsRouter, type MediaImageProcessor, type MediaRouter, type MenuRouter, type NotFoundRouter, type NoticeChannelSettingsRouter, type NoticeRouter, type ObservabilityRouter, type OpsStatusRouter, type PatternRouter, type PermissionLayer, type PromptTemplatesRouter, type ProvidersRouter, type RedirectRouter, type RestRouter, type ReviewRouter, type RolePermissionRouter, type ScheduledTasksRouter, type SearchConsoleRouter, type SearchRouter, type SeoRouter, type ShellStatusRouter, type SitePlanRouter, type SiteSettingsRouter, type TaxonomyRouter, type ThemeRouter, type ToolsRouter, type UpdateRouter, type UsersRouter } from '@cogenta/api';
3
4
  import { type AuthStore } from '@cogenta/auth';
4
- import { type DatabaseHandle, type HealthReport, type Logger, type MediaStore, type StorageDriver } from '@cogenta/core';
5
- import { type CollectionDefinition, type RedirectStore, type SchemaDocument, type TaxonomyDefinition } from '@cogenta/schema';
5
+ import { type CommentSettingsStore, type CommentStore, type CommentsRouter } from '@cogenta/comments';
6
+ import { type CommerceAdminRouter } from '@cogenta/commerce';
7
+ import { type DatabaseHandle, type ErrorLog, type HealthReport, type Logger, type MediaStore, type RateLimitDriver, type StorageDriver } from '@cogenta/core';
8
+ import { type FormStore } from '@cogenta/forms';
9
+ import { type CollectionDefinition, type MaintenanceStore, type NotFoundLogStore, type RedirectPatternStore, type RedirectStore, type RolePermissionStore, type SchemaDocument, type SiteSettingsStore, type TaxonomyDefinition } from '@cogenta/schema';
10
+ import { type SitemapUrl } from '@cogenta/seo';
6
11
  import type { GraphQLSchema } from 'graphql';
7
12
  import type { Output, Writer } from '../output.js';
13
+ import { type RunPackageInstall } from '../update/index.js';
8
14
  import { type SecurityConfig } from './http-security.js';
9
15
  import { type SecurityAlertWatch } from './security-alerts.js';
16
+ import { type TermArchiveResolution } from './term-archive-page.js';
17
+ import { type SiteIdentityMedia } from './theme-render.js';
10
18
  /**
11
19
  * Loads a project's content model.
12
20
  *
@@ -41,25 +49,203 @@ export declare function loadSchemaModule(projectRoot: string): Promise<LoadedSch
41
49
  * with orphan tables and no collections after the restart it was told to do.
42
50
  */
43
51
  export declare function findSchemaFile(projectRoot: string): Promise<string | undefined>;
52
+ /**
53
+ * What one sweep of the trash auto-purge (fiche 07 task 5) found, one
54
+ * collection at a time. `purgeExpired()` skips a still-`restrict`ed row
55
+ * rather than throwing (see `@cogenta/schema`'s `store.ts`), so this is
56
+ * never partial in a way that needs reporting here — it is simply how many
57
+ * of each collection's expired rows were actually removed.
58
+ */
59
+ interface TrashPurgeSummary {
60
+ readonly purged: number;
61
+ readonly perCollection: readonly {
62
+ readonly collection: string;
63
+ readonly purged: number;
64
+ }[];
65
+ }
44
66
  interface Site {
45
67
  readonly db: DatabaseHandle;
46
68
  readonly auth: AuthStore;
69
+ /** `@cogenta/core`'s own package version (fiche 22 tâche 8, part 4) — the admin footer/topbar and, branding permitting, the public footer. */
70
+ readonly cogentaVersion: string;
47
71
  readonly restRouter: RestRouter;
48
72
  readonly authRouter: AuthRouter;
49
73
  readonly mediaRouter: MediaRouter;
50
74
  readonly auditRouter: AuditRouter;
51
75
  /** `GET /api/search` — the full-text index, reachable for the first time (L10 task 3). */
52
76
  readonly searchRouter: SearchRouter;
77
+ /** `GET /api/review` — the editorial workflow's review queue (`schema@2.1`, ADR-0027). */
78
+ readonly reviewRouter: ReviewRouter;
79
+ /**
80
+ * `/api/seo` — fiche 13: the admin's only door onto what `@cogenta/seo`
81
+ * actually computes. `POST .../preview` follows `update` on the named
82
+ * collection; `GET .../diagnostics` is admin-only, same as `redirectRouter`
83
+ * and `opsStatusRouter` above.
84
+ */
85
+ readonly seoRouter: SeoRouter;
86
+ /**
87
+ * `/api/seo/search-console` — fiche 70 task 4, ADR-0032: the optional,
88
+ * off-by-default Google Search Console connector. Admin-only except its
89
+ * own `callback` route, which Google's browser redirect reaches with no
90
+ * bearer token at all (see the router's own module comment for why that
91
+ * is still safe).
92
+ */
93
+ readonly searchConsoleRouter: SearchConsoleRouter;
94
+ /**
95
+ * Self-hosted, cookie-free page-view analytics (`@cogenta/analytics`).
96
+ *
97
+ * `analyticsStore` is the aggregate/write side used both by `analyticsRouter`
98
+ * (`/api/analytics/beacon` and `/api/analytics/summary`) and directly by the
99
+ * admin dashboard widget's server-rendered data. Always mounted — a site
100
+ * with nobody reading the dashboard still collects nothing more than it
101
+ * would with the feature switched off (R1/R2 spirit: purely additive).
102
+ */
103
+ readonly analyticsStore: AnalyticsStore;
104
+ readonly analyticsRouter: AnalyticsRouter;
105
+ /**
106
+ * Purges event rows (and their daily salts) past the site's configured
107
+ * retention (fiche 27 task 3) — same shape as `tickScheduledPublishing`,
108
+ * ticked by `runServe` on a `setInterval` rather than called ad hoc. Returns
109
+ * how many event rows were dropped, for a test to assert against without
110
+ * waiting for the real interval.
111
+ */
112
+ readonly tickAnalyticsPurge: () => Promise<number>;
53
113
  /** `/api/taxonomies/*` — terms, mounted apart from content because a taxonomy is not a collection (`schema@2.0`, ADR-0022). */
54
114
  readonly taxonomyRouter: TaxonomyRouter;
115
+ /** `/api/marketplace/*` — L17's local plugin/theme/skin catalog, reusing `@cogenta/plugins`' real Ed25519 verification unchanged. Always mounted; the catalog is empty until a site configures one. */
116
+ readonly marketplaceRouter: MarketplaceRouter;
117
+ /** `/api/menus/*` — navigation menus. Not schema-declared like a taxonomy: created and edited entirely at runtime, so this is always mounted, empty until the admin (or the API) creates the first one. */
118
+ readonly menuRouter: MenuRouter;
119
+ /**
120
+ * `/api/patterns/*` — the page builder's motif/model library (fiche 43
121
+ * sub-chantier A). Not schema-declared either: one fixed table, the same
122
+ * one-fixed-table treatment as `menuRouter` above, always mounted and
123
+ * empty until an editor saves the first selection as a pattern.
124
+ */
125
+ readonly patternRouter: PatternRouter;
126
+ /**
127
+ * `/api/commerce/*` — contract E's back office (ADR-0024), mounted for the
128
+ * first time. `@cogenta/commerce`'s tables are only created and this
129
+ * router is only present once a site actually reaches this point — a site
130
+ * that never sells anything never pays for it (mirrors the taxonomy story).
131
+ */
132
+ readonly commerceRouter: CommerceAdminRouter;
133
+ /**
134
+ * Contract F's own router (ADR-0025) — moderation queue AND the CMS's
135
+ * first public write route, `POST /api/comments`, both dispatched from
136
+ * one mount the way `commerceRouter` above already is.
137
+ */
138
+ readonly commentsRouter: CommentsRouter;
139
+ /** Exposed directly, the same way `siteSettingsStore` is, so `theme-render.ts` can read the public thread for a page without an in-process HTTP round trip. */
140
+ readonly commentsStore: CommentStore;
141
+ readonly commentsSettingsStore: CommentSettingsStore;
142
+ /** `/api/redirects` — admin-only management of the redirect table `cogenta serve` already applies to every public GET (audit follow-up to L10 task 2; extended by fiche 12 with editing, search, patterns and CSV import/export). */
143
+ readonly redirectRouter: RedirectRouter;
144
+ /**
145
+ * Prefix redirects (`/blog/*` to `/actualites/*`, fiche 12 task 4) — a
146
+ * second, deliberately simpler table beside `redirects`, checked only when
147
+ * the exact-match table finds nothing. Never a regular expression: see
148
+ * `@cogenta/schema`'s `redirect-patterns.ts` for why that is structural,
149
+ * not a convention someone could accidentally violate.
150
+ */
151
+ readonly redirectPatterns: RedirectPatternStore;
152
+ /**
153
+ * Fiche 63, ADR-0028 — the database-backed override layer of a role's
154
+ * permissions. Exposed so `cogenta roles export` and the admin route below
155
+ * share the exact same store a running `cogenta serve` reads, never a
156
+ * second connection to the same table.
157
+ */
158
+ readonly rolePermissionStore: RolePermissionStore;
159
+ /**
160
+ * `/api/role-permissions` — admin-only reads and writes of the override
161
+ * table above; a write calls the overlay's `refresh()` before answering,
162
+ * which is what makes the very next request already see it.
163
+ */
164
+ readonly rolePermissionRouter: RolePermissionRouter;
165
+ /**
166
+ * The log of public URLs that answered a 404 (fiche 12 task 1). Written on
167
+ * the public GET path in this file's own request handler, read and
168
+ * dismissed through `notFoundRouter` below.
169
+ */
170
+ readonly notFoundLog: NotFoundLogStore;
171
+ readonly notFoundLogEnabled: boolean;
172
+ /** `/api/not-found` — admin-only reads of `notFoundLog`. Never writes: the log fills itself. */
173
+ readonly notFoundRouter: NotFoundRouter;
174
+ /** Drains rows of `notFoundLog` older than its configured retention. Ticked by `runServe`, exposed so a test can call it directly instead of waiting a day. */
175
+ readonly tickNotFoundPurge: () => Promise<number>;
176
+ /** `GET /api/security-status` and `GET /api/webhooks-status` — read-only mirrors of the site's configuration file, admin-only (audit follow-up to L10 task 6 / L14 task 1). */
177
+ readonly opsStatusRouter: OpsStatusRouter;
178
+ /**
179
+ * `GET|PATCH /api/settings` — the editorial site settings a rédacteur can
180
+ * change without a terminal (fiche 23, ADR-0025's third category: not
181
+ * infrastructure like `opsStatusRouter` above, not a personal preference
182
+ * like the admin's interface language, but a site property stored in the
183
+ * database precisely so it can change without a redeploy).
184
+ */
185
+ readonly siteSettingsRouter: SiteSettingsRouter;
186
+ /**
187
+ * The same store `siteSettingsRouter` writes through, exposed directly so
188
+ * an internal caller — `theme-render.ts`'s `homePath` accessor — can read
189
+ * a live value without an in-process HTTP round trip to itself.
190
+ */
191
+ readonly siteSettingsStore: SiteSettingsStore;
192
+ /**
193
+ * `GET|PUT /api/admin-theme` — the admin's own runtime template +
194
+ * personalisation (L21 task 2), never the public site's (`themeRouter`,
195
+ * contract D — a distinct surface on purpose, see `admin-theme-router.ts`).
196
+ * Read is public (the login screen needs it before a session exists);
197
+ * write is `admin`-only, checked by the router itself.
198
+ */
199
+ readonly adminThemeRouter: AdminThemeRouter;
200
+ /**
201
+ * `GET /api/shell-status` — fiche 35 task 3: one aggregated read for
202
+ * every badge and feature flag the admin's chrome draws (trash count,
203
+ * pending orders, whether the shop has ever sold anything, marketplace
204
+ * updates), so a navigation never fires one request per badge.
205
+ */
206
+ readonly shellStatusRouter: ShellStatusRouter;
55
207
  /** ADR-0021's half that replaces the MFA sign-in gate: recommendations the admin shows, never a block. */
56
208
  readonly noticeRouter: NoticeRouter;
209
+ /** `/api/notices/channels/*` — fiche 38 tasks 3-4: linking a channel and its notification preferences. Always mounted; empty until an account links one. */
210
+ readonly noticeChannelSettingsRouter: NoticeChannelSettingsRouter;
57
211
  /** Refused sign-ins, watched for a run worth alerting on (L14 task 4). `null` when nothing is configured to receive one. */
58
212
  readonly securityAlerts: SecurityAlertWatch | null;
59
213
  /** Account management from the admin instead of `cogenta users create` on a terminal (L11 task 3). */
60
214
  readonly usersRouter: UsersRouter;
61
- /** Only set when a caller passes `agents` into `assembleSite` no site constructs one today (R2: agents are optional, not a hard dependency of the CMS). */
215
+ /** `/api/api-keys` — machine-to-machine bearer credentials, admin-only (L13 task 8). */
216
+ readonly apiKeysRouter: ApiKeysRouter;
217
+ /**
218
+ * Per-API-key request quota, checked once by `resolveActor` for every
219
+ * request (fiche 20 task 3, R1). `undefined` only in a test harness that
220
+ * builds a `Site` without going through `runServe` — every real server
221
+ * gets one, selected by `createRateLimitRegistry`, Redis when configured
222
+ * and available, an in-process counter otherwise.
223
+ */
224
+ readonly requestQuota?: RateLimitDriver;
225
+ /**
226
+ * `/api/agents` — L22 task 1: a real, persistent `AgentRegistry` this site
227
+ * actually runs (superagent + two example built-ins, seeded on first
228
+ * boot), not the pre-L22 read-only wrapper over a fixed declaration
229
+ * array. Set only when a caller passes `agentsRuntimeConfig` into
230
+ * `assembleSite` — a bare `Site` built by hand (tests included) goes on
231
+ * working unchanged with this omitted.
232
+ */
62
233
  readonly agentsRouter?: AgentsRouter;
234
+ /** `/api/providers` — L22 task 1bis: which LLM providers this site has enabled, with a masked key. Same optionality as `agentsRouter`, built alongside it from the same `agentsRuntimeConfig`. */
235
+ readonly providersRouter?: ProvidersRouter;
236
+ /** `/api/agent-skills` — L22 task 1bis: named instruction text an agent loads into its context. Same optionality as `agentsRouter`. */
237
+ readonly agentSkillsRouter?: AgentSkillsRouter;
238
+ /** `/api/prompt-templates` — fiche 45's shared prompt library. Same optionality as `agentsRouter`, built alongside it from the same `agentsRuntimeConfig`. */
239
+ readonly promptTemplatesRouter?: PromptTemplatesRouter;
240
+ /**
241
+ * `/api/mcp-connections` — fiche 58 tasks 2/3: external MCP servers this
242
+ * site's own agents may consume. Unlike `agentsRouter`/`providersRouter`/
243
+ * `agentSkillsRouter` above, this one is **not** gated on
244
+ * `agentsRuntimeConfig` — the registry (add/test/expose-tools) is useful
245
+ * on its own, and `assembleSite` always builds the underlying store (see
246
+ * `mcpConnections` near the top of this function).
247
+ */
248
+ readonly mcpConnectionsRouter?: McpConnectionsRouter;
63
249
  /**
64
250
  * `/api/site-plans` — L19 task 7's document-driven planning on a live site.
65
251
  *
@@ -68,12 +254,80 @@ interface Site {
68
254
  * `SITE_PLAN_NO_PROVIDER` for the routes that would need a model.
69
255
  */
70
256
  readonly sitePlanRouter?: SitePlanRouter;
257
+ /**
258
+ * `/api/updates` — L22 task 9: checking npm for a newer
259
+ * `@cogenta/core`/`@cogenta/cli`, applying one with a mandatory restore
260
+ * point first. Always mounted — checking and reviewing need no external
261
+ * provider, only outbound network access to registry.npmjs.org, which
262
+ * degrades to an honest per-package `checkError` rather than a broken
263
+ * screen when unavailable (same shape as `sitePlanRouter`'s `SITE_PLAN_NO_PROVIDER`).
264
+ */
265
+ readonly updatesRouter: UpdateRouter;
266
+ /**
267
+ * `/api/import` — the admin's counterpart to `cogenta import wordpress` on
268
+ * a terminal. Always mounted: unlike the site planner it needs no external
269
+ * provider, only this site's own database and storage, which `assembleSite`
270
+ * already has in scope.
271
+ */
272
+ readonly importRouter: ImportRouter;
71
273
  /**
72
274
  * `/api/assistant` — L18. Always mounted, even on a site with no AI provider:
73
275
  * it is the route that *answers* `{available: false}`, which is what lets the
74
276
  * admin panel disappear instead of erroring.
75
277
  */
76
278
  readonly assistantRouter: AssistantRouter;
279
+ /**
280
+ * Contract G (ADR-0026, fiche 16) — form definitions and submissions.
281
+ * Always mounted: a site that never builds a form still creates these
282
+ * tables (unlike commerce, which is opt-in), because the tables are
283
+ * cheap and the alternative — deciding at startup whether to mount a
284
+ * route — is the kind of conditional wiring this file already avoids
285
+ * everywhere else it can.
286
+ */
287
+ readonly formStore: FormStore;
288
+ /** `/api/forms/*` — admin CRUD on definitions/submissions, plus the public `POST .../submit`. */
289
+ readonly formsRouter: FormsRouter;
290
+ /** Purges submissions past each form's own `retainDays` (fiche 16 task 7's GDPR retention, ADR-0022's `purgeExpired` model). Ticked by `runServe` on a `setInterval`. */
291
+ readonly tickFormsPurge: () => Promise<number>;
292
+ /**
293
+ * Sends whatever queued order confirmation/shipment e-mail is due, retrying
294
+ * a transient failure on the next tick (fiche 52 task 2, "file avec
295
+ * reprise"). `null` on a site with no e-mail transport configured — ticked
296
+ * by `runServe` the same way `tickFormsPurge` is.
297
+ */
298
+ readonly tickCommerceEmails: (() => Promise<{
299
+ readonly sent: number;
300
+ readonly failed: number;
301
+ }>) | null;
302
+ /**
303
+ * Bills every subscription whose `nextBillingAt` has come due, retries
304
+ * whatever renewal payment is due for retry today, then sends any renewal
305
+ * notice that has fallen inside its warning window (fiche 53 tasks 3 and
306
+ * 5, audit T-COM-01: `runBilling`/`runDunning`/`sendRenewalNotices` had no
307
+ * caller anywhere in `cogenta serve`, so a subscription was never actually
308
+ * billed on a real site). Never `null`: unlike `tickCommerceEmails`, this
309
+ * needs no email transport — `sendRenewalNotices` is its own safe no-op
310
+ * (R2) when `commerceSubscriptions` has no `notifyRenewal` configured.
311
+ * Ticked by `runServe` the same way `tickFormsPurge` is.
312
+ */
313
+ readonly tickCommerceSubscriptions: () => Promise<{
314
+ readonly billed: number;
315
+ readonly dunningRetried: number;
316
+ readonly dunningSuspended: number;
317
+ readonly renewalNoticesSent: number;
318
+ }>;
319
+ /**
320
+ * Marks every open cart stale past its threshold as abandoned (audit
321
+ * A1-commerce P2: `CartStore.abandon()` existed since fiche 32 with no
322
+ * automatic caller). Never `null`: needs nothing but this site's own
323
+ * commerce tables, already created unconditionally. Ticked by `runServe`
324
+ * the same way `tickFormsPurge` is.
325
+ */
326
+ readonly tickCartAbandon: (options?: {
327
+ readonly olderThanMs?: number;
328
+ }) => Promise<{
329
+ readonly abandoned: number;
330
+ }>;
77
331
  /** Not routed through `mediaRouter`: serving a binary body is outside the JSON-only `RestResponse` shape, so the file route is handled directly (same treatment `/api/schema` already gets). */
78
332
  readonly mediaStore: MediaStore;
79
333
  readonly storage: StorageDriver;
@@ -107,8 +361,86 @@ interface Site {
107
361
  /** Which page answers an unmatched URL (L14 task 2). `/404` by default. */
108
362
  readonly notFoundPath: string;
109
363
  };
110
- /** The skin's custom properties plus the theme's own stylesheet, minified into one. `null` when neither could be loaded — the theme-render fallback serves unstyled HTML rather than refusing. */
364
+ /** The skin's custom properties plus the theme's own stylesheet, minified into one, as computed once at startup. `null` when neither could be loaded — the theme-render fallback serves unstyled HTML rather than refusing. Kept for callers with no theme wiring; a live request should call `resolveStyles()` instead — see its own comment for why. */
111
365
  readonly styles: string | null;
366
+ /**
367
+ * The live stylesheet (fiche 14): `theme.tokens.json` overlaid with
368
+ * whatever an `admin` saved from the appearance screen, recomputed on
369
+ * every call rather than cached at startup — this is what makes a saved
370
+ * override show up on the very next page view without a restart. Falls
371
+ * back to the static `styles` above when this instance built no theme
372
+ * wiring (`options.theme` absent — only test harnesses that do not care
373
+ * about appearance omit it).
374
+ */
375
+ readonly resolveStyles: () => Promise<string | null>;
376
+ /**
377
+ * The appearance screen's live preview (fiche 14 task 2): renders the
378
+ * given token/CSS candidate without saving it. Absent under the same
379
+ * condition as `themeRouter`.
380
+ */
381
+ readonly previewStyles?: (candidate: {
382
+ readonly tokens?: Record<string, unknown>;
383
+ readonly additionalCss?: string;
384
+ }) => Promise<string | null>;
385
+ /** `/api/theme` (fiche 14). Absent only when this instance built no theme wiring — see `resolveStyles`. */
386
+ readonly themeRouter?: ThemeRouter;
387
+ /**
388
+ * The appearance screen's theme *gallery* preview (fiche L24 task 5): the
389
+ * combined skin + stylesheet for an arbitrary theme package **by name**,
390
+ * never just the currently active one — `resolveStyles`/`previewStyles`
391
+ * above both resolve against the active theme only, which is exactly the
392
+ * wrong resolution for "show me what theme X would look like without
393
+ * switching to it". Absent under the same condition every other theme
394
+ * field here is (`options.theme` absent — a test harness with no theme
395
+ * wiring).
396
+ *
397
+ * `tokens` (L26 task 5, the Theme Creator workshop) lets a caller preview
398
+ * an unsaved candidate skin against a theme *other than* the active one —
399
+ * exactly the combination `previewStyles`/`themeGalleryStyles` previously
400
+ * had no way to express together: the former knows tokens but not a
401
+ * foreign theme's CSS, the latter knows a foreign theme's CSS but only its
402
+ * own on-disk default tokens. Absent means the previous behaviour
403
+ * (`themeName`'s own default skin), unchanged.
404
+ */
405
+ readonly themeGalleryStyles?: (themeName: string, tokens?: Record<string, unknown>) => Promise<string | null>;
406
+ /**
407
+ * The active theme *package* name (fiche L23) — `null` for the built-in
408
+ * default. Read live off the same theme-overrides row `resolveStyles`
409
+ * already reads, so a switch made from the appearance screen renders on
410
+ * the very next page view, no restart. `undefined` (not a function at all)
411
+ * under the same condition `themeRouter` is absent — a test harness with
412
+ * no theme wiring renders with the default theme, exactly as before this
413
+ * field existed.
414
+ */
415
+ readonly activeTheme?: () => Promise<string | null>;
416
+ /**
417
+ * The site's own logo/dark logo/favicon/share image, read live off the
418
+ * same theme-overrides row `activeTheme` above already reads (audit
419
+ * 2026-09-01 §7 T01 — the four settings the appearance screen saved and
420
+ * nothing ever read). `undefined` under the same condition every other
421
+ * theme field here is, and `theme-render.ts` then renders exactly as it
422
+ * did before this existed.
423
+ */
424
+ readonly siteIdentity?: () => Promise<SiteIdentityMedia>;
425
+ /**
426
+ * `/{taxonomy}/{term-slug}` → the term, its lineage and everything
427
+ * published under it, or `null` when either half names nothing (audit
428
+ * 2026-09-01, 04-taxonomies-menus.md T01).
429
+ */
430
+ readonly resolveTermArchive: (taxonomyName: string, termSlug: string) => Promise<TermArchiveResolution | null>;
431
+ /** Every term archive URL worth listing in `/sitemap.xml` — terms with nothing published under them are left out. */
432
+ readonly termSitemapUrls: () => Promise<readonly SitemapUrl[]>;
433
+ /**
434
+ * One taxonomy term, resolved to a label and a route — the same lookup
435
+ * `resolveMenuTerm` already does for a menu item pointing at a term,
436
+ * exposed here so `theme-render.ts`'s `ThemeRenderOptions.resolveTerm`
437
+ * (contract D `theme@1.4`, an entry's classified terms) reuses it rather
438
+ * than a second lookup path.
439
+ */
440
+ readonly resolveTaxonomyTerm: (taxonomyName: string, termId: string) => Promise<{
441
+ readonly label: string;
442
+ readonly route: string | null;
443
+ } | null>;
112
444
  /** CORS, security headers and cache-control, applied to every response (L10 task 6). */
113
445
  readonly security: SecurityConfig;
114
446
  /** Live, not cached: a driver that just went down must show as down the next time this is called, not until the process restarts. */
@@ -116,8 +448,84 @@ interface Site {
116
448
  readonly database: HealthReport;
117
449
  readonly storage: HealthReport;
118
450
  }>;
451
+ /**
452
+ * Drains one batch of due scheduled-publication jobs. `runServe` calls this
453
+ * on a `setInterval` for as long as the process runs — see its comment for
454
+ * why a fixed period is the honest, R1-compliant substitute for a real
455
+ * worker. Exposed so a test can call it directly instead of waiting.
456
+ */
457
+ readonly tickScheduledPublishing: () => Promise<number>;
458
+ /**
459
+ * Runs one scheduled audit-integrity check (fiche 21 task 3) and sends the
460
+ * outbound alert when this run is what first finds the chain broken.
461
+ * `runServe` calls this on its own `setInterval`, daily by default; exposed
462
+ * so a test can call it directly instead of waiting a day.
463
+ */
464
+ readonly checkAuditIntegrity: () => Promise<void>;
465
+ /**
466
+ * Purges audit-log entries older than `security.audit.retainDays`
467
+ * (T09-01) — `AuditLog.prune()` has existed since fiche 21 task 5 with no
468
+ * caller anywhere in the codebase. A no-op returning `{ pruned: 0 }` when
469
+ * `retainDays` is absent or `0` (never configured, or explicitly "never
470
+ * purge") — the silent "grows without bound" default stays exactly that,
471
+ * silent, unless a site opts in. `runServe` calls this on its own
472
+ * `setInterval`, daily by default; exposed so a test can call it directly
473
+ * instead of waiting a day.
474
+ */
475
+ readonly tickAuditPrune: () => Promise<{
476
+ readonly pruned: number;
477
+ }>;
478
+ /**
479
+ * Sweeps every collection's trash past its `retainDays` (fiche 07 task 5).
480
+ * `purgeExpired()` has existed on every `ContentStore` since ADR-0022;
481
+ * nothing ever called it, so a site's trash grew forever despite the admin
482
+ * being about to say otherwise. `runServe` calls this on its own
483
+ * `setInterval`, the same shape as `tickScheduledPublishing`. Exposed so a
484
+ * test can call it directly instead of waiting a day.
485
+ */
486
+ readonly tickTrashPurge: () => Promise<TrashPurgeSummary>;
487
+ /**
488
+ * Flushes whatever channel notifications fiche 38's notice-to-channel
489
+ * bridge queued for grouping or quiet hours (`@cogenta/channels`'
490
+ * `NotificationDispatcher.flushDue`, unchanged since L6). `runServe` calls
491
+ * this on its own `setInterval`, same shape as `tickScheduledPublishing`.
492
+ */
493
+ readonly tickChannelNotifications: () => Promise<readonly string[]>;
119
494
  dispose(): Promise<void>;
120
495
  }
496
+ /**
497
+ * Fiche 24's extra runtime state — health/tools/maintenance/error-log — kept
498
+ * separate from `Site` rather than folded into it: none of it is part of
499
+ * "what a site is" the way a `ContentStore` or a `MediaStore` is, and every
500
+ * caller that already constructs a bare `Site` by hand (tests included) goes
501
+ * on working unchanged with this omitted, in which case the routes it would
502
+ * serve simply do not exist.
503
+ */
504
+ export interface RuntimeExtras {
505
+ readonly healthRouter: HealthRouter;
506
+ readonly toolsRouter: ToolsRouter;
507
+ /**
508
+ * The "Tâches planifiées" screen (fiche 28 task 2). Optional for the same
509
+ * pragmatic reason `Site.agentsRouter` is: a caller that builds a bare
510
+ * `Site` by hand (tests included) goes on working unchanged with this
511
+ * omitted — `GET /api/scheduled-tasks` then simply does not exist, rather
512
+ * than 500ing on a registry nobody constructed. `cogenta serve` always
513
+ * passes one (L20 audit §1 point 6: before this it never did, so the
514
+ * screen's own two requests 404'd against no route at all).
515
+ */
516
+ readonly scheduledTasksRouter?: ScheduledTasksRouter;
517
+ readonly maintenance: MaintenanceStore;
518
+ readonly errorLog: ErrorLog;
519
+ readonly siteName: string;
520
+ /**
521
+ * The "Exploitation" > Observability screen (fiche L22 task 5). Optional
522
+ * for the same pragmatic reason `scheduledTasksRouter` is — a caller that
523
+ * builds a bare `Site` by hand goes on working unchanged, and
524
+ * `GET /api/observability` simply does not exist rather than 500ing on a
525
+ * runtime nobody constructed. `cogenta serve` always passes one.
526
+ */
527
+ readonly observabilityRouter?: ObservabilityRouter;
528
+ }
121
529
  /**
122
530
  * Builds the Node request handler from an already-assembled site.
123
531
  *
@@ -127,7 +535,7 @@ interface Site {
127
535
  * to that shape and back, so a serverless adapter later is the same kind of
128
536
  * thin layer rather than a second implementation of any of it.
129
537
  */
130
- export declare function createRequestListener(site: Site, logger: Logger): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
538
+ export declare function createRequestListener(site: Site, logger: Logger, extras?: RuntimeExtras): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
131
539
  export interface ServeOptions {
132
540
  readonly cwd?: string;
133
541
  readonly env?: Record<string, string | undefined>;
@@ -162,6 +570,81 @@ export interface ServeOptions {
162
570
  * only the write is held to the decision.
163
571
  */
164
572
  readonly development?: boolean;
573
+ /**
574
+ * Overrides `SCHEDULED_PUBLISH_TICK_MS`. Not a CLI flag — an operator has
575
+ * no reason to change a 60-second cadence, and this exists so a test can
576
+ * prove the interval really drains the queue without waiting a minute for
577
+ * it.
578
+ */
579
+ readonly scheduledPublishTickMs?: number;
580
+ /** Overrides `NOT_FOUND_PURGE_TICK_MS`, for the same reason `scheduledPublishTickMs` exists. */
581
+ readonly notFoundPurgeTickMs?: number;
582
+ /**
583
+ * Overrides `AUDIT_INTEGRITY_TICK_MS` (fiche 21 task 3). Not a CLI flag,
584
+ * same reason as `scheduledPublishTickMs` — exists so a test can prove the
585
+ * scheduled check really runs without waiting a day for it.
586
+ */
587
+ readonly auditIntegrityTickMs?: number;
588
+ /**
589
+ * Overrides `AUDIT_PRUNE_TICK_MS` (T09-01). Not a CLI flag, same reasoning
590
+ * as `auditIntegrityTickMs` — exists so a test can prove the sweep really
591
+ * runs without waiting a day for it.
592
+ */
593
+ readonly auditPruneTickMs?: number;
594
+ /**
595
+ * Overrides `TRASH_PURGE_TICK_MS`. Not a CLI flag, same reasoning as
596
+ * `scheduledPublishTickMs`: no operator has a reason to change a daily
597
+ * cadence, this exists so a test can prove the sweep really runs without
598
+ * waiting a day for it.
599
+ */
600
+ readonly trashPurgeTickMs?: number;
601
+ /** Test seam for the forms GDPR retention sweep (fiche 16 task 7) — production always uses `FORMS_PURGE_TICK_MS`. */
602
+ readonly formsPurgeTickMs?: number;
603
+ /** Overrides `CHANNEL_NOTIFICATION_TICK_MS`, for the same reason as `scheduledPublishTickMs`. */
604
+ readonly channelNotificationTickMs?: number;
605
+ /** Test seam for the commerce order-email retry queue (fiche 52 task 2) — production always uses `COMMERCE_EMAIL_TICK_MS`. */
606
+ readonly commerceEmailTickMs?: number;
607
+ /**
608
+ * Test seam for the subscription billing/dunning/renewal-notice sweep
609
+ * (fiche 53 tasks 3 and 5, audit T-COM-01) — production always uses
610
+ * `COMMERCE_BILLING_TICK_MS`.
611
+ */
612
+ readonly commerceBillingTickMs?: number;
613
+ /**
614
+ * Test seam for the abandoned-cart sweep (audit A1-commerce P2) —
615
+ * production always uses `CART_ABANDON_TICK_MS`.
616
+ */
617
+ readonly cartAbandonTickMs?: number;
618
+ /**
619
+ * How stale an open cart must be before the sweep marks it abandoned.
620
+ * Not a CLI flag: a shop that wants a different definition of "gave up"
621
+ * sets it in code, the same way every other tick override here is a test
622
+ * seam first — production always uses `CartStore`'s own
623
+ * `DEFAULT_CART_ABANDON_MS` (24h) unless this is set.
624
+ */
625
+ readonly cartAbandonAfterMs?: number;
626
+ /**
627
+ * Overrides `ANALYTICS_PURGE_TICK_MS`. Not a CLI flag, same reason as
628
+ * `scheduledPublishTickMs`: a test proves the retention sweep really runs
629
+ * without waiting a day for it.
630
+ */
631
+ readonly analyticsPurgeTickMs?: number;
632
+ /**
633
+ * Overrides `OBSERVABILITY_SETTINGS_TICK_MS` (fiche L22 task 5). Not a CLI
634
+ * flag, same reason as `scheduledPublishTickMs`: a test proves a settings
635
+ * change really takes effect without waiting out the real interval.
636
+ */
637
+ readonly observabilitySettingsTickMs?: number;
638
+ /**
639
+ * Overrides `UPDATES_AUTO_CHECK_TICK_MS` (L22 task 9). Not a CLI flag,
640
+ * same reasoning as `scheduledPublishTickMs`: a test proves the
641
+ * auto-update policy is really honoured without waiting a day for it.
642
+ */
643
+ readonly updatesAutoCheckTickMs?: number;
644
+ /** Test seam: replaces the real `fetch` to registry.npmjs.org with a scripted one — every update test in `packages/cli/test/` uses this rather than hitting the real network. */
645
+ readonly updatesFetchImpl?: typeof fetch;
646
+ /** Test seam: replaces the real `npm install` child process — no test in this repository actually installs an npm package. */
647
+ readonly updatesRunInstall?: RunPackageInstall;
165
648
  }
166
649
  /**
167
650
  * Runs until `options.signal` aborts. Returns 0 on a clean shutdown, 1 if
@@ -1 +1 @@
1
- {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/commands/serve.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,WAAW,CAAA;AAanF,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EAEpB,KAAK,WAAW,EAChB,KAAK,UAAU,EAaf,oBAAoB,EAiDpB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,YAAY,EAGjB,KAAK,iBAAiB,EACtB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAEhB,KAAK,UAAU,EACf,KAAK,cAAc,EACnB,KAAK,2BAA2B,EAChC,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EAEpB,KAAK,cAAc,EAGnB,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,oBAAoB,EAGzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,cAAc,EAEnB,KAAK,kBAAkB,EAEvB,KAAK,cAAc,EACnB,KAAK,WAAW,EAEhB,KAAK,WAAW,EAEhB,KAAK,YAAY,EACjB,KAAK,WAAW,EAEjB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAiB,KAAK,SAAS,EAAmC,MAAM,eAAe,CAAA;AAY9F,OAAO,EACL,KAAK,oBAAoB,EACzB,KAAK,YAAY,EAEjB,KAAK,cAAc,EAQpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACL,KAAK,mBAAmB,EAqBzB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAcL,KAAK,cAAc,EACnB,KAAK,QAAQ,EAEb,KAAK,YAAY,EAGjB,KAAK,MAAM,EAIX,KAAK,UAAU,EAEf,KAAK,eAAe,EAEpB,KAAK,aAAa,EAEnB,MAAM,eAAe,CAAA;AACtB,OAAO,EAAsC,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAkCnF,OAAO,EAKL,KAAK,oBAAoB,EA6BzB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EAErB,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAClB,KAAK,mBAAmB,EAKxB,KAAK,cAAc,EAInB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EAOxB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EASL,KAAK,UAAU,EAChB,MAAM,cAAc,CAAA;AAGrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAE5C,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,cAAc,CAAA;AAElD,OAAO,EASL,KAAK,iBAAiB,EAIvB,MAAM,oBAAoB,CAAA;AAe3B,OAAO,EAAiB,KAAK,cAAc,EAAE,MAAM,oBAAoB,CAAA;AAIvE,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AAUxF,OAAO,EAAyB,KAAK,qBAAqB,EAAE,MAAM,wBAAwB,CAAA;AAG1F,OAAO,EAaL,KAAK,iBAAiB,EAEvB,MAAM,mBAAmB,CAAA;AA+B1B;;;;;;;;GAQG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAE1C;AAED,6FAA6F;AAC7F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;CACnD;AAED;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAgDjF;AAED;;;;;;;;;GASG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAWrF;AAuCD;;;;;;GAMG;AACH,UAAU,iBAAiB;IACzB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,aAAa,EAAE,SAAS;QAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;CAC5F;AAED,UAAU,IAAI;IACZ,QAAQ,CAAC,EAAE,EAAE,cAAc,CAAA;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,8IAA8I;IAC9I,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,0FAA0F;IAC1F,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IACjD;;;;;;;;OAQG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAClD,+HAA+H;IAC/H,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,uMAAuM;IACvM,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,2MAA2M;IAC3M,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B;;;;;OAKG;IACH,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,mBAAmB,CAAA;IAC5C;;;;OAIG;IACH,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,+JAA+J;IAC/J,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAA;IACpC,QAAQ,CAAC,qBAAqB,EAAE,oBAAoB,CAAA;IACpD,qOAAqO;IACrO,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,oBAAoB,CAAA;IAC/C;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,mBAAmB,CAAA;IACjD;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,EAAE,oBAAoB,CAAA;IACnD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAA;IACpC,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC,+JAA+J;IAC/J,QAAQ,CAAC,iBAAiB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACjD,+KAA+K;IAC/K,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAA;IAC/C;;;;OAIG;IACH,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C;;;;;;OAMG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAA;IAC3C;;;;;OAKG;IACH,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAA;IAC7C,0GAA0G;IAC1G,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,4JAA4J;IAC5J,QAAQ,CAAC,2BAA2B,EAAE,2BAA2B,CAAA;IACjE,4HAA4H;IAC5H,QAAQ,CAAC,cAAc,EAAE,kBAAkB,GAAG,IAAI,CAAA;IAClD,sGAAsG;IACtG,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,wFAAwF;IACxF,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC;;;;;;OAMG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,eAAe,CAAA;IACvC;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAA;IACpC,kMAAkM;IAClM,QAAQ,CAAC,eAAe,CAAC,EAAE,eAAe,CAAA;IAC1C,uIAAuI;IACvI,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;IAC9C,8JAA8J;IAC9J,QAAQ,CAAC,qBAAqB,CAAC,EAAE,qBAAqB,CAAA;IACtD;;;;;;;OAOG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IACpD;;;;;;OAMG;IACH,QAAQ,CAAC,cAAc,CAAC,EAAE,cAAc,CAAA;IACxC;;;;;;;OAOG;IACH,QAAQ,CAAC,aAAa,EAAE,YAAY,CAAA;IACpC;;;;;OAKG;IACH,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAA;IACzC;;;;;;;OAOG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAA;IAC7B,iGAAiG;IACjG,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC,yKAAyK;IACzK,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IAC9C;;;;;OAKG;IACH,QAAQ,CAAC,kBAAkB,EACvB,CAAC,MAAM,OAAO,CAAC;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KACxB,CAAC,CAAC,GACH,IAAI,CAAA;IACR;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,yBAAyB,EAAE,MAAM,OAAO,CAAC;QAChD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;QACvB,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;QAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAA;QACjC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAA;KACpC,CAAC,CAAA;IACF;;;;;;OAMG;IACH,QAAQ,CAAC,eAAe,EAAE,CAAC,OAAO,CAAC,EAAE;QACnC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAC9B,KAAK,OAAO,CAAC;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IAC7C,gMAAgM;IAChM,QAAQ,CAAC,UAAU,EAAE,UAAU,CAAA;IAC/B,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;IAC/B,iFAAiF;IACjF,QAAQ,CAAC,MAAM,EAAE,mBAAmB,GAAG,IAAI,CAAA;IAC3C,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAA;IACrC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAA;IACzD;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAA;IACrC,qJAAqJ;IACrJ,QAAQ,CAAC,cAAc,EAAE,cAAc,CAAA;IACvC;;;;;;OAMG;IACH,QAAQ,CAAC,SAAS,EAAE,aAAa,CAAA;IACjC,QAAQ,CAAC,WAAW,EAAE,SAAS,oBAAoB,EAAE,CAAA;IACrD,QAAQ,CAAC,UAAU,EAAE,SAAS,kBAAkB,EAAE,CAAA;IAClD,QAAQ,CAAC,IAAI,EAAE;QACb,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;QACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;QACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;QACnC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;QAC9B,2EAA2E;QAC3E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;KAC9B,CAAA;IACD,0VAA0V;IAC1V,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B;;;;;;;;OAQG;IACH,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACpD;;;;OAIG;IACH,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE;QACnC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;QACzC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAChC,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC5B,2GAA2G;IAC3G,QAAQ,CAAC,WAAW,CAAC,EAAE,WAAW,CAAA;IAClC;;;;;;;;;;;;;;;;;OAiBG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAC5B,SAAS,EAAE,MAAM,EACjB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IAC3B;;;;;;;;OAQG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;IACnD;;;;;;;OAOG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACxD;;;;OAIG;IACH,QAAQ,CAAC,kBAAkB,EAAE,CAC3B,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,KACb,OAAO,CAAC,qBAAqB,GAAG,IAAI,CAAC,CAAA;IAC1C,qHAAqH;IACrH,QAAQ,CAAC,eAAe,EAAE,MAAM,OAAO,CAAC,SAAS,UAAU,EAAE,CAAC,CAAA;IAC9D;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,EAAE,CAC5B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,KACX,OAAO,CAAC;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC,CAAA;IAC9E,wFAAwF;IACxF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAA;IACjC,qIAAqI;IACrI,QAAQ,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC;QAC7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAA;QAC/B,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAA;KAC/B,CAAC,CAAA;IACF;;;;;OAKG;IACH,QAAQ,CAAC,uBAAuB,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAA;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,mBAAmB,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IACjD;;;;;;;;;OASG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACnE;;;;;;;OAOG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,OAAO,CAAC,iBAAiB,CAAC,CAAA;IACzD;;;;;OAKG;IACH,QAAQ,CAAC,wBAAwB,EAAE,MAAM,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAA;IACnE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;CACzB;AAy8FD;;;;;;;GAOG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,YAAY,EAAE,YAAY,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAA;IACjC;;;;;;;;OAQG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,oBAAoB,CAAA;IACpD,QAAQ,CAAC,WAAW,EAAE,gBAAgB,CAAA;IACtC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAA;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,mBAAmB,CAAC,EAAE,mBAAmB,CAAA;CACnD;AAED;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CACnC,IAAI,EAAE,IAAI,EACV,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,aAAa,GACrB,CAAC,GAAG,EAAE,eAAe,EAAE,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,IAAI,CAAC,CA8mD9D;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAA;IACjD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAA;IACtB,wFAAwF;IACxF,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,KAAK,IAAI,CAAA;IAC/D,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;IAC7B;;;;;OAKG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B;;;;;;;;;;OAUG;IACH,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAA;IAC9B;;;;;OAKG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,gGAAgG;IAChG,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC;;;;OAIG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,qHAAqH;IACrH,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAClC,iGAAiG;IACjG,QAAQ,CAAC,yBAAyB,CAAC,EAAE,MAAM,CAAA;IAC3C,8HAA8H;IAC9H,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,CAAA;IACrC;;;;OAIG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAA;IACvC;;;OAGG;IACH,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IACnC;;;;;;OAMG;IACH,QAAQ,CAAC,kBAAkB,CAAC,EAAE,MAAM,CAAA;IACpC;;;;OAIG;IACH,QAAQ,CAAC,oBAAoB,CAAC,EAAE,MAAM,CAAA;IACtC;;;;OAIG;IACH,QAAQ,CAAC,2BAA2B,CAAC,EAAE,MAAM,CAAA;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAA;IACxC,iLAAiL;IACjL,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,KAAK,CAAA;IACxC,8HAA8H;IAC9H,QAAQ,CAAC,iBAAiB,CAAC,EAAE,iBAAiB,CAAA;CAC/C;AAwJD;;;;GAIG;AACH,wBAAsB,QAAQ,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAm2BrE"}