@llm-dev-ops/agentics-cli 1.5.9 → 1.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +478 -148
- package/dist/bundled-agents/manifest.json +1 -0
- package/dist/commands/phase4.d.ts.map +1 -1
- package/dist/commands/phase4.js +4 -2
- package/dist/commands/phase4.js.map +1 -1
- package/dist/commands/phase6.d.ts.map +1 -1
- package/dist/commands/phase6.js +4 -2
- package/dist/commands/phase6.js.map +1 -1
- package/dist/mcp/mcp-server.js +11 -10
- package/dist/mcp/mcp-server.js.map +1 -1
- package/dist/pipeline/auto-chain.d.ts +5 -0
- package/dist/pipeline/auto-chain.d.ts.map +1 -1
- package/dist/pipeline/auto-chain.js +131 -47
- package/dist/pipeline/auto-chain.js.map +1 -1
- package/dist/pipeline/enterprise/artifact-assembler.d.ts +64 -0
- package/dist/pipeline/enterprise/artifact-assembler.d.ts.map +1 -0
- package/dist/pipeline/enterprise/artifact-assembler.js +542 -0
- package/dist/pipeline/enterprise/artifact-assembler.js.map +1 -0
- package/dist/pipeline/enterprise/artifact-renderers.d.ts +42 -0
- package/dist/pipeline/enterprise/artifact-renderers.d.ts.map +1 -0
- package/dist/pipeline/enterprise/artifact-renderers.js +513 -0
- package/dist/pipeline/enterprise/artifact-renderers.js.map +1 -0
- package/dist/pipeline/enterprise/code-resolver.d.ts +43 -0
- package/dist/pipeline/enterprise/code-resolver.d.ts.map +1 -0
- package/dist/pipeline/enterprise/code-resolver.js +219 -0
- package/dist/pipeline/enterprise/code-resolver.js.map +1 -0
- package/dist/pipeline/enterprise/decision-graph-client.d.ts +171 -0
- package/dist/pipeline/enterprise/decision-graph-client.d.ts.map +1 -0
- package/dist/pipeline/enterprise/decision-graph-client.js +222 -0
- package/dist/pipeline/enterprise/decision-graph-client.js.map +1 -0
- package/dist/pipeline/enterprise/decision-graph-memory.d.ts +104 -0
- package/dist/pipeline/enterprise/decision-graph-memory.d.ts.map +1 -0
- package/dist/pipeline/enterprise/decision-graph-memory.js +292 -0
- package/dist/pipeline/enterprise/decision-graph-memory.js.map +1 -0
- package/dist/pipeline/enterprise/decision-graph.d.ts +237 -0
- package/dist/pipeline/enterprise/decision-graph.d.ts.map +1 -0
- package/dist/pipeline/enterprise/decision-graph.js +654 -0
- package/dist/pipeline/enterprise/decision-graph.js.map +1 -0
- package/dist/pipeline/enterprise/index.d.ts +40 -0
- package/dist/pipeline/enterprise/index.d.ts.map +1 -0
- package/dist/pipeline/enterprise/index.js +43 -0
- package/dist/pipeline/enterprise/index.js.map +1 -0
- package/dist/pipeline/enterprise/pass-executor.d.ts +33 -0
- package/dist/pipeline/enterprise/pass-executor.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass-executor.js +459 -0
- package/dist/pipeline/enterprise/pass-executor.js.map +1 -0
- package/dist/pipeline/enterprise/pass-registry.d.ts +19 -0
- package/dist/pipeline/enterprise/pass-registry.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass-registry.js +243 -0
- package/dist/pipeline/enterprise/pass-registry.js.map +1 -0
- package/dist/pipeline/enterprise/pass2-simulation.d.ts +130 -0
- package/dist/pipeline/enterprise/pass2-simulation.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass2-simulation.js +691 -0
- package/dist/pipeline/enterprise/pass2-simulation.js.map +1 -0
- package/dist/pipeline/enterprise/pass4-governance.d.ts +195 -0
- package/dist/pipeline/enterprise/pass4-governance.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass4-governance.js +748 -0
- package/dist/pipeline/enterprise/pass4-governance.js.map +1 -0
- package/dist/pipeline/enterprise/pass5-decision.d.ts +90 -0
- package/dist/pipeline/enterprise/pass5-decision.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass5-decision.js +487 -0
- package/dist/pipeline/enterprise/pass5-decision.js.map +1 -0
- package/dist/pipeline/enterprise/pass7-observability.d.ts +198 -0
- package/dist/pipeline/enterprise/pass7-observability.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pass7-observability.js +636 -0
- package/dist/pipeline/enterprise/pass7-observability.js.map +1 -0
- package/dist/pipeline/enterprise/pipeline-orchestrator.d.ts +29 -0
- package/dist/pipeline/enterprise/pipeline-orchestrator.d.ts.map +1 -0
- package/dist/pipeline/enterprise/pipeline-orchestrator.js +283 -0
- package/dist/pipeline/enterprise/pipeline-orchestrator.js.map +1 -0
- package/dist/pipeline/enterprise/provenance-tracker.d.ts +135 -0
- package/dist/pipeline/enterprise/provenance-tracker.d.ts.map +1 -0
- package/dist/pipeline/enterprise/provenance-tracker.js +437 -0
- package/dist/pipeline/enterprise/provenance-tracker.js.map +1 -0
- package/dist/pipeline/enterprise/trace-middleware.d.ts +37 -0
- package/dist/pipeline/enterprise/trace-middleware.d.ts.map +1 -0
- package/dist/pipeline/enterprise/trace-middleware.js +188 -0
- package/dist/pipeline/enterprise/trace-middleware.js.map +1 -0
- package/dist/pipeline/enterprise/types.d.ts +199 -0
- package/dist/pipeline/enterprise/types.d.ts.map +1 -0
- package/dist/pipeline/enterprise/types.js +30 -0
- package/dist/pipeline/enterprise/types.js.map +1 -0
- package/dist/pipeline/phase2/phases/adr-generator.d.ts.map +1 -1
- package/dist/pipeline/phase2/phases/adr-generator.js +56 -8
- package/dist/pipeline/phase2/phases/adr-generator.js.map +1 -1
- package/dist/pipeline/phase3/phases/test-generator.d.ts.map +1 -1
- package/dist/pipeline/phase3/phases/test-generator.js +53 -0
- package/dist/pipeline/phase3/phases/test-generator.js.map +1 -1
- package/dist/pipeline/phase4/phases/deployment-generator.d.ts.map +1 -1
- package/dist/pipeline/phase4/phases/deployment-generator.js +147 -0
- package/dist/pipeline/phase4/phases/deployment-generator.js.map +1 -1
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.d.ts.map +1 -1
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.js +52 -1
- package/dist/pipeline/phase4-adrs/phase4-adrs-coordinator.js.map +1 -1
- package/dist/pipeline/phase6/phases/deployment-finalizer.d.ts.map +1 -1
- package/dist/pipeline/phase6/phases/deployment-finalizer.js +226 -0
- package/dist/pipeline/phase6/phases/deployment-finalizer.js.map +1 -1
- package/dist/pipeline/phase6/phases/service-registrar.d.ts +1 -1
- package/dist/pipeline/phase6/phases/service-registrar.d.ts.map +1 -1
- package/dist/pipeline/phase6/phases/service-registrar.js +47 -7
- package/dist/pipeline/phase6/phases/service-registrar.js.map +1 -1
- package/dist/pipeline/swarm-orchestrator.d.ts.map +1 -1
- package/dist/pipeline/swarm-orchestrator.js +47 -19
- package/dist/pipeline/swarm-orchestrator.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,542 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Assembler — Deterministic Enterprise Decision Package (ADR-034)
|
|
3
|
+
*
|
|
4
|
+
* Assembles the 15 deterministic enterprise artifacts from DecisionGraph
|
|
5
|
+
* nodes using per-artifact structured renderers. Writes:
|
|
6
|
+
* 1. Individual .md files (one per artifact)
|
|
7
|
+
* 2. DecisionGraph nodes (each artifact stored as a graph node)
|
|
8
|
+
* 3. DECISION_PACKAGE.md index with links and status
|
|
9
|
+
*
|
|
10
|
+
* Handles partial pipelines and degraded artifacts per the ADR spec.
|
|
11
|
+
*/
|
|
12
|
+
import * as fs from 'node:fs';
|
|
13
|
+
import * as path from 'node:path';
|
|
14
|
+
import { ARTIFACT_RENDERERS } from './artifact-renderers.js';
|
|
15
|
+
export const ARTIFACT_DEFINITIONS = [
|
|
16
|
+
{
|
|
17
|
+
number: 1, name: 'Executive Decision Memo', filename: '01-executive-decision-memo.md',
|
|
18
|
+
producingPass: 5, producingAgent: 'Decision Memo Agent',
|
|
19
|
+
consultingAnalogy: 'McKinsey decision document',
|
|
20
|
+
nodeTypes: ['executive_memo'],
|
|
21
|
+
requiredPasses: [5], graphNodeType: 'executive_memo',
|
|
22
|
+
qualityCriteria: 'Must reference specific outputs from Passes 2-4. No generic boilerplate.',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
number: 2, name: 'Executive Summary', filename: '02-executive-summary.md',
|
|
26
|
+
producingPass: 5, producingAgent: 'Executive Summary Agent',
|
|
27
|
+
consultingAnalogy: 'Board briefing document',
|
|
28
|
+
nodeTypes: ['executive_summary'],
|
|
29
|
+
requiredPasses: [5], graphNodeType: 'executive_summary',
|
|
30
|
+
qualityCriteria: 'Max 2 pages. Written for non-technical executive audience.',
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
number: 3, name: 'Architecture & Prototype Specification', filename: '03-architecture-prototype-spec.md',
|
|
34
|
+
producingPass: 3, producingAgent: 'Orchestrator + Forge Agents',
|
|
35
|
+
consultingAnalogy: 'Accenture technology blueprint',
|
|
36
|
+
nodeTypes: ['system_architecture', 'prototype', 'integration_map', 'service_boundary'],
|
|
37
|
+
requiredPasses: [3], graphNodeType: 'system_architecture',
|
|
38
|
+
qualityCriteria: 'Architecture must reflect detected ERP system and domain model. Prototype must have at least one functional endpoint.',
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
number: 4, name: 'Simulation & Scenario Analysis', filename: '04-simulation-scenario-analysis.md',
|
|
42
|
+
producingPass: 2, producingAgent: 'Simulator Agents',
|
|
43
|
+
consultingAnalogy: 'CGI scenario modeling report',
|
|
44
|
+
nodeTypes: ['scenario', 'reliability_report', 'risk_signal'],
|
|
45
|
+
requiredPasses: [2], graphNodeType: 'scenario',
|
|
46
|
+
qualityCriteria: '3+ distinct scenarios. Each scenario has quantified probability and impact.',
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
number: 5, name: 'Risk Assessment', filename: '05-risk-assessment.md',
|
|
50
|
+
producingPass: 5, producingAgent: 'Risk Scoring Agent',
|
|
51
|
+
consultingAnalogy: 'Deloitte risk register',
|
|
52
|
+
nodeTypes: ['risk_assessment', 'risk_signal'],
|
|
53
|
+
requiredPasses: [2, 4], graphNodeType: 'risk_assessment',
|
|
54
|
+
qualityCriteria: 'Risks sourced from Sentinel (Pass 2) and Shield/Policy (Pass 4). No invented risks.',
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
number: 6, name: 'CostOps Financial Model', filename: '06-costops-financial-model.md',
|
|
58
|
+
producingPass: 4, producingAgent: 'CostOps Agents',
|
|
59
|
+
consultingAnalogy: 'Capgemini TCO/ROI financial model',
|
|
60
|
+
nodeTypes: ['cost_model'],
|
|
61
|
+
requiredPasses: [4], graphNodeType: 'cost_model',
|
|
62
|
+
qualityCriteria: 'Costs derived from architecture (Pass 3) and simulation (Pass 2). ROI includes sensitivity analysis.',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
number: 7, name: 'Compliance & Policy Analysis', filename: '07-compliance-policy-analysis.md',
|
|
66
|
+
producingPass: 4, producingAgent: 'Shield + Policy Engine Agents',
|
|
67
|
+
consultingAnalogy: 'PwC regulatory assessment',
|
|
68
|
+
nodeTypes: ['compliance_report', 'policy_analysis', 'security_analysis'],
|
|
69
|
+
requiredPasses: [4], graphNodeType: 'compliance_report',
|
|
70
|
+
qualityCriteria: 'Regulatory frameworks detected from business context and geography, not hardcoded.',
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
number: 8, name: 'Implementation Roadmap', filename: '08-implementation-roadmap.md',
|
|
74
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
75
|
+
consultingAnalogy: 'Accenture delivery plan / Capgemini implementation roadmap',
|
|
76
|
+
nodeTypes: ['implementation_roadmap'],
|
|
77
|
+
requiredPasses: [3, 5], graphNodeType: 'implementation_roadmap',
|
|
78
|
+
qualityCriteria: 'Phases reference specific architecture components. Durations grounded in complexity analysis.',
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
number: 9, name: 'Organizational Impact Analysis', filename: '09-organizational-impact.md',
|
|
82
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
83
|
+
consultingAnalogy: 'McKinsey change management assessment',
|
|
84
|
+
nodeTypes: ['org_impact'],
|
|
85
|
+
requiredPasses: [3, 5], graphNodeType: 'org_impact',
|
|
86
|
+
qualityCriteria: 'Teams and processes derived from architecture and integration map, not generic templates.',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
number: 10, name: 'Stakeholder Map', filename: '10-stakeholder-map.md',
|
|
90
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
91
|
+
consultingAnalogy: 'RACI matrix / governance stakeholder map',
|
|
92
|
+
nodeTypes: ['stakeholder_map'],
|
|
93
|
+
requiredPasses: [1, 5], graphNodeType: 'stakeholder_map',
|
|
94
|
+
qualityCriteria: 'Roles mapped to actual organizational functions identified in the problem context.',
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
number: 11, name: 'Success Metrics & KPIs', filename: '11-success-metrics-kpis.md',
|
|
98
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
99
|
+
consultingAnalogy: 'Balanced scorecard / KPI framework',
|
|
100
|
+
nodeTypes: ['kpi_definition'],
|
|
101
|
+
requiredPasses: [4, 5], graphNodeType: 'kpi_definition',
|
|
102
|
+
qualityCriteria: 'KPIs linked to architecture components and CostOps projections. Baselines require current-state data or stated assumptions.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
number: 12, name: 'Decision Confidence Score', filename: '12-decision-confidence-score.md',
|
|
106
|
+
producingPass: 5, producingAgent: 'Decision + Risk Agents',
|
|
107
|
+
consultingAnalogy: 'Unique to Agentics',
|
|
108
|
+
nodeTypes: ['confidence_score'],
|
|
109
|
+
requiredPasses: [2, 3, 4, 5], graphNodeType: 'confidence_score',
|
|
110
|
+
qualityCriteria: 'Score computed from actual pass outputs, not estimated. Degraded passes explicitly reduce the score.',
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
number: 13, name: 'OKRs & Strategic Alignment', filename: '13-okrs-strategic-alignment.md',
|
|
114
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
115
|
+
consultingAnalogy: 'McKinsey/Capgemini strategic transformation deliverable',
|
|
116
|
+
nodeTypes: ['okr_alignment'],
|
|
117
|
+
requiredPasses: [1, 5], graphNodeType: 'okr_alignment',
|
|
118
|
+
qualityCriteria: 'Objectives derived from business context in Pass 1. Key results quantified and traceable to KPIs and CostOps.',
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
number: 14, name: 'RAID Log', filename: '14-raid-log.md',
|
|
122
|
+
producingPass: 5, producingAgent: 'Documentation Generator Agent',
|
|
123
|
+
consultingAnalogy: 'CGI/Accenture PMO standard deliverable',
|
|
124
|
+
nodeTypes: ['raid_log'],
|
|
125
|
+
requiredPasses: [2, 4, 5], graphNodeType: 'raid_log',
|
|
126
|
+
qualityCriteria: 'Every entry traced to a specific pipeline pass and agent output. Assumptions falsifiable. Dependencies have owners.',
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
number: 15, name: 'Agent & Code Provenance Manifest', filename: '15-provenance-manifest.md',
|
|
130
|
+
producingPass: 5, producingAgent: 'Pipeline Orchestrator (auto)',
|
|
131
|
+
consultingAnalogy: 'Engagement methodology & tools appendix',
|
|
132
|
+
nodeTypes: ['provenance_manifest'],
|
|
133
|
+
requiredPasses: [], graphNodeType: 'provenance_manifest',
|
|
134
|
+
qualityCriteria: 'Auto-generated from runtime tracing (ADR-039). Not manually authored.',
|
|
135
|
+
},
|
|
136
|
+
];
|
|
137
|
+
// ============================================================================
|
|
138
|
+
// Artifact Assembler
|
|
139
|
+
// ============================================================================
|
|
140
|
+
export class ArtifactAssembler {
|
|
141
|
+
graph;
|
|
142
|
+
tracker;
|
|
143
|
+
outputDir;
|
|
144
|
+
executionId;
|
|
145
|
+
constructor(graph, tracker, outputDir, executionId) {
|
|
146
|
+
this.graph = graph;
|
|
147
|
+
this.tracker = tracker;
|
|
148
|
+
this.outputDir = outputDir;
|
|
149
|
+
this.executionId = executionId;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Assemble all 15 artifacts and write to outputDir.
|
|
153
|
+
* Returns the decision package metadata.
|
|
154
|
+
*/
|
|
155
|
+
assemble(params) {
|
|
156
|
+
const artifactDir = path.join(this.outputDir, this.executionId);
|
|
157
|
+
fs.mkdirSync(artifactDir, { recursive: true });
|
|
158
|
+
const timestamp = new Date().toISOString();
|
|
159
|
+
const allNodes = this.graph.getAllNodes();
|
|
160
|
+
// Determine which passes were actually executed
|
|
161
|
+
const executedPasses = new Set(params.passesExecuted ?? params.passOutputs.map(p => p.passNumber));
|
|
162
|
+
const entries = [];
|
|
163
|
+
for (const def of ARTIFACT_DEFINITIONS) {
|
|
164
|
+
const entry = this.assembleArtifact(def, artifactDir, timestamp, allNodes, params.passesDegraded, executedPasses, params.prompt);
|
|
165
|
+
entries.push(entry);
|
|
166
|
+
}
|
|
167
|
+
// Compute confidence score
|
|
168
|
+
const confidenceScore = this.computeConfidenceScore(params.passOutputs, params.passesDegraded);
|
|
169
|
+
// Determine recommendation
|
|
170
|
+
const recommendation = this.computeRecommendation(confidenceScore);
|
|
171
|
+
// Build and write DECISION_PACKAGE.md index
|
|
172
|
+
const pkg = {
|
|
173
|
+
executionId: this.executionId,
|
|
174
|
+
timestamp,
|
|
175
|
+
prompt: params.prompt,
|
|
176
|
+
confidenceScore,
|
|
177
|
+
recommendation,
|
|
178
|
+
artifacts: entries,
|
|
179
|
+
passesExecuted: params.passOutputs.length,
|
|
180
|
+
passesDegraded: params.passesDegraded,
|
|
181
|
+
totalAgentsInvoked: this.tracker.getAllRecords().length,
|
|
182
|
+
totalDurationMs: this.tracker.getTotalDuration(),
|
|
183
|
+
};
|
|
184
|
+
this.writePackageIndex(pkg, artifactDir);
|
|
185
|
+
return pkg;
|
|
186
|
+
}
|
|
187
|
+
// --------------------------------------------------------------------------
|
|
188
|
+
// Individual Artifact Assembly
|
|
189
|
+
// --------------------------------------------------------------------------
|
|
190
|
+
assembleArtifact(def, artifactDir, timestamp, allNodes, passesDegraded, executedPasses, prompt) {
|
|
191
|
+
// Special case: Provenance Manifest (auto-generated by tracker)
|
|
192
|
+
if (def.number === 15) {
|
|
193
|
+
return this.assembleProvenanceManifest(def, artifactDir, passesDegraded);
|
|
194
|
+
}
|
|
195
|
+
// Check if required passes were executed (partial pipeline handling)
|
|
196
|
+
const missingPasses = def.requiredPasses.filter(p => !executedPasses.has(p));
|
|
197
|
+
if (missingPasses.length > 0 && def.requiredPasses.length > 0) {
|
|
198
|
+
// Check if at least one required pass ran
|
|
199
|
+
const anyRequiredRan = def.requiredPasses.some(p => executedPasses.has(p));
|
|
200
|
+
if (!anyRequiredRan) {
|
|
201
|
+
const reason = `Requires ${missingPasses.length > 1 ? 'Passes' : 'Pass'} ${missingPasses.join(', ')} which ${missingPasses.length > 1 ? 'were' : 'was'} not executed`;
|
|
202
|
+
this.writeArtifactFile(artifactDir, def.filename, this.buildNotGeneratedContent(def, reason));
|
|
203
|
+
return {
|
|
204
|
+
number: def.number,
|
|
205
|
+
name: def.name,
|
|
206
|
+
filename: def.filename,
|
|
207
|
+
status: 'not_generated',
|
|
208
|
+
producingPass: def.producingPass,
|
|
209
|
+
producingAgent: def.producingAgent,
|
|
210
|
+
degradationReason: reason,
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
// Find relevant nodes in the graph
|
|
215
|
+
const relevantNodes = def.nodeTypes.flatMap(t => this.graph.getNodesByType(t));
|
|
216
|
+
// Check if producing pass was degraded
|
|
217
|
+
const producingPassDegraded = passesDegraded.includes(def.producingPass);
|
|
218
|
+
if (relevantNodes.length === 0) {
|
|
219
|
+
const status = producingPassDegraded ? 'degraded' : 'not_generated';
|
|
220
|
+
const reason = producingPassDegraded
|
|
221
|
+
? `Pass ${def.producingPass} completed in degraded mode — insufficient data for ${def.name}`
|
|
222
|
+
: `Pass ${def.producingPass} did not produce ${def.nodeTypes.join(', ')} nodes`;
|
|
223
|
+
this.writeArtifactFile(artifactDir, def.filename, status === 'degraded'
|
|
224
|
+
? this.buildDegradedContent(def, reason, timestamp)
|
|
225
|
+
: this.buildNotGeneratedContent(def, reason));
|
|
226
|
+
return {
|
|
227
|
+
number: def.number,
|
|
228
|
+
name: def.name,
|
|
229
|
+
filename: def.filename,
|
|
230
|
+
status,
|
|
231
|
+
producingPass: def.producingPass,
|
|
232
|
+
producingAgent: def.producingAgent,
|
|
233
|
+
degradationReason: reason,
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
// Build content using per-artifact renderer
|
|
237
|
+
const anyDegraded = relevantNodes.some(n => n.status === 'degraded') || producingPassDegraded;
|
|
238
|
+
const renderCtx = {
|
|
239
|
+
executionId: this.executionId,
|
|
240
|
+
prompt,
|
|
241
|
+
timestamp,
|
|
242
|
+
allNodes,
|
|
243
|
+
relevantNodes,
|
|
244
|
+
isDegraded: anyDegraded,
|
|
245
|
+
passesDegraded,
|
|
246
|
+
};
|
|
247
|
+
const renderer = ARTIFACT_RENDERERS[def.number];
|
|
248
|
+
let content;
|
|
249
|
+
if (renderer) {
|
|
250
|
+
content = renderer(renderCtx);
|
|
251
|
+
}
|
|
252
|
+
else {
|
|
253
|
+
// Fallback for artifacts without a dedicated renderer
|
|
254
|
+
content = this.buildGenericContent(def, relevantNodes, timestamp, anyDegraded);
|
|
255
|
+
}
|
|
256
|
+
this.writeArtifactFile(artifactDir, def.filename, content);
|
|
257
|
+
// Write artifact as a DecisionGraph node (ADR-034: "each artifact is a node")
|
|
258
|
+
if (this.graph.isWritable()) {
|
|
259
|
+
this.graph.createNode({
|
|
260
|
+
type: def.graphNodeType,
|
|
261
|
+
name: `Artifact #${def.number}: ${def.name}`,
|
|
262
|
+
content: { artifactNumber: def.number, filename: def.filename, nodeCount: relevantNodes.length },
|
|
263
|
+
summary: `${def.name} — ${def.consultingAnalogy}. ${relevantNodes.length} source node(s).`,
|
|
264
|
+
producedBy: { domain: 'pipeline', agent: 'artifact-assembler', role: 'Artifact Assembler' },
|
|
265
|
+
pass: def.producingPass,
|
|
266
|
+
derivedFrom: relevantNodes.map(n => n.id).slice(0, 10),
|
|
267
|
+
confidence: anyDegraded ? 0.5 : 0.9,
|
|
268
|
+
status: anyDegraded ? 'degraded' : 'complete',
|
|
269
|
+
tags: [`artifact:${def.number}`, `consulting:${def.consultingAnalogy.split(' ')[0].toLowerCase()}`],
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
return {
|
|
273
|
+
number: def.number,
|
|
274
|
+
name: def.name,
|
|
275
|
+
filename: def.filename,
|
|
276
|
+
status: anyDegraded ? 'degraded' : 'complete',
|
|
277
|
+
producingPass: def.producingPass,
|
|
278
|
+
producingAgent: def.producingAgent,
|
|
279
|
+
degradationReason: anyDegraded ? 'Some source data was degraded' : undefined,
|
|
280
|
+
};
|
|
281
|
+
}
|
|
282
|
+
assembleProvenanceManifest(def, artifactDir, passesDegraded) {
|
|
283
|
+
const artifactOwnership = ARTIFACT_DEFINITIONS.map(d => ({
|
|
284
|
+
number: d.number,
|
|
285
|
+
name: d.name,
|
|
286
|
+
agent: d.producingAgent,
|
|
287
|
+
pass: d.producingPass,
|
|
288
|
+
}));
|
|
289
|
+
const manifest = this.tracker.generateManifest({
|
|
290
|
+
passesCompleted: 7 - passesDegraded.length,
|
|
291
|
+
passesDegraded,
|
|
292
|
+
artifactOwnership,
|
|
293
|
+
});
|
|
294
|
+
this.writeArtifactFile(artifactDir, def.filename, manifest);
|
|
295
|
+
return {
|
|
296
|
+
number: def.number,
|
|
297
|
+
name: def.name,
|
|
298
|
+
filename: def.filename,
|
|
299
|
+
status: 'complete',
|
|
300
|
+
producingPass: def.producingPass,
|
|
301
|
+
producingAgent: def.producingAgent,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
// --------------------------------------------------------------------------
|
|
305
|
+
// Content Builders (fallback + degraded/not-generated)
|
|
306
|
+
// --------------------------------------------------------------------------
|
|
307
|
+
/** Generic fallback content for artifacts without a dedicated renderer. */
|
|
308
|
+
buildGenericContent(def, nodes, timestamp, isDegraded) {
|
|
309
|
+
const lines = [];
|
|
310
|
+
lines.push(`# ${def.name}`);
|
|
311
|
+
lines.push(`**Artifact #${def.number}** | **Pass:** ${def.producingPass} | **Producing Agent:** ${def.producingAgent}`);
|
|
312
|
+
lines.push(`**Consulting Analogy:** ${def.consultingAnalogy}`);
|
|
313
|
+
lines.push(`**Generated:** ${timestamp}`);
|
|
314
|
+
lines.push('');
|
|
315
|
+
if (isDegraded) {
|
|
316
|
+
lines.push('> **\u26a0\ufe0f DEGRADED** \u2014 Some source data was unavailable or unreliable.\n');
|
|
317
|
+
}
|
|
318
|
+
for (const node of nodes) {
|
|
319
|
+
lines.push(`## ${node.name}`);
|
|
320
|
+
lines.push('');
|
|
321
|
+
if (node.summary)
|
|
322
|
+
lines.push(node.summary + '\n');
|
|
323
|
+
for (const [key, value] of Object.entries(node.content)) {
|
|
324
|
+
lines.push(`### ${formatKey(key)}`);
|
|
325
|
+
lines.push('');
|
|
326
|
+
if (typeof value === 'string') {
|
|
327
|
+
lines.push(value);
|
|
328
|
+
}
|
|
329
|
+
else if (Array.isArray(value)) {
|
|
330
|
+
for (const item of value) {
|
|
331
|
+
lines.push(typeof item === 'string' ? `- ${item}` : `- ${JSON.stringify(item)}`);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
else if (typeof value === 'object' && value !== null) {
|
|
335
|
+
lines.push('```json');
|
|
336
|
+
lines.push(JSON.stringify(value, null, 2));
|
|
337
|
+
lines.push('```');
|
|
338
|
+
}
|
|
339
|
+
else {
|
|
340
|
+
lines.push(String(value));
|
|
341
|
+
}
|
|
342
|
+
lines.push('');
|
|
343
|
+
}
|
|
344
|
+
lines.push(`**Confidence:** ${(node.confidence * 100).toFixed(0)}%`);
|
|
345
|
+
lines.push('\n---\n');
|
|
346
|
+
}
|
|
347
|
+
lines.push(`\n**Quality Criteria:** ${def.qualityCriteria}`);
|
|
348
|
+
return lines.join('\n');
|
|
349
|
+
}
|
|
350
|
+
/** Content for degraded artifacts (pass ran but data insufficient). */
|
|
351
|
+
buildDegradedContent(def, reason, timestamp) {
|
|
352
|
+
return [
|
|
353
|
+
`# ${def.name}`,
|
|
354
|
+
`**Artifact #${def.number}** | **Pass:** ${def.producingPass} | **Producing Agent:** ${def.producingAgent}`,
|
|
355
|
+
`**Consulting Analogy:** ${def.consultingAnalogy}`,
|
|
356
|
+
`**Generated:** ${timestamp}`,
|
|
357
|
+
`**Status:** DEGRADED`,
|
|
358
|
+
'',
|
|
359
|
+
`> **\u26a0\ufe0f DEGRADED** \u2014 ${reason}`,
|
|
360
|
+
'',
|
|
361
|
+
'This artifact was generated with incomplete data. The producing pass completed',
|
|
362
|
+
'in degraded mode, meaning some agents failed or returned insufficient results.',
|
|
363
|
+
'',
|
|
364
|
+
`**Quality Criteria:** ${def.qualityCriteria}`,
|
|
365
|
+
'',
|
|
366
|
+
`To regenerate with full data, re-run Pass ${def.producingPass} with all agents operational.`,
|
|
367
|
+
].join('\n');
|
|
368
|
+
}
|
|
369
|
+
/** Content for artifacts that could not be generated (pass not run). */
|
|
370
|
+
buildNotGeneratedContent(def, reason) {
|
|
371
|
+
return [
|
|
372
|
+
`# ${def.name}`,
|
|
373
|
+
`**Artifact #${def.number}** | **Pass:** ${def.producingPass} | **Producing Agent:** ${def.producingAgent}`,
|
|
374
|
+
`**Consulting Analogy:** ${def.consultingAnalogy}`,
|
|
375
|
+
`**Status:** NOT GENERATED`,
|
|
376
|
+
'',
|
|
377
|
+
`> **\u274c NOT GENERATED** \u2014 ${reason}`,
|
|
378
|
+
'',
|
|
379
|
+
'This artifact requires specific pipeline passes to complete successfully.',
|
|
380
|
+
`Required passes: ${def.requiredPasses.join(', ') || 'None'}`,
|
|
381
|
+
'',
|
|
382
|
+
`To generate this artifact, run: \`agentics ask "<prompt>" --passes ${def.requiredPasses.join(',') || '1-7'}\``,
|
|
383
|
+
].join('\n');
|
|
384
|
+
}
|
|
385
|
+
// --------------------------------------------------------------------------
|
|
386
|
+
// Confidence Score (ADR-034 / ADR-037)
|
|
387
|
+
// --------------------------------------------------------------------------
|
|
388
|
+
computeConfidenceScore(passOutputs, passesDegraded) {
|
|
389
|
+
// Weighted components per ADR-037
|
|
390
|
+
const weights = {
|
|
391
|
+
financial: 0.25,
|
|
392
|
+
operational: 0.20,
|
|
393
|
+
compliance: 0.20,
|
|
394
|
+
architecture: 0.20,
|
|
395
|
+
organizational: 0.15,
|
|
396
|
+
};
|
|
397
|
+
const getPassScore = (pass) => {
|
|
398
|
+
const output = passOutputs.find(p => p.passNumber === pass);
|
|
399
|
+
if (!output)
|
|
400
|
+
return 0;
|
|
401
|
+
if (output.status === 'completed')
|
|
402
|
+
return 1.0;
|
|
403
|
+
if (output.status === 'degraded')
|
|
404
|
+
return 0.5;
|
|
405
|
+
return 0;
|
|
406
|
+
};
|
|
407
|
+
const financialScore = getPassScore(4);
|
|
408
|
+
const operationalScore = getPassScore(2);
|
|
409
|
+
const complianceScore = getPassScore(4);
|
|
410
|
+
const architectureScore = (getPassScore(2) + getPassScore(3)) / 2;
|
|
411
|
+
const organizationalScore = getPassScore(5);
|
|
412
|
+
const raw = financialScore * weights.financial +
|
|
413
|
+
operationalScore * weights.operational +
|
|
414
|
+
complianceScore * weights.compliance +
|
|
415
|
+
architectureScore * weights.architecture +
|
|
416
|
+
organizationalScore * weights.organizational;
|
|
417
|
+
// -10% per degraded pass
|
|
418
|
+
const penalty = passesDegraded.length * 0.10;
|
|
419
|
+
const score = Math.max(0, Math.min(1, raw - penalty));
|
|
420
|
+
return Math.round(score * 100);
|
|
421
|
+
}
|
|
422
|
+
computeRecommendation(score) {
|
|
423
|
+
if (score >= 80)
|
|
424
|
+
return 'proceed';
|
|
425
|
+
if (score >= 60)
|
|
426
|
+
return 'proceed-with-conditions';
|
|
427
|
+
if (score >= 40)
|
|
428
|
+
return 'investigate-further';
|
|
429
|
+
return 'do-not-proceed';
|
|
430
|
+
}
|
|
431
|
+
// --------------------------------------------------------------------------
|
|
432
|
+
// Package Index (DECISION_PACKAGE.md)
|
|
433
|
+
// --------------------------------------------------------------------------
|
|
434
|
+
writePackageIndex(pkg, artifactDir) {
|
|
435
|
+
const lines = [];
|
|
436
|
+
lines.push('# Agentics Decision Package');
|
|
437
|
+
lines.push('');
|
|
438
|
+
lines.push(`**Execution ID:** ${pkg.executionId}`);
|
|
439
|
+
lines.push(`**Date:** ${pkg.timestamp}`);
|
|
440
|
+
lines.push(`**Prompt:** ${pkg.prompt}`);
|
|
441
|
+
lines.push(`**Decision Confidence Score:** ${pkg.confidenceScore}%`);
|
|
442
|
+
lines.push(`**Recommendation:** ${formatRecommendation(pkg.recommendation)}`);
|
|
443
|
+
lines.push('');
|
|
444
|
+
// Artifact table
|
|
445
|
+
lines.push('## Artifacts');
|
|
446
|
+
lines.push('');
|
|
447
|
+
lines.push('| # | Artifact | Status | Consulting Analogy | File |');
|
|
448
|
+
lines.push('|---|----------|--------|--------------------|------|');
|
|
449
|
+
for (const a of pkg.artifacts) {
|
|
450
|
+
const def = ARTIFACT_DEFINITIONS.find(d => d.number === a.number);
|
|
451
|
+
const analogy = def?.consultingAnalogy ?? '';
|
|
452
|
+
const statusIcon = a.status === 'complete' ? '\u2705 Complete'
|
|
453
|
+
: a.status === 'degraded' ? '\u26a0\ufe0f Degraded'
|
|
454
|
+
: '\u274c Not Generated';
|
|
455
|
+
lines.push(`| ${a.number} | ${a.name} | ${statusIcon} | ${analogy} | [${a.filename}](./${a.filename}) |`);
|
|
456
|
+
}
|
|
457
|
+
lines.push('');
|
|
458
|
+
// Degradation details
|
|
459
|
+
const degradedArtifacts = pkg.artifacts.filter(a => a.status === 'degraded');
|
|
460
|
+
const notGeneratedArtifacts = pkg.artifacts.filter(a => a.status === 'not_generated');
|
|
461
|
+
if (degradedArtifacts.length > 0) {
|
|
462
|
+
lines.push('## Degraded Artifacts');
|
|
463
|
+
lines.push('');
|
|
464
|
+
for (const a of degradedArtifacts) {
|
|
465
|
+
lines.push(`- **#${a.number} ${a.name}:** ${a.degradationReason ?? 'Source data degraded'}`);
|
|
466
|
+
}
|
|
467
|
+
lines.push('');
|
|
468
|
+
}
|
|
469
|
+
if (notGeneratedArtifacts.length > 0) {
|
|
470
|
+
lines.push('## Not Generated');
|
|
471
|
+
lines.push('');
|
|
472
|
+
for (const a of notGeneratedArtifacts) {
|
|
473
|
+
lines.push(`- **#${a.number} ${a.name}:** ${a.degradationReason ?? 'Required pass not executed'}`);
|
|
474
|
+
}
|
|
475
|
+
lines.push('');
|
|
476
|
+
}
|
|
477
|
+
// Pipeline summary
|
|
478
|
+
lines.push('## Pipeline Summary');
|
|
479
|
+
lines.push('');
|
|
480
|
+
lines.push(`- **Passes Executed:** ${pkg.passesExecuted}/7`);
|
|
481
|
+
lines.push(`- **Total Agents Invoked:** ${pkg.totalAgentsInvoked}`);
|
|
482
|
+
lines.push(`- **Execution Duration:** ${formatDurationMs(pkg.totalDurationMs)}`);
|
|
483
|
+
lines.push(`- **Degraded Passes:** ${pkg.passesDegraded.length > 0 ? pkg.passesDegraded.join(', ') : 'None'}`);
|
|
484
|
+
lines.push(`- **Artifacts Complete:** ${pkg.artifacts.filter(a => a.status === 'complete').length}/15`);
|
|
485
|
+
lines.push(`- **Artifacts Degraded:** ${degradedArtifacts.length}/15`);
|
|
486
|
+
lines.push(`- **Artifacts Not Generated:** ${notGeneratedArtifacts.length}/15`);
|
|
487
|
+
lines.push('');
|
|
488
|
+
// Confidence breakdown
|
|
489
|
+
lines.push('## Confidence Score Breakdown');
|
|
490
|
+
lines.push('');
|
|
491
|
+
lines.push('| Component | Weight | Source |');
|
|
492
|
+
lines.push('|-----------|--------|--------|');
|
|
493
|
+
lines.push('| Financial Outcome Stability | 25% | CostOps (Pass 4) |');
|
|
494
|
+
lines.push('| Operational Risk Level | 20% | Simulation (Pass 2) |');
|
|
495
|
+
lines.push('| Compliance Exposure | 20% | Shield + Policy (Pass 4) |');
|
|
496
|
+
lines.push('| Architecture Feasibility | 20% | Simulation (Pass 2) + Architecture (Pass 3) |');
|
|
497
|
+
lines.push('| Organizational Readiness | 15% | Decision Artifacts (Pass 5) |');
|
|
498
|
+
lines.push('');
|
|
499
|
+
if (pkg.passesDegraded.length > 0) {
|
|
500
|
+
lines.push(`**Degradation Penalty:** -${pkg.passesDegraded.length * 10}% (${pkg.passesDegraded.length} degraded pass${pkg.passesDegraded.length > 1 ? 'es' : ''})`);
|
|
501
|
+
lines.push('');
|
|
502
|
+
}
|
|
503
|
+
// Schema version
|
|
504
|
+
lines.push('---');
|
|
505
|
+
lines.push('*Artifact Package Schema v1.0 (ADR-034)*');
|
|
506
|
+
const indexPath = path.join(artifactDir, 'DECISION_PACKAGE.md');
|
|
507
|
+
fs.writeFileSync(indexPath, lines.join('\n'), 'utf-8');
|
|
508
|
+
}
|
|
509
|
+
// --------------------------------------------------------------------------
|
|
510
|
+
// File I/O
|
|
511
|
+
// --------------------------------------------------------------------------
|
|
512
|
+
writeArtifactFile(dir, filename, content) {
|
|
513
|
+
const filePath = path.join(dir, filename);
|
|
514
|
+
fs.writeFileSync(filePath, content, 'utf-8');
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
// ============================================================================
|
|
518
|
+
// Formatting Helpers
|
|
519
|
+
// ============================================================================
|
|
520
|
+
function formatKey(key) {
|
|
521
|
+
return key
|
|
522
|
+
.replace(/_/g, ' ')
|
|
523
|
+
.replace(/\b\w/g, c => c.toUpperCase());
|
|
524
|
+
}
|
|
525
|
+
function formatRecommendation(rec) {
|
|
526
|
+
switch (rec) {
|
|
527
|
+
case 'proceed': return 'Proceed';
|
|
528
|
+
case 'proceed-with-conditions': return 'Proceed with Conditions';
|
|
529
|
+
case 'investigate-further': return 'Investigate Further';
|
|
530
|
+
case 'do-not-proceed': return 'Do Not Proceed';
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
function formatDurationMs(ms) {
|
|
534
|
+
if (ms < 1000)
|
|
535
|
+
return `${ms}ms`;
|
|
536
|
+
if (ms < 60_000)
|
|
537
|
+
return `${(ms / 1000).toFixed(1)}s`;
|
|
538
|
+
const minutes = Math.floor(ms / 60_000);
|
|
539
|
+
const seconds = Math.round((ms % 60_000) / 1000);
|
|
540
|
+
return `${minutes}m ${seconds}s`;
|
|
541
|
+
}
|
|
542
|
+
//# sourceMappingURL=artifact-assembler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-assembler.js","sourceRoot":"","sources":["../../../src/pipeline/enterprise/artifact-assembler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Artifact Renderers — Per-Artifact Structured Content Generators (ADR-034)
|
|
3
|
+
*
|
|
4
|
+
* Each of the 15 deterministic enterprise artifacts has a dedicated renderer
|
|
5
|
+
* that produces markdown following the exact structure specified in ADR-034.
|
|
6
|
+
*
|
|
7
|
+
* Renderers read from DecisionGraph nodes and produce structured content
|
|
8
|
+
* matching enterprise consulting deliverables (McKinsey, Accenture, etc.).
|
|
9
|
+
*/
|
|
10
|
+
import type { DecisionGraphNode, PassNumber } from './types.js';
|
|
11
|
+
/** Context passed to every artifact renderer. */
|
|
12
|
+
export interface RenderContext {
|
|
13
|
+
readonly executionId: string;
|
|
14
|
+
readonly prompt: string;
|
|
15
|
+
readonly timestamp: string;
|
|
16
|
+
/** All graph nodes available for cross-referencing. */
|
|
17
|
+
readonly allNodes: readonly DecisionGraphNode[];
|
|
18
|
+
/** Nodes specifically relevant to this artifact (matched by type). */
|
|
19
|
+
readonly relevantNodes: readonly DecisionGraphNode[];
|
|
20
|
+
/** Whether any source data was degraded. */
|
|
21
|
+
readonly isDegraded: boolean;
|
|
22
|
+
/** Passes that completed in degraded mode. */
|
|
23
|
+
readonly passesDegraded: readonly PassNumber[];
|
|
24
|
+
}
|
|
25
|
+
/** A function that renders a single artifact to markdown. */
|
|
26
|
+
export type ArtifactRenderer = (ctx: RenderContext) => string;
|
|
27
|
+
export declare const renderExecutiveDecisionMemo: ArtifactRenderer;
|
|
28
|
+
export declare const renderExecutiveSummary: ArtifactRenderer;
|
|
29
|
+
export declare const renderArchitectureSpec: ArtifactRenderer;
|
|
30
|
+
export declare const renderSimulationAnalysis: ArtifactRenderer;
|
|
31
|
+
export declare const renderRiskAssessment: ArtifactRenderer;
|
|
32
|
+
export declare const renderCostOpsFinancialModel: ArtifactRenderer;
|
|
33
|
+
export declare const renderComplianceAnalysis: ArtifactRenderer;
|
|
34
|
+
export declare const renderImplementationRoadmap: ArtifactRenderer;
|
|
35
|
+
export declare const renderOrganizationalImpact: ArtifactRenderer;
|
|
36
|
+
export declare const renderStakeholderMap: ArtifactRenderer;
|
|
37
|
+
export declare const renderSuccessMetrics: ArtifactRenderer;
|
|
38
|
+
export declare const renderConfidenceScore: ArtifactRenderer;
|
|
39
|
+
export declare const renderOKRs: ArtifactRenderer;
|
|
40
|
+
export declare const renderRAIDLog: ArtifactRenderer;
|
|
41
|
+
export declare const ARTIFACT_RENDERERS: Readonly<Record<number, ArtifactRenderer>>;
|
|
42
|
+
//# sourceMappingURL=artifact-renderers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifact-renderers.d.ts","sourceRoot":"","sources":["../../../src/pipeline/enterprise/artifact-renderers.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAMhE,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAChD,sEAAsE;IACtE,QAAQ,CAAC,aAAa,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACrD,4CAA4C;IAC5C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,8CAA8C;IAC9C,QAAQ,CAAC,cAAc,EAAE,SAAS,UAAU,EAAE,CAAC;CAChD;AAED,6DAA6D;AAC7D,MAAM,MAAM,gBAAgB,GAAG,CAAC,GAAG,EAAE,aAAa,KAAK,MAAM,CAAC;AA6E9D,eAAO,MAAM,2BAA2B,EAAE,gBAmBzC,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,gBAiBpC,CAAC;AAMF,eAAO,MAAM,sBAAsB,EAAE,gBAiBpC,CAAC;AAMF,eAAO,MAAM,wBAAwB,EAAE,gBAgBtC,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,gBAiClC,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,gBA0BzC,CAAC;AAMF,eAAO,MAAM,wBAAwB,EAAE,gBAiBtC,CAAC;AAMF,eAAO,MAAM,2BAA2B,EAAE,gBAkBzC,CAAC;AAMF,eAAO,MAAM,0BAA0B,EAAE,gBAiBxC,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,gBAiClC,CAAC;AAMF,eAAO,MAAM,oBAAoB,EAAE,gBA+BlC,CAAC;AAMF,eAAO,MAAM,qBAAqB,EAAE,gBAmCnC,CAAC;AAMF,eAAO,MAAM,UAAU,EAAE,gBAiCxB,CAAC;AAMF,eAAO,MAAM,aAAa,EAAE,gBA8E3B,CAAC;AAMF,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAgBzE,CAAC"}
|