@cogenta/cli 0.4.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 (171) 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/jetbrains-mono-var.woff2 +0 -0
  14. package/dist/admin-assets/fonts/space-grotesk-var.woff2 +0 -0
  15. package/dist/admin-assets/index.html +3 -2
  16. package/dist/bin.js +6 -0
  17. package/dist/bin.js.map +1 -1
  18. package/dist/commands/admin-assets.d.ts +1 -0
  19. package/dist/commands/admin-assets.d.ts.map +1 -1
  20. package/dist/commands/admin-assets.js +19 -1
  21. package/dist/commands/admin-assets.js.map +1 -1
  22. package/dist/commands/agent-runtime.d.ts +151 -0
  23. package/dist/commands/agent-runtime.d.ts.map +1 -0
  24. package/dist/commands/agent-runtime.js +519 -0
  25. package/dist/commands/agent-runtime.js.map +1 -0
  26. package/dist/commands/assistant.d.ts +89 -3
  27. package/dist/commands/assistant.d.ts.map +1 -1
  28. package/dist/commands/assistant.js +206 -39
  29. package/dist/commands/assistant.js.map +1 -1
  30. package/dist/commands/audit-integrity-alert.d.ts +23 -0
  31. package/dist/commands/audit-integrity-alert.d.ts.map +1 -0
  32. package/dist/commands/audit-integrity-alert.js +33 -0
  33. package/dist/commands/audit-integrity-alert.js.map +1 -0
  34. package/dist/commands/backup.d.ts +78 -0
  35. package/dist/commands/backup.d.ts.map +1 -0
  36. package/dist/commands/backup.js +238 -0
  37. package/dist/commands/backup.js.map +1 -0
  38. package/dist/commands/channels.d.ts +47 -0
  39. package/dist/commands/channels.d.ts.map +1 -0
  40. package/dist/commands/channels.js +277 -0
  41. package/dist/commands/channels.js.map +1 -0
  42. package/dist/commands/default-logo.d.ts +27 -0
  43. package/dist/commands/default-logo.d.ts.map +1 -0
  44. package/dist/commands/default-logo.js +30 -0
  45. package/dist/commands/default-logo.js.map +1 -0
  46. package/dist/commands/doctor.d.ts +5 -1
  47. package/dist/commands/doctor.d.ts.map +1 -1
  48. package/dist/commands/doctor.js +74 -2
  49. package/dist/commands/doctor.js.map +1 -1
  50. package/dist/commands/export.d.ts +22 -0
  51. package/dist/commands/export.d.ts.map +1 -0
  52. package/dist/commands/export.js +182 -0
  53. package/dist/commands/export.js.map +1 -0
  54. package/dist/commands/forms-page.d.ts +75 -0
  55. package/dist/commands/forms-page.d.ts.map +1 -0
  56. package/dist/commands/forms-page.js +191 -0
  57. package/dist/commands/forms-page.js.map +1 -0
  58. package/dist/commands/import.d.ts.map +1 -1
  59. package/dist/commands/import.js +13 -1
  60. package/dist/commands/import.js.map +1 -1
  61. package/dist/commands/mcp.d.ts +35 -0
  62. package/dist/commands/mcp.d.ts.map +1 -0
  63. package/dist/commands/mcp.js +277 -0
  64. package/dist/commands/mcp.js.map +1 -0
  65. package/dist/commands/roles.d.ts +22 -0
  66. package/dist/commands/roles.d.ts.map +1 -0
  67. package/dist/commands/roles.js +79 -0
  68. package/dist/commands/roles.js.map +1 -0
  69. package/dist/commands/search-page.d.ts +15 -0
  70. package/dist/commands/search-page.d.ts.map +1 -1
  71. package/dist/commands/search-page.js +22 -16
  72. package/dist/commands/search-page.js.map +1 -1
  73. package/dist/commands/seo.d.ts +92 -4
  74. package/dist/commands/seo.d.ts.map +1 -1
  75. package/dist/commands/seo.js +168 -4
  76. package/dist/commands/seo.js.map +1 -1
  77. package/dist/commands/serve.d.ts +439 -7
  78. package/dist/commands/serve.d.ts.map +1 -1
  79. package/dist/commands/serve.js +3498 -181
  80. package/dist/commands/serve.js.map +1 -1
  81. package/dist/commands/site-plan.d.ts +27 -1
  82. package/dist/commands/site-plan.d.ts.map +1 -1
  83. package/dist/commands/site-plan.js +71 -4
  84. package/dist/commands/site-plan.js.map +1 -1
  85. package/dist/commands/term-archive-page.d.ts +94 -0
  86. package/dist/commands/term-archive-page.d.ts.map +1 -0
  87. package/dist/commands/term-archive-page.js +195 -0
  88. package/dist/commands/term-archive-page.js.map +1 -0
  89. package/dist/commands/theme-css.d.ts +22 -7
  90. package/dist/commands/theme-css.d.ts.map +1 -1
  91. package/dist/commands/theme-css.js +33 -8
  92. package/dist/commands/theme-css.js.map +1 -1
  93. package/dist/commands/theme-registry.d.ts +94 -0
  94. package/dist/commands/theme-registry.d.ts.map +1 -0
  95. package/dist/commands/theme-registry.js +130 -0
  96. package/dist/commands/theme-registry.js.map +1 -0
  97. package/dist/commands/theme-render.d.ts +330 -9
  98. package/dist/commands/theme-render.d.ts.map +1 -1
  99. package/dist/commands/theme-render.js +932 -66
  100. package/dist/commands/theme-render.js.map +1 -1
  101. package/dist/commands/theme-wiring.d.ts +107 -0
  102. package/dist/commands/theme-wiring.d.ts.map +1 -0
  103. package/dist/commands/theme-wiring.js +295 -0
  104. package/dist/commands/theme-wiring.js.map +1 -0
  105. package/dist/commands/tools.d.ts +71 -0
  106. package/dist/commands/tools.d.ts.map +1 -0
  107. package/dist/commands/tools.js +330 -0
  108. package/dist/commands/tools.js.map +1 -0
  109. package/dist/commands/update.d.ts +25 -0
  110. package/dist/commands/update.d.ts.map +1 -0
  111. package/dist/commands/update.js +193 -0
  112. package/dist/commands/update.js.map +1 -0
  113. package/dist/index.d.ts +15 -0
  114. package/dist/index.d.ts.map +1 -1
  115. package/dist/index.js +146 -4
  116. package/dist/index.js.map +1 -1
  117. package/dist/invite-mail.d.ts +39 -0
  118. package/dist/invite-mail.d.ts.map +1 -0
  119. package/dist/invite-mail.js +39 -0
  120. package/dist/invite-mail.js.map +1 -0
  121. package/dist/update/apply.d.ts +54 -0
  122. package/dist/update/apply.d.ts.map +1 -0
  123. package/dist/update/apply.js +77 -0
  124. package/dist/update/apply.js.map +1 -0
  125. package/dist/update/changelog-risk.d.ts +20 -0
  126. package/dist/update/changelog-risk.d.ts.map +1 -0
  127. package/dist/update/changelog-risk.js +55 -0
  128. package/dist/update/changelog-risk.js.map +1 -0
  129. package/dist/update/check.d.ts +60 -0
  130. package/dist/update/check.d.ts.map +1 -0
  131. package/dist/update/check.js +56 -0
  132. package/dist/update/check.js.map +1 -0
  133. package/dist/update/contract-risk.d.ts +55 -0
  134. package/dist/update/contract-risk.d.ts.map +1 -0
  135. package/dist/update/contract-risk.js +75 -0
  136. package/dist/update/contract-risk.js.map +1 -0
  137. package/dist/update/history.d.ts +30 -0
  138. package/dist/update/history.d.ts.map +1 -0
  139. package/dist/update/history.js +38 -0
  140. package/dist/update/history.js.map +1 -0
  141. package/dist/update/index.d.ts +28 -0
  142. package/dist/update/index.d.ts.map +1 -0
  143. package/dist/update/index.js +11 -0
  144. package/dist/update/index.js.map +1 -0
  145. package/dist/update/list-restore-points.d.ts +20 -0
  146. package/dist/update/list-restore-points.d.ts.map +1 -0
  147. package/dist/update/list-restore-points.js +35 -0
  148. package/dist/update/list-restore-points.js.map +1 -0
  149. package/dist/update/npm-registry.d.ts +11 -0
  150. package/dist/update/npm-registry.d.ts.map +1 -0
  151. package/dist/update/npm-registry.js +74 -0
  152. package/dist/update/npm-registry.js.map +1 -0
  153. package/dist/update/restore-point.d.ts +26 -0
  154. package/dist/update/restore-point.d.ts.map +1 -0
  155. package/dist/update/restore-point.js +23 -0
  156. package/dist/update/restore-point.js.map +1 -0
  157. package/dist/update/tar.d.ts +27 -0
  158. package/dist/update/tar.d.ts.map +1 -0
  159. package/dist/update/tar.js +56 -0
  160. package/dist/update/tar.js.map +1 -0
  161. package/dist/update/version-compare.d.ts +17 -0
  162. package/dist/update/version-compare.d.ts.map +1 -0
  163. package/dist/update/version-compare.js +42 -0
  164. package/dist/update/version-compare.js.map +1 -0
  165. package/dist/version.d.ts +13 -0
  166. package/dist/version.d.ts.map +1 -0
  167. package/dist/version.js +18 -0
  168. package/dist/version.js.map +1 -0
  169. package/package.json +33 -16
  170. package/dist/admin-assets/assets/index-C9a7O_Xs.css +0 -1
  171. package/dist/admin-assets/assets/index-DXvMgWvn.js +0 -74
