@llm-dev-ops/agentics-cli 1.6.9 → 1.7.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.
@@ -114,24 +114,62 @@ function generateFromDDDContexts(adrs, domainModel, sparc, query, simulationId)
114
114
  const sorted = [...contexts].sort((a, b) => (depthOf.get(a.name) ?? 0) - (depthOf.get(b.name) ?? 0));
115
115
  // Assign ADRs to their most relevant context
116
116
  const adrAssignment = assignADRsToContexts(adrs, contexts);
117
- const completedContexts = [];
118
- for (let i = 0; i < sorted.length; i++) {
119
- const ctx = sorted[i];
120
- const order = i + 1;
117
+ const completedSteps = [];
118
+ let stepCounter = 0;
119
+ // Phase 1: Per-context foundation prompts — each context gets a types + core logic prompt
120
+ for (const ctx of sorted) {
121
121
  const contextAdrs = adrAssignment.get(ctx.name) ?? [];
122
- // Find related service from SPARC
123
122
  const service = sparc?.architecture?.services?.find(s => s.name.toLowerCase() === ctx.name.toLowerCase());
124
- const content = buildContextPrompt(ctx, contextAdrs, service, query, completedContexts, sorted.length, order, simulationId);
123
+ stepCounter++;
124
+ const content = buildContextPrompt(ctx, contextAdrs, service, query, completedSteps, sorted.length, stepCounter, simulationId);
125
125
  prompts.push({
126
- id: `prompt-${String(order).padStart(3, '0')}`,
127
- title: `Build: ${ctx.name}`,
126
+ id: `prompt-${String(stepCounter).padStart(3, '0')}`,
127
+ title: `Build: ${ctx.name} — Domain Types & Core Logic`,
128
128
  boundedContext: ctx.name,
129
129
  relatedADRs: contextAdrs.map(a => a.id),
130
130
  content,
131
- dependencies: completedContexts.slice(),
132
- order,
131
+ dependencies: completedSteps.slice(),
132
+ order: stepCounter,
133
133
  });
134
- completedContexts.push(ctx.name);
134
+ completedSteps.push(ctx.name);
135
+ // Phase 2: Per-aggregate decomposition — contexts with multiple aggregates get
136
+ // one additional prompt per aggregate for detailed implementation
137
+ if (ctx.aggregates.length > 1) {
138
+ for (const agg of ctx.aggregates) {
139
+ stepCounter++;
140
+ const aggContent = buildAggregatePrompt(ctx, agg, contextAdrs, query, completedSteps, stepCounter, simulationId);
141
+ prompts.push({
142
+ id: `prompt-${String(stepCounter).padStart(3, '0')}`,
143
+ title: `Build: ${ctx.name} — ${agg.root} Aggregate`,
144
+ boundedContext: `${slugify(ctx.name)}-${slugify(agg.root)}`,
145
+ relatedADRs: contextAdrs.map(a => a.id),
146
+ content: aggContent,
147
+ dependencies: [ctx.name, ...completedSteps.filter(s => s !== ctx.name)],
148
+ order: stepCounter,
149
+ });
150
+ }
151
+ }
152
+ }
153
+ // Phase 3: Cross-cutting prompts for integration, observability, and API layer
154
+ const crossCuttingPrompts = buildCrossCuttingPrompts(sorted, adrs, sparc, query, completedSteps, stepCounter, simulationId);
155
+ for (const p of crossCuttingPrompts) {
156
+ stepCounter++;
157
+ prompts.push({ ...p, id: `prompt-${String(stepCounter).padStart(3, '0')}`, order: stepCounter });
158
+ }
159
+ // Ensure minimum 10 prompts by adding granular infrastructure prompts if needed
160
+ if (prompts.length < 10) {
161
+ const infraPrompts = buildInfrastructurePrompts(sorted, adrs, query, completedSteps, stepCounter, simulationId);
162
+ for (const p of infraPrompts) {
163
+ if (prompts.length >= 12)
164
+ break;
165
+ stepCounter++;
166
+ prompts.push({ ...p, id: `prompt-${String(stepCounter).padStart(3, '0')}`, order: stepCounter });
167
+ }
168
+ }
169
+ // Renumber all prompts sequentially
170
+ for (let i = 0; i < prompts.length; i++) {
171
+ prompts[i].order = i + 1;
172
+ prompts[i].id = `prompt-${String(i + 1).padStart(3, '0')}`;
135
173
  }
136
174
  return prompts;
137
175
  }
@@ -189,6 +227,252 @@ function generateFromADRsOnly(adrs, query, simulationId) {
189
227
  order,
190
228
  });
191
229
  }
