@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.
- package/CHANGELOG.md +3856 -0
- package/dist/admin-assets/assets/index-CxZHGwVA.css +1 -0
- package/dist/admin-assets/assets/index-fYXyHpn8.js +1090 -0
- package/dist/admin-assets/assets/vips-_dmTUXFO.wasm +0 -0
- package/dist/admin-assets/assets/vips-es6-DrQTTS8Q.js +7 -0
- package/dist/admin-assets/branding/logo-cogenta-dark.png +0 -0
- package/dist/admin-assets/branding/logo-cogenta-icon.png +0 -0
- package/dist/admin-assets/branding/logo-cogenta-light.png +0 -0
- package/dist/admin-assets/branding/logo-cogenta-small.png +0 -0
- package/dist/admin-assets/branding/logo-cogenta-transparent.png +0 -0
- package/dist/admin-assets/branding/logo-cogenta.png +0 -0
- package/dist/admin-assets/favicon.png +0 -0
- package/dist/admin-assets/fonts/ibm-plex-mono-400.woff2 +0 -0
- package/dist/admin-assets/fonts/ibm-plex-mono-500.woff2 +0 -0
- package/dist/admin-assets/fonts/ibm-plex-mono-600.woff2 +0 -0
- package/dist/admin-assets/fonts/ibm-plex-mono-700.woff2 +0 -0
- package/dist/admin-assets/fonts/ibm-plex-sans-var.woff2 +0 -0
- package/dist/admin-assets/fonts/jetbrains-mono-var.woff2 +0 -0
- package/dist/admin-assets/fonts/space-grotesk-var.woff2 +0 -0
- package/dist/admin-assets/index.html +3 -2
- package/dist/bin.js +6 -0
- package/dist/bin.js.map +1 -1
- package/dist/commands/admin-assets.d.ts +1 -0
- package/dist/commands/admin-assets.d.ts.map +1 -1
- package/dist/commands/admin-assets.js +19 -1
- package/dist/commands/admin-assets.js.map +1 -1
- package/dist/commands/agent-runtime.d.ts +151 -0
- package/dist/commands/agent-runtime.d.ts.map +1 -0
- package/dist/commands/agent-runtime.js +519 -0
- package/dist/commands/agent-runtime.js.map +1 -0
- package/dist/commands/assistant.d.ts +89 -3
- package/dist/commands/assistant.d.ts.map +1 -1
- package/dist/commands/assistant.js +206 -39
- package/dist/commands/assistant.js.map +1 -1
- package/dist/commands/audit-integrity-alert.d.ts +23 -0
- package/dist/commands/audit-integrity-alert.d.ts.map +1 -0
- package/dist/commands/audit-integrity-alert.js +33 -0
- package/dist/commands/audit-integrity-alert.js.map +1 -0
- package/dist/commands/backup.d.ts +78 -0
- package/dist/commands/backup.d.ts.map +1 -0
- package/dist/commands/backup.js +238 -0
- package/dist/commands/backup.js.map +1 -0
- package/dist/commands/channels.d.ts +47 -0
- package/dist/commands/channels.d.ts.map +1 -0
- package/dist/commands/channels.js +277 -0
- package/dist/commands/channels.js.map +1 -0
- package/dist/commands/default-logo.d.ts +27 -0
- package/dist/commands/default-logo.d.ts.map +1 -0
- package/dist/commands/default-logo.js +30 -0
- package/dist/commands/default-logo.js.map +1 -0
- package/dist/commands/doctor.d.ts +5 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +74 -2
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/export.d.ts +22 -0
- package/dist/commands/export.d.ts.map +1 -0
- package/dist/commands/export.js +182 -0
- package/dist/commands/export.js.map +1 -0
- package/dist/commands/forms-page.d.ts +75 -0
- package/dist/commands/forms-page.d.ts.map +1 -0
- package/dist/commands/forms-page.js +191 -0
- package/dist/commands/forms-page.js.map +1 -0
- package/dist/commands/import.d.ts.map +1 -1
- package/dist/commands/import.js +13 -1
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/mcp.d.ts +35 -0
- package/dist/commands/mcp.d.ts.map +1 -0
- package/dist/commands/mcp.js +277 -0
- package/dist/commands/mcp.js.map +1 -0
- package/dist/commands/roles.d.ts +22 -0
- package/dist/commands/roles.d.ts.map +1 -0
- package/dist/commands/roles.js +79 -0
- package/dist/commands/roles.js.map +1 -0
- package/dist/commands/search-page.d.ts +15 -0
- package/dist/commands/search-page.d.ts.map +1 -1
- package/dist/commands/search-page.js +22 -16
- package/dist/commands/search-page.js.map +1 -1
- package/dist/commands/seo.d.ts +92 -4
- package/dist/commands/seo.d.ts.map +1 -1
- package/dist/commands/seo.js +168 -4
- package/dist/commands/seo.js.map +1 -1
- package/dist/commands/serve.d.ts +489 -6
- package/dist/commands/serve.d.ts.map +1 -1
- package/dist/commands/serve.js +3883 -164
- package/dist/commands/serve.js.map +1 -1
- package/dist/commands/site-plan.d.ts +27 -1
- package/dist/commands/site-plan.d.ts.map +1 -1
- package/dist/commands/site-plan.js +71 -4
- package/dist/commands/site-plan.js.map +1 -1
- package/dist/commands/term-archive-page.d.ts +94 -0
- package/dist/commands/term-archive-page.d.ts.map +1 -0
- package/dist/commands/term-archive-page.js +195 -0
- package/dist/commands/term-archive-page.js.map +1 -0
- package/dist/commands/theme-css.d.ts +22 -7
- package/dist/commands/theme-css.d.ts.map +1 -1
- package/dist/commands/theme-css.js +33 -8
- package/dist/commands/theme-css.js.map +1 -1
- package/dist/commands/theme-registry.d.ts +94 -0
- package/dist/commands/theme-registry.d.ts.map +1 -0
- package/dist/commands/theme-registry.js +130 -0
- package/dist/commands/theme-registry.js.map +1 -0
- package/dist/commands/theme-render.d.ts +360 -2
- package/dist/commands/theme-render.d.ts.map +1 -1
- package/dist/commands/theme-render.js +984 -29
- package/dist/commands/theme-render.js.map +1 -1
- package/dist/commands/theme-wiring.d.ts +107 -0
- package/dist/commands/theme-wiring.d.ts.map +1 -0
- package/dist/commands/theme-wiring.js +295 -0
- package/dist/commands/theme-wiring.js.map +1 -0
- package/dist/commands/tools.d.ts +71 -0
- package/dist/commands/tools.d.ts.map +1 -0
- package/dist/commands/tools.js +330 -0
- package/dist/commands/tools.js.map +1 -0
- package/dist/commands/update.d.ts +25 -0
- package/dist/commands/update.d.ts.map +1 -0
- package/dist/commands/update.js +193 -0
- package/dist/commands/update.js.map +1 -0
- package/dist/commands/users.d.ts.map +1 -1
- package/dist/commands/users.js +6 -36
- package/dist/commands/users.js.map +1 -1
- package/dist/index.d.ts +15 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +146 -4
- package/dist/index.js.map +1 -1
- package/dist/invite-mail.d.ts +39 -0
- package/dist/invite-mail.d.ts.map +1 -0
- package/dist/invite-mail.js +39 -0
- package/dist/invite-mail.js.map +1 -0
- package/dist/reset-mail.d.ts +39 -0
- package/dist/reset-mail.d.ts.map +1 -0
- package/dist/reset-mail.js +45 -0
- package/dist/reset-mail.js.map +1 -0
- package/dist/update/apply.d.ts +54 -0
- package/dist/update/apply.d.ts.map +1 -0
- package/dist/update/apply.js +77 -0
- package/dist/update/apply.js.map +1 -0
- package/dist/update/changelog-risk.d.ts +20 -0
- package/dist/update/changelog-risk.d.ts.map +1 -0
- package/dist/update/changelog-risk.js +55 -0
- package/dist/update/changelog-risk.js.map +1 -0
- package/dist/update/check.d.ts +60 -0
- package/dist/update/check.d.ts.map +1 -0
- package/dist/update/check.js +56 -0
- package/dist/update/check.js.map +1 -0
- package/dist/update/contract-risk.d.ts +55 -0
- package/dist/update/contract-risk.d.ts.map +1 -0
- package/dist/update/contract-risk.js +75 -0
- package/dist/update/contract-risk.js.map +1 -0
- package/dist/update/history.d.ts +30 -0
- package/dist/update/history.d.ts.map +1 -0
- package/dist/update/history.js +38 -0
- package/dist/update/history.js.map +1 -0
- package/dist/update/index.d.ts +28 -0
- package/dist/update/index.d.ts.map +1 -0
- package/dist/update/index.js +11 -0
- package/dist/update/index.js.map +1 -0
- package/dist/update/list-restore-points.d.ts +20 -0
- package/dist/update/list-restore-points.d.ts.map +1 -0
- package/dist/update/list-restore-points.js +35 -0
- package/dist/update/list-restore-points.js.map +1 -0
- package/dist/update/npm-registry.d.ts +11 -0
- package/dist/update/npm-registry.d.ts.map +1 -0
- package/dist/update/npm-registry.js +74 -0
- package/dist/update/npm-registry.js.map +1 -0
- package/dist/update/restore-point.d.ts +26 -0
- package/dist/update/restore-point.d.ts.map +1 -0
- package/dist/update/restore-point.js +23 -0
- package/dist/update/restore-point.js.map +1 -0
- package/dist/update/tar.d.ts +27 -0
- package/dist/update/tar.d.ts.map +1 -0
- package/dist/update/tar.js +56 -0
- package/dist/update/tar.js.map +1 -0
- package/dist/update/version-compare.d.ts +17 -0
- package/dist/update/version-compare.d.ts.map +1 -0
- package/dist/update/version-compare.js +42 -0
- package/dist/update/version-compare.js.map +1 -0
- package/dist/version.d.ts +13 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +18 -0
- package/dist/version.js.map +1 -0
- package/package.json +33 -13
- package/dist/admin-assets/assets/index-Buwdj1V2.js +0 -71
- package/dist/admin-assets/assets/index-Csef0SiA.css +0 -1
package/dist/commands/serve.d.ts
CHANGED
|
@@ -1,12 +1,20 @@
|
|
|
1
1
|
import { type IncomingMessage, type ServerResponse } from 'node:http';
|
|
2
|
-
import { type
|
|
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
|
|
5
|
-
import { type
|
|
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
|
-
/**
|
|
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"}
|