package/dist/index.js CHANGED
@@ -1,24 +1,38 @@
1
1
  import process from 'node:process';
2
2
  import { parseArgs } from 'node:util';
3
3
  import { createLogger, isCogentaError } from '@cogenta/core';
4
+ import { runBackup, runRestore } from './commands/backup.js';
5
+ import { runChannels } from './commands/channels.js';
4
6
  import { formatDoctorReport, runDoctor } from './commands/doctor.js';
7
+ import { runExport, runImportContent } from './commands/export.js';
5
8
  import { runGenerate } from './commands/generate.js';
6
9
  import { runImport } from './commands/import.js';
7
10
  import { runLinks } from './commands/links.js';
11
+ import { runMcp } from './commands/mcp.js';
8
12
  import { runMigrate } from './commands/migrate.js';
13
+ import { runRoles } from './commands/roles.js';
9
14
  import { runServe } from './commands/serve.js';
10
15
  import { runSkin } from './commands/skin.js';
16
+ import { runUpdate } from './commands/update.js';
11
17
  import { runUsers } from './commands/users.js';
12
18
  import { createOutput, shouldUseColour } from './output.js';
19
+ export { runBackup, runRestore } from './commands/backup.js';
20
+ export { CHANNELS_USAGE, runChannels } from './commands/channels.js';
13
21
  export { formatDoctorReport, runDoctor } from './commands/doctor.js';