230
+ // Ensure minimum 10 prompts by adding standard cross-cutting prompts
231
+ const standardExtras = [
232
+ { title: 'API Layer & Request Handling', bc: 'api-layer', content: '- REST API endpoints for core operations\n- Input validation (Zod or equivalent)\n- Authentication middleware\n- Structured error responses' },
233
+ { title: 'Observability & Structured Logging', bc: 'observability', content: '- Structured JSON logging with correlation IDs\n- Health check endpoints\n- Metrics collection (latency, errors, throughput)\n- Request/response tracing' },
234
+ { title: 'Configuration & Environment Management', bc: 'configuration', content: '- Environment-based config (dev/staging/prod)\n- Config validation at startup\n- Secret management via env vars\n- Typed config objects' },
235
+ { title: 'Persistence & Data Access', bc: 'persistence', content: '- Repository interfaces per aggregate\n- Database adapter implementations\n- Audit trail persistence (append-only)\n- Transaction management' },
236
+ { title: 'Deployment & Infrastructure', bc: 'deployment', content: '- Dockerfile with multi-stage build\n- Docker Compose for local dev\n- CI/CD pipeline configuration\n- Health check integration' },
237
+ ];
238
+ for (const extra of standardExtras) {
239
+ if (prompts.length >= 12)
240
+ break;
241
+ // Skip if a cluster already covers this topic
242
+ if (prompts.some(p => p.boundedContext === extra.bc))
243
+ continue;
244
+ const order = prompts.length + 1;
245
+ prompts.push({
246
+ id: `prompt-${String(order).padStart(3, '0')}`,
247
+ title: `Build: ${extra.title}`,
248
+ boundedContext: extra.bc,
249
+ relatedADRs: [],
250
+ content: [
251
+ `# Build Step ${order}: ${extra.title}`,
252
+ '',
253
+ '**The implementation must be production ready, enterprise grade, commercially viable, bug and error free, without compilation errors.**',
254
+ '',
255
+ '## Project Objective', '', query.slice(0, 400), '',
256
+ simulationId ? `## Simulation Lineage\n\nOriginating simulation: \`${simulationId}\`\n` : '',
257
+ '## Requirements', '', extra.content, '',
258
+ '- Use London School TDD: write failing test first, then minimal implementation',
259
+ '- No stubs or placeholders — every function must have real logic',
260
+ '',
261
+ ].filter(Boolean).join('\n'),
262
+ dependencies: clusters.map(c => c.name),
263
+ order,
264
+ });
265
+ }
266
+ // Renumber all prompts sequentially
267
+ for (let i = 0; i < prompts.length; i++) {
268
+ prompts[i].order = i + 1;
269
+ prompts[i].id = `prompt-${String(i + 1).padStart(3, '0')}`;
270
+ }
271
+ return prompts;
272
+ }
273
+ // ============================================================================
274
+ // Per-Aggregate Prompt Builder
275
+ // ============================================================================
276
+ function buildAggregatePrompt(ctx, agg, adrs, query, _completedSteps, order, simulationId) {
277
+ const lines = [
278
+ `# Build Step ${order}: ${ctx.name} — ${agg.root} Aggregate`,
279
+ '',
280
+ '**The implementation must be production ready, enterprise grade, commercially viable, bug and error free, without compilation errors.**',
281
+ '',
282
+ '## Project Objective', '',
283
+ query.slice(0, 400),
284
+ '',
285
+ ];
286
+ if (simulationId) {
287
+ lines.push('## Simulation Lineage', '', `Originating simulation: \`${simulationId}\``, '');
288
+ }
289
+ lines.push(`## Aggregate: ${agg.root}`, '');
290
+ lines.push(`Name: ${agg.name}`);
291
+ if (agg.entities.length > 0) {
292
+ lines.push('', '### Entities');
293
+ for (const e of agg.entities)
294
+ lines.push(`- **${e.name}**: ${e.description}`);
295
+ }
296
+ if (agg.valueObjects.length > 0) {
297
+ lines.push('', '### Value Objects');
298
+ for (const vo of agg.valueObjects) {
299
+ lines.push(`- **${vo.name}**: ${vo.description}`);
300
+ if (vo.invariants.length > 0)
301
+ lines.push(` Invariants: ${vo.invariants.join('; ')}`);
302
+ }
303
+ }
304
+ lines.push('');
305
+ // Filter ADRs relevant to this aggregate
306
+ const aggKeywords = [agg.root, agg.name, ...agg.entities.map(e => e.name)].map(k => k.toLowerCase());
307
+ const relevantAdrs = adrs.filter(a => {
308
+ const txt = `${a.title} ${a.decision}`.toLowerCase();
309
+ return aggKeywords.some(kw => txt.includes(kw.replace(/[^a-z]+/g, '')));
310
+ });
311
+ if (relevantAdrs.length > 0) {
312
+ lines.push('## Relevant Architecture Decisions', '');
313
+ for (const adr of relevantAdrs.slice(0, 3)) {
314
+ lines.push(`### ${adr.id}: ${adr.title}`, '', `**Decision:** ${adr.decision}`, '');
315
+ }
316
+ }
317
+ lines.push('## Implementation Requirements', '');
318
+ lines.push('- Use London School TDD: write failing test first, then minimal implementation');
319
+ lines.push('- Implement all entity validation, invariant enforcement, and domain event emission');
320
+ lines.push('- No stubs or placeholders — every function must have real logic');
321
+ lines.push(`- This aggregate is part of the ${ctx.name} bounded context — respect its boundaries`);
322
+ lines.push('');
323
+ return lines.join('\n');
324
+ }
325
+ // ============================================================================
326
+ // Cross-Cutting Prompt Builders
327
+ // ============================================================================
328
+ function buildCrossCuttingPrompts(contexts, adrs, _sparc, query, _completedSteps, _startOrder, simulationId) {
329
+ const prompts = [];
330
+ const contextNames = contexts.map(c => c.name);
331
+ const simLine = simulationId ? `\n## Simulation Lineage\n\nOriginating simulation: \`${simulationId}\`\n` : '';
332
+ // Integration / Context Map prompt
333
+ const integrationAdrs = adrs.filter(a => /integrat|erp|api|gateway|adapter|connect/i.test(`${a.title} ${a.decision}`));
334
+ prompts.push({
335
+ id: 'temp', title: 'Build: Integration Layer & Context Map',
336
+ boundedContext: 'integration-layer',
337
+ relatedADRs: integrationAdrs.map(a => a.id),
338
+ dependencies: contextNames,
339
+ order: 0,
340
+ content: [
341
+ '# Build Step: Integration Layer & Context Map',
342
+ '',
343
+ '**The implementation must be production ready, enterprise grade, commercially viable, bug and error free, without compilation errors.**',
344
+ '', '## Project Objective', '', query.slice(0, 400), '', simLine,
345
+ '## Scope', '',
346
+ 'Implement the integration layer that connects bounded contexts and external systems.',
347
+ `Bounded contexts to integrate: ${contextNames.join(', ')}`,
348
+ '',
349
+ '## Requirements', '',
350
+ '- Anti-corruption layers between contexts where needed',
351
+ '- Adapter interfaces for external system communication (ERP, APIs)',
352
+ '- Event translation between context-specific domain events',
353
+ '- Error handling and retry logic for cross-boundary communication',
354
+ '- Use London School TDD',
355
+ '',
356
+ integrationAdrs.length > 0 ? `## Relevant ADRs\n\n${integrationAdrs.slice(0, 4).map(a => `### ${a.id}: ${a.title}\n**Decision:** ${a.decision}`).join('\n\n')}\n` : '',
357
+ ].filter(Boolean).join('\n'),
358
+ });
359
+ // Observability prompt
360
+ prompts.push({
361
+ id: 'temp', title: 'Build: Observability & Structured Logging',
362
+ boundedContext: 'observability',
363
+ relatedADRs: [],
364
+ dependencies: contextNames,
365
+ order: 0,
366
+ content: [
367
+ '# Build Step: Observability & Structured Logging',
368
+ '',
369
+ '**The implementation must be production ready, enterprise grade, commercially viable, bug and error free, without compilation errors.**',
370
+ '', '## Project Objective', '', query.slice(0, 400), '', simLine,
371
+ '## Scope', '',
372
+ 'Implement structured logging, health checks, and metrics collection across all services.',
373
+ '',
374
+ '## Requirements', '',
375
+ '- Structured JSON logging with correlation IDs across all service calls',
376
+ '- Health check endpoint for each service',
377
+ '- Metrics collection for key operations (latency, error rate, throughput)',
378
+ '- Log levels: ERROR, WARN, INFO, DEBUG',
379
+ '- Request/response tracing across bounded context boundaries',
380
+ '- Use London School TDD',
381
+ '',
382
+ ].join('\n'),
383
+ });
384
+ // Configuration & environment prompt
385
+ prompts.push({
386
+ id: 'temp', title: 'Build: Configuration & Environment Management',
387
+ boundedContext: 'configuration',
388
+ relatedADRs: [],
389
+ dependencies: [],
390
+ order: 0,
391
+ content: [
392
+ '# Build Step: Configuration & Environment Management',
393
+ '',
394
+ '**The implementation must be production ready, enterprise grade, commercially viable, bug and error free, without compilation errors.**',
395
+ '', '## Project Objective', '', query.slice(0, 400), '', simLine,
396
+ '## Scope', '',
397
+ 'Implement environment-based configuration management for all services.',
398
+ '',
399
+ '## Requirements', '',
400
+ '- Environment-based config (dev, staging, production) via environment variables',
401
+ '- Config validation at startup with clear error messages for missing values',
402
+ '- Secret management (API keys, credentials) via environment variables — never hardcoded',
403
+ '- Typed configuration objects with runtime validation',
404
+ '- Use London School TDD',
405
+ '',
406
+ ].join('\n'),
407
+ });
408
+ return prompts;
409
+ }
410
+ function buildInfrastructurePrompts(contexts, adrs, query, _completedSteps, _startOrder, simulationId) {
411
+ const prompts = [];
412
+ const simLine = simulationId ? `\n## Simulation Lineage\n\nOriginating simulation: \`${simulationId}\`\n` : '';
413
+ const contextNames = contexts.map(c => c.name);
414
+ // API / REST layer
415
+ prompts.push({
416
+ id: 'temp', title: 'Build: API Layer & Request Handling',
417
+ boundedContext: 'api-layer',
418
+ relatedADRs: [],
419
+ dependencies: contextNames,
420
+ order: 0,
421
+ content: [
422
+ '# Build Step: API Layer & Request Handling',
423
+ '', '**The implementation must be production ready.**',
424
+ '', '## Project Objective', '', query.slice(0, 300), '', simLine,
425
+ '## Requirements', '',
426
+ '- REST API endpoints exposing core domain operations',
427
+ '- Input validation at API boundary (Zod or equivalent)',
428
+ '- Authentication and authorization middleware',
429
+ '- Error serialization (structured error responses)',
430
+ '- Use London School TDD',
431
+ '',
432
+ ].join('\n'),
433
+ });
434
+ // Persistence layer
435
+ const persistAdrs = adrs.filter(a => /persist|storage|database|audit|immutab/i.test(`${a.title} ${a.decision}`));
436
+ prompts.push({
437
+ id: 'temp', title: 'Build: Persistence & Data Access Layer',
438
+ boundedContext: 'persistence',
439
+ relatedADRs: persistAdrs.map(a => a.id),
440
+ dependencies: contextNames,
441
+ order: 0,
442
+ content: [
443
+ '# Build Step: Persistence & Data Access Layer',
444
+ '', '**The implementation must be production ready.**',
445
+ '', '## Project Objective', '', query.slice(0, 300), '', simLine,
446
+ '## Requirements', '',
447
+ '- Repository interfaces per aggregate (ports)',
448
+ '- Database adapter implementations',
449
+ '- Audit trail persistence (append-only, tamper-evident)',
450
+ '- Transaction management for multi-aggregate operations',
451
+ '- Use London School TDD',
452
+ '',
453
+ persistAdrs.length > 0 ? `## Relevant ADRs\n\n${persistAdrs.slice(0, 3).map(a => `### ${a.id}: ${a.title}\n**Decision:** ${a.decision}`).join('\n\n')}\n` : '',
454
+ ].filter(Boolean).join('\n'),
455
+ });
456
+ // Deployment / Docker
457
+ prompts.push({
458
+ id: 'temp', title: 'Build: Deployment & Infrastructure',
459
+ boundedContext: 'deployment',
460
+ relatedADRs: [],
461
+ dependencies: [...contextNames, 'api-layer', 'configuration'],
462
+ order: 0,
463
+ content: [
464
+ '# Build Step: Deployment & Infrastructure',
465
+ '', '**The implementation must be production ready.**',
466
+ '', '## Project Objective', '', query.slice(0, 300), '', simLine,
467
+ '## Requirements', '',
468
+ '- Dockerfile with multi-stage build',
469
+ '- Docker Compose for local development',
470
+ '- CI/CD pipeline configuration',
471
+ '- Health check integration',
472
+ '- Environment variable documentation',
473
+ '',
474
+ ].join('\n'),
475
+ });
192
476
  return prompts;
193
477
  }
