@apexops/renderers 0.10.0-next.5 → 0.11.0-next.1
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/dist/.tsbuildinfo +1 -1
- package/dist/diagrams.d.ts +11 -0
- package/dist/diagrams.d.ts.map +1 -0
- package/dist/diagrams.js +173 -0
- package/dist/diagrams.js.map +1 -0
- package/dist/document-registry.d.ts.map +1 -1
- package/dist/document-registry.js +27 -12
- package/dist/document-registry.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/rasterizer.d.ts +40 -0
- package/dist/rasterizer.d.ts.map +1 -0
- package/dist/rasterizer.js +85 -0
- package/dist/rasterizer.js.map +1 -0
- package/dist/renderers.d.ts +25 -1
- package/dist/renderers.d.ts.map +1 -1
- package/dist/renderers.js +364 -0
- package/dist/renderers.js.map +1 -1
- package/dist/test/diagrams.test.d.ts +2 -0
- package/dist/test/diagrams.test.d.ts.map +1 -0
- package/dist/test/diagrams.test.js +102 -0
- package/dist/test/diagrams.test.js.map +1 -0
- package/dist/test/rasterizer.test.d.ts +2 -0
- package/dist/test/rasterizer.test.d.ts.map +1 -0
- package/dist/test/rasterizer.test.js +107 -0
- package/dist/test/rasterizer.test.js.map +1 -0
- package/dist/test/renderers.test.js +279 -9
- package/dist/test/renderers.test.js.map +1 -1
- package/package.json +4 -3
package/dist/renderers.js
CHANGED
|
@@ -31,6 +31,134 @@ export function renderRequirements(requirements) {
|
|
|
31
31
|
unknowns.length === 0 ? "None." : unknowns.map((item) => `- ${escapeMarkdown(item)}`).join("\n"),
|
|
32
32
|
].join("\n");
|
|
33
33
|
}
|
|
34
|
+
export function renderImplementationPlan(intent, intentHash) {
|
|
35
|
+
return [
|
|
36
|
+
"# Implementation Plan",
|
|
37
|
+
"",
|
|
38
|
+
"> Accepted implementation intent, not generated-source validation or deployment approval.",
|
|
39
|
+
"",
|
|
40
|
+
fieldList([
|
|
41
|
+
["Project", intent.projectId],
|
|
42
|
+
["Run", intent.runId],
|
|
43
|
+
["Intent hash", intentHash],
|
|
44
|
+
]),
|
|
45
|
+
"",
|
|
46
|
+
"## Logical Resources",
|
|
47
|
+
"",
|
|
48
|
+
markdownTable(["ID", "Type", "Purpose", "Depends On", "Controls"], [...intent.resources]
|
|
49
|
+
.sort((left, right) => compareText(left.id, right.id))
|
|
50
|
+
.map((resource) => [
|
|
51
|
+
resource.id,
|
|
52
|
+
resource.type,
|
|
53
|
+
resource.purpose,
|
|
54
|
+
[...resource.dependsOn].sort(compareText).join(", ") || "None",
|
|
55
|
+
[...resource.controls].sort(compareText).join(", ") || "None declared",
|
|
56
|
+
])),
|
|
57
|
+
"",
|
|
58
|
+
"## Outputs",
|
|
59
|
+
"",
|
|
60
|
+
intent.outputs.length === 0
|
|
61
|
+
? "No outputs declared."
|
|
62
|
+
: [...intent.outputs]
|
|
63
|
+
.sort(compareText)
|
|
64
|
+
.map((output) => `- ${escapeMarkdown(output)}`)
|
|
65
|
+
.join("\n"),
|
|
66
|
+
"",
|
|
67
|
+
"## Source Artifacts",
|
|
68
|
+
"",
|
|
69
|
+
markdownTable(["Artifact", "Accepted Hash"], Object.entries(intent.sourceHashes).sort(([left], [right]) => compareText(left, right))),
|
|
70
|
+
].join("\n");
|
|
71
|
+
}
|
|
72
|
+
export function renderDeploymentGuide(input) {
|
|
73
|
+
const { run, intent, binding, inputs, hashes } = input;
|
|
74
|
+
const resources = [...intent.resources].sort((left, right) => compareText(left.id, right.id));
|
|
75
|
+
const configurations = Object.entries(inputs.inputs).sort(([left], [right]) => compareText(left, right));
|
|
76
|
+
return [
|
|
77
|
+
"# Deployment Guide",
|
|
78
|
+
"",
|
|
79
|
+
"> Accepted design only. This guide is not validation evidence, deployment approval or proof of resource existence.",
|
|
80
|
+
"",
|
|
81
|
+
"## Target And Sources",
|
|
82
|
+
"",
|
|
83
|
+
fieldList([
|
|
84
|
+
["Project", run.projectId],
|
|
85
|
+
["Run", run.runId],
|
|
86
|
+
["Environment", run.environment],
|
|
87
|
+
["Target scope", run.targetScope],
|
|
88
|
+
["IaC track", binding.track],
|
|
89
|
+
["Implementation intent hash", hashes.intent],
|
|
90
|
+
["IaC binding hash", hashes.binding],
|
|
91
|
+
["Environment inputs hash", hashes.inputs],
|
|
92
|
+
]),
|
|
93
|
+
"",
|
|
94
|
+
"## Planned Resources",
|
|
95
|
+
"",
|
|
96
|
+
markdownTable(["Logical ID", "Type", "Purpose", "Implementation", "Version", "Dependencies", "Diagnostic Scope"], resources.map((resource) => {
|
|
97
|
+
const bound = binding.resourceBindings[resource.id];
|
|
98
|
+
return [
|
|
99
|
+
resource.id,
|
|
100
|
+
resource.type,
|
|
101
|
+
resource.purpose,
|
|
102
|
+
bound.implementation,
|
|
103
|
+
bound.version,
|
|
104
|
+
[...resource.dependsOn].sort(compareText).join(", ") || "None",
|
|
105
|
+
bound.scopeLogicalId ?? "Not declared",
|
|
106
|
+
];
|
|
107
|
+
})),
|
|
108
|
+
"",
|
|
109
|
+
"## Ownership Boundaries",
|
|
110
|
+
"",
|
|
111
|
+
"Explicit physical scope below is intended authorization scope, not observed inventory. Undeclared physical IDs remain unresolved in this guide.",
|
|
112
|
+
"",
|
|
113
|
+
markdownTable(["Logical ID", "Resource ID", "Ownership", "Role"], resources
|
|
114
|
+
.flatMap(({ id }) => (binding.resourceBindings[id].physicalResources ?? []).map((resource) => [
|
|
115
|
+
id,
|
|
116
|
+
resource.resourceId,
|
|
117
|
+
resource.ownership,
|
|
118
|
+
resource.role,
|
|
119
|
+
]))
|
|
120
|
+
.sort((left, right) => compareText(stableJson(left), stableJson(right)))),
|
|
121
|
+
"",
|
|
122
|
+
"## Configuration And Access",
|
|
123
|
+
"",
|
|
124
|
+
"Use the accepted environment-input artifact for values. Values and binding parameters are deliberately omitted here; secret references must be resolved only by the authorized execution environment.",
|
|
125
|
+
"",
|
|
126
|
+
markdownTable(["Configuration Name", "Kind", "Secret Reference", "Version"], configurations.map(([name, value]) => [
|
|
127
|
+
name,
|
|
128
|
+
value.kind,
|
|
129
|
+
value.kind === "value" ? "Not a secret reference" : `${value.provider}:${value.reference}`,
|
|
130
|
+
value.kind === "value" ? "Not applicable" : (value.version ?? "Not pinned"),
|
|
131
|
+
])),
|
|
132
|
+
"",
|
|
133
|
+
"Confirm the active writer, target identity, required Azure permissions, secret access and installed toolchain before any cloud operation. This plan does not establish access or grant roles.",
|
|
134
|
+
"",
|
|
135
|
+
"## Deployment Procedure",
|
|
136
|
+
"",
|
|
137
|
+
"1. Inspect `apex status --json` and `apex doctor --json`; resolve missing prerequisites and stale inputs.",
|
|
138
|
+
"2. Complete required reviews, Gates 1 through 3, source generation and all native source validators for this accepted plan.",
|
|
139
|
+
`3. With explicit cloud-operation authorization, request \`apex preview --operation apply --provider ${binding.track} --json\`. Terraform preview may perform authenticated planning.`,
|
|
140
|
+
"4. Review the exact preview, resource ownership, replacements, deletions, policy results and blockers. A human must approve Gate 4 for that exact fresh preview and recipient.",
|
|
141
|
+
"5. Execute only the approved preview through `apex deploy --preview PREVIEW_HASH --json`; never substitute an unbound provider command.",
|
|
142
|
+
"6. Inspect the recorded deployment summary and inventory, then perform separately authorized workload health checks. A command exit alone does not prove application readiness.",
|
|
143
|
+
"",
|
|
144
|
+
"## Outputs And Application Handoff",
|
|
145
|
+
"",
|
|
146
|
+
"These are intended output names, not observed values or endpoints. The application team supplies application code and verifies its configuration against accepted deployment evidence.",
|
|
147
|
+
"",
|
|
148
|
+
intent.outputs.length === 0
|
|
149
|
+
? "No outputs declared."
|
|
150
|
+
: [...intent.outputs]
|
|
151
|
+
.sort(compareText)
|
|
152
|
+
.map((output) => `- ${escapeMarkdown(output)}`)
|
|
153
|
+
.join("\n"),
|
|
154
|
+
"",
|
|
155
|
+
"## Recovery And Remaining Evidence",
|
|
156
|
+
"",
|
|
157
|
+
"For interrupted or indeterminate execution, inspect status and use the authorized reconciliation path before retrying. Do not edit journals, reuse stale approvals or issue direct rollback commands.",
|
|
158
|
+
"",
|
|
159
|
+
"Workload-specific health checks, monitoring, escalation ownership, rollback and recovery procedures require accepted operational handoff data. This guide supplies no restore-test result, compliance certification, live endpoint, actual spend or successful deployment claim.",
|
|
160
|
+
].join("\n");
|
|
161
|
+
}
|
|
34
162
|
export function renderRunStatus(run) {
|
|
35
163
|
const gates = [...run.gates]
|
|
36
164
|
.sort((left, right) => left.gate - right.gate)
|
|
@@ -124,6 +252,242 @@ export function renderApprovalEvidence(approval) {
|
|
|
124
252
|
];
|
|
125
253
|
return summary.join("\n");
|
|
126
254
|
}
|
|
255
|
+
export function renderArchitectureDecisionRecords(architecture, architectureHash) {
|
|
256
|
+
const records = architecture.decisionRecords;
|
|
257
|
+
if (records === undefined || records.length === 0)
|
|
258
|
+
throw new Error("Structured Architecture decision records are unavailable");
|
|
259
|
+
const list = (values) => values.map((value) => `- ${escapeMarkdown(value)}`).join("\n");
|
|
260
|
+
return [
|
|
261
|
+
"# Architecture Decision Records",
|
|
262
|
+
"",
|
|
263
|
+
`Architecture artifact: ${architectureHash}`,
|
|
264
|
+
"",
|
|
265
|
+
"Design decisions from accepted Architecture data. Gate approval and implemented state are separate evidence.",
|
|
266
|
+
"",
|
|
267
|
+
...[...records]
|
|
268
|
+
.sort((left, right) => compareText(left.id, right.id))
|
|
269
|
+
.map((record) => [
|
|
270
|
+
`## ${escapeMarkdown(record.id)}: ${escapeMarkdown(record.title)}`,
|
|
271
|
+
"",
|
|
272
|
+
`Requirements: ${record.requirementIds.map(escapeMarkdown).join(", ")}`,
|
|
273
|
+
"",
|
|
274
|
+
"### Context",
|
|
275
|
+
"",
|
|
276
|
+
escapeMarkdown(record.context),
|
|
277
|
+
"",
|
|
278
|
+
"### Decision",
|
|
279
|
+
"",
|
|
280
|
+
escapeMarkdown(record.decision),
|
|
281
|
+
"",
|
|
282
|
+
"### Alternatives Considered",
|
|
283
|
+
"",
|
|
284
|
+
markdownTable(["Option", "Benefits", "Drawbacks", "Rejection Reason"], record.alternatives.map((alternative) => [
|
|
285
|
+
alternative.option,
|
|
286
|
+
alternative.benefits,
|
|
287
|
+
alternative.drawbacks,
|
|
288
|
+
alternative.rejectionReason,
|
|
289
|
+
])),
|
|
290
|
+
"",
|
|
291
|
+
"### Consequences",
|
|
292
|
+
"",
|
|
293
|
+
"Positive:",
|
|
294
|
+
"",
|
|
295
|
+
list(record.positiveConsequences),
|
|
296
|
+
"",
|
|
297
|
+
"Negative:",
|
|
298
|
+
"",
|
|
299
|
+
list(record.negativeConsequences),
|
|
300
|
+
"",
|
|
301
|
+
"### WAF Pillar Analysis",
|
|
302
|
+
"",
|
|
303
|
+
markdownTable(["Pillar", "Impact"], Object.entries(record.wafImpacts).sort(([left], [right]) => compareText(left, right))),
|
|
304
|
+
"",
|
|
305
|
+
"### Compliance Considerations",
|
|
306
|
+
"",
|
|
307
|
+
escapeMarkdown(record.complianceConsiderations),
|
|
308
|
+
"",
|
|
309
|
+
"### Implementation Notes",
|
|
310
|
+
"",
|
|
311
|
+
escapeMarkdown(record.implementationNotes),
|
|
312
|
+
"",
|
|
313
|
+
].join("\n")),
|
|
314
|
+
].join("\n");
|
|
315
|
+
}
|
|
316
|
+
export function renderPolicyMappingMatrix(policy, policyHash) {
|
|
317
|
+
const rows = [...policy.mappings]
|
|
318
|
+
.sort((left, right) => compareText(`${left.policyAssignmentId}\u0000${left.policyDefinitionReferenceId ?? ""}\u0000${left.logicalResourceId}\u0000${left.propertyPath}`, `${right.policyAssignmentId}\u0000${right.policyDefinitionReferenceId ?? ""}\u0000${right.logicalResourceId}\u0000${right.propertyPath}`))
|
|
319
|
+
.map((mapping) => [
|
|
320
|
+
mapping.policyAssignmentId,
|
|
321
|
+
optional(mapping.policyDefinitionId),
|
|
322
|
+
optional(mapping.policyDefinitionReferenceId),
|
|
323
|
+
mapping.effect,
|
|
324
|
+
mapping.logicalResourceId,
|
|
325
|
+
mapping.propertyPath,
|
|
326
|
+
mapping.disposition,
|
|
327
|
+
]);
|
|
328
|
+
return [
|
|
329
|
+
"# Policy Mapping Matrix",
|
|
330
|
+
"",
|
|
331
|
+
"> Accepted design mappings, not a compliance certification or live policy evaluation. A satisfied disposition alone is not execution evidence.",
|
|
332
|
+
"",
|
|
333
|
+
fieldList([
|
|
334
|
+
["Project", policy.projectId],
|
|
335
|
+
["Run", policy.runId],
|
|
336
|
+
["Policy map hash", policyHash],
|
|
337
|
+
["Governance hash", policy.governanceHash],
|
|
338
|
+
]),
|
|
339
|
+
"",
|
|
340
|
+
"## Control Mapping",
|
|
341
|
+
"",
|
|
342
|
+
rows.length === 0
|
|
343
|
+
? "No actionable property mappings are recorded. This does not establish absence of audit policies or complete compliance."
|
|
344
|
+
: markdownTable([
|
|
345
|
+
"Assignment",
|
|
346
|
+
"Definition",
|
|
347
|
+
"Initiative Member",
|
|
348
|
+
"Effect",
|
|
349
|
+
"Logical Resource",
|
|
350
|
+
"Property",
|
|
351
|
+
"Design Disposition",
|
|
352
|
+
], rows),
|
|
353
|
+
"",
|
|
354
|
+
"## Evidence And Gaps",
|
|
355
|
+
"",
|
|
356
|
+
"Use the source-bound validation receipts and current target-governance evidence to assess enforcement. Exemption dispositions do not establish verified exemptions. Expected property values and raw governance exports are intentionally omitted.",
|
|
357
|
+
].join("\n");
|
|
358
|
+
}
|
|
359
|
+
export function renderOperationsRunbook(diagnosis, diagnosisHash) {
|
|
360
|
+
const handoff = diagnosis.operationalHandoff;
|
|
361
|
+
if (handoff === undefined)
|
|
362
|
+
throw new Error("Operational handoff data is unavailable");
|
|
363
|
+
const list = (values) => values.map((value) => `- ${escapeMarkdown(value)}`).join("\n");
|
|
364
|
+
const procedure = (title, value) => [
|
|
365
|
+
`## ${title}`,
|
|
366
|
+
"",
|
|
367
|
+
value.applicability === "not-applicable"
|
|
368
|
+
? `Not applicable: ${escapeMarkdown(value.rationale)}`
|
|
369
|
+
: [
|
|
370
|
+
`Owner: ${escapeMarkdown(value.owner)}`,
|
|
371
|
+
"",
|
|
372
|
+
"Execution status: untested. These instructions have not been executed by APEX.",
|
|
373
|
+
"",
|
|
374
|
+
"### Prerequisites",
|
|
375
|
+
"",
|
|
376
|
+
list(value.prerequisites),
|
|
377
|
+
"",
|
|
378
|
+
"### Steps",
|
|
379
|
+
"",
|
|
380
|
+
value.steps.map((step, index) => `${index + 1}. ${escapeMarkdown(step)}`).join("\n"),
|
|
381
|
+
"",
|
|
382
|
+
"### Verification",
|
|
383
|
+
"",
|
|
384
|
+
escapeMarkdown(value.verification),
|
|
385
|
+
].join("\n"),
|
|
386
|
+
"",
|
|
387
|
+
].join("\n");
|
|
388
|
+
return [
|
|
389
|
+
"# Operations Runbook",
|
|
390
|
+
"",
|
|
391
|
+
`Diagnosis artifact: ${diagnosisHash}`,
|
|
392
|
+
"",
|
|
393
|
+
"Documented operational intent, not execution authorization. Obtain current approvals before changes or recovery actions.",
|
|
394
|
+
"",
|
|
395
|
+
"## Ownership And Access",
|
|
396
|
+
"",
|
|
397
|
+
fieldList([
|
|
398
|
+
["Project", diagnosis.projectId],
|
|
399
|
+
["Run", diagnosis.runId],
|
|
400
|
+
["Owner", handoff.owner],
|
|
401
|
+
["Escalation", handoff.escalation],
|
|
402
|
+
["Maintenance window", handoff.maintenanceWindow],
|
|
403
|
+
["Diagnosis recorded", diagnosis.diagnosedAt],
|
|
404
|
+
["Recorded diagnosis status", diagnosis.status],
|
|
405
|
+
]),
|
|
406
|
+
"",
|
|
407
|
+
list(handoff.accessPrerequisites),
|
|
408
|
+
"",
|
|
409
|
+
"## Configuration References",
|
|
410
|
+
"",
|
|
411
|
+
handoff.configurationReferences.length === 0
|
|
412
|
+
? "No configuration references recorded."
|
|
413
|
+
: markdownTable(["Name", "Source Reference"], handoff.configurationReferences.map(({ name, source }) => [name, source])),
|
|
414
|
+
"",
|
|
415
|
+
"## Health Checks And Monitoring",
|
|
416
|
+
"",
|
|
417
|
+
markdownTable(["Resource", "Check", "Expected Outcome", "Pinned References"], handoff.healthChecks.map((check) => [
|
|
418
|
+
check.resourceId,
|
|
419
|
+
check.check,
|
|
420
|
+
check.expectedOutcome,
|
|
421
|
+
check.evidenceRefs.join(", ") || "None; not observed",
|
|
422
|
+
])),
|
|
423
|
+
"",
|
|
424
|
+
"Expected outcomes and evidence references do not establish that these checks ran or passed.",
|
|
425
|
+
"",
|
|
426
|
+
escapeMarkdown(handoff.monitoring),
|
|
427
|
+
"",
|
|
428
|
+
procedure("Incident Response", handoff.incidentResponse),
|
|
429
|
+
procedure("Rollback", handoff.rollback),
|
|
430
|
+
procedure("Backup And Recovery", handoff.recovery),
|
|
431
|
+
"## Limitations",
|
|
432
|
+
"",
|
|
433
|
+
list(handoff.limitations),
|
|
434
|
+
].join("\n");
|
|
435
|
+
}
|
|
436
|
+
export function renderDeploymentSummary(input) {
|
|
437
|
+
const { operation, inventory, approval } = input;
|
|
438
|
+
const simulated = input.evidenceMode === "simulated" || input.provider === "fake";
|
|
439
|
+
const rows = [...inventory.resources]
|
|
440
|
+
.sort((left, right) => compareText(`${left.logicalId}\u0000${left.resourceId}`, `${right.logicalId}\u0000${right.resourceId}`))
|
|
441
|
+
.map((resource) => [resource.logicalId, resource.resourceId, resource.type, resource.location]);
|
|
442
|
+
return [
|
|
443
|
+
"# Deployment Summary",
|
|
444
|
+
"",
|
|
445
|
+
simulated
|
|
446
|
+
? "> Simulated evidence only. No cloud deployment is established by this record."
|
|
447
|
+
: "> Native-adapter evidence. This summary does not independently verify live cloud execution.",
|
|
448
|
+
"",
|
|
449
|
+
"## Recorded Operation",
|
|
450
|
+
"",
|
|
451
|
+
fieldList([
|
|
452
|
+
["Project", operation.projectId],
|
|
453
|
+
["Run", operation.runId],
|
|
454
|
+
["Operation", operation.operation],
|
|
455
|
+
["State", operation.state],
|
|
456
|
+
["Provider", input.provider],
|
|
457
|
+
["Provider operation", optional(operation.providerOperationId)],
|
|
458
|
+
["Recorded", operation.updatedAt],
|
|
459
|
+
["Error code", optional(operation.errorCode)],
|
|
460
|
+
]),
|
|
461
|
+
"",
|
|
462
|
+
"## Resource Inventory",
|
|
463
|
+
"",
|
|
464
|
+
`Collected: ${escapeMarkdown(inventory.collectedAt)}`,
|
|
465
|
+
"",
|
|
466
|
+
rows.length === 0
|
|
467
|
+
? "No resources are recorded in this inventory. This is not proof of absence outside the recorded scope."
|
|
468
|
+
: markdownTable(["Logical ID", "Resource ID", "Type", "Location"], rows),
|
|
469
|
+
"",
|
|
470
|
+
"## Authorization And Provenance",
|
|
471
|
+
"",
|
|
472
|
+
fieldList([
|
|
473
|
+
["Operation hash", input.operationHash],
|
|
474
|
+
["Inventory hash", input.inventoryHash],
|
|
475
|
+
["Preview hash", operation.previewHash],
|
|
476
|
+
["Approval hash", operation.approvalHash],
|
|
477
|
+
["Approval actor", approval.actor],
|
|
478
|
+
["Approval recorded", approval.decidedAt],
|
|
479
|
+
["Writer epoch at execution", operation.ownerEpoch],
|
|
480
|
+
]),
|
|
481
|
+
"",
|
|
482
|
+
"Historical authorization applies only to the recorded operation. It does not authorize another apply, rollback, or destroy.",
|
|
483
|
+
"",
|
|
484
|
+
"## Operational Evidence Gaps",
|
|
485
|
+
"",
|
|
486
|
+
"Health checks, application endpoints, diagnostic coverage, recovery procedures, restore tests, actual spend, and compliance certification are not established by these operation and inventory records.",
|
|
487
|
+
"",
|
|
488
|
+
"Review workload-specific operational evidence before handoff. Further changes require a current preview and new approval.",
|
|
489
|
+
].join("\n");
|
|
490
|
+
}
|
|
127
491
|
export function renderResourceInventory(inventory) {
|
|
128
492
|
const rows = [...inventory.resources]
|
|
129
493
|
.sort((left, right) => compareText(`${left.logicalId}\u0000${left.resourceId}`, `${right.logicalId}\u0000${right.resourceId}`))
|
package/dist/renderers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"renderers.js","sourceRoot":"","sources":["../src/renderers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagrams.test.d.ts","sourceRoot":"","sources":["../../src/test/diagrams.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import assert from "node:assert/strict";
|
|
2
|
+
import test from "node:test";
|
|
3
|
+
import { rasterizeDiagram, renderArchitectureDiagram, renderCostBreakdownDiagram, renderCostUncertaintyDiagram, renderWafAssessmentDiagram, } from "../index.js";
|
|
4
|
+
const hash = "a".repeat(64);
|
|
5
|
+
const architecture = {
|
|
6
|
+
schemaVersion: "1.0.0",
|
|
7
|
+
projectId: "sample",
|
|
8
|
+
runId: "run-1",
|
|
9
|
+
title: "API <platform>",
|
|
10
|
+
summary: "Managed API",
|
|
11
|
+
sourceHashes: { requirements: hash },
|
|
12
|
+
components: [
|
|
13
|
+
{
|
|
14
|
+
id: "data",
|
|
15
|
+
service: "Azure SQL",
|
|
16
|
+
resourceTypes: ["Microsoft.Sql/servers"],
|
|
17
|
+
purpose: "Store data",
|
|
18
|
+
requirementIds: ["REQ-1"],
|
|
19
|
+
dependsOn: [],
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
id: "api",
|
|
23
|
+
service: "App Service",
|
|
24
|
+
resourceTypes: ["Microsoft.Web/sites"],
|
|
25
|
+
purpose: "Serve requests",
|
|
26
|
+
requirementIds: ["REQ-1"],
|
|
27
|
+
dependsOn: ["data"],
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
decisions: [],
|
|
31
|
+
risks: [],
|
|
32
|
+
wellArchitectedAssessment: {
|
|
33
|
+
framework: "azure-well-architected-framework",
|
|
34
|
+
assessmentType: "qualitative",
|
|
35
|
+
pillars: ["security", "reliability", "performance-efficiency", "cost-optimization", "operational-excellence"].map((pillar) => ({
|
|
36
|
+
pillar: pillar,
|
|
37
|
+
status: "aligned",
|
|
38
|
+
assessment: `${pillar} posture`,
|
|
39
|
+
requirementIds: ["REQ-1"],
|
|
40
|
+
evidenceRefs: [hash],
|
|
41
|
+
recommendations: [],
|
|
42
|
+
tradeoffs: [],
|
|
43
|
+
})),
|
|
44
|
+
},
|
|
45
|
+
};
|
|
46
|
+
const cost = {
|
|
47
|
+
schemaVersion: "1.0.0",
|
|
48
|
+
projectId: "sample",
|
|
49
|
+
runId: "run-1",
|
|
50
|
+
currency: "USD",
|
|
51
|
+
pricingDate: "2026-08-28",
|
|
52
|
+
pricingStatus: "partial",
|
|
53
|
+
lineItems: [
|
|
54
|
+
{
|
|
55
|
+
id: "api",
|
|
56
|
+
service: "App Service",
|
|
57
|
+
sku: "P1v3",
|
|
58
|
+
quantity: 1,
|
|
59
|
+
unitPrice: 100,
|
|
60
|
+
unitsPerMonth: 1,
|
|
61
|
+
monthlyCost: 100,
|
|
62
|
+
source: { provider: "ARM MCP", uri: "https://example.test", retrievedAt: "2026-08-28T00:00:00Z" },
|
|
63
|
+
uncertainty: { lowerMonthlyCost: 90, upperMonthlyCost: 120, confidence: "medium", basis: "Usage" },
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
unpricedItems: [
|
|
67
|
+
{
|
|
68
|
+
id: "data",
|
|
69
|
+
service: "Azure SQL",
|
|
70
|
+
sku: "GP",
|
|
71
|
+
quantity: 1,
|
|
72
|
+
attemptedAt: "2026-08-28T00:00:00Z",
|
|
73
|
+
reason: "No matching meter",
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
totalMonthlyCost: 100,
|
|
77
|
+
assumptions: [],
|
|
78
|
+
};
|
|
79
|
+
test("diagram renderers are deterministic, escaped, and produce PNG", () => {
|
|
80
|
+
const first = renderArchitectureDiagram(architecture);
|
|
81
|
+
const reordered = renderArchitectureDiagram({ ...architecture, components: [...architecture.components].reverse() });
|
|
82
|
+
assert.equal(first.svg, reordered.svg);
|
|
83
|
+
assert.equal(first.python, reordered.python);
|
|
84
|
+
assert.match(first.svg, /API <platform>/u);
|
|
85
|
+
assert.doesNotMatch(first.svg, /<platform>/u);
|
|
86
|
+
const png = rasterizeDiagram(first.svg);
|
|
87
|
+
assert.deepEqual([...png.slice(0, 8)], [137, 80, 78, 71, 13, 10, 26, 10]);
|
|
88
|
+
});
|
|
89
|
+
test("WAF and cost diagrams preserve qualitative and partial pricing semantics", () => {
|
|
90
|
+
const waf = renderWafAssessmentDiagram(architecture);
|
|
91
|
+
const breakdown = renderCostBreakdownDiagram(cost);
|
|
92
|
+
const uncertainty = renderCostUncertaintyDiagram(cost);
|
|
93
|
+
assert.match(waf.svg, /operational excellence/u);
|
|
94
|
+
assert.match(breakdown.svg, /Unpriced: Azure SQL \/ GP/u);
|
|
95
|
+
assert.match(breakdown.svg, /100\.00 USD/u);
|
|
96
|
+
assert.match(uncertainty.svg, /90\.00 \/ 100\.00 \/ 120\.00 USD/u);
|
|
97
|
+
for (const output of [waf, breakdown, uncertainty]) {
|
|
98
|
+
assert.match(output.python, /Editable source/u);
|
|
99
|
+
assert.ok(rasterizeDiagram(output.svg).byteLength > 100);
|
|
100
|
+
}
|
|
101
|
+
});
|
|
102
|
+
//# sourceMappingURL=diagrams.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diagrams.test.js","sourceRoot":"","sources":["../../src/test/diagrams.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,oBAAoB,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EACL,gBAAgB,EAChB,yBAAyB,EACzB,0BAA0B,EAC1B,4BAA4B,EAC5B,0BAA0B,GAC3B,MAAM,aAAa,CAAC;AAErB,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC5B,MAAM,YAAY,GAAmB;IACnC,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,gBAAgB;IACvB,OAAO,EAAE,aAAa;IACtB,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;IACpC,UAAU,EAAE;QACV;YACE,EAAE,EAAE,MAAM;YACV,OAAO,EAAE,WAAW;YACpB,aAAa,EAAE,CAAC,uBAAuB,CAAC;YACxC,OAAO,EAAE,YAAY;YACrB,cAAc,EAAE,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,EAAE;SACd;QACD;YACE,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,aAAa;YACtB,aAAa,EAAE,CAAC,qBAAqB,CAAC;YACtC,OAAO,EAAE,gBAAgB;YACzB,cAAc,EAAE,CAAC,OAAO,CAAC;YACzB,SAAS,EAAE,CAAC,MAAM,CAAC;SACpB;KACF;IACD,SAAS,EAAE,EAAE;IACb,KAAK,EAAE,EAAE;IACT,yBAAyB,EAAE;QACzB,SAAS,EAAE,kCAAkC;QAC7C,cAAc,EAAE,aAAa;QAC7B,OAAO,EAAE,CAAC,UAAU,EAAE,aAAa,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,CAAC,GAAG,CAC/G,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;YACX,MAAM,EAAE,MAA+F;YACvG,MAAM,EAAE,SAAS;YACjB,UAAU,EAAE,GAAG,MAAM,UAAU;YAC/B,cAAc,EAAE,CAAC,OAAO,CAAC;YACzB,YAAY,EAAE,CAAC,IAAI,CAAC;YACpB,eAAe,EAAE,EAAE;YACnB,SAAS,EAAE,EAAE;SACd,CAAC,CACH;KACF;CACF,CAAC;AACF,MAAM,IAAI,GAAmB;IAC3B,aAAa,EAAE,OAAO;IACtB,SAAS,EAAE,QAAQ;IACnB,KAAK,EAAE,OAAO;IACd,QAAQ,EAAE,KAAK;IACf,WAAW,EAAE,YAAY;IACzB,aAAa,EAAE,SAAS;IACxB,SAAS,EAAE;QACT;YACE,EAAE,EAAE,KAAK;YACT,OAAO,EAAE,aAAa;YACtB,GAAG,EAAE,MAAM;YACX,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,GAAG;YACd,aAAa,EAAE,CAAC;YAChB,WAAW,EAAE,GAAG;YAChB,MAAM,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,sBAAsB,EAAE,WAAW,EAAE,sBAAsB,EAAE;YACjG,WAAW,EAAE,EAAE,gBAAgB,EAAE,EAAE,EAAE,gBAAgB,EAAE,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE;SACnG;KACF;IACD,aAAa,EAAE;QACb;YACE,EAAE,EAAE,MAAM;YACV,OAAO,EAAE,WAAW;YACpB,GAAG,EAAE,IAAI;YACT,QAAQ,EAAE,CAAC;YACX,WAAW,EAAE,sBAAsB;YACnC,MAAM,EAAE,mBAAmB;SAC5B;KACF;IACD,gBAAgB,EAAE,GAAG;IACrB,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF,IAAI,CAAC,+DAA+D,EAAE,GAAG,EAAE;IACzE,MAAM,KAAK,GAAG,yBAAyB,CAAC,YAAY,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,yBAAyB,CAAC,EAAE,GAAG,YAAY,EAAE,UAAU,EAAE,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IACrH,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;IACvC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAAC;IACjD,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,EAAE,aAAa,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,CAAC,SAAS,CAAC,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;AAC5E,CAAC,CAAC,CAAC;AAEH,IAAI,CAAC,0EAA0E,EAAE,GAAG,EAAE;IACpF,MAAM,GAAG,GAAG,0BAA0B,CAAC,YAAY,CAAC,CAAC;IACrD,MAAM,SAAS,GAAG,0BAA0B,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,WAAW,GAAG,4BAA4B,CAAC,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAC;IACjD,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,4BAA4B,CAAC,CAAC;IAC1D,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IAC5C,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE,mCAAmC,CAAC,CAAC;IACnE,KAAK,MAAM,MAAM,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;QAChD,MAAM,CAAC,EAAE,CAAC,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,UAAU,GAAG,GAAG,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rasterizer.test.d.ts","sourceRoot":"","sources":["../../src/test/rasterizer.test.ts"],"names":[],"mappings":""}
|