22
+ export { runExport, runImportContent } from './commands/export.js';
14
23
  export { runGenerate } from './commands/generate.js';
15
24
  export { runImport } from './commands/import.js';
16
25
  export { runLinks } from './commands/links.js';
26
+ export { runMcp } from './commands/mcp.js';
27
+ export { contentTypeOf, createMediaImageProcessor, selectMediaImageProcessor, VARIANT_FORMAT, variantName, variantWidthsFor, } from './commands/media-images.js';
17
28
  export { loadMigrations, MIGRATIONS_DIRECTORY, runMigrate } from './commands/migrate.js';
29
+ export { runRoles } from './commands/roles.js';
18
30
  export { loadCollections, runServe } from './commands/serve.js';
19
31
  export { runSkin } from './commands/skin.js';
32
+ export { runUpdate } from './commands/update.js';
20
33
  export { runUsers } from './commands/users.js';
21
34
  export { createOutput, shouldUseColour } from './output.js';
35
+ export { getCliVersion } from './version.js';
22
36
  const USAGE = `cogenta — the command line for a Cogenta site
23
37
 
24
38
  Usage
@@ -32,27 +46,48 @@ Commands
32
46
  users create Create a user — the first admin account is made this way
33
47
  users reset-password Send a single-use reset token, or redeem one
34
48
  import wordpress <file.xml> Import a WordPress WXR export, with a report
49
+ export <file.ndjson> Export content — entries, terms, menus, redirects
50
+ import content <file.ndjson> Re-import an export produced by "export"
51
+ backup create Back up every table (content, users, audit…) to a file
52
+ backup list List backups in the backup directory
53
+ restore preview <file.zip> Show what a backup would add or overwrite
54
+ restore apply <file.zip> Restore a backup — CLI only (fiche 26)
35
55
  generate types Write TypeScript declarations for the content schema
36
56
  links check Crawl published content and report links that lead nowhere
37
57
  skin list Show the site's active skin
38
58
  skin validate <tokens.json> Check a token file against contract D
39
59
  skin apply <tokens.json> Validate, then make it the active skin
40
60
  skin generate --description "…" Generate a skin from a description
61
+ roles export Freeze the role permission override table into a file
41
62
  serve, dev Run the content and auth API over HTTP
63
+ mcp Run an MCP server over stdin/stdout, exposing this site's tools
64
+ channels Connect Telegram/Slack/Discord and chat with an agent from there
65
+ update check Compare the installed @cogenta/core / @cogenta/cli against npm
66
+ update apply Apply an available update — always takes a restore point first
67
+ update history Show past checks, applies, and the restore points they took
42
68
  help Show this message
43
69
  version Print the version
44
70
 
45
- Not built yet: build, backup, upgrade, deploy, theme, agent, and
46
- generate schema/generate migrations see CLAUDE.md for why each is
47
- deferred rather than stubbed.
71
+ "update" bumps this site's npm packages only it never runs a migration for
72
+ you (run "cogenta migrate status"/"migrate up" yourself afterward, with the
73
+ same destructive-change confirmation migrate already requires). That is also
74
+ what separates it from the still-unbuilt "cogenta upgrade" L9 envisioned
75
+ ("mise à jour avec migrations et vérification" combined) — not built here,
76
+ along with build, deploy, theme, agent, and generate schema/generate
77
+ migrations — see CLAUDE.md for why each is deferred rather than stubbed.
48
78
 
49
79
  Options
50
80
  --cwd <path> Run as if from this directory
51
81
  --no-color Never colour the output (NO_COLOR is honoured too)
52
82
  --verbose Send structured driver logs to stderr
53
- --out <path> generate types: where to write the declarations
83
+ --out <path> generate types: where to write the declarations;
84
+ roles export: where to write the file (default cogenta.role-permissions.json)
54
85
  --description <text> skin generate: free text describing the site
55
86
  --external links check: also follow links that leave the site
87
+ --collections <a,b,c> export: only these collections (default: all)
88
+ --dir <path> backup / update: where to write/read backups (default .cogenta/backups)
89
+ --passphrase <text> backup create / restore: encrypt or decrypt the backup
90
+ --confirm-breaking update apply: proceed even though a contract-risk warning was found
56
91
 
57
92
  Migration options
58
93
  --to <id> Stop at this migration, inclusive
@@ -71,6 +106,11 @@ User options
71
106
  Serve options
72
107
  --port <n> Port to listen on (default 4000)
73
108
  --host <host> Host to bind to (default 127.0.0.1)
109
+
110
+ MCP options
111
+ --email <email> mcp: run as this real user (looked up in the user store)
112
+ --role <role,role> mcp: run as a synthetic actor with these roles (testing only)
113
+ --api-key <key> mcp: run as the actor a "cogenta_sk_…" API key was granted
74
114
  `;
