@nac3/forge-cli 1.9.3 → 1.11.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 (99) hide show
  1. package/dist/chat/doctrine_digest.d.ts.map +1 -1
  2. package/dist/chat/doctrine_digest.js +15 -0
  3. package/dist/chat/doctrine_digest.js.map +1 -1
  4. package/dist/chat/panel.d.ts.map +1 -1
  5. package/dist/chat/panel.js +13363 -12980
  6. package/dist/chat/panel.js.map +1 -1
  7. package/dist/chat/server.d.ts.map +1 -1
  8. package/dist/chat/server.js +60 -10
  9. package/dist/chat/server.js.map +1 -1
  10. package/dist/chat/sizing_section.d.ts +9 -0
  11. package/dist/chat/sizing_section.d.ts.map +1 -0
  12. package/dist/chat/sizing_section.js +73 -0
  13. package/dist/chat/sizing_section.js.map +1 -0
  14. package/dist/chat/tools/app_backend_dispatch.d.ts.map +1 -1
  15. package/dist/chat/tools/app_backend_dispatch.js +46 -0
  16. package/dist/chat/tools/app_backend_dispatch.js.map +1 -1
  17. package/dist/chat/tools/pending.d.ts +8 -0
  18. package/dist/chat/tools/pending.d.ts.map +1 -1
  19. package/dist/chat/tools/pending.js +26 -0
  20. package/dist/chat/tools/pending.js.map +1 -1
  21. package/dist/chat/tools/shell.d.ts +5 -0
  22. package/dist/chat/tools/shell.d.ts.map +1 -1
  23. package/dist/chat/tools/shell.js +60 -0
  24. package/dist/chat/tools/shell.js.map +1 -1
  25. package/dist/chat/tools/sizing.d.ts +66 -0
  26. package/dist/chat/tools/sizing.d.ts.map +1 -0
  27. package/dist/chat/tools/sizing.js +171 -0
  28. package/dist/chat/tools/sizing.js.map +1 -0
  29. package/dist/chat/tools.d.ts.map +1 -1
  30. package/dist/chat/tools.js +25 -2
  31. package/dist/chat/tools.js.map +1 -1
  32. package/dist/commands/clarify.d.ts.map +1 -1
  33. package/dist/commands/clarify.js +163 -1
  34. package/dist/commands/clarify.js.map +1 -1
  35. package/dist/commands/pending.d.ts.map +1 -1
  36. package/dist/commands/pending.js +9 -0
  37. package/dist/commands/pending.js.map +1 -1
  38. package/dist/commands/triage.d.ts +61 -7
  39. package/dist/commands/triage.d.ts.map +1 -1
  40. package/dist/commands/triage.js +106 -13
  41. package/dist/commands/triage.js.map +1 -1
  42. package/dist/core/forge_profile.d.ts +10 -0
  43. package/dist/core/forge_profile.d.ts.map +1 -1
  44. package/dist/core/forge_profile.js +6 -0
  45. package/dist/core/forge_profile.js.map +1 -1
  46. package/dist/docs/doctrine/gates.md +33 -21
  47. package/dist/docs/doctrine/sizing.md +182 -0
  48. package/dist/nac3/backend_tools.d.ts +14 -0
  49. package/dist/nac3/backend_tools.d.ts.map +1 -1
  50. package/dist/nac3/backend_tools.js +31 -1
  51. package/dist/nac3/backend_tools.js.map +1 -1
  52. package/dist/nac3/internal_manifest.d.ts.map +1 -1
  53. package/dist/nac3/internal_manifest.js +172 -5
  54. package/dist/nac3/internal_manifest.js.map +1 -1
  55. package/dist/pending/commit_files.d.ts +3 -0
  56. package/dist/pending/commit_files.d.ts.map +1 -0
  57. package/dist/pending/commit_files.js +42 -0
  58. package/dist/pending/commit_files.js.map +1 -0
  59. package/dist/pending/store.d.ts +12 -0
  60. package/dist/pending/store.d.ts.map +1 -1
  61. package/dist/pending/store.js +66 -0
  62. package/dist/pending/store.js.map +1 -1
  63. package/dist/pending/types.d.ts +50 -0
  64. package/dist/pending/types.d.ts.map +1 -1
  65. package/dist/pending/types.js.map +1 -1
  66. package/dist/sizing/model.d.ts +200 -0
  67. package/dist/sizing/model.d.ts.map +1 -0
  68. package/dist/sizing/model.js +423 -0
  69. package/dist/sizing/model.js.map +1 -0
  70. package/dist/sizing/store.d.ts +114 -0
  71. package/dist/sizing/store.d.ts.map +1 -0
  72. package/dist/sizing/store.js +235 -0
  73. package/dist/sizing/store.js.map +1 -0
  74. package/dist/tasks/supervisor.d.ts +21 -0
  75. package/dist/tasks/supervisor.d.ts.map +1 -1
  76. package/dist/tasks/supervisor.js +39 -3
  77. package/dist/tasks/supervisor.js.map +1 -1
  78. package/dist/version.d.ts +1 -1
  79. package/dist/version.d.ts.map +1 -1
  80. package/dist/version.js +1 -1
  81. package/dist/version.js.map +1 -1
  82. package/dist/workflow/definitions.js +1 -1
  83. package/dist/workflow/definitions.js.map +1 -1
  84. package/dist/workflow/state.d.ts +28 -0
  85. package/dist/workflow/state.d.ts.map +1 -1
  86. package/dist/workflow/state.js.map +1 -1
  87. package/docs/doctrine/gates.md +33 -21
  88. package/docs/doctrine/sizing.md +182 -0
  89. package/package.json +117 -117
  90. package/src/i18n/catalogs/ar.json +1 -0
  91. package/src/i18n/catalogs/de.json +1 -0
  92. package/src/i18n/catalogs/en.json +1 -0
  93. package/src/i18n/catalogs/es.json +1 -0
  94. package/src/i18n/catalogs/fr.json +1 -0
  95. package/src/i18n/catalogs/hi.json +1 -0
  96. package/src/i18n/catalogs/it.json +1 -0
  97. package/src/i18n/catalogs/ja.json +1 -0
  98. package/src/i18n/catalogs/pt.json +1 -0
  99. package/src/i18n/catalogs/zh.json +1 -0
