@action-state-group/capsule-viewer 0.0.0 → 0.1.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.
- package/LICENSE +201 -0
- package/LICENSE-BSD-3-Clause +28 -0
- package/README.md +23 -1
- package/dist/browser.d.ts +4 -0
- package/dist/browser.js +11 -0
- package/dist/browser.js.map +1 -0
- package/dist/compliance-presentation.d.ts +51 -0
- package/dist/compliance-presentation.js +140 -0
- package/dist/compliance-presentation.js.map +1 -0
- package/dist/compliance-styles.d.ts +8 -0
- package/dist/compliance-styles.js +66 -0
- package/dist/compliance-styles.js.map +1 -0
- package/dist/compliance-view.d.ts +6 -0
- package/dist/compliance-view.js +394 -0
- package/dist/compliance-view.js.map +1 -0
- package/dist/compliance.d.ts +92 -0
- package/dist/compliance.js +333 -0
- package/dist/compliance.js.map +1 -0
- package/dist/composed-view.d.ts +24 -0
- package/dist/composed-view.js +179 -0
- package/dist/composed-view.js.map +1 -0
- package/dist/emitter-shell.html +136 -0
- package/dist/emitter.d.ts +69 -0
- package/dist/emitter.js +266 -0
- package/dist/emitter.js.map +1 -0
- package/dist/evidence-graph-view.d.ts +96 -0
- package/dist/evidence-graph-view.js +1480 -0
- package/dist/evidence-graph-view.js.map +1 -0
- package/dist/evidence-graph.iife.js +11373 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/outcome-report-styles.d.ts +16 -0
- package/dist/outcome-report-styles.js +225 -0
- package/dist/outcome-report-styles.js.map +1 -0
- package/dist/outcome-report-view.d.ts +5 -0
- package/dist/outcome-report-view.js +885 -0
- package/dist/outcome-report-view.js.map +1 -0
- package/dist/presentation-builder.d.ts +247 -0
- package/dist/presentation-builder.js +552 -0
- package/dist/presentation-builder.js.map +1 -0
- package/dist/presentation-mount.d.ts +26 -0
- package/dist/presentation-mount.js +45 -0
- package/dist/presentation-mount.js.map +1 -0
- package/package.json +47 -4
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
import { buildComplianceModel, } from "./compliance.js";
|
|
2
|
+
import { COMPLIANCE_CSS } from "./compliance-styles.js";
|
|
3
|
+
import { NOT_STATED } from "@action-state-group/agent-action-capsule";
|
|
4
|
+
/**
|
|
5
|
+
* The EU AI Act obligations-report card. Called from
|
|
6
|
+
* `evidence-graph-view.ts` in place of `renderResultPage` when the bundle's
|
|
7
|
+
* `eu-ai-act-compliance/v1` extension opts in, after the same verify-first
|
|
8
|
+
* gate every other root family goes through -- nothing here ever runs on a
|
|
9
|
+
* bundle that did not verify. See compliance.ts for where every value on the
|
|
10
|
+
* page comes from: counts, verdicts, test wording, tiers and the pack from
|
|
11
|
+
* the sealed records (or "not stated"); the regulatory mapping from the
|
|
12
|
+
* producer's extension, labelled as such.
|
|
13
|
+
*
|
|
14
|
+
* The whole card renders inside one `.cc`-classed wrapper with its own
|
|
15
|
+
* `<style>` (`COMPLIANCE_CSS`) as its first child. Drill-down uses native
|
|
16
|
+
* `<details>`/`<summary>`: keyboard-accessible, no script-driven modal.
|
|
17
|
+
*/
|
|
18
|
+
function element(tag, text) {
|
|
19
|
+
const value = document.createElement(tag);
|
|
20
|
+
if (text !== undefined)
|
|
21
|
+
value.textContent = text;
|
|
22
|
+
return value;
|
|
23
|
+
}
|
|
24
|
+
function el(tag, className, text) {
|
|
25
|
+
const value = element(tag, text);
|
|
26
|
+
value.className = className;
|
|
27
|
+
return value;
|
|
28
|
+
}
|
|
29
|
+
const fmt = (n) => n.toLocaleString();
|
|
30
|
+
const SEVERITY_CLASS = {
|
|
31
|
+
High: "high",
|
|
32
|
+
Medium: "medium",
|
|
33
|
+
Low: "low",
|
|
34
|
+
};
|
|
35
|
+
function severityPill(severity) {
|
|
36
|
+
const cls = SEVERITY_CLASS[severity] ?? "medium";
|
|
37
|
+
return el("span", `sev ${cls}`, severity);
|
|
38
|
+
}
|
|
39
|
+
function tierBadge(tier) {
|
|
40
|
+
const text = tier === "judged"
|
|
41
|
+
? "judged"
|
|
42
|
+
: tier === "recomputed"
|
|
43
|
+
? "recomputed"
|
|
44
|
+
: tier === "mixed"
|
|
45
|
+
? "tier differs across reports"
|
|
46
|
+
: "tier not stated";
|
|
47
|
+
const badge = el("span", `kind ${tier === "judged" || tier === "recomputed" ? tier : "unstated"}`, text);
|
|
48
|
+
badge.dataset.tier = tier;
|
|
49
|
+
return badge;
|
|
50
|
+
}
|
|
51
|
+
function statusPill(statusClass, text) {
|
|
52
|
+
return el("span", `st ${statusClass}`, text);
|
|
53
|
+
}
|
|
54
|
+
// ---------------------------------------------------------------------------
|
|
55
|
+
// Header
|
|
56
|
+
// ---------------------------------------------------------------------------
|
|
57
|
+
function renderHeader(host, model) {
|
|
58
|
+
const hd = el("div", "hd");
|
|
59
|
+
hd.dataset.section = "header";
|
|
60
|
+
hd.append(el("div", "kicker", "EU AI Act obligations report"));
|
|
61
|
+
hd.append(el("h1", "", model.regulation));
|
|
62
|
+
const pack = model.pack.id === NOT_STATED
|
|
63
|
+
? `Pack ${NOT_STATED}`
|
|
64
|
+
: `Pack ${model.pack.id} v${model.pack.version}`;
|
|
65
|
+
hd.append(el("div", "sub", `${pack} · ${fmt(model.obligations.length)} obligations · ${fmt(model.totalSessions)} sessions · Result capsule ${model.capsuleId}`));
|
|
66
|
+
const basis = el("p", "na", `Counts, verdicts, test wording, tiers and the pack are read from the sealed claims and reports in this bundle, or marked "${NOT_STATED}". The article, applicability, method and finding recommendations are the producer's mapping, carried on this bundle's eu-ai-act-compliance/v1 extension outside the signed records.`);
|
|
67
|
+
basis.dataset.basis = "terms";
|
|
68
|
+
hd.append(basis);
|
|
69
|
+
host.append(hd);
|
|
70
|
+
}
|
|
71
|
+
// ---------------------------------------------------------------------------
|
|
72
|
+
// Section 1: summary
|
|
73
|
+
// ---------------------------------------------------------------------------
|
|
74
|
+
function obligationStatus(obligation) {
|
|
75
|
+
const exceptions = obligation.rows.reduce((sum, r) => sum + r.notMetCount, 0);
|
|
76
|
+
if (obligation.applicability.status === "not stated")
|
|
77
|
+
return exceptions > 0
|
|
78
|
+
? { cls: "exc", text: `Exceptions noted (${fmt(exceptions)})` }
|
|
79
|
+
: { cls: "ok", text: "No exceptions" };
|
|
80
|
+
if (obligation.applicability.status === "future")
|
|
81
|
+
return exceptions > 0
|
|
82
|
+
? {
|
|
83
|
+
cls: "future",
|
|
84
|
+
text: `Not yet applicable · ${fmt(exceptions)} exceptions (readiness)`,
|
|
85
|
+
}
|
|
86
|
+
: { cls: "future", text: "Not yet applicable · no exceptions" };
|
|
87
|
+
return exceptions > 0
|
|
88
|
+
? { cls: "exc", text: `Exceptions noted (${fmt(exceptions)})` }
|
|
89
|
+
: { cls: "ok", text: "No exceptions" };
|
|
90
|
+
}
|
|
91
|
+
function renderSummary(host, model) {
|
|
92
|
+
const section = el("section", "");
|
|
93
|
+
section.dataset.section = "summary";
|
|
94
|
+
section.append(el("h2", "", "1. Summary"));
|
|
95
|
+
section.append(el("p", "lede", "Results are stated as counts of sessions; no overall compliance percentage is given."));
|
|
96
|
+
const table = document.createElement("table");
|
|
97
|
+
table.className = "grid";
|
|
98
|
+
table.dataset.rows = "summary";
|
|
99
|
+
const thead = document.createElement("thead");
|
|
100
|
+
const headRow = document.createElement("tr");
|
|
101
|
+
headRow.append(element("th", "Article"), element("th", "Obligation"), element("th", "Applicability"), element("th", "Status"));
|
|
102
|
+
thead.append(headRow);
|
|
103
|
+
table.append(thead);
|
|
104
|
+
const tbody = document.createElement("tbody");
|
|
105
|
+
for (const obligation of model.obligations) {
|
|
106
|
+
const row = document.createElement("tr");
|
|
107
|
+
row.dataset.obligation = obligation.key;
|
|
108
|
+
const status = obligationStatus(obligation);
|
|
109
|
+
row.append(el("td", "b", obligation.article), element("td", obligation.title), element("td", obligation.applicability.note));
|
|
110
|
+
const statusCell = document.createElement("td");
|
|
111
|
+
statusCell.append(statusPill(status.cls, status.text));
|
|
112
|
+
row.append(statusCell);
|
|
113
|
+
tbody.append(row);
|
|
114
|
+
}
|
|
115
|
+
table.append(tbody);
|
|
116
|
+
section.append(table);
|
|
117
|
+
host.append(section);
|
|
118
|
+
}
|
|
119
|
+
// ---------------------------------------------------------------------------
|
|
120
|
+
// Sessions drill-down (shared by test rows and findings)
|
|
121
|
+
// ---------------------------------------------------------------------------
|
|
122
|
+
function checkItBlock(test) {
|
|
123
|
+
const box = el("div", "ck");
|
|
124
|
+
box.dataset.crit = test.criterionId;
|
|
125
|
+
box.dataset.critVerdict = test.verdict;
|
|
126
|
+
const head = el("div", "h");
|
|
127
|
+
const label = test.verdict === "met"
|
|
128
|
+
? "✓ met"
|
|
129
|
+
: test.verdict === "not_met"
|
|
130
|
+
? "✗ not met"
|
|
131
|
+
: test.verdict === "not_applicable"
|
|
132
|
+
? "— not applicable"
|
|
133
|
+
: test.verdict === "failed"
|
|
134
|
+
? "✗ failed verification (counted as an exception)"
|
|
135
|
+
: test.verdict === "unsupported"
|
|
136
|
+
? "✗ unsupported: its evidence is not in this bundle (counted as an exception)"
|
|
137
|
+
: "– not evaluable";
|
|
138
|
+
head.append(element("span", label));
|
|
139
|
+
head.append(tierBadge(test.tier));
|
|
140
|
+
box.append(head);
|
|
141
|
+
if (test.rationale !== undefined)
|
|
142
|
+
box.append(el("div", "why", test.rationale));
|
|
143
|
+
const ev = el("div", "ev");
|
|
144
|
+
ev.append(element("span", "Evidence: "));
|
|
145
|
+
if (test.reportDigest !== undefined)
|
|
146
|
+
ev.append(element("code", test.reportDigest));
|
|
147
|
+
if (test.contract !== undefined)
|
|
148
|
+
ev.append(element("code", test.contract));
|
|
149
|
+
if (test.judgePinDigest !== undefined)
|
|
150
|
+
ev.append(element("code", test.judgePinDigest));
|
|
151
|
+
if (test.reportDigest === undefined)
|
|
152
|
+
ev.append(element("span", "absent"));
|
|
153
|
+
box.append(ev);
|
|
154
|
+
return box;
|
|
155
|
+
}
|
|
156
|
+
function renderTranscript(session) {
|
|
157
|
+
const t = session.transcript;
|
|
158
|
+
const wrap = el("div", "tx");
|
|
159
|
+
wrap.dataset.transcript = t.state;
|
|
160
|
+
if (t.state !== "verified") {
|
|
161
|
+
wrap.append(el("div", "ev", t.state === "absent"
|
|
162
|
+
? `Transcript: not in this bundle. The conversation is sealed in the case record ${session.sourceCapsuleId ?? "(not stated by the reports)"}; this page cannot show it and does not vouch for it.`
|
|
163
|
+
: `Transcript: not shown: ${t.reason ?? "the cited transcript does not check"}.`));
|
|
164
|
+
return wrap;
|
|
165
|
+
}
|
|
166
|
+
wrap.append(el("div", "ev", `Transcript: sealed in record ${t.transcriptRecordId}; its digest equals what the judged case capsule committed to (${t.inputDigest}), checked on this page. ${t.turns.length} messages, in order.`));
|
|
167
|
+
for (const turn of t.turns) {
|
|
168
|
+
const line = el("div", `turn ${turn.role}`);
|
|
169
|
+
line.append(el("b", "", `${turn.role}: `));
|
|
170
|
+
if (turn.content !== undefined)
|
|
171
|
+
line.append(element("span", turn.content));
|
|
172
|
+
for (const call of turn.toolCalls)
|
|
173
|
+
line.append(el("code", "", ` ${call.name}(${call.arguments})`));
|
|
174
|
+
wrap.append(line);
|
|
175
|
+
}
|
|
176
|
+
return wrap;
|
|
177
|
+
}
|
|
178
|
+
function renderSessionDetails(session) {
|
|
179
|
+
const details = document.createElement("details");
|
|
180
|
+
details.className = "session";
|
|
181
|
+
details.dataset.session = session.conversationId;
|
|
182
|
+
const summary = document.createElement("summary");
|
|
183
|
+
summary.textContent = `${session.conversationId} · ${session.day}`;
|
|
184
|
+
details.append(summary);
|
|
185
|
+
for (const test of session.tests)
|
|
186
|
+
details.append(checkItBlock(test));
|
|
187
|
+
details.append(renderTranscript(session));
|
|
188
|
+
return details;
|
|
189
|
+
}
|
|
190
|
+
function renderSessionList(host, conversationIds, sessions) {
|
|
191
|
+
const byId = new Map(sessions.map((s) => [s.conversationId, s]));
|
|
192
|
+
const details = document.createElement("details");
|
|
193
|
+
details.dataset.records = "sessions";
|
|
194
|
+
const summary = document.createElement("summary");
|
|
195
|
+
summary.textContent = `${fmt(conversationIds.length)} sessions`;
|
|
196
|
+
details.append(summary);
|
|
197
|
+
for (const id of conversationIds) {
|
|
198
|
+
const session = byId.get(id);
|
|
199
|
+
if (session !== undefined)
|
|
200
|
+
details.append(renderSessionDetails(session));
|
|
201
|
+
}
|
|
202
|
+
host.append(details);
|
|
203
|
+
}
|
|
204
|
+
// ---------------------------------------------------------------------------
|
|
205
|
+
// Section 2: test results
|
|
206
|
+
// ---------------------------------------------------------------------------
|
|
207
|
+
function renderTests(host, model) {
|
|
208
|
+
const section = el("section", "");
|
|
209
|
+
section.dataset.section = "tests";
|
|
210
|
+
section.append(el("h2", "", "2. Test results"));
|
|
211
|
+
section.append(el("p", "lede", "Population is the sessions a test has a sealed result for; a session with none for a test is not applicable to it and is not counted. Recomputed tests are deterministic checks anyone " +
|
|
212
|
+
"can repeat from the records. Judged tests apply a frozen rubric with a pinned model."));
|
|
213
|
+
const table = document.createElement("table");
|
|
214
|
+
table.className = "grid";
|
|
215
|
+
table.dataset.rows = "tests";
|
|
216
|
+
const thead = document.createElement("thead");
|
|
217
|
+
const headRow = document.createElement("tr");
|
|
218
|
+
headRow.append(element("th", "Test"), element("th", "Requirement"), element("th", "Type"), el("th", "n", "Population"), el("th", "n", "Exceptions"), el("th", "n", "Not evaluable"), element("th", "Result"));
|
|
219
|
+
thead.append(headRow);
|
|
220
|
+
table.append(thead);
|
|
221
|
+
const tbody = document.createElement("tbody");
|
|
222
|
+
for (const obligation of model.obligations)
|
|
223
|
+
for (const row of obligation.rows) {
|
|
224
|
+
const tr = document.createElement("tr");
|
|
225
|
+
tr.dataset.criterion = row.criterionId;
|
|
226
|
+
const typeCell = document.createElement("td");
|
|
227
|
+
typeCell.append(tierBadge(row.tier));
|
|
228
|
+
const resultCell = document.createElement("td");
|
|
229
|
+
const population = model.totalSessions - row.notApplicableCount;
|
|
230
|
+
if (population > 0 &&
|
|
231
|
+
row.notEvaluableCount === population &&
|
|
232
|
+
row.notMetCount === 0 &&
|
|
233
|
+
row.metCount === 0) {
|
|
234
|
+
resultCell.append(statusPill("ne", "Not evaluable"));
|
|
235
|
+
if (row.notEvaluableNote !== undefined)
|
|
236
|
+
resultCell.append(el("div", "applic", row.notEvaluableNote));
|
|
237
|
+
}
|
|
238
|
+
else {
|
|
239
|
+
resultCell.append(statusPill(row.notMetCount > 0 ? "exc" : "ok", row.notMetCount > 0 ? "Exceptions" : "No exceptions"));
|
|
240
|
+
}
|
|
241
|
+
tr.append(el("td", "b", `${obligation.article}`), element("td", row.name), typeCell, el("td", "n", fmt(population)), el("td", "n", fmt(row.notMetCount)), el("td", "n", fmt(row.notEvaluableCount)), resultCell);
|
|
242
|
+
tbody.append(tr);
|
|
243
|
+
const drill = document.createElement("tr");
|
|
244
|
+
const drillCell = document.createElement("td");
|
|
245
|
+
drillCell.colSpan = 7;
|
|
246
|
+
const sessionIds = [
|
|
247
|
+
...(row.sessionsByVerdict.get("not_met") ?? []),
|
|
248
|
+
...(row.sessionsByVerdict.get("not_evaluable") ?? []),
|
|
249
|
+
];
|
|
250
|
+
if (sessionIds.length > 0)
|
|
251
|
+
renderSessionList(drillCell, sessionIds, model.sessions);
|
|
252
|
+
drill.append(drillCell);
|
|
253
|
+
tbody.append(drill);
|
|
254
|
+
}
|
|
255
|
+
table.append(tbody);
|
|
256
|
+
section.append(table);
|
|
257
|
+
host.append(section);
|
|
258
|
+
}
|
|
259
|
+
// ---------------------------------------------------------------------------
|
|
260
|
+
// Section 3: findings
|
|
261
|
+
// ---------------------------------------------------------------------------
|
|
262
|
+
function renderFindings(host, model) {
|
|
263
|
+
const section = el("section", "");
|
|
264
|
+
section.dataset.section = "findings";
|
|
265
|
+
section.append(el("h2", "", "3. Findings"));
|
|
266
|
+
if (model.findings.length === 0) {
|
|
267
|
+
section.append(el("p", "lede", "No findings: every test with a not-met session count above zero would have produced one."));
|
|
268
|
+
host.append(section);
|
|
269
|
+
return;
|
|
270
|
+
}
|
|
271
|
+
for (const finding of model.findings) {
|
|
272
|
+
const box = el("div", "fnd");
|
|
273
|
+
box.dataset.finding = finding.id;
|
|
274
|
+
const fh = el("div", "fh");
|
|
275
|
+
fh.append(el("b", "", finding.id), severityPill(finding.severity), element("span", finding.article), el("span", "", finding.testName));
|
|
276
|
+
box.append(fh);
|
|
277
|
+
const table = document.createElement("table");
|
|
278
|
+
table.className = "fk";
|
|
279
|
+
const evRow = document.createElement("tr");
|
|
280
|
+
evRow.append(element("th", "Evidence"), element("td", `${fmt(finding.sessionIds.length)} sessions`));
|
|
281
|
+
const recRow = document.createElement("tr");
|
|
282
|
+
recRow.append(element("th", "Recommendation"), el("td", "", finding.recommendation));
|
|
283
|
+
const ownerRow = document.createElement("tr");
|
|
284
|
+
ownerRow.append(element("th", "Owner · due"), element("td", finding.ownerDue));
|
|
285
|
+
table.append(evRow, recRow, ownerRow);
|
|
286
|
+
box.append(table);
|
|
287
|
+
renderSessionList(box, finding.sessionIds, model.sessions);
|
|
288
|
+
section.append(box);
|
|
289
|
+
}
|
|
290
|
+
host.append(section);
|
|
291
|
+
}
|
|
292
|
+
// ---------------------------------------------------------------------------
|
|
293
|
+
// Section 4: quality of judged results
|
|
294
|
+
// ---------------------------------------------------------------------------
|
|
295
|
+
function renderQuality(host, model) {
|
|
296
|
+
const section = el("section", "");
|
|
297
|
+
section.dataset.section = "quality";
|
|
298
|
+
section.append(el("h2", "", "4. Quality of judged results"));
|
|
299
|
+
const protocol = model.qualityProtocol;
|
|
300
|
+
if (protocol === undefined) {
|
|
301
|
+
section.append(el("p", "lede", "No quality protocol declared in this pack."));
|
|
302
|
+
host.append(section);
|
|
303
|
+
return;
|
|
304
|
+
}
|
|
305
|
+
section.append(el("p", "lede", `Protocol ${protocol.protocol ?? "unspecified"}${protocol.cadence === undefined ? "" : `, ${protocol.cadence}`}. Recomputed tests are not sampled.`));
|
|
306
|
+
if (protocol.note !== undefined)
|
|
307
|
+
section.append(el("p", "na", protocol.note));
|
|
308
|
+
host.append(section);
|
|
309
|
+
}
|
|
310
|
+
// ---------------------------------------------------------------------------
|
|
311
|
+
// Section 5: methodology / what ran
|
|
312
|
+
// ---------------------------------------------------------------------------
|
|
313
|
+
function renderWhatRan(host, model) {
|
|
314
|
+
const section = el("section", "");
|
|
315
|
+
section.dataset.section = "methodology";
|
|
316
|
+
section.append(el("h2", "", "5. Methodology"));
|
|
317
|
+
const ran = el("div", "ran");
|
|
318
|
+
const field = (label, value) => {
|
|
319
|
+
const it = el("div", "it");
|
|
320
|
+
it.append(el("div", "k", label), el("div", "v", value));
|
|
321
|
+
ran.append(it);
|
|
322
|
+
};
|
|
323
|
+
field("Contract", model.runInfo.contract ??
|
|
324
|
+
(model.runInfo.pinned ? "no conversations" : "disagrees across sessions"));
|
|
325
|
+
field("Judge pin digest", model.runInfo.judgePinDigest ??
|
|
326
|
+
(model.runInfo.pinned
|
|
327
|
+
? "no judged sessions cited"
|
|
328
|
+
: "disagrees across sessions"));
|
|
329
|
+
field("Sessions", fmt(model.totalSessions));
|
|
330
|
+
section.append(ran);
|
|
331
|
+
host.append(section);
|
|
332
|
+
}
|
|
333
|
+
// ---------------------------------------------------------------------------
|
|
334
|
+
// Per-obligation detail (plain-language text, method, judged terms)
|
|
335
|
+
// ---------------------------------------------------------------------------
|
|
336
|
+
function renderObligationDetail(host, obligation) {
|
|
337
|
+
const details = document.createElement("details");
|
|
338
|
+
details.dataset.obligationDetail = obligation.key;
|
|
339
|
+
const summary = document.createElement("summary");
|
|
340
|
+
summary.textContent = `${obligation.article} · ${obligation.title}`;
|
|
341
|
+
details.append(summary);
|
|
342
|
+
details.dataset.mapped = String(obligation.mapped);
|
|
343
|
+
details.append(el("p", "na", obligation.mapped
|
|
344
|
+
? "Article, summary and method: the producer's mapping, not a sealed record."
|
|
345
|
+
: `The producer's extension does not map this obligation: article, summary and method ${NOT_STATED}.`));
|
|
346
|
+
details.append(el("p", "", obligation.plain));
|
|
347
|
+
if (obligation.judgedTerms.length > 0)
|
|
348
|
+
details.append(el("p", "applic", `Judged terms: ${obligation.judgedTerms.join(", ")}`));
|
|
349
|
+
details.append(el("p", "", obligation.method));
|
|
350
|
+
for (const row of obligation.rows) {
|
|
351
|
+
const rowBox = el("div", "ck");
|
|
352
|
+
rowBox.dataset.wording = row.wording.source;
|
|
353
|
+
const h = el("div", "h");
|
|
354
|
+
h.append(element("span", row.name), tierBadge(row.tier));
|
|
355
|
+
rowBox.append(h);
|
|
356
|
+
rowBox.append(el("div", "why", row.wording.source === "sealed"
|
|
357
|
+
? `Wording run (sealed): ${row.wording.text}`
|
|
358
|
+
: row.wording.source === "mixed"
|
|
359
|
+
? `Wording ${NOT_STATED}: the cited reports state different wordings.`
|
|
360
|
+
: `Wording ${NOT_STATED}: no cited report states it.`));
|
|
361
|
+
if (row.notEvaluableNote !== undefined)
|
|
362
|
+
rowBox.append(el("div", "ev", row.notEvaluableNote));
|
|
363
|
+
details.append(rowBox);
|
|
364
|
+
}
|
|
365
|
+
host.append(details);
|
|
366
|
+
}
|
|
367
|
+
function renderObligationDetails(host, model) {
|
|
368
|
+
const section = el("section", "");
|
|
369
|
+
section.dataset.section = "obligation-detail";
|
|
370
|
+
section.append(el("h2", "", "Obligation detail"));
|
|
371
|
+
for (const obligation of model.obligations)
|
|
372
|
+
renderObligationDetail(section, obligation);
|
|
373
|
+
host.append(section);
|
|
374
|
+
}
|
|
375
|
+
// ---------------------------------------------------------------------------
|
|
376
|
+
// Assembly
|
|
377
|
+
// ---------------------------------------------------------------------------
|
|
378
|
+
export function renderCompliancePage(result, presentation, _bundle, _verified, root) {
|
|
379
|
+
const model = buildComplianceModel(result, presentation);
|
|
380
|
+
const wrapper = el("div", "cc");
|
|
381
|
+
wrapper.dataset.page = "compliance";
|
|
382
|
+
const style = document.createElement("style");
|
|
383
|
+
style.textContent = COMPLIANCE_CSS;
|
|
384
|
+
wrapper.append(style);
|
|
385
|
+
renderHeader(wrapper, model);
|
|
386
|
+
renderSummary(wrapper, model);
|
|
387
|
+
renderObligationDetails(wrapper, model);
|
|
388
|
+
renderTests(wrapper, model);
|
|
389
|
+
renderFindings(wrapper, model);
|
|
390
|
+
renderQuality(wrapper, model);
|
|
391
|
+
renderWhatRan(wrapper, model);
|
|
392
|
+
root.append(wrapper);
|
|
393
|
+
}
|
|
394
|
+
//# sourceMappingURL=compliance-view.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compliance-view.js","sourceRoot":"","sources":["../src/compliance-view.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,oBAAoB,GAQrB,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,0CAA0C,CAAC;AAGtE;;;;;;;;;;;;;GAaG;AAEH,SAAS,OAAO,CAAC,GAAW,EAAE,IAAa;IACzC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAC1C,IAAI,IAAI,KAAK,SAAS;QAAE,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IACjD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,EAAE,CAAC,GAAW,EAAE,SAAiB,EAAE,IAAa;IACvD,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACjC,KAAK,CAAC,SAAS,GAAG,SAAS,CAAC;IAC5B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,GAAG,GAAG,CAAC,CAAS,EAAU,EAAE,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC;AAEtD,MAAM,cAAc,GAA2B;IAC7C,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACX,CAAC;AAEF,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,GAAG,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;IACjD,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,IAAiB;IAClC,MAAM,IAAI,GACR,IAAI,KAAK,QAAQ;QACf,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,IAAI,KAAK,YAAY;YACrB,CAAC,CAAC,YAAY;YACd,CAAC,CAAC,IAAI,KAAK,OAAO;gBAChB,CAAC,CAAC,6BAA6B;gBAC/B,CAAC,CAAC,iBAAiB,CAAC;IAC5B,MAAM,KAAK,GAAG,EAAE,CACd,MAAM,EACN,QAAQ,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU,EAAE,EACxE,IAAI,CACL,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAC1B,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,WAAmB,EAAE,IAAY;IACnD,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,WAAW,EAAE,EAAE,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,8EAA8E;AAC9E,SAAS;AACT,8EAA8E;AAE9E,SAAS,YAAY,CAAC,IAAiB,EAAE,KAAsB;IAC7D,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,EAAE,CAAC,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC9B,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC/D,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC;IAC1C,MAAM,IAAI,GACR,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,UAAU;QAC1B,CAAC,CAAC,QAAQ,UAAU,EAAE;QACtB,CAAC,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;IACrD,EAAE,CAAC,MAAM,CACP,EAAE,CACA,KAAK,EACL,KAAK,EACL,GAAG,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,kBAAkB,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,8BAA8B,KAAK,CAAC,SAAS,EAAE,CACpI,CACF,CAAC;IACF,MAAM,KAAK,GAAG,EAAE,CACd,GAAG,EACH,IAAI,EACJ,6HAA6H,UAAU,sLAAsL,CAC9T,CAAC;IACF,KAAK,CAAC,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;IAC9B,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACjB,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,UAA2B;IAInD,MAAM,UAAU,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9E,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,KAAK,YAAY;QAClD,OAAO,UAAU,GAAG,CAAC;YACnB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;YAC/D,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;IAC3C,IAAI,UAAU,CAAC,aAAa,CAAC,MAAM,KAAK,QAAQ;QAC9C,OAAO,UAAU,GAAG,CAAC;YACnB,CAAC,CAAC;gBACE,GAAG,EAAE,QAAQ;gBACb,IAAI,EAAE,wBAAwB,GAAG,CAAC,UAAU,CAAC,yBAAyB;aACvE;YACH,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,oCAAoC,EAAE,CAAC;IACpE,OAAO,UAAU,GAAG,CAAC;QACnB,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,qBAAqB,GAAG,CAAC,UAAU,CAAC,GAAG,EAAE;QAC/D,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,eAAe,EAAE,CAAC;AAC3C,CAAC;AAED,SAAS,aAAa,CAAC,IAAiB,EAAE,KAAsB;IAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC;IAC3C,OAAO,CAAC,MAAM,CACZ,EAAE,CACA,GAAG,EACH,MAAM,EACN,sFAAsF,CACvF,CACF,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC;IAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,EACxB,OAAO,CAAC,IAAI,EAAE,YAAY,CAAC,EAC3B,OAAO,CAAC,IAAI,EAAE,eAAe,CAAC,EAC9B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CACxB,CAAC;IACF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QACzC,GAAG,CAAC,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC,GAAG,CAAC;QACxC,MAAM,MAAM,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAC5C,GAAG,CAAC,MAAM,CACR,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC,OAAO,CAAC,EACjC,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,EAC/B,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAC7C,CAAC;QACF,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAChD,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QACvD,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACvB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,yDAAyD;AACzD,8EAA8E;AAE9E,SAAS,YAAY,CAAC,IAAiB;IACrC,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC5B,GAAG,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;IACpC,GAAG,CAAC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IACvC,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC5B,MAAM,KAAK,GACT,IAAI,CAAC,OAAO,KAAK,KAAK;QACpB,CAAC,CAAC,OAAO;QACT,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,SAAS;YAC1B,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,gBAAgB;gBACjC,CAAC,CAAC,kBAAkB;gBACpB,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,QAAQ;oBACzB,CAAC,CAAC,iDAAiD;oBACnD,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,aAAa;wBAC9B,CAAC,CAAC,6EAA6E;wBAC/E,CAAC,CAAC,iBAAiB,CAAC;IAChC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;IACpC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAClC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACjB,IAAI,IAAI,CAAC,SAAS,KAAK,SAAS;QAC9B,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAC/C,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC3B,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IACzC,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QACjC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IAChD,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS;QAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3E,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS;QACnC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,YAAY,KAAK,SAAS;QAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1E,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACf,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,MAAM,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAC7B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAC7B,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC;IAClC,IAAI,CAAC,CAAC,KAAK,KAAK,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,CACT,EAAE,CACA,KAAK,EACL,IAAI,EACJ,CAAC,CAAC,KAAK,KAAK,QAAQ;YAClB,CAAC,CAAC,iFAAiF,OAAO,CAAC,eAAe,IAAI,6BAA6B,uDAAuD;YAClM,CAAC,CAAC,0BAA0B,CAAC,CAAC,MAAM,IAAI,qCAAqC,GAAG,CACnF,CACF,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,CAAC,MAAM,CACT,EAAE,CACA,KAAK,EACL,IAAI,EACJ,gCAAgC,CAAC,CAAC,kBAAkB,kEAAkE,CAAC,CAAC,WAAW,4BAA4B,CAAC,CAAC,KAAM,CAAC,MAAM,sBAAsB,CACrM,CACF,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,CAAC,CAAC,KAAM,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,EAAE,CAAC,KAAK,EAAE,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC;QAC3C,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC3E,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,SAAS;YAC/B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,OAAgB;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,cAAc,CAAC;IACjD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,GAAG,GAAG,OAAO,CAAC,cAAc,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC;IACnE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK;QAAE,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;IACrE,OAAO,CAAC,MAAM,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC1C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAiB,EACjB,eAAkC,EAClC,QAA4B;IAE5B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;IACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC;IAChE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,KAAK,MAAM,EAAE,IAAI,eAAe,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,MAAM,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC;IAC3E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,SAAS,WAAW,CAAC,IAAiB,EAAE,KAAsB;IAC5D,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;IAChD,OAAO,CAAC,MAAM,CACZ,EAAE,CACA,GAAG,EACH,MAAM,EACN,yLAAyL;QACvL,sFAAsF,CACzF,CACF,CAAC;IACF,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;IACzB,KAAK,CAAC,OAAO,CAAC,IAAI,GAAG,OAAO,CAAC;IAC7B,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,CAAC,MAAM,CACZ,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EACrB,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,EAC5B,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,EACrB,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAC3B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,YAAY,CAAC,EAC3B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,eAAe,CAAC,EAC9B,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CACxB,CAAC;IACF,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACtB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW;QACxC,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;YAClC,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YACxC,EAAE,CAAC,OAAO,CAAC,SAAS,GAAG,GAAG,CAAC,WAAW,CAAC;YACvC,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC9C,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACrC,MAAM,UAAU,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,UAAU,GAAG,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC,kBAAkB,CAAC;YAChE,IACE,UAAU,GAAG,CAAC;gBACd,GAAG,CAAC,iBAAiB,KAAK,UAAU;gBACpC,GAAG,CAAC,WAAW,KAAK,CAAC;gBACrB,GAAG,CAAC,QAAQ,KAAK,CAAC,EAClB,CAAC;gBACD,UAAU,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC;gBACrD,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS;oBACpC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,UAAU,CAAC,MAAM,CACf,UAAU,CACR,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAClC,GAAG,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,eAAe,CACrD,CACF,CAAC;YACJ,CAAC;YACD,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC,EACtC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,EACvB,QAAQ,EACR,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,EAC9B,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,EACnC,EAAE,CAAC,IAAI,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC,EACzC,UAAU,CACX,CAAC;YACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACjB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;YAC/C,SAAS,CAAC,OAAO,GAAG,CAAC,CAAC;YACtB,MAAM,UAAU,GAAG;gBACjB,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC/C,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;aACtD,CAAC;YACF,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC;gBACvB,iBAAiB,CAAC,SAAS,EAAE,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3D,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACxB,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtB,CAAC;IACH,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,sBAAsB;AACtB,8EAA8E;AAE9E,SAAS,cAAc,CAAC,IAAiB,EAAE,KAAsB;IAC/D,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;IACrC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,MAAM,CACZ,EAAE,CACA,GAAG,EACH,MAAM,EACN,0FAA0F,CAC3F,CACF,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,KAAK,MAAM,OAAO,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,GAAG,CAAC,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,EAAE,CAAC,MAAM,CACP,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,CAAC,EACvB,YAAY,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC9B,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,EAChC,EAAE,CAAC,MAAM,EAAE,EAAE,EAAE,OAAO,CAAC,QAAQ,CAAC,CACjC,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;QAC9C,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC;QACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC3C,KAAK,CAAC,MAAM,CACV,OAAO,CAAC,IAAI,EAAE,UAAU,CAAC,EACzB,OAAO,CAAC,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,WAAW,CAAC,CAC5D,CAAC;QACF,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,CAAC,MAAM,CACX,OAAO,CAAC,IAAI,EAAE,gBAAgB,CAAC,EAC/B,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,OAAO,CAAC,cAAc,CAAC,CACrC,CAAC;QACF,MAAM,QAAQ,GAAG,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;QAC9C,QAAQ,CAAC,MAAM,CACb,OAAO,CAAC,IAAI,EAAE,aAAa,CAAC,EAC5B,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,CAChC,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;QACtC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAClB,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAC3D,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAAiB,EAAE,KAAsB;IAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;IACpC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,8BAA8B,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,eAAe,CAAC;IACvC,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,CAAC,MAAM,CACZ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,4CAA4C,CAAC,CAC9D,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO;IACT,CAAC;IACD,OAAO,CAAC,MAAM,CACZ,EAAE,CACA,GAAG,EACH,MAAM,EACN,YAAY,QAAQ,CAAC,QAAQ,IAAI,aAAa,GAAG,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,OAAO,EAAE,qCAAqC,CACpJ,CACF,CAAC;IACF,IAAI,QAAQ,CAAC,IAAI,KAAK,SAAS;QAAE,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC9E,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,oCAAoC;AACpC,8EAA8E;AAE9E,SAAS,aAAa,CAAC,IAAiB,EAAE,KAAsB;IAC9D,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,aAAa,CAAC;IACxC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAC/C,MAAM,GAAG,GAAG,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC7B,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,KAAa,EAAQ,EAAE;QACnD,MAAM,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC3B,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC;IACF,KAAK,CACH,UAAU,EACV,KAAK,CAAC,OAAO,CAAC,QAAQ;QACpB,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAC5E,CAAC;IACF,KAAK,CACH,kBAAkB,EAClB,KAAK,CAAC,OAAO,CAAC,cAAc;QAC1B,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM;YACnB,CAAC,CAAC,0BAA0B;YAC5B,CAAC,CAAC,2BAA2B,CAAC,CACnC,CAAC;IACF,KAAK,CAAC,UAAU,EAAE,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC;IAC5C,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACpB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,oEAAoE;AACpE,8EAA8E;AAE9E,SAAS,sBAAsB,CAC7B,IAAiB,EACjB,UAA2B;IAE3B,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,OAAO,CAAC,gBAAgB,GAAG,UAAU,CAAC,GAAG,CAAC;IAClD,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;IAClD,OAAO,CAAC,WAAW,GAAG,GAAG,UAAU,CAAC,OAAO,MAAM,UAAU,CAAC,KAAK,EAAE,CAAC;IACpE,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IACnD,OAAO,CAAC,MAAM,CACZ,EAAE,CACA,GAAG,EACH,IAAI,EACJ,UAAU,CAAC,MAAM;QACf,CAAC,CAAC,2EAA2E;QAC7E,CAAC,CAAC,sFAAsF,UAAU,GAAG,CACxG,CACF,CAAC;IACF,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9C,IAAI,UAAU,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC;QACnC,OAAO,CAAC,MAAM,CACZ,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,iBAAiB,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CACxE,CAAC;IACJ,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,UAAU,CAAC,IAAI,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC/B,MAAM,CAAC,OAAO,CAAC,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC;QAC5C,MAAM,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QACzD,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACjB,MAAM,CAAC,MAAM,CACX,EAAE,CACA,KAAK,EACL,KAAK,EACL,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,QAAQ;YAC7B,CAAC,CAAC,yBAAyB,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE;YAC7C,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,OAAO;gBAC9B,CAAC,CAAC,WAAW,UAAU,+CAA+C;gBACtE,CAAC,CAAC,WAAW,UAAU,8BAA8B,CAC1D,CACF,CAAC;QACF,IAAI,GAAG,CAAC,gBAAgB,KAAK,SAAS;YACpC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;QACvD,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,SAAS,uBAAuB,CAC9B,IAAiB,EACjB,KAAsB;IAEtB,MAAM,OAAO,GAAG,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClC,OAAO,CAAC,OAAO,CAAC,OAAO,GAAG,mBAAmB,CAAC;IAC9C,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,EAAE,EAAE,mBAAmB,CAAC,CAAC,CAAC;IAClD,KAAK,MAAM,UAAU,IAAI,KAAK,CAAC,WAAW;QACxC,sBAAsB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IAC9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,WAAW;AACX,8EAA8E;AAE9E,MAAM,UAAU,oBAAoB,CAClC,MAAkB,EAClB,YAAoC,EACpC,OAAgB,EAChB,SAAmC,EACnC,IAAiB;IAEjB,MAAM,KAAK,GAAG,oBAAoB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IACzD,MAAM,OAAO,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IAChC,OAAO,CAAC,OAAO,CAAC,IAAI,GAAG,YAAY,CAAC;IACpC,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC9C,KAAK,CAAC,WAAW,GAAG,cAAc,CAAC;IACnC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEtB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,uBAAuB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACxC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC5B,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/B,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,aAAa,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;AACvB,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import type { ComplianceApplicability, ComplianceFinding, CompliancePresentation } from "./compliance-presentation.js";
|
|
2
|
+
import { type ConversationTranscript } from "@action-state-group/agent-action-capsule";
|
|
3
|
+
import { type ResultClaim, type ResultRoot } from "@action-state-group/agent-action-capsule";
|
|
4
|
+
export type TestVerdict = "met" | "not_met" | "not_evaluable" | "not_applicable" | "failed" | "unsupported";
|
|
5
|
+
/** A test's tier as the sealed reports state it. */
|
|
6
|
+
export type TierReading = "judged" | "recomputed" | "not stated" | "mixed";
|
|
7
|
+
export interface SealedText {
|
|
8
|
+
readonly text: string;
|
|
9
|
+
readonly source: "sealed" | "unstated" | "mixed";
|
|
10
|
+
}
|
|
11
|
+
export interface SessionTest {
|
|
12
|
+
readonly criterionId: string;
|
|
13
|
+
readonly verdict: TestVerdict;
|
|
14
|
+
readonly tier: TierReading;
|
|
15
|
+
readonly rationale?: string;
|
|
16
|
+
readonly claim?: ResultClaim;
|
|
17
|
+
readonly reportDigest?: string;
|
|
18
|
+
readonly judgePinDigest?: string;
|
|
19
|
+
readonly contract?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface Session {
|
|
22
|
+
readonly conversationId: string;
|
|
23
|
+
readonly day: string;
|
|
24
|
+
readonly tests: readonly SessionTest[];
|
|
25
|
+
readonly sourceCapsuleId?: string;
|
|
26
|
+
readonly transcript: ConversationTranscript;
|
|
27
|
+
}
|
|
28
|
+
export interface ObligationRowModel {
|
|
29
|
+
readonly criterionId: string;
|
|
30
|
+
/** The producer's short label when it maps this test, else the test id made readable. */
|
|
31
|
+
readonly name: string;
|
|
32
|
+
/** The wording the test was run against: the sealed `clause_claim`, or not stated. */
|
|
33
|
+
readonly wording: SealedText;
|
|
34
|
+
readonly tier: TierReading;
|
|
35
|
+
readonly notEvaluableNote?: string;
|
|
36
|
+
readonly finding?: ComplianceFinding;
|
|
37
|
+
readonly metCount: number;
|
|
38
|
+
readonly notMetCount: number;
|
|
39
|
+
readonly notEvaluableCount: number;
|
|
40
|
+
readonly notApplicableCount: number;
|
|
41
|
+
/** verdict bucket -> conversation ids, for the row's own drill-down. failed/unsupported fold into not_met here. */
|
|
42
|
+
readonly sessionsByVerdict: ReadonlyMap<"met" | "not_met" | "not_evaluable" | "not_applicable", readonly string[]>;
|
|
43
|
+
}
|
|
44
|
+
export interface ObligationModel {
|
|
45
|
+
readonly key: string;
|
|
46
|
+
/** True when the producer's extension maps this obligation; otherwise every mapping field reads not stated. */
|
|
47
|
+
readonly mapped: boolean;
|
|
48
|
+
readonly article: string;
|
|
49
|
+
readonly title: string;
|
|
50
|
+
readonly plain: string;
|
|
51
|
+
readonly judgedTerms: readonly string[];
|
|
52
|
+
readonly applicability: {
|
|
53
|
+
readonly status: ComplianceApplicability["status"] | "not stated";
|
|
54
|
+
readonly note: string;
|
|
55
|
+
};
|
|
56
|
+
readonly method: string;
|
|
57
|
+
readonly rows: readonly ObligationRowModel[];
|
|
58
|
+
}
|
|
59
|
+
export interface ComplianceFindingModel {
|
|
60
|
+
readonly id: string;
|
|
61
|
+
readonly criterionId: string;
|
|
62
|
+
readonly obligationKey: string;
|
|
63
|
+
readonly article: string;
|
|
64
|
+
readonly testName: string;
|
|
65
|
+
readonly severity: string;
|
|
66
|
+
readonly recommendation: string;
|
|
67
|
+
readonly ownerDue: string;
|
|
68
|
+
readonly sessionIds: readonly string[];
|
|
69
|
+
}
|
|
70
|
+
export interface ComplianceRunInfo {
|
|
71
|
+
readonly contract?: string;
|
|
72
|
+
readonly judgePinDigest?: string;
|
|
73
|
+
readonly pinned: boolean;
|
|
74
|
+
}
|
|
75
|
+
export interface CompliancePack {
|
|
76
|
+
/** `<contract_id>` of the one `contract_ref` the counted claims name, else not stated. */
|
|
77
|
+
readonly id: string;
|
|
78
|
+
/** `<version>` of that `contract_ref`, else not stated. */
|
|
79
|
+
readonly version: string;
|
|
80
|
+
}
|
|
81
|
+
export interface ComplianceModel {
|
|
82
|
+
readonly regulation: string;
|
|
83
|
+
readonly pack: CompliancePack;
|
|
84
|
+
readonly obligations: readonly ObligationModel[];
|
|
85
|
+
readonly sessions: readonly Session[];
|
|
86
|
+
readonly findings: readonly ComplianceFindingModel[];
|
|
87
|
+
readonly totalSessions: number;
|
|
88
|
+
readonly runInfo: ComplianceRunInfo;
|
|
89
|
+
readonly qualityProtocol: CompliancePresentation["qualityProtocol"];
|
|
90
|
+
readonly capsuleId: string;
|
|
91
|
+
}
|
|
92
|
+
export declare function buildComplianceModel(result: ResultRoot, presentation: CompliancePresentation): ComplianceModel;
|