75
115
  /**
76
116
  * Runs one command and returns its exit code.
@@ -101,6 +141,8 @@ export async function run(options) {
101
141
  'backup-verified': { type: 'boolean' },
102
142
  email: { type: 'string' },
103
143
  roles: { type: 'string' },
144
+ role: { type: 'string' },
145
+ 'api-key': { type: 'string' },
104
146
  admin: { type: 'boolean' },
105
147
  token: { type: 'string' },
106
148
  password: { type: 'string' },
@@ -110,6 +152,10 @@ export async function run(options) {
110
152
  out: { type: 'string' },
111
153
  description: { type: 'string' },
112
154
  external: { type: 'boolean' },
155
+ collections: { type: 'string' },
156
+ dir: { type: 'string' },
157
+ passphrase: { type: 'string' },
158
+ 'confirm-breaking': { type: 'boolean' },
113
159
  },
114
160
  });
115
161
  }
@@ -173,6 +219,16 @@ export async function run(options) {
173
219
  ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
174
220
  });
175
221
  }
222
+ if (command === 'import' && parsed.positionals[1] === 'content') {
223
+ return runImportContent({
224
+ file: parsed.positionals[2],
225
+ out,
226
+ stderr,
227
+ env,
228
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
229
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
230
+ });
231
+ }
176
232
  if (command === 'import') {
177
233
  return runImport({
178
234
  subcommand: parsed.positionals[1],
@@ -184,6 +240,59 @@ export async function run(options) {
184
240
  ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
185
241
  });
186
242
  }
243
+ if (command === 'export') {
244
+ return runExport({
245
+ file: parsed.positionals[1],
246
+ out,
247
+ stderr,
248
+ env,
249
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
250
+ ...(typeof parsed.values.collections === 'string'
251
+ ? { collections: parsed.values.collections.split(',').map((name) => name.trim()) }
252
+ : {}),
253
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
254
+ });
255
+ }
256
+ if (command === 'backup') {
257
+ return runBackup({
258
+ subcommand: parsed.positionals[1],
259
+ out,
260
+ stderr,
261
+ env,
262
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
263
+ ...(typeof parsed.values.dir === 'string' ? { dir: parsed.values.dir } : {}),
264
+ ...(typeof parsed.values.passphrase === 'string'
265
+ ? { passphrase: parsed.values.passphrase }
266
+ : {}),
267
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
268
+ });
269
+ }
270
+ if (command === 'restore') {
271
+ return runRestore({
272
+ subcommand: parsed.positionals[1],
273
+ file: parsed.positionals[2],
274
+ out,
275
+ stderr,
276
+ env,
277
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
278
+ ...(typeof parsed.values.passphrase === 'string'
279
+ ? { passphrase: parsed.values.passphrase }
280
+ : {}),
281
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
282
+ });
283
+ }
284
+ if (command === 'update') {
285
+ return runUpdate({
286
+ subcommand: parsed.positionals[1],
287
+ out,
288
+ stderr,
289
+ env,
290
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
291
+ ...(typeof parsed.values.dir === 'string' ? { dir: parsed.values.dir } : {}),
292
+ ...(parsed.values['confirm-breaking'] === true ? { confirmBreaking: true } : {}),
293
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
294
+ });
295
+ }
187
296
  if (command === 'generate') {
188
297
  return runGenerate({
189
298
  subcommand: parsed.positionals[1],
@@ -220,6 +329,17 @@ export async function run(options) {
220
329
  ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
221
330
  });
222
331
  }
332
+ if (command === 'roles') {
333
+ return runRoles({
334
+ subcommand: parsed.positionals[1],
335
+ out,
336
+ stderr,
337
+ env,
338
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
339
+ ...(typeof parsed.values.out === 'string' ? { file: parsed.values.out } : {}),
340
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
341
+ });
342
+ }
223
343
  if (command === 'serve' || command === 'dev') {
224
344
  let port;
225
345
  if (typeof parsed.values.port === 'string') {
@@ -244,6 +364,28 @@ export async function run(options) {
244
364
  ...(options.onListening === undefined ? {} : { onListening: options.onListening }),
245
365
  });
246
366
  }
367
+ if (command === 'mcp') {
368
+ return runMcp({
369
+ out,
370
+ stderr,
371
+ env,
372
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
373
+ ...(typeof parsed.values.email === 'string' ? { email: parsed.values.email } : {}),
374
+ ...(typeof parsed.values.role === 'string' ? { role: parsed.values.role } : {}),
375
+ ...(typeof parsed.values['api-key'] === 'string' ? { apiKey: parsed.values['api-key'] } : {}),
376
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
377
+ });
378
+ }
379
+ if (command === 'channels') {
380
+ return runChannels({
381
+ out,
382
+ stderr,
383
+ env,
384
+ ...(typeof parsed.values.cwd === 'string' ? { cwd: parsed.values.cwd } : {}),
385
+ ...(verboseLogger === undefined ? {} : { logger: verboseLogger }),
386
+ ...(options.signal === undefined ? {} : { signal: options.signal }),
387
+ });
388
+ }
247
389
  if (command !== 'doctor') {
248
390
  stderr(`Unknown command "${command}".\n\n${USAGE}`);
249
391
  return 2;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The one place an account invitation (fiche 17 task 1) becomes an email —
3
+ * `commands/serve.ts`'s `createUsersRouter` wiring, on both the initial
4
+ * `POST /api/users` (`invite: true`) and the resend route.
5
+ *
6
+ * Sibling of `reset-mail.ts`, deliberately not merged into it: the wording is
7
+ * different enough (a role, not a security warning; a "set your password"
8
+ * link, not a "reset it" one) that folding both into one function would need
9
+ * a branch parameter standing in for what is really two different mails
10
+ * sharing one transport.
11
+ */
12
+ export interface InviteMailSite {
13
+ readonly name: string;
14
+ readonly url: string;
15
+ }
16
+ export interface SendInviteMailOptions {
17
+ /** Where the outgoing mail is written. Defaults to `.cogenta/mail` under the project. */
18
+ readonly mailDir: string;
19
+ /**
20
+ * The admin screen the invitee's link opens, with the token appended as
21
+ * `?token=` — the same screen `/forgot-password`'s link opens, since
22
+ * redeeming a token is redeeming a token regardless of which reason issued
23
+ * it (`POST /api/auth/reset-password` does not know or care).
24
+ */
25
+ readonly acceptUrl: string;
26
+ }
27
+ /**
28
+ * Sends the invitation through `@cogenta/channels`, not through a second
29
+ * mailer of this command's own — same reasoning as `sendResetMail`.
30
+ *
31
+ * The transport is the file one, because it is the only one that exists: a
32
+ * real SMTP transport is a documented, deliberate gap in that package. This
33
+ * writes a real message to a real file and says exactly where, rather than
34
+ * pretending mail left the machine — and it is only ever called at all when
35
+ * `onInvite` was wired, which `createUsersRouter`'s R1 fallback treats as
36
+ * "email is available" (see that file's header).
37
+ */
38
+ export declare function sendInviteMail(options: SendInviteMailOptions, site: InviteMailSite, address: string, roles: readonly string[], token: string, expiresAt: string): Promise<string>;
39
+ //# sourceMappingURL=invite-mail.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-mail.d.ts","sourceRoot":"","sources":["../src/invite-mail.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CACrB;AAED,MAAM,WAAW,qBAAqB;IACpC,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;CAC3B;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAClC,OAAO,EAAE,qBAAqB,EAC9B,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,KAAK,EAAE,MAAM,EACb,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CAgCjB"}
@@ -0,0 +1,39 @@
1
+ import { createEmailAdapter, createFileEmailTransport } from '@cogenta/channels';
2
+ /**
3
+ * Sends the invitation through `@cogenta/channels`, not through a second
4
+ * mailer of this command's own — same reasoning as `sendResetMail`.
5
+ *
6
+ * The transport is the file one, because it is the only one that exists: a
7
+ * real SMTP transport is a documented, deliberate gap in that package. This
8
+ * writes a real message to a real file and says exactly where, rather than
9
+ * pretending mail left the machine — and it is only ever called at all when
10
+ * `onInvite` was wired, which `createUsersRouter`'s R1 fallback treats as
11
+ * "email is available" (see that file's header).
12
+ */
13
+ export async function sendInviteMail(options, site, address, roles, token, expiresAt) {
14
+ const { mailDir: directory, acceptUrl } = options;
15
+ const adapter = createEmailAdapter({
16
+ transport: createFileEmailTransport({ directory }),
17
+ });
18
+ const link = `${acceptUrl}${acceptUrl.includes('?') ? '&' : '?'}token=${token}`;
19
+ await adapter.send({ id: address }, {
20
+ level: 'report',
21
+ title: `${site.name} — you have been invited`,
22
+ keyFigures: [
23
+ { label: 'Role(s)', value: roles.join(', ') },
24
+ { label: 'Valid until', value: expiresAt },
25
+ ],
26
+ sections: [
27
+ {
28
+ heading: 'Join the team',
29
+ body: `You have been invited to ${site.name} with the role(s): ${roles.join(', ')}.`,
30
+ },
31
+ {
32
+ heading: 'How to accept',
33
+ body: `Open this link and choose your own password: ${link}\n\nThe link works once and expires at ${expiresAt}. If you were not expecting this, ignore this message — the invitation is useless without it.`,
34
+ },
35
+ ],
36
+ });
37
+ return directory;
38
+ }
39
+ //# sourceMappingURL=invite-mail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"invite-mail.js","sourceRoot":"","sources":["../src/invite-mail.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAA;AA+BhF;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,OAA8B,EAC9B,IAAoB,EACpB,OAAe,EACf,KAAwB,EACxB,KAAa,EACb,SAAiB;IAEjB,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,OAAO,CAAA;IAEjD,MAAM,OAAO,GAAG,kBAAkB,CAAC;QACjC,SAAS,EAAE,wBAAwB,CAAC,EAAE,SAAS,EAAE,CAAC;KACnD,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,GAAG,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,KAAK,EAAE,CAAA;IAE/E,MAAM,OAAO,CAAC,IAAI,CAChB,EAAE,EAAE,EAAE,OAAO,EAAE,EACf;QACE,KAAK,EAAE,QAAQ;QACf,KAAK,EAAE,GAAG,IAAI,CAAC,IAAI,0BAA0B;QAC7C,UAAU,EAAE;YACV,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC7C,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,SAAS,EAAE;SAC3C;QACD,QAAQ,EAAE;YACR;gBACE,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,4BAA4B,IAAI,CAAC,IAAI,sBAAsB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;aACrF;YACD;gBACE,OAAO,EAAE,eAAe;gBACxB,IAAI,EAAE,gDAAgD,IAAI,0CAA0C,SAAS,+FAA+F;aAC7M;SACF;KACF,CACF,CAAA;IAED,OAAO,SAAS,CAAA;AAClB,CAAC"}
@@ -0,0 +1,54 @@
1
+ import { type Logger } from '@cogenta/core';
2
+ import { type PackageUpdateStatus, type UpdateCheckReport } from './check.js';
3
+ import { type UpdateRestorePoint } from './restore-point.js';
4
+ export interface RunPackageInstallInput {
5
+ readonly cwd: string;
6
+ /** `@cogenta/core@0.5.0`-shaped specs — one target version per package, pinned exactly (`--save-exact`). */
7
+ readonly specs: readonly string[];
8
+ }
9
+ export interface RunPackageInstallResult {
10
+ readonly stdout: string;
11
+ readonly stderr: string;
12
+ }
13
+ export type RunPackageInstall = (input: RunPackageInstallInput) => Promise<RunPackageInstallResult>;
14
+ /** Real `npm install --save-exact <specs>`, run in the site's own directory. */
15
+ export declare const runNpmInstall: RunPackageInstall;
16
+ export type ApplyUpdateResult = {
17
+ readonly kind: 'up-to-date';
18
+ readonly report: UpdateCheckReport;
19
+ } | {
20
+ readonly kind: 'confirmation-required';
21
+ readonly report: UpdateCheckReport;
22
+ readonly risky: readonly PackageUpdateStatus[];
23
+ } | {
24
+ readonly kind: 'applied';
25
+ readonly report: UpdateCheckReport;
26
+ readonly restorePoint: UpdateRestorePoint;
27
+ readonly installed: readonly {
28
+ readonly name: string;
29
+ readonly version: string;
30
+ }[];
31
+ readonly installOutput: RunPackageInstallResult;
32
+ };
33
+ export interface ApplyUpdateInput {
34
+ readonly cwd?: string;
35
+ readonly env?: Record<string, string | undefined>;
36
+ readonly logger?: Logger;
37
+ readonly packages: readonly {
38
+ readonly name: string;
39
+ readonly installed: string;
40
+ }[];
41
+ /**
42
+ * Required once `check()` has flagged a contract-risk warning for any
43
+ * package in scope — the human-in-the-loop half of point 4 ("proposer
44
+ * d'annuler"). Absent or `false` with a warning present refuses before
45
+ * touching anything, `kind: 'confirmation-required'`.
46
+ */
47
+ readonly confirmBreakingChange?: boolean;
48
+ readonly fetchImpl?: typeof fetch;
49
+ readonly now?: () => Date;
50
+ readonly backupDir?: string;
51
+ readonly runInstall?: RunPackageInstall;
52
+ }
53
+ export declare function applyUpdate(input: ApplyUpdateInput): Promise<ApplyUpdateResult>;
54
+ //# sourceMappingURL=apply.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.d.ts","sourceRoot":"","sources":["../../src/update/apply.ts"],"names":[],"mappings":"AAGA,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,eAAe,CAAA;AACzD,OAAO,EAAmB,KAAK,mBAAmB,EAAE,KAAK,iBAAiB,EAAE,MAAM,YAAY,CAAA;AAC9F,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,oBAAoB,CAAA;AAoBtF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;IACpB,4GAA4G;IAC5G,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAClC;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CACxB;AAED,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC,uBAAuB,CAAC,CAAA;AAInG,gFAAgF;AAChF,eAAO,MAAM,aAAa,EAAE,iBAkB3B,CAAA;AAED,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;CAAE,GACnE;IACE,QAAQ,CAAC,IAAI,EAAE,uBAAuB,CAAA;IACtC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,KAAK,EAAE,SAAS,mBAAmB,EAAE,CAAA;CAC/C,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAA;IACxB,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAA;IAClC,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAA;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAClF,QAAQ,CAAC,aAAa,EAAE,uBAAuB,CAAA;CAChD,CAAA;AAEL,MAAM,WAAW,gBAAgB;IAC/B,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,QAAQ,EAAE,SAAS;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACnF;;;;;OAKG;IACH,QAAQ,CAAC,qBAAqB,CAAC,EAAE,OAAO,CAAA;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,KAAK,CAAA;IACjC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAA;CACxC;AAED,wBAAsB,WAAW,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAsCrF"}
@@ -0,0 +1,77 @@
1
+ import { execFile } from 'node:child_process';
2
+ import process from 'node:process';
3
+ import { promisify } from 'node:util';
4
+ import { CogentaError } from '@cogenta/core';
5
+ import { checkForUpdates } from './check.js';
6
+ import { createUpdateRestorePoint } from './restore-point.js';
7
+ /**
8
+ * "Mise à jour en un clic depuis l'admin (ou `cogenta update` en CLI) — avec
9
+ * un point de restauration obligatoire avant toute mise à jour... jamais une
10
+ * mise à jour sans filet" (L22 task 9, point 2).
11
+ *
12
+ * The order is deliberate: a package whose update the caller has not
13
+ * confirmed yet (because `check()` found a contract-risk warning) is refused
14
+ * with `kind: 'confirmation-required'` **before** anything is backed up or
15
+ * installed — there is nothing to protect yet. Once every risky package is
16
+ * confirmed, the restore point is created unconditionally, and only then
17
+ * does `npm install` run. If the backup step itself fails, this throws
18
+ * (`UPDATE_RESTORE_POINT_FAILED`, from `restore-point.ts`) and nothing is
19
+ * installed — a failed safety net cancels the update, it never becomes a
20
+ * warning that gets ignored.
21
+ */
22
+ const execFileAsync = promisify(execFile);
23
+ const MAX_INSTALL_OUTPUT_BYTES = 10 * 1024 * 1024;
24
+ /** Real `npm install --save-exact <specs>`, run in the site's own directory. */
25
+ export const runNpmInstall = async ({ cwd, specs }) => {
26
+ const npmCommand = process.platform === 'win32' ? 'npm.cmd' : 'npm';
27
+ try {
28
+ const result = await execFileAsync(npmCommand, ['install', '--save-exact', ...specs], {
29
+ cwd,
30
+ maxBuffer: MAX_INSTALL_OUTPUT_BYTES,
31
+ });
32
+ return { stdout: result.stdout, stderr: result.stderr };
33
+ }
34
+ catch (error) {
35
+ const withOutput = error;
36
+ throw new CogentaError({
37
+ code: 'UPDATE_APPLY_FAILED',
38
+ message: `npm install failed: ${withOutput.message}`,
39
+ hint: 'The restore point taken just before this was not touched — restore it with "cogenta restore apply" if the site is now in a broken state, or fix the underlying npm error (check network access and the npm registry) and try again.',
40
+ cause: error,
41
+ details: { stdout: withOutput.stdout, stderr: withOutput.stderr },
42
+ });
43
+ }
44
+ };
45
+ export async function applyUpdate(input) {
46
+ const report = await checkForUpdates({
47
+ packages: input.packages,
48
+ ...(input.fetchImpl === undefined ? {} : { fetchImpl: input.fetchImpl }),
49
+ ...(input.now === undefined ? {} : { now: input.now }),
50
+ });
51
+ const updatable = report.packages.filter((pkg) => pkg.updateAvailable && pkg.latest !== null);
52
+ if (updatable.length === 0)
53
+ return { kind: 'up-to-date', report };
54
+ const risky = updatable.filter((pkg) => (pkg.contractRisk?.warnings.length ?? 0) > 0);
55
+ if (risky.length > 0 && input.confirmBreakingChange !== true) {
56
+ return { kind: 'confirmation-required', report, risky };
57
+ }
58
+ // The safety net, unconditional, before anything else changes.
59
+ const restorePoint = await createUpdateRestorePoint({
60
+ ...(input.cwd === undefined ? {} : { cwd: input.cwd }),
61
+ ...(input.env === undefined ? {} : { env: input.env }),
62
+ ...(input.logger === undefined ? {} : { logger: input.logger }),
63
+ ...(input.backupDir === undefined ? {} : { dir: input.backupDir }),
64
+ });
65
+ const cwd = input.cwd ?? process.cwd();
66
+ const runInstall = input.runInstall ?? runNpmInstall;
67
+ const specs = updatable.map((pkg) => `${pkg.name}@${pkg.latest}`);
68
+ const installOutput = await runInstall({ cwd, specs });
69
+ return {
70
+ kind: 'applied',
71
+ report,
72
+ restorePoint,
73
+ installed: updatable.map((pkg) => ({ name: pkg.name, version: pkg.latest })),
74
+ installOutput,
75
+ };
76
+ }
77
+ //# sourceMappingURL=apply.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply.js","sourceRoot":"","sources":["../../src/update/apply.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Splits a Changesets-generated `CHANGELOG.md` into per-version sections, and
3
+ * flags the ones that look like they touch a frozen contract (A/B/C/D/E) —
4
+ * a **heuristic keyword scan of prose**, not a structured signal, and it says
5
+ * so everywhere it is surfaced. See `contract-risk.ts`'s module comment for
6
+ * the honest limits of what this can actually detect.
7
+ */
8
+ export interface ChangelogSection {
9
+ readonly version: string;
10
+ readonly body: string;
11
+ }
12
+ export declare function splitChangelogSections(markdown: string): readonly ChangelogSection[];
13
+ export interface ContractRiskWarning {
14
+ readonly version: string;
15
+ /** The matched section's own text, trimmed to a readable excerpt — never invented, always a substring of the real changelog. */
16
+ readonly excerpt: string;
17
+ }
18
+ /** The versions in `sections` whose body matches `FROZEN_CONTRACT_PATTERN`. */
19
+ export declare function sectionsMentioningContractRisk(sections: readonly ChangelogSection[]): readonly ContractRiskWarning[];
20
+ //# sourceMappingURL=changelog-risk.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-risk.d.ts","sourceRoot":"","sources":["../../src/update/changelog-risk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CACtB;AAKD,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,gBAAgB,EAAE,CAmBpF;AAaD,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,gIAAgI;IAChI,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CACzB;AAED,+EAA+E;AAC/E,wBAAgB,8BAA8B,CAC5C,QAAQ,EAAE,SAAS,gBAAgB,EAAE,GACpC,SAAS,mBAAmB,EAAE,CAOhC"}
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Splits a Changesets-generated `CHANGELOG.md` into per-version sections, and
3
+ * flags the ones that look like they touch a frozen contract (A/B/C/D/E) —
4
+ * a **heuristic keyword scan of prose**, not a structured signal, and it says
5
+ * so everywhere it is surfaced. See `contract-risk.ts`'s module comment for
6
+ * the honest limits of what this can actually detect.
7
+ */
8
+ /** `## 0.5.0` — Changesets' own heading format (`@changesets/changelog-github` and the default changelog both use it). */
9
+ const VERSION_HEADING = /^##\s+(\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?)\s*$/u;
10
+ export function splitChangelogSections(markdown) {
11
+ const lines = markdown.split(/\r\n|\r|\n/u);
12
+ const sections = [];
13
+ let current = null;
14
+ for (const line of lines) {
15
+ const match = VERSION_HEADING.exec(line);
16
+ if (match?.[1] !== undefined) {
17
+ if (current !== null)
18
+ sections.push({ version: current.version, body: current.lines.join('\n').trim() });
19
+ current = { version: match[1], lines: [] };
20
+ continue;
21
+ }
22
+ if (current !== null)
23
+ current.lines.push(line);
24
+ }
25
+ if (current !== null)
26
+ sections.push({ version: current.version, body: current.lines.join('\n').trim() });
27
+ return sections;
28
+ }
29
+ /**
30
+ * Deliberately broad rather than precise: this is a warning, not a
31
+ * certification, and a missed keyword is worse than a false positive here
32
+ * (a human reviews every flagged version before an update is applied). Covers
33
+ * both languages this codebase's own changesets are written in (English,
34
+ * per AGENTS.md) and the French vocabulary this project's own design docs
35
+ * use for the same idea, in case a changeset note quotes one.
36
+ */
37
+ const FROZEN_CONTRACT_PATTERN = /\bcontract\s+[a-e]\b|\bcontrat\s+[a-e]\b|schema@\d|tools@\d|blocks?@\d|theme@\d|breaking change|changement cassant|frozen contract|contrat\s+fig[eé]|\badr-\d{4}\b/iu;
38
+ /** The versions in `sections` whose body matches `FROZEN_CONTRACT_PATTERN`. */
39
+ export function sectionsMentioningContractRisk(sections) {
40
+ const warnings = [];
41
+ for (const section of sections) {
42
+ if (!FROZEN_CONTRACT_PATTERN.test(section.body))
43
+ continue;
44
+ warnings.push({ version: section.version, excerpt: excerptOf(section.body) });
45
+ }
46
+ return warnings;
47
+ }
48
+ const MAX_EXCERPT_LENGTH = 400;
49
+ function excerptOf(body) {
50
+ const collapsed = body.replace(/\s+/gu, ' ').trim();
51
+ return collapsed.length > MAX_EXCERPT_LENGTH
52
+ ? `${collapsed.slice(0, MAX_EXCERPT_LENGTH)}…`
53
+ : collapsed;
54
+ }
55
+ //# sourceMappingURL=changelog-risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"changelog-risk.js","sourceRoot":"","sources":["../../src/update/changelog-risk.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,0HAA0H;AAC1H,MAAM,eAAe,GAAG,gDAAgD,CAAA;AAExE,MAAM,UAAU,sBAAsB,CAAC,QAAgB;IACrD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC3C,MAAM,QAAQ,GAAuB,EAAE,CAAA;IACvC,IAAI,OAAO,GAAgD,IAAI,CAAA;IAE/D,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,CAAC;YAC7B,IAAI,OAAO,KAAK,IAAI;gBAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;YACpF,OAAO,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAA;YAC1C,SAAQ;QACV,CAAC;QACD,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAChD,CAAC;IACD,IAAI,OAAO,KAAK,IAAI;QAClB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAA;IAEpF,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,uBAAuB,GAC3B,sKAAsK,CAAA;AAQxK,+EAA+E;AAC/E,MAAM,UAAU,8BAA8B,CAC5C,QAAqC;IAErC,MAAM,QAAQ,GAA0B,EAAE,CAAA;IAC1C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;YAAE,SAAQ;QACzD,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;IAC/E,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAA;IACnD,OAAO,SAAS,CAAC,MAAM,GAAG,kBAAkB;QAC1C,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,GAAG;QAC9C,CAAC,CAAC,SAAS,CAAA;AACf,CAAC"}