194
478
  // ============================================================================
@@ -247,29 +531,55 @@ function assignADRsToContexts(adrs, contexts) {
247
531
  return assignment;
248
532
  }
249
533
  function clusterADRs(adrs) {
250
- if (adrs.length <= 3) {
251
- return [{ name: adrs.map(a => a.title.split(':')[0]?.trim() ?? a.title).slice(0, 2).join(' + '), adrs }];
534
+ if (adrs.length === 0) {
535
+ return [{ name: 'Implementation', adrs: [] }];
252
536
  }
253
- // Cluster by SPARC section refs or by title keyword groups
254
- const domainAdrs = adrs.filter(a => /domain|model|entity|aggregate/i.test(a.title));
255
- const algoAdrs = adrs.filter(a => /scor|algo|optim|simul|weight|rank|routing|threshold|estimat|emission|factor/i.test(a.title));
256
- const infraAdrs = adrs.filter(a => /erp|persist|deploy|security|compliance|performance/i.test(a.title));
257
- const remaining = adrs.filter(a => !domainAdrs.includes(a) && !algoAdrs.includes(a) && !infraAdrs.includes(a));
537
+ // Fine-grained clustering with 8+ categories for better prompt decomposition
538
+ const clusterDefs = [
539
+ { name: 'Domain Model & Types', pattern: /domain|model|entity|aggregate|type|schema|value.?object/i },
540
+ { name: 'Core Algorithms & Scoring', pattern: /scor|algo|optim|weight|rank|threshold|estimat|calculat|formula/i },
541
+ { name: 'Data Ingestion & Processing', pattern: /ingest|pipeline|import|transform|normaliz|parse|extract|data.?flow/i },
542
+ { name: 'ERP & External Integration', pattern: /erp|maximo|sap|oslc|api|gateway|adapter|connect|webhook|integrat/i },
543
+ { name: 'Governance & Audit Trail', pattern: /govern|audit|approv|complian|regulat|trail|immutab|tamper/i },
544
+ { name: 'Security & Access Control', pattern: /secur|auth|rbac|role|permiss|encrypt|credential|iam/i },
545
+ { name: 'Persistence & Storage', pattern: /persist|storage|database|repositor|cache|retention|backup/i },
546
+ { name: 'Simulation & Scenario Engine', pattern: /simul|scenario|what.?if|forecast|predict|compar/i },
547
+ { name: 'Observability & Monitoring', pattern: /observ|monitor|log|metric|health|trace|alert|dashboard/i },
548
+ { name: 'Deployment & Infrastructure', pattern: /deploy|infra|docker|ci.?cd|environment|config|scale|perform/i },
549
+ ];
550
+ const assigned = new Set();
258
551
  const clusters = [];
259
- if (domainAdrs.length > 0)
260
- clusters.push({ name: 'Domain Model & Bounded Contexts', adrs: domainAdrs });
261
- if (algoAdrs.length > 0)
262
- clusters.push({ name: 'Core Algorithms & Business Logic', adrs: algoAdrs });
263
- if (infraAdrs.length > 0)
264
- clusters.push({ name: 'Infrastructure & Integration', adrs: infraAdrs });
552
+ for (const def of clusterDefs) {
553
+ const matching = adrs.filter(a => !assigned.has(a) && def.pattern.test(`${a.title} ${a.context} ${a.decision}`));
554
+ if (matching.length > 0) {
555
+ clusters.push({ name: def.name, adrs: matching });
556
+ for (const a of matching)
557
+ assigned.add(a);
558
+ }
559
+ }
560
+ // Remaining ADRs get their own cluster or distribute into smallest existing cluster
561
+ const remaining = adrs.filter(a => !assigned.has(a));
265
562
  if (remaining.length > 0) {
266
- if (clusters.length > 0) {
267
- clusters[clusters.length - 1].adrs.push(...remaining);
563
+ if (remaining.length >= 2) {
564
+ clusters.push({ name: 'Cross-Cutting Concerns', adrs: remaining });
565
+ }
566
+ else if (clusters.length > 0) {
567
+ const smallest = clusters.reduce((min, c) => c.adrs.length < min.adrs.length ? c : min, clusters[0]);
568
+ smallest.adrs.push(...remaining);
268
569
  }
269
570
  else {
270
571
  clusters.push({ name: 'Implementation', adrs: remaining });
271
572
  }
272
573
  }
574
+ // Ensure minimum cluster count by splitting large clusters
575
+ while (clusters.length < 5 && clusters.some(c => c.adrs.length >= 3)) {
576
+ const largest = clusters.reduce((max, c) => c.adrs.length > max.adrs.length ? c : max, clusters[0]);
577
+ if (largest.adrs.length < 3)
578
+ break;
579
+ const mid = Math.ceil(largest.adrs.length / 2);
580
+ const split = largest.adrs.splice(mid);
581
+ clusters.push({ name: `${largest.name} — Advanced`, adrs: split });
582
+ }
273
583
  return clusters;
274
584
  }
275
585
  function buildContextPrompt(ctx, adrs, service, query, completedContexts, totalSteps, order, simulationId) {
@@ -1 +1 @@
1
- {"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../../../src/pipeline/phase2/phases/prompt-generator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAUlC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAEhE,MAAM,QAAQ,GAAG,KAAK,CAAC;AACvB,MAAM,SAAS,GAAG,KAAK,CAAC;AACxB,MAAM,cAAc,GAAG,SAAS,CAAC;AAgBjC,+EAA+E;AAC/E,8BAA8B;AAC9B,+EAA+E;AAE/E,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,OAAsB;IAEtB,MAAM,QAAQ,GAAG,UAAU,CAAC,mBAAmB,EAAE,kBAAkB,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAEvG,IAAI,CAAC;QACH,6BAA6B;QAC7B,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QACD,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAyB,CAAC;QAEhD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,0EAA0E,CAAC,CAAC;QAC9F,CAAC;QAED,kCAAkC;QAClC,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QAC5D,MAAM,WAAW,GAAG,QAAQ,EAAE,MAAM,KAAK,WAAW;YAClD,CAAC,CAAC,QAAQ,CAAC,IAAyB;YACpC,CAAC,CAAC,IAAI,CAAC;QAET,qCAAqC;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,UAAU,EAAE,MAAM,KAAK,WAAW;YAC9C,CAAC,CAAC,UAAU,CAAC,IAAyB;YACtC,CAAC,CAAC,IAAI,CAAC;QAET,mCAAmC;QACnC,MAAM,KAAK,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK;eAChD,OAAO,CAAC,eAAe,EAAE,QAA+C,EAAE,CAAC,OAAO,CAAW;eAC9F,EAAE,CAAC;QAER,oCAAoC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE,YAAY;eAC/D,OAAO,CAAC,eAAe,EAAE,QAAQ,EAAE,MAAM;eACzC,EAAE,CAAC;QAER,mBAAmB;QACnB,MAAM,OAAO,GAAG,WAAW,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC5D,CAAC,CAAC,uBAAuB,CAAC,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC;YACxE,CAAC,CAAC,oBAAoB,CAAC,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAEpD,qBAAqB;QACrB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;QAChE,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,QAAQ,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC;YACtG,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;YACjD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACnF,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9B,CAAC;QAED,uBAAuB;QACvB,MAAM,IAAI,GAAG;YACX,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,cAAc,EAAE,CAAC,CAAC,cAAc,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,CAAC;YACrK,UAAU,EAAE,OAAO,CAAC,MAAM;YAC1B,YAAY,EAAE,YAAY,IAAI,SAAS;SACxC,CAAC;QACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;QAC9D,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QACzG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAE5B,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;QACzD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAG,QAAQ,CAAC,UAAU,IAAI,CAAC,CAAC;QACxC,MAAM,MAAM,GAAsB;YAChC,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,WAAW;YACnB,IAAI,EAAE,IAAI;YACV,SAAS,EAAE,YAAY;YACvB,MAAM;YACN,OAAO,EAAE,iBAAiB,OAAO,CAAC,MAAM,4BAA4B,YAAY,CAAC,MAAM,GAAG,CAAC,+BAA+B;SAC3H,CAAC;QAEF,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,MAAM,YAAY,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACtE,OAAO,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnB,MAAM,MAAM,GAAsB;YAChC,KAAK,EAAE,mBAAmB;YAC1B,MAAM,EAAE,QAAQ;YAChB,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;YAC7B,SAAS,EAAE,EAAE;YACb,MAAM,EAAE,QAAQ,CAAC,UAAU,IAAI,CAAC;YAChC,OAAO,EAAE,6BAA6B,YAAY,EAAE;SACrD,CAAC;QACF,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;QACtD,OAAO,MAAM,CAAC;IAChB,CAAC;AACH,CAAC;AAED,+EAA+E;AAC/E,gDAAgD;AAChD,+EAA+E;AAE/E,SAAS,uBAAuB,CAC9B,IAAuB,EACvB,WAA8B,EAC9B,KAA+B,EAC/B,KAAa,EACb,YAAoB;IAEpB,MAAM,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,SAAS,GAAG,WAAW,CAAC,UAAU,IAAI,EAAE,CAAC;IAC/C,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,uCAAuC;IACvC,MAAM,OAAO,GAAG,oBAAoB,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAErG,6CAA6C;IAC7C,MAAM,aAAa,GAAG,oBAAoB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAE3D,MAAM,iBAAiB,GAAa,EAAE,CAAC;IAEvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAE,CAAC;QACvB,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,WAAW,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAEtD,kCAAkC;QAClC,MAAM,OAAO,GAAG,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,CACjD,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CACrD,CAAC;QAEF,MAAM,OAAO,GAAG,kBAAkB,CAAC,GAAG,EAAE,WAAW,EAAE,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;QAE5H,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YAC9C,KAAK,EAAE,UAAU,GAAG,CAAC,IAAI,EAAE;YAC3B,cAAc,EAAE,GAAG,CAAC,IAAI;YACxB,WAAW,EAAE,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO;YACP,YAAY,EAAE,iBAAiB,CAAC,KAAK,EAAE;YACvC,KAAK;SACN,CAAC,CAAC;QAEH,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,iEAAiE;AACjE,+EAA+E;AAE/E,SAAS,oBAAoB,CAC3B,IAAuB,EACvB,KAAa,EACb,YAAoB;IAEpB,MAAM,OAAO,GAA2B,EAAE,CAAC;IAE3C,yDAAyD;IACzD,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAE,CAAC;QAC7B,MAAM,KAAK,GAAG,CAAC,GAAG,CAAC,CAAC;QACpB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;QAEjC,MAAM,KAAK,GAAa;YACtB,gBAAgB,KAAK,OAAO,QAAQ,CAAC,MAAM,KAAK,WAAW,EAAE;YAC7D,EAAE;YACF,yIAAyI;YACzI,EAAE;YACF,sBAAsB;YACtB,EAAE;YACF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;YACnB,EAAE;SACH,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,6BAA6B,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7F,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAChC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7C,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;QAED,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;QAC7F,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;QAC/E,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;QAChF,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;QAC7E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEf,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,UAAU,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE;YAC9C,KAAK,EAAE,UAAU,WAAW,EAAE;YAC9B,cAAc,EAAE,OAAO,CAAC,WAAW,CAAC;YACpC,WAAW,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACxC,OAAO,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;YACzB,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YACnD,KAAK;SACN,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,+EAA+E;AAC/E,UAAU;AACV,+EAA+E;AAE/E,SAAS,OAAO,CAAC,IAAY;IAC3B,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,oBAAoB,CAC3B,QAA4C,EAC5C,SAA4E;IAE5E,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAuB,CAAC;IAE5C,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAChC,CAAC;IACD,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,OAAO,CAAC,IAAY,EAAE,OAAoB;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACjD,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;QACtC,MAAM,KAAK,GAAG,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC;QACpF,MAAM,KAAK,GAAG,KAAK,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAuB,EACvB,QAA4C;IAE5C,MAAM,UAAU,GAAG,IAAI,GAAG,EAA6B,CAAC;IACxD,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC3B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,OAAO,GAAG,GAAG,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;QAC5E,IAAI,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;QACtC,IAAI,SAAS,GAAG,CAAC,CAAC;QAElB,KAAK,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YACnF,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YACjE,IAAI,KAAK,GAAG,SAAS,EAAE,CAAC;gBACtB,SAAS,GAAG,KAAK,CAAC;gBAClB,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,OAAO,EAAE,CAAC;YACZ,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAOD,SAAS,WAAW,CAAC,IAAuB;IAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3G,CAAC;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,gCAAgC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,8EAA8E,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAChI,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,qDAAqD,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IACxG,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAE/G,MAAM,QAAQ,GAAiB,EAAE,CAAC;IAClC,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,iCAAiC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;IACxG,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,kCAAkC,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC;IACrG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC;QAAE,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,8BAA8B,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;IACnG,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CACzB,GAA4B,EAC5B,IAAuB,EACvB,OAAoG,EACpG,KAAa,EACb,iBAA2B,EAC3B,UAAkB,EAClB,KAAa,EACb,YAAoB;IAEpB,MAAM,KAAK,GAAa;QACtB,gBAAgB,KAAK,OAAO,UAAU,KAAK,GAAG,CAAC,IAAI,EAAE;QACrD,EAAE;QACF,yIAAyI;QACzI,EAAE;QACF,sBAAsB;QACtB,EAAE;QACF,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;QACnB,EAAE;KACH,CAAC;IAEF,IAAI,YAAY,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,uBAAuB,EAAE,EAAE,EAAE,6BAA6B,YAAY,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7F,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,sCAAsC,EAAE,EAAE,CAAC,CAAC;QACvD,KAAK,MAAM,IAAI,IAAI,iBAAiB,EAAE,CAAC;YACrC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,6BAA6B;IAC7B,KAAK,CAAC,IAAI,CAAC,uBAAuB,GAAG,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;IAClD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAEhC,IAAI,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC9B,KAAK,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,wBAAwB,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5D,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC1B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,QAAQ;oBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9E,CAAC;YACD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC/B,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBAClC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;oBAChD,IAAI,EAAE,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC7B,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAC5D,CAAC;gBACH,CAAC;YACH,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,CAAC;IACH,CAAC;IAED,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,EAAE,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,OAAO,EAAE,CAAC,WAAW,cAAc,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACxF,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;QAC/B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACtD,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,wBAAwB;IACxB,IAAI,OAAO,EAAE,CAAC;QACZ,KAAK,CAAC,IAAI,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,mBAAmB,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC;QACxD,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,IAAI,OAAO,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,CAAC,kDAAkD,EAAE,EAAE,CAAC,CAAC;QACnE,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,OAAO,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,gBAAgB,GAAG,CAAC,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAC9C,KAAK,CAAC,IAAI,CAAC,iBAAiB,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;YAChD,IAAI,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAChC,KAAK,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;gBAChC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;oBACjC,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC7E,KAAK,CAAC,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC7C,CAAC;gBACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,gCAAgC,EAAE,EAAE,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAC7F,KAAK,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC/E,KAAK,CAAC,IAAI,CAAC,mEAAmE,CAAC,CAAC;IAChF,KAAK,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC7E,KAAK,CAAC,IAAI,CAAC,2EAA2E,CAAC,CAAC;IACxF,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAEf,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"prompt-generator.js","sourceRoot":"","sources":["../../../../src/pipeline/phase2/phases/prompt-generator.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"phase4-adrs-coordinator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phase4-adrs/phase4-adrs-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAkB,MAAM,YAAY,CAAC;AA4H5F;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,uBAAuB,CAAC,CA0SlC"}
1
+ {"version":3,"file":"phase4-adrs-coordinator.d.ts","sourceRoot":"","sources":["../../../src/pipeline/phase4-adrs/phase4-adrs-coordinator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAKH,OAAO,KAAK,EAAE,gBAAgB,EAAE,uBAAuB,EAAkB,MAAM,YAAY,CAAC;AA6H5F;;;;;;;;;GASG;AACH,wBAAsB,wBAAwB,CAC5C,OAAO,EAAE,gBAAgB,GACxB,OAAO,CAAC,uBAAuB,CAAC,CAuXlC"}
@@ -259,7 +259,9 @@ export async function executePhase4ADRPipeline(context) {
259
259
  const sparc = sparcStage?.data;
260
260
  const dossier = dossierStage?.data;
261
261
  if (sparc && dossier) {
262
- const adrs = buildPhase2ADRs(sparc, dossier);
262
+ // Pass the original query so ADR generation can produce domain-specific decisions
263
+ const query = phase1Artifacts?.scenario?.query ?? phase1Artifacts?.manifest?.query ?? '';
264
+ const adrs = buildPhase2ADRs(sparc, dossier, query);
263
265
  // Write ADR files to phase4 output directory
264
266
  const adrDir = path.join(context.phase4Dir, 'adrs');
265
267
  fs.mkdirSync(adrDir, { recursive: true });
@@ -321,6 +323,7 @@ export async function executePhase4ADRPipeline(context) {
321
323
  }
322
324
  catch (err) {
323
325
  const errMsg = err instanceof Error ? err.message : String(err);
326
+ process.stderr.write(`[phase4-ddd] LLM generation failed (${errMsg}), using template fallback\n`);
324
327
  dddOutput = {
325
328
  stage: 'ddd-generation',
326
329
  status: 'failed',
@@ -330,6 +333,72 @@ export async function executePhase4ADRPipeline(context) {
330
333
  summary: ` ERROR: ${errMsg}`,
331
334
  };
332
335
  }
336
+ // Robust fallback: if DDD generation failed or produced 0 artifacts,
337
+ // generate DDD directly from SPARC + ADRs + dossier using the template builder.
338
+ if (dddOutput.status === 'failed' || dddOutput.artifacts.length === 0) {
339
+ process.stderr.write('[phase4-ddd] Generating DDD from SPARC template (no LLM required)\n');
340
+ try {
341
+ const sparcStage = context.stageOutputs.get('sparc-specification');
342
+ const dossierStage = context.stageOutputs.get('research-dossier');
343
+ const sparc = sparcStage?.data;
344
+ const dossier = dossierStage?.data;
345
+ const adrsData = (adrOutput.data ?? []);
346
+ if (sparc && dossier) {
347
+ const { buildPhase2DDD } = await import('../phase2/phases/ddd-generator.js');
348
+ const dddModel = buildPhase2DDD(sparc, Array.isArray(adrsData) ? adrsData : [], dossier);
349
+ // Write DDD files to phase4 output directory
350
+ const dddDir = path.join(context.phase4Dir, 'ddd');
351
+ const contextsDir = path.join(dddDir, 'contexts');
352
+ fs.mkdirSync(contextsDir, { recursive: true });
353
+ const writtenPaths = [];
354
+ // Write domain model
355
+ const modelPath = path.join(dddDir, 'domain-model.json');
356
+ fs.writeFileSync(modelPath, JSON.stringify(dddModel, null, 2) + '\n', { encoding: 'utf-8', mode: 0o644 });
357
+ writtenPaths.push(modelPath);
358
+ // Write context map
359
+ if (dddModel.contextMap) {
360
+ const mapPath = path.join(dddDir, 'context-map.json');
361
+ fs.writeFileSync(mapPath, JSON.stringify(dddModel.contextMap, null, 2) + '\n', { encoding: 'utf-8', mode: 0o644 });
362
+ writtenPaths.push(mapPath);
363
+ }
364
+ // Write per-context files
365
+ for (const ctx of dddModel.contexts ?? []) {
366
+ const slug = ctx.name.toLowerCase().replace(/[^a-z0-9]+/g, '-').slice(0, 60);
367
+ const ctxPath = path.join(contextsDir, `${slug}.json`);
368
+ fs.writeFileSync(ctxPath, JSON.stringify(ctx, null, 2) + '\n', { encoding: 'utf-8', mode: 0o644 });
369
+ writtenPaths.push(ctxPath);
370
+ }
371
+ // Write markdown summary
372
+ const mdPath = path.join(dddDir, 'DDD-Model.md');
373
+ const mdLines = [
374
+ '# Domain-Driven Design Model',
375
+ '',
376
+ `**Bounded Contexts:** ${(dddModel.contexts ?? []).length}`,
377
+ '',
378
+ ];
379
+ for (const ctx of dddModel.contexts ?? []) {
380
+ mdLines.push(`## ${ctx.name}`, '', ctx.description, '');
381
+ for (const agg of ctx.aggregates ?? []) {
382
+ mdLines.push(`### Aggregate: ${agg.root}`, '', `Name: ${agg.name}`, '');
383
+ }
384
+ }
385
+ fs.writeFileSync(mdPath, mdLines.join('\n') + '\n', { encoding: 'utf-8', mode: 0o644 });
386
+ writtenPaths.push(mdPath);
387
+ process.stderr.write(`[phase4-ddd] Template fallback produced DDD model (${(dddModel.contexts ?? []).length} contexts, ${writtenPaths.length} files)\n`);
388
+ dddOutput = {
389
+ stage: 'ddd-generation',
390
+ status: 'completed',
391
+ data: dddModel,
392
+ artifacts: writtenPaths,
393
+ timing: 0,
394
+ summary: ` DDD (template): ${(dddModel.contexts ?? []).length} bounded contexts (${writtenPaths.length} files)`,
395
+ };
396
+ }
397
+ }
398
+ catch (fallbackErr) {
399
+ process.stderr.write(`[phase4-ddd] Template fallback also failed: ${fallbackErr instanceof Error ? fallbackErr.message : String(fallbackErr)}\n`);
400
+ }
401
+ }
333
402
  const finalDddSpan = endSpan(dddSpan, dddOutput.status === 'completed' ? 'ok' : 'error', {
334
403
  artifactCount: dddOutput.artifacts.length,
335
404
  });