@@ -9,15 +9,32 @@
9
9
  * Questions:
10
10
  * 1. Output type (landing / blog / CRUD app / SaaS / regulated system)
11
11
  * 2. Volumetria 12m (numeric: expected concurrent users at 12 months)
12
- * 3. Industry context (general / health / finance / education / government)
13
- * 4. Region (LATAM / US / EU / global)
14
- * 5. Team maintaining (solo / pair / team)
12
+ * 3. Volumetria de DATOS (entities x events/year x rows per event)
13
+ * 4. Industry context (general / health / finance / education / government)
14
+ * 5. Region (LATAM / US / EU / global)
15
+ * 6. Team maintaining (solo / pair / team)
16
+ *
17
+ * Question 3 is new (Pablo, 2026-10-11, after the ADIP-KIKAN post mortem) and
18
+ * it is the one that was missing. Until now the only volumetry the triage
19
+ * asked for was CONCURRENT USERS, and it alone picked the tier. Kikan has 100
20
+ * concurrent users -- a low number that classified it as MEDIUM -- and died of
21
+ * ROW COUNT: 5.000 affiliates x 40 campaigns/year x ~17 rows per event =
22
+ * ~3,4M rows/year, which no question in this command could see. The two axes
23
+ * are independent: a system can be tiny in users and enormous in rows, and it
24
+ * is the rows that decide whether the persistence architecture is load-bearing.
25
+ *
26
+ * What the triage does NOT do is size the system: it has no hardware envelope
27
+ * and no retention per data class. It captures the row rate, uses it to pick
28
+ * the tier, and leaves a DRAFT in workflow.sizing_draft for
29
+ * `yf clarify quantitative`, which completes the five axes and records the
30
+ * sizing against gate G9. See docs/doctrine/sizing.md.
15
31
  *
16
32
  * Classification rules:
17
- * Simple = output in {landing, blog, demo} OR volumetria < 50 AND
18
- * industry = general AND team = solo
19
- * Full = industry in {health, finance, government} OR volumetria > 5000
20
- * OR output = regulated_system OR (region = EU AND volumetria > 100)
33
+ * Simple = output in {landing, blog} OR (users < 50 AND industry = general
34
+ * AND team = solo) -- but NEVER above ROWS_SIMPLE_MAX rows/year
35
+ * Full = industry in {health, finance, government} OR users > 5000
36
+ * OR rows/year >= ROWS_FULL_MIN
37
+ * OR output = regulated_system OR (region = EU AND users > 100)
21
38
  * Medium = everything else
22
39
  *
23
40
  * User can override the auto-tier in the final confirmation.
@@ -28,11 +45,34 @@ import path from 'node:path';
28
45
  import prompts from 'prompts';
29
46
  import { c, header } from '../ui/colors.js';
30
47
  import { writeWorkflow, readWorkflow, } from '../workflow/state.js';
31
- function classify(a) {
48
+ /**
49
+ * Arriba de este ritmo de filas la persistencia es una decision PORTANTE y el
50
+ * proyecto se lleva el workflow completo, por pocos usuarios que tenga. 1M
51
+ * filas/ano y no 10M porque a 1M ya no hay diseno en memoria que cierre en una
52
+ * VM chica, y es la escala a la que conviene haber escrito la arquitectura
53
+ * antes de construir. Kikan, con 3,4M, cae aca.
54
+ */
55
+ export const ROWS_FULL_MIN = 1_000_000;
56
+ /**
57
+ * Y arriba de este, nada es "simple" aunque tenga un solo usuario. Es el caso
58
+ * que el triage no veia: poca concurrencia y mucho volumen.
59
+ */
60
+ export const ROWS_SIMPLE_MAX = 250_000;
61
+ /** El eje que faltaba: filas por anio, no usuarios concurrentes. */
62
+ export function rowsPerYear(a) {
63
+ const n = (a.entities || 0) * (a.events_per_year || 0) * (a.rows_per_event || 0);
64
+ return Number.isFinite(n) ? Math.round(n) : 0;
65
+ }
66
+ export function classify(a) {
67
+ const rows = rowsPerYear(a);
32
68
  const simpleOutputs = ['landing', 'blog'];
33
69
  const regulated = ['health', 'finance', 'government'];
34
- if (simpleOutputs.includes(a.output)
35
- || (a.volumetria < 50 && a.industry === 'general' && a.team === 'solo')) {
70
+ /* El eje de filas VETA el tier simple: un proyecto de un solo usuario que
71
+ * acumula cientos de miles de filas por anio no es simple, es un problema de
72
+ * persistencia con pocos usuarios adelante. */
73
+ if (rows <= ROWS_SIMPLE_MAX
74
+ && (simpleOutputs.includes(a.output)
75
+ || (a.volumetria < 50 && a.industry === 'general' && a.team === 'solo'))) {
36
76
  return {
37
77
  tier: 'simple',
38
78
  reason: a.output === 'landing' ? 'landing page'
@@ -42,13 +82,19 @@ function classify(a) {
42
82
  }
43
83
  if (regulated.includes(a.industry)
44
84
  || a.volumetria > 5000
85
+ || rows >= ROWS_FULL_MIN
45
86
  || a.output === 'regulated'
46
87
  || (a.region === 'eu' && a.volumetria > 100)) {
47
88
  const reasons = [];
48
89
  if (regulated.includes(a.industry))
49
90
  reasons.push('regulated industry (' + a.industry + ')');
50
91
  if (a.volumetria > 5000)
51
- reasons.push('volumetria > 5000');
92
+ reasons.push('volumetria > 5000 usuarios concurrentes');
93
+ if (rows >= ROWS_FULL_MIN) {
94
+ reasons.push('volumetria de DATOS ' + rows.toLocaleString('en-US')
95
+ + ' filas/ano (>= ' + ROWS_FULL_MIN.toLocaleString('en-US')
96
+ + '): la persistencia es una decision portante');
97
+ }
52
98
  if (a.output === 'regulated')
53
99
  reasons.push('output = regulated system');
54
100
  if (a.region === 'eu' && a.volumetria > 100)
@@ -60,7 +106,8 @@ function classify(a) {
60
106
  }
61
107
  return {
62
108
  tier: 'medium',
63
- reason: 'CRUD/SaaS app with moderate volumetria, non-regulated industry',
109
+ reason: 'CRUD/SaaS app with moderate volumetria ('
110
+ + rows.toLocaleString('en-US') + ' filas/ano), non-regulated industry',
64
111
  };
65
112
  }
66
113
  function describeAlcance(tier) {
@@ -93,7 +140,7 @@ export async function runTriage(opts) {
93
140
  console.log(c.dim('Para volver a clasificar, corre `yf triage --yes`.'));
94
141
  return;
95
142
  }
96
- console.log(c.dim('5 preguntas para clasificar la complejidad del proyecto.'));
143
+ console.log(c.dim('6 preguntas para clasificar la complejidad del proyecto.'));
97
144
  console.log(c.dim('La clasificacion determina que fases del workflow se aplican.'));
98
145
  console.log('');
99
146
  const answers = await prompts([
@@ -116,6 +163,31 @@ export async function runTriage(opts) {
116
163
  initial: 100,
117
164
  min: 0,
118
165
  },
166
+ /* Volumetria de DATOS. Tres numeros y no un balde de rangos, porque el
167
+ * producto de los tres es lo que decide, y porque "rows_per_event" es el
168
+ * que la gente subestima: hay que contar TODAS las tablas que escribe un
169
+ * evento, no solo la principal. */
170
+ {
171
+ type: 'number',
172
+ name: 'entities',
173
+ message: 'Entidades del negocio en el horizonte (afiliados, clientes, equipos):',
174
+ initial: 1000,
175
+ min: 0,
176
+ },
177
+ {
178
+ type: 'number',
179
+ name: 'events_per_year',
180
+ message: 'Eventos por entidad por anio (una campana, un pedido, una visita):',
181
+ initial: 12,
182
+ min: 0,
183
+ },
184
+ {
185
+ type: 'number',
186
+ name: 'rows_per_event',
187
+ message: 'Filas que deja CADA evento, sumando TODAS las tablas que escribe:',
188
+ initial: 5,
189
+ min: 0,
190
+ },
119
191
  {
120
192
  type: 'select',
121
193
  name: 'industry',
@@ -156,6 +228,13 @@ export async function runTriage(opts) {
156
228
  return;
157
229
  }
158
230
  const { tier, reason } = classify(answers);
231
+ const rows = rowsPerYear(answers);
232
+ console.log('');
233
+ console.log(c.brand('Volumetria de datos: ') + rows.toLocaleString('en-US') + c.dim(' filas/ano'));
234
+ if (rows >= ROWS_FULL_MIN) {
235
+ console.log(c.dim(' A este ritmo la persistencia es una decision portante: el'));
236
+ console.log(c.dim(' dimensionamiento (compuerta G9) se completa en `yf clarify quantitative`.'));
237
+ }
159
238
  console.log('');
160
239
  console.log(c.brand('Tier propuesto: ') + c.brand(tier.toUpperCase()));
161
240
  console.log(c.dim(' Razon: ') + reason);
@@ -202,12 +281,26 @@ export async function runTriage(opts) {
202
281
  tier: finalTier,
203
282
  tier_reason: finalReason,
204
283
  tier_decided_at: new Date().toISOString(),
284
+ /* El borrador que recoge `yf clarify quantitative` para completar los
285
+ * cinco ejes y registrar el dimensionamiento (G9). */
286
+ sizing_draft: {
287
+ entities: Number(answers.entities || 0),
288
+ events_per_year: Number(answers.events_per_year || 0),
289
+ rows_per_event: Number(answers.rows_per_event || 0),
290
+ rows_per_year: rows,
291
+ peak_concurrency: Number(answers.volumetria || 0),
292
+ captured_at: new Date().toISOString(),
293
+ },
205
294
  });
206
295
  console.log('');
207
296
  console.log(c.success('Triage persistido. Tier: ' + c.brand(finalTier)));
208
297
  console.log(c.dim(' Estado guardado en yujin.forge.json'));
209
298
  console.log('');
210
299
  console.log(c.dim('Siguiente paso: ') + c.code('yf discover'));
300
+ if (rows > ROWS_SIMPLE_MAX) {
301
+ console.log(c.dim('Y antes de construir: ') + c.code('yf clarify quantitative')
302
+ + c.dim(' -- la compuerta G9 pide el dimensionamiento.'));
303
+ }
211
304
  }
212
305
  export function registerTriageCommand(program) {
213
306
  program
@@ -1 +1 @@
1
- {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/commands/triage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"triage.js","sourceRoot":"","sources":["../../src/commands/triage.ts"],"names":[],"mappings":"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"}
@@ -32,6 +32,14 @@ export interface ForgeProfile {
32
32
  * SOFTWARE (operate_guard enforces both, allowlist-first). Absent /
33
33
  * enabled=false -> the assistant stays strictly diagnostic. */
34
34
  operate?: OperateConfig;
35
+ /** EL PERFIL DE FRONTEND que la puerta de este despliegue garantiza
36
+ * (Pablo 2026-10-11). En un embed publicado detras del gateway de la app,
37
+ * solo entra un rol: si la puerta solo admite Administrador, aca va
38
+ * "administrador". Con esto declarado, el asistente solo puede invocar las
39
+ * tools del producto (app.*) que nombren ese perfil -- no puede operar algo
40
+ * que el humano del otro lado no podria operar a mano. Sin declararlo
41
+ * (maquina de desarrollo, sin puerta) se ven todas. */
42
+ frontend_profile?: string;
35
43
  /** Legacy shorthand some deployments already carry: full_config: true means
36
44
  * "this deployment may configure the system" == operate.enabled. It still
37
45
  * needs the operate allowlists to be able to do anything. */
@@ -72,6 +80,8 @@ export declare function activeProfile(): ForgeProfile | null;
72
80
  * the allowlists to be able to change anything.
73
81
  */
74
82
  export declare function operateConfig(): OperateConfig | null;
83
+ /** El perfil de frontend que garantiza la puerta de este despliegue, o null. */
84
+ export declare function frontendProfile(): string | null;
75
85
  /** True when operate mode is active for this deployment. */
76
86
  export declare function operateEnabled(): boolean;
77
87
  /** Verb families that exist ONLY to serve operate mode. */
@@ -1 +1 @@
1
- {"version":3,"file":"forge_profile.d.ts","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"AAmCA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;4EAGwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;4EAEwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;2CAGuC;IACvC,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D;;;;;oEAKgE;IAChE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;kEAE8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,yCAA0C,CAAC;AAE3E,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAQpD;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBpE;AAED;8EAC8E;AAC9E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAuBpE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,IAAI,CAAyF;AAErI,wBAAgB,aAAa,IAAI,YAAY,GAAG,IAAI,CAA2B;AAE/E;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,aAAa,GAAG,IAAI,CAMpD;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,IAAI,OAAO,CAAqC;AAE9E,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;qEAEqE;AACrE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CA4K7C;AAyBD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,mBAAmB,CAwErB;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAIxC"}
1
+ {"version":3,"file":"forge_profile.d.ts","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"AAmCA,OAAO,EAEL,KAAK,aAAa,EACnB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;4EAGwE;IACxE,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;4EAEwE;IACxE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC7B,2EAA2E;IAC3E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;2CAGuC;IACvC,WAAW,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D;;;;;oEAKgE;IAChE,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB;;;;;;4DAMwD;IACxD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;kEAE8D;IAC9D,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,2EAA2E;AAC3E,eAAO,MAAM,mBAAmB,yCAA0C,CAAC;AAE3E,6EAA6E;AAC7E,wBAAgB,UAAU,CAAC,CAAC,EAAE,YAAY,GAAG,MAAM,EAAE,CAQpD;AAmBD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAgBpE;AAED;8EAC8E;AAC9E,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAuBpE;AAED,iBAAiB;AACjB,wBAAgB,oBAAoB,IAAI,IAAI,CAAyF;AAErI,wBAAgB,aAAa,IAAI,YAAY,GAAG,IAAI,CAA2B;AAE/E;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,aAAa,GAAG,IAAI,CAMpD;AAED,gFAAgF;AAChF,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED,4DAA4D;AAC5D,wBAAgB,cAAc,IAAI,OAAO,CAAqC;AAE9E,2DAA2D;AAC3D,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AAED;;qEAEqE;AACrE,wBAAgB,kBAAkB,IAAI,MAAM,EAAE,CA4K7C;AAyBD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,QAAQ,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,iBAAiB,CAAC;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAeD;;;;;GAKG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,mBAAmB,CAwErB;AAED,qEAAqE;AACrE,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAIxC"}
@@ -146,6 +146,12 @@ export function operateConfig() {
146
146
  op.enabled = true;
147
147
  return op.enabled === true ? op : null;
148
148
  }
149
+ /** El perfil de frontend que garantiza la puerta de este despliegue, o null. */
150
+ export function frontendProfile() {
151
+ const p = ACTIVE.profile;
152
+ const v = p && typeof p.frontend_profile === 'string' ? p.frontend_profile.trim().toLowerCase() : '';
153
+ return v || null;
154
+ }
149
155
  /** True when operate mode is active for this deployment. */
150
156
  export function operateEnabled() { return operateConfig() !== null; }
151
157
  /** Verb families that exist ONLY to serve operate mode. */
@@ -1 +1 @@
1
- {"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"forge_profile.js","sourceRoot":"","sources":["../../src/core/forge_profile.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,33 @@
1
- # Unbreakable workflow gates
2
-
3
- Hard gates: you REFUSE to advance until the condition is met.
4
-
5
- G1: Phase I done without complexity tier decided
6
- G2: No minimum brain (LLM) key in vault
7
- G3: Phase III started without intent recorded
8
- G4: Phase IV approached without block-plan OK
9
- G5: Phase V started without explicit OK on the 3 spec docs
10
- G6: Phase V block declared complete with red tests
11
- G7: Phase VI deploy attempted without all required creds
12
- G8: Launch announced without green smoke check post-deploy
13
-
14
- Soft gates: alert the user, propose alternative, do NOT block:
15
-
16
- GS1: Simple tier asking for full RFP -> do it but flag overkill
17
- GS2: Full tier asking to skip arch -> refuse with justification
18
- GS3: No compliance picked but "produccion B2B" -> propose
19
- defaults
20
- GS4: Low cost budget but high volumetry -> propose
21
- optimisations
1
+ # Unbreakable workflow gates
2
+
3
+ Hard gates: you REFUSE to advance until the condition is met.
4
+
5
+ G1: Phase I done without complexity tier decided
6
+ G2: No minimum brain (LLM) key in vault
7
+ G3: Phase III started without intent recorded
8
+ G4: Phase IV approached without block-plan OK
9
+ G5: Phase V started without explicit OK on the 3 spec docs
10
+ G6: Phase V block declared complete with red tests
11
+ G7: Phase VI deploy attempted without all required creds
12
+ G8: Launch announced without green smoke check post-deploy
13
+ G9: Phase V (construction) started without an ADMISSIBLE sizing
14
+ record -- see docs/doctrine/sizing.md. The record is not a
15
+ formality: the chosen option per axis is re-validated against
16
+ its envelope on every read, so it stops passing when the
17
+ declared volumetry outgrows it. Enforced in code by
18
+ sizingGate() in src/sizing/store.ts, not by this list.
19
+ Also applies OUTSIDE a workflow once load_bearing_since is
20
+ set -- the ADIP-KIKAN case, where the persistence decision was
21
+ never taken in a design phase at all: a prototype in-memory
22
+ store became the production store by omission.
23
+
24
+ Soft gates: alert the user, propose alternative, do NOT block:
25
+
26
+ GS1: Simple tier asking for full RFP -> do it but flag overkill
27
+ GS2: Full tier asking to skip arch -> refuse with justification
28
+ GS3: No compliance picked but "produccion B2B" -> propose
29
+ defaults
30
+ GS4: Low cost budget but high volumetry -> propose
31
+ optimisations (the HARD half of this is G9: the sizing
32
+ record. GS4 is only about cost, never about whether the
33
+ architecture is admissible)
@@ -0,0 +1,182 @@
1
+ # Sizing doctrine -- fixed options, measured envelopes
2
+
3
+ This doctrine exists because the previous one was not enough.
4
+
5
+ `concurrency-scale.md` opens with *"Every application Forge designs MUST
6
+ be sized to its expected concurrency from day one. Scale is a
7
+ RELEVAMIENTO input, not an afterthought bolted on when the app falls
8
+ over."* That was already written when ADIP-KIKAN was built with its
9
+ entire working set resident in the Node heap, at a volumetry
10
+ (5.000 affiliates x 40 campaigns/year -> ~3,4M rows/year -> ~8 GB of
11
+ live heap per year against a 2-4 GB V8 ceiling) that hits a wall in
12
+ months.
13
+
14
+ So the lesson is not "write more doctrine". The lesson is that **prose is
15
+ advisory**. This doctrine describes a mechanism; the mechanism is the
16
+ code in `src/sizing/`.
17
+
18
+ ## The four holes the Kikan post mortem found
19
+
20
+ 1. **The wrong axis.** The only volumetry Forge asked for was PEAK
21
+ CONCURRENCY (`src/commands/triage.ts`), and only to pick a complexity
22
+ tier. Kikan has 100 concurrent users -- a low number -- and died of
23
+ ROW COUNT. Data volume x retention was never a question.
24
+ 2. **No hardware envelope.** None. No RAM, no runtime heap ceiling, no
25
+ disk. The architecture was chosen without knowing the machine -- and
26
+ the ceiling that actually kills a Node process is V8's
27
+ `heap_size_limit`, a property of the machine and runtime, not of the
28
+ business.
29
+ 3. **A free-form choice.** Forge invented an approach and wrote a
30
+ rationale. With no fixed option set carrying validity ranges, there
31
+ was nothing to violate.
32
+ 4. **A soft gate.** The only gate touching volumetry was `GS4`, and soft
33
+ gates do not block.
34
+
35
+ And the deepest one, which is really a fifth: **in Kikan the decision was
36
+ never taken.** There was no moment called "choose the persistence
37
+ architecture". The engine was written against a synchronous in-memory
38
+ store as a prototype, durability was bolted on later, and the choice was
39
+ made by omission in the commit that decided not to rewrite the engine. A
40
+ gate that only fires in the design phase would have missed it.
41
+
42
+ ## What you must do
43
+
44
+ ### 1. Ask for five things, never four
45
+
46
+ During relevamiento -- and before any change that makes a load-bearing
47
+ decision about state:
48
+
49
+ - **Entities and their cardinality.** "5.000 affiliates", "20.000
50
+ customers".
51
+ - **Event rate per entity per year.** "40 campaigns per affiliate per
52
+ year".
53
+ - **Rows per event, across EVERY table the event writes.** This is the
54
+ number people get wrong. In Kikan one campaign-affiliate event leaves
55
+ about 17 rows: a pending, three or four dispatch items, five messages,
56
+ as many traces, plus run events and a conversation. Not one row.
57
+ - **Retention per data CLASS.** Business data and trace data have
58
+ different retention rights, and this is the distinction Kikan never
59
+ made. `0 days` means forever, and forever means unbounded.
60
+ - **The hardware envelope**: `ram_mb`, `heap_cap_mb`, `disk_gb`,
61
+ `vcpus`. `heap_cap_mb` is the RUNTIME heap ceiling
62
+ (`node -e "console.log(require('v8').getHeapStatistics().heap_size_limit)"`),
63
+ **not** the RAM of the machine. Using RAM here is exactly what makes an
64
+ in-memory design look survivable.
65
+
66
+ `yf triage` asks the first three (and uses the row rate to pick the tier);
67
+ `yf clarify quantitative` asks the rest, derives, and records. In a chat
68
+ session, ask them yourself and call `yujin.sizing.record`.
69
+
70
+ Ask the owner. Do not invent the numbers. If the owner does not know,
71
+ propose a default, say out loud that it is a default, and record it --
72
+ the record keeps every revision, so a wrong assumption is findable
73
+ later instead of invisible.
74
+
75
+ ### 2. Let the numbers be derived, not argued
76
+
77
+ `yujin.sizing.show` derives, from those inputs: rows/year, rows at the
78
+ horizon, live rows after retention, the heap a resident set would take
79
+ and what share of the ceiling that is, and disk at the horizon. You do
80
+ not estimate these and you do not debate them.
81
+
82
+ ### 3. Pick one option per axis, from the fixed catalogue
83
+
84
+ Four axes. The option ids and their envelopes live in
85
+ `src/sizing/model.ts`; `yujin.sizing.show` prints the catalogue and
86
+ which options the current volumetry admits.
87
+
88
+ **`state_residency` -- where the working set lives**
89
+
90
+ | Option | Admissible when |
91
+ |---|---|
92
+ | `memory-only` | Zero users. A prototype nobody depends on |
93
+ | `memory-write-through` | Every data class bounded by retention AND the live set under 25% of the heap ceiling |
94
+ | `sql-async` | Always. The default |
95
+ | `sql-plus-narrow-cache` | Only with a `measured_hotspot` naming the measurement that justifies it |
96
+
97
+ 25% and not 80%: the heap also holds every request in flight, the
98
+ declarative catalog and V8's own slack, and mark-compact pauses grow with
99
+ the live set long before the ceiling is reached. The system becomes
100
+ unusable before it crashes.
101
+
102
+ **`pagination` -- how a page is produced**
103
+
104
+ | Option | Admissible when |
105
+ |---|---|
106
+ | `in-memory-slice` | Nothing unbounded AND under 100.000 rows at the horizon |
107
+ | `sql-limit-offset` | Always |
108
+ | `sql-keyset` | Always; the right default past a few hundred thousand rows |
109
+
110
+ A slice taken after materialising the collection protects the wire, not
111
+ the server. Kikan's own `paginacion.js` says so in a comment and does it
112
+ anyway.
113
+
114
+ **`retention` -- what bounds each class**
115
+
116
+ | Option | Admissible when |
117
+ |---|---|
118
+ | `retention-none` | Not with a resident working set, and only while projected disk stays under 25% |
119
+ | `retention-by-age` | At least one class declares a window |
120
+ | `retention-by-age-and-count` | Same as above (it is a superset); the row cap is what survives a spike |
121
+
122
+ A retention mechanism that ships inert (`max_days: 0`) is not retention.
123
+ Kikan shipped one and it deleted nothing for a year.
124
+
125
+ Consequence, and it is deliberate: with retention `0/0` the retention axis
126
+ has **no admissible option at all**, so a project cannot be sized until it
127
+ declares what bounds each data class. That is the Kikan lesson in one line.
128
+
129
+ **`write_concurrency` -- what makes a multi-step mutation atomic**
130
+
131
+ | Option | Admissible when |
132
+ |---|---|
133
+ | `implicit-single-thread` | Only with a synchronous resident store AND at most one concurrent user |
134
+ | `explicit-transactions` | Always |
135
+ | `unique-keys-and-upsert` | Always; the only correct fix for a check-then-act race |
136
+
137
+ The moment reads become asynchronous, every `findOne`-then-`insert`
138
+ becomes a race, and the guarantee that used to be free disappears
139
+ without anything in the code changing shape. Kikan has 27 of those
140
+ patterns and zero transactions.
141
+
142
+ ### 4. Record it, and accept the refusal
143
+
144
+ `yujin.sizing.record` persists the sizing **only if every choice is
145
+ inside its envelope**. A choice outside is refused and nothing is
146
+ written. The refusal carries the derived numbers, which axes failed, and
147
+ what would be admissible -- so fixing it is one more call, not a
148
+ negotiation.
149
+
150
+ The record is not a permit. `sizingGate()` re-validates it on every read,
151
+ so a sizing that was fine at 500 affiliates stops passing when the
152
+ declared number becomes 50.000.
153
+
154
+ ### 5. Re-check against reality
155
+
156
+ `yujin.sizing.check` takes real counts (a `COUNT(*)` per table, an infra
157
+ report) and re-runs the envelopes with the observed rate substituted in.
158
+ The answer is not "the estimate was 3x off"; it is "at the rate you
159
+ actually have, the architecture you chose is no longer admissible". Run
160
+ it whenever real numbers exist. This is what catches a bad sizing in
161
+ month 2 instead of month 12.
162
+
163
+ ### 6. The prototype trigger
164
+
165
+ When a surface stops being a prototype -- a test store becomes the
166
+ production store, an in-memory thing gets durability bolted on, a demo
167
+ starts holding real data -- set `load_bearing_since`. From then on the
168
+ gate applies outside any workflow.
169
+
170
+ This is the Kikan case, and it is the one a design-phase gate alone
171
+ cannot catch.
172
+
173
+ ## Proportionality
174
+
175
+ None of this is a licence to gold-plate. A twenty-user internal tool with
176
+ two tables sizes in one call and picks `sql-async` +
177
+ `sql-limit-offset` + `retention-by-age` + `explicit-transactions`, which
178
+ is the recommendation anyway. The cost of the gate for a small system is
179
+ one verb call; the cost of not having it was ADIP-KIKAN.
180
+
181
+ What the gate forbids is not ambition. It is choosing an architecture
182
+ without knowing the numbers, and then discovering them in production.
@@ -47,6 +47,16 @@ export interface BackendTool {
47
47
  /** Tool id (kebab-case or snake_case). Becomes `app.<id>` in the
48
48
  * synthetic NAC-3 verb namespace. */
49
49
  id: string;
50
+ /** PERFILES DE FRONTEND autorizados a invocarla (Pablo 2026-10-11).
51
+ *
52
+ * Es la misma autorizacion que el producto exige en su UI: si el ABM de
53
+ * plantillas solo lo abre un Administrador, la tool declara
54
+ * ["administrador"]. El asistente embebido NO puede operar algo que el
55
+ * humano que esta del otro lado no podria operar a mano, y eso se decide
56
+ * aca -- no en el prompt. Cuando el despliegue declara su
57
+ * `frontend_profile`, una tool sin `profiles` queda FUERA: el control es
58
+ * estricto, no permisivo por omision. */
59
+ profiles?: string[];
50
60
  /** Short user-facing label for stub + audit log. */
51
61
  label: string;
52
62
  /** Free-text description. */
@@ -85,5 +95,9 @@ export declare function parseBackendCatalogue(manifest: unknown): ParseResult;
85
95
  * missing OR no nac3_backend declared OR malformed. */
86
96
  export declare function loadBackendCatalogue(projectRoot: string): Promise<ParseResult>;
87
97
  export declare function buildBackendToolStub(tool: BackendTool): string;
98
+ /** Las tools que un despliegue con ESTE perfil de frontend puede invocar.
99
+ * Sin perfil declarado en el despliegue (maquina de desarrollo, sin puerta)
100
+ * se ven todas; con perfil declarado, solo las que lo nombran. */
101
+ export declare function toolsForFrontendProfile(tools: BackendTool[], frontendProfile: string | null | undefined): BackendTool[];
88
102
  export declare function buildBackendToolsSection(catalogue: BackendCatalogue): string;
89
103
  //# sourceMappingURL=backend_tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"backend_tools.d.ts","sourceRoot":"","sources":["../../src/nac3/backend_tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,cAAc,CAAC;AAE1F,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,aAAa,CAAC;AAElB,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,cAAc,GACd,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B;0CACsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,eAAe,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,4DAA4D;IAC5D,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,sDAAsD;IACtD,aAAa,EAAE,iBAAiB,CAAC;IACjC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,WAAW;IAC1B;;oEAEgE;IAChE,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAoHD;;;0DAG0D;AAC1D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,CA+CpE;AAED;;wDAEwD;AACxD,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBpF;AA2CD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAM9D;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAU5E"}
1
+ {"version":3,"file":"backend_tools.d.ts","sourceRoot":"","sources":["../../src/nac3/backend_tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,cAAc,CAAC;AAE1F,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;IACtB,6EAA6E;IAC7E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,yDAAyD;IACzD,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gEAAgE;IAChE,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,SAAS,GACT,mBAAmB,GACnB,aAAa,CAAC;AAElB,MAAM,MAAM,iBAAiB,GACzB,MAAM,GACN,cAAc,GACd,YAAY,GACZ,SAAS,CAAC;AAEd,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,OAAO,CAAC;IACpD,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC;QAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;QACzB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC,CAAC;IACH,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CAC7B;AAED,MAAM,WAAW,WAAW;IAC1B;0CACsC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX;;;;;;;;8CAQ0C;IAC1C,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oDAAoD;IACpD,KAAK,EAAE,MAAM,CAAC;IACd,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,QAAQ,EAAE,eAAe,CAAC;IAC1B,0CAA0C;IAC1C,MAAM,EAAE,aAAa,CAAC;IACtB,4DAA4D;IAC5D,YAAY,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC3C,sDAAsD;IACtD,aAAa,EAAE,iBAAiB,CAAC;IACjC,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,WAAW,CAAC;IAClB,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAMD,MAAM,WAAW,WAAW;IAC1B;;oEAEgE;IAChE,SAAS,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAkID;;;0DAG0D;AAC1D,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,OAAO,GAAG,WAAW,CA+CpE;AAED;;wDAEwD;AACxD,wBAAsB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAmBpF;AA2CD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAW9D;AAED;;mEAEmE;AACnE,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,WAAW,EAAE,EACpB,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GACzC,WAAW,EAAE,CAIf;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,gBAAgB,GAAG,MAAM,CAU5E"}