agent-inspect 6.29.0 → 6.29.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/CHANGELOG.md +6 -0
- package/README.md +1 -1
- package/docs/CLI.md +19 -1
- package/docs/LIMITATIONS.md +1 -1
- package/docs/SAFE-TRACE-SHARING.md +1 -1
- package/docs/STANDARDS.md +1 -1
- package/package.json +1 -1
- package/packages/cli/dist/{chunk-D7PT6TXM.mjs → chunk-UK4HD5M3.mjs} +126 -26
- package/packages/cli/dist/chunk-UK4HD5M3.mjs.map +1 -0
- package/packages/cli/dist/index.cjs +196 -97
- package/packages/cli/dist/index.cjs.map +1 -1
- package/packages/cli/dist/index.mjs +63 -72
- package/packages/cli/dist/index.mjs.map +1 -1
- package/packages/cli/dist/{src-QONEBW2F.mjs → src-CMPIJGUE.mjs} +3 -3
- package/packages/cli/dist/{src-QONEBW2F.mjs.map → src-CMPIJGUE.mjs.map} +1 -1
- package/packages/core/dist/advanced.cjs +100 -24
- package/packages/core/dist/advanced.cjs.map +1 -1
- package/packages/core/dist/advanced.d.cts +11 -0
- package/packages/core/dist/advanced.d.ts +11 -0
- package/packages/core/dist/advanced.mjs +109 -33
- package/packages/core/dist/advanced.mjs.map +1 -1
- package/packages/core/dist/checks.cjs +225 -33
- package/packages/core/dist/checks.cjs.map +1 -1
- package/packages/core/dist/checks.mjs +3 -3
- package/packages/core/dist/{chunk-TNOPL75V.mjs → chunk-5RF7FYGL.mjs} +3 -3
- package/packages/core/dist/{chunk-TNOPL75V.mjs.map → chunk-5RF7FYGL.mjs.map} +1 -1
- package/packages/core/dist/{chunk-3B24355S.mjs → chunk-65LFRW2T.mjs} +3 -3
- package/packages/core/dist/{chunk-3B24355S.mjs.map → chunk-65LFRW2T.mjs.map} +1 -1
- package/packages/core/dist/{chunk-TIGBAVED.mjs → chunk-AQMJFKI6.mjs} +4 -4
- package/packages/core/dist/{chunk-TIGBAVED.mjs.map → chunk-AQMJFKI6.mjs.map} +1 -1
- package/packages/core/dist/{chunk-MVRZ7JBH.mjs → chunk-COZPMOUF.mjs} +3 -3
- package/packages/core/dist/{chunk-MVRZ7JBH.mjs.map → chunk-COZPMOUF.mjs.map} +1 -1
- package/packages/core/dist/{chunk-LGTPSHH2.mjs → chunk-GPGBKN7W.mjs} +228 -36
- package/packages/core/dist/chunk-GPGBKN7W.mjs.map +1 -0
- package/packages/core/dist/exporters.cjs +10 -5
- package/packages/core/dist/exporters.cjs.map +1 -1
- package/packages/core/dist/exporters.d.cts +12 -2
- package/packages/core/dist/exporters.d.ts +12 -2
- package/packages/core/dist/exporters.mjs +13 -8
- package/packages/core/dist/exporters.mjs.map +1 -1
- package/packages/core/dist/index.mjs +4 -4
- package/packages/core/dist/writers.mjs +1 -1
- package/packages/cli/dist/chunk-D7PT6TXM.mjs.map +0 -1
- package/packages/core/dist/chunk-LGTPSHH2.mjs.map +0 -1
|
@@ -1057,6 +1057,16 @@ interface EvidenceHtmlShellInput {
|
|
|
1057
1057
|
* Callers must pass only trusted, escaped fragments (use evidence view builders).
|
|
1058
1058
|
*/
|
|
1059
1059
|
viewBodies?: Partial<Record<EvidenceViewId, string>>;
|
|
1060
|
+
/**
|
|
1061
|
+
* Safe contract-binding metadata only (status / digest / note). Never embed
|
|
1062
|
+
* expected-value payloads in HTML (6.29.3).
|
|
1063
|
+
*/
|
|
1064
|
+
contractBinding?: {
|
|
1065
|
+
status: string;
|
|
1066
|
+
sha256?: string;
|
|
1067
|
+
note?: string;
|
|
1068
|
+
ruleCount?: number;
|
|
1069
|
+
};
|
|
1060
1070
|
}
|
|
1061
1071
|
/**
|
|
1062
1072
|
* Encode JSON for embedding in HTML without breaking out of a script/pre context.
|
|
@@ -1253,6 +1263,7 @@ interface EvidenceCiPackageFiles {
|
|
|
1253
1263
|
}
|
|
1254
1264
|
/**
|
|
1255
1265
|
* Build the standard CI evidence files (in memory) using Evidence v2 helpers.
|
|
1266
|
+
* Order (6.29.3): resolve → safety → bind → HTML → manifest last.
|
|
1256
1267
|
* Optionally packages `contract.resolved.json` and binds digests (6.28+).
|
|
1257
1268
|
*/
|
|
1258
1269
|
declare function buildEvidenceCiPackage(input: EvidenceCiPackageInput): EvidenceCiPackageFiles;
|
|
@@ -1057,6 +1057,16 @@ interface EvidenceHtmlShellInput {
|
|
|
1057
1057
|
* Callers must pass only trusted, escaped fragments (use evidence view builders).
|
|
1058
1058
|
*/
|
|
1059
1059
|
viewBodies?: Partial<Record<EvidenceViewId, string>>;
|
|
1060
|
+
/**
|
|
1061
|
+
* Safe contract-binding metadata only (status / digest / note). Never embed
|
|
1062
|
+
* expected-value payloads in HTML (6.29.3).
|
|
1063
|
+
*/
|
|
1064
|
+
contractBinding?: {
|
|
1065
|
+
status: string;
|
|
1066
|
+
sha256?: string;
|
|
1067
|
+
note?: string;
|
|
1068
|
+
ruleCount?: number;
|
|
1069
|
+
};
|
|
1060
1070
|
}
|
|
1061
1071
|
/**
|
|
1062
1072
|
* Encode JSON for embedding in HTML without breaking out of a script/pre context.
|
|
@@ -1253,6 +1263,7 @@ interface EvidenceCiPackageFiles {
|
|
|
1253
1263
|
}
|
|
1254
1264
|
/**
|
|
1255
1265
|
* Build the standard CI evidence files (in memory) using Evidence v2 helpers.
|
|
1266
|
+
* Order (6.29.3): resolve → safety → bind → HTML → manifest last.
|
|
1256
1267
|
* Optionally packages `contract.resolved.json` and binds digests (6.28+).
|
|
1257
1268
|
*/
|
|
1258
1269
|
declare function buildEvidenceCiPackage(input: EvidenceCiPackageInput): EvidenceCiPackageFiles;
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-
|
|
2
|
-
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-
|
|
3
|
-
export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-
|
|
4
|
-
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-
|
|
5
|
-
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-
|
|
6
|
-
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-
|
|
7
|
-
export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-
|
|
1
|
+
import { extractSessionWorkflowMetadata, sessionKeyForRun, defineTraceContract, runTraceChecks, createRunStatusRule, createToolUsageRule, createRunDurationRule, createLlmUsageRule, createObservedOutcomeRule } from './chunk-GPGBKN7W.mjs';
|
|
2
|
+
export { extractSessionWorkflowMetadata, sessionKeyForRun } from './chunk-GPGBKN7W.mjs';
|
|
3
|
+
export { MAX_TERMINAL_DEPTH, MAX_TERMINAL_NAME_LENGTH, TERMINAL_INDENT, TraceDirectory, createInspector, createInspectorRuntime, formatTerminalName, getCurrentContext, getCurrentCorrelationMetadata, getCurrentDepth, getCurrentRunId, getCurrentRunName, getCurrentStepId, getIndent, getParentStepId, getTraceDirFromContext, getTraceSafetyFromContext, hasActiveContext, isAgentInspectEnabled, isSilentContext, maybeInspectRun, printError, printFailedAt, printRunComplete, printRunStart, printStepComplete, printStepStart, renderErrorLine, renderRunSummary, renderStepLine, resolveTraceDir, runWithContext, runWithStepContext } from './chunk-AQMJFKI6.mjs';
|
|
4
|
+
import { buildRunTimeline, filterTraces, extractMetadata, buildRunSummary } from './chunk-5RF7FYGL.mjs';
|
|
5
|
+
export { buildRunSummary, buildRunTimeline, buildRunWhatSummary, buildTraceStats, extractMetadata, filterTraces, formatStepLabel, renderRunWhat, renderTimeline, renderTraceStats } from './chunk-5RF7FYGL.mjs';
|
|
6
|
+
import { extractOutcomesFromTraceEvents, parseObservationFilter, summarizeObservedOutcomes, extractOutcomesFromPersistedEvents, renderObservedOutcomesHtml } from './chunk-COZPMOUF.mjs';
|
|
7
|
+
export { extractOutcomesFromPersistedEvents, extractOutcomesFromTraceEvents } from './chunk-COZPMOUF.mjs';
|
|
8
8
|
import { diffTraceEvents, renderRunDiff } from './chunk-F7STQ5JF.mjs';
|
|
9
9
|
import './chunk-BT7CATSD.mjs';
|
|
10
10
|
import { escapeHtml, flattenTree } from './chunk-CAWPF22J.mjs';
|
|
11
|
-
import { resolveRedactionProfile, readTraceEventsFromFile } from './chunk-
|
|
12
|
-
export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-
|
|
11
|
+
import { resolveRedactionProfile, readTraceEventsFromFile, stringContainsHighConfidenceCredential } from './chunk-65LFRW2T.mjs';
|
|
12
|
+
export { DEFAULT_MAX_EVENT_BYTES, DEFAULT_MAX_METADATA_VALUE_LENGTH, DEFAULT_MAX_PREVIEW_LENGTH, getRunIdFromTraceFileName, initializeTraceFile, listTraceFiles, prepareMetadataForDisk, prepareTraceEventForDisk, readTraceEvents, readTraceFile, resolveRedactionProfile, resolveTraceSafetyOptions, serializeEvent, validateEvent, writeTraceEvent } from './chunk-65LFRW2T.mjs';
|
|
13
13
|
import { Redactor } from './chunk-VU6O5QAH.mjs';
|
|
14
14
|
import { openTrace } from './chunk-FKUTGUFG.mjs';
|
|
15
15
|
import './chunk-FWK3Q3OJ.mjs';
|
|
@@ -1990,6 +1990,39 @@ var EVIDENCE_CONTRACT_CANONICALIZATION_VERSION = "1";
|
|
|
1990
1990
|
var EVIDENCE_CONTRACT_PARTIAL_NOTE = "Custom or programmatic rules are not serializable; Evidence records rule IDs only and does not claim complete reviewer replay.";
|
|
1991
1991
|
var EVIDENCE_CONTRACT_UNAVAILABLE_NOTE = "No resolved TraceContract or check preset was packaged with this Evidence artifact.";
|
|
1992
1992
|
var EVIDENCE_CONTRACT_ASSURANCE_NOTE = "Contract binding verifies packaged digest integrity only; it does not prove producer identity, trusted time, source completeness, semantic truth, or external acceptance.";
|
|
1993
|
+
var EVIDENCE_CONTRACT_UNSAFE_NOTE = "Resolved TraceContract contains high-confidence credential-like expected values; Evidence refuses complete packaging rather than silently redacting evaluated expectations.";
|
|
1994
|
+
function contractContainsUnsafeExpectedValues(value) {
|
|
1995
|
+
return scanForExpectedFields(value, 0);
|
|
1996
|
+
}
|
|
1997
|
+
function scanForExpectedFields(value, depth) {
|
|
1998
|
+
if (depth > 32) return false;
|
|
1999
|
+
if (Array.isArray(value)) {
|
|
2000
|
+
return value.some((item) => scanForExpectedFields(item, depth + 1));
|
|
2001
|
+
}
|
|
2002
|
+
if (value === null || typeof value !== "object") return false;
|
|
2003
|
+
const record = value;
|
|
2004
|
+
for (const [key, child] of Object.entries(record)) {
|
|
2005
|
+
if (key === "expected" || key === "oneOf") {
|
|
2006
|
+
if (valueTreeContainsCredential(child, depth + 1)) return true;
|
|
2007
|
+
continue;
|
|
2008
|
+
}
|
|
2009
|
+
if (scanForExpectedFields(child, depth + 1)) return true;
|
|
2010
|
+
}
|
|
2011
|
+
return false;
|
|
2012
|
+
}
|
|
2013
|
+
function valueTreeContainsCredential(value, depth) {
|
|
2014
|
+
if (depth > 32) return false;
|
|
2015
|
+
if (typeof value === "string") {
|
|
2016
|
+
return stringContainsHighConfidenceCredential(value);
|
|
2017
|
+
}
|
|
2018
|
+
if (Array.isArray(value)) {
|
|
2019
|
+
return value.some((item) => valueTreeContainsCredential(item, depth + 1));
|
|
2020
|
+
}
|
|
2021
|
+
if (value === null || typeof value !== "object") return false;
|
|
2022
|
+
return Object.values(value).some(
|
|
2023
|
+
(child) => valueTreeContainsCredential(child, depth + 1)
|
|
2024
|
+
);
|
|
2025
|
+
}
|
|
1993
2026
|
function serializeCanonicalJson(value) {
|
|
1994
2027
|
return `${JSON.stringify(stableValue(value), null, 2)}
|
|
1995
2028
|
`;
|
|
@@ -2123,6 +2156,32 @@ function buildEvidenceContractPackage(input) {
|
|
|
2123
2156
|
if (unsupported.length > 0) {
|
|
2124
2157
|
ruleIds = sortedUniqueStrings([...ruleIds, ...unsupported]);
|
|
2125
2158
|
}
|
|
2159
|
+
if (contractContainsUnsafeExpectedValues(resolved)) {
|
|
2160
|
+
return {
|
|
2161
|
+
binding: {
|
|
2162
|
+
status: "unavailable",
|
|
2163
|
+
source: input.source,
|
|
2164
|
+
...input.contractId !== void 0 ? { contractId: input.contractId } : {},
|
|
2165
|
+
...input.contractVersion !== void 0 ? { contractVersion: input.contractVersion } : {},
|
|
2166
|
+
canonicalizationVersion: EVIDENCE_CONTRACT_CANONICALIZATION_VERSION,
|
|
2167
|
+
engineVersion: input.engineVersion,
|
|
2168
|
+
ruleIds,
|
|
2169
|
+
...unsupported.length > 0 ? { unsupportedRuleIds: unsupported } : {},
|
|
2170
|
+
note: input.note ?? EVIDENCE_CONTRACT_UNSAFE_NOTE
|
|
2171
|
+
},
|
|
2172
|
+
checkBinding: {
|
|
2173
|
+
canonicalizationVersion: EVIDENCE_CONTRACT_CANONICALIZATION_VERSION,
|
|
2174
|
+
engineVersion: input.engineVersion,
|
|
2175
|
+
evaluatedRuleIds: ruleIds,
|
|
2176
|
+
bindingStatus: "unavailable",
|
|
2177
|
+
...unsupported.length > 0 ? { unsupportedRuleIds: unsupported } : {},
|
|
2178
|
+
origin: {
|
|
2179
|
+
source: input.source,
|
|
2180
|
+
...input.preset?.name ? { preset: input.preset.name } : {}
|
|
2181
|
+
}
|
|
2182
|
+
}
|
|
2183
|
+
};
|
|
2184
|
+
}
|
|
2126
2185
|
const document = {
|
|
2127
2186
|
canonicalizationVersion: EVIDENCE_CONTRACT_CANONICALIZATION_VERSION,
|
|
2128
2187
|
kind,
|
|
@@ -2504,7 +2563,15 @@ function buildEmbeddedPayload(input) {
|
|
|
2504
2563
|
redactionProfile: input.redactionProfile,
|
|
2505
2564
|
verificationPolicy: input.verificationPolicy
|
|
2506
2565
|
},
|
|
2507
|
-
checkSummary: input.checkSummary
|
|
2566
|
+
checkSummary: input.checkSummary,
|
|
2567
|
+
...input.contractBinding !== void 0 ? {
|
|
2568
|
+
contract: {
|
|
2569
|
+
status: input.contractBinding.status,
|
|
2570
|
+
...input.contractBinding.sha256 !== void 0 ? { sha256: input.contractBinding.sha256 } : {},
|
|
2571
|
+
...input.contractBinding.ruleCount !== void 0 ? { ruleCount: input.contractBinding.ruleCount } : {},
|
|
2572
|
+
...input.contractBinding.note !== void 0 ? { note: input.contractBinding.note } : {}
|
|
2573
|
+
}
|
|
2574
|
+
} : {}
|
|
2508
2575
|
};
|
|
2509
2576
|
}
|
|
2510
2577
|
function buildEvidenceHtmlShell(input) {
|
|
@@ -2602,6 +2669,7 @@ ${nav}
|
|
|
2602
2669
|
<p>Artifact status: <span class="badge ${statusClass(input.assessmentStatus)}">${escapeHtml(input.assessmentStatus)}</span>
|
|
2603
2670
|
${input.sourceStatus !== void 0 ? ` \xB7 Source status: <span class="badge ${statusClass(input.sourceStatus)}">${escapeHtml(input.sourceStatus)}</span>` : ""}</p>
|
|
2604
2671
|
<p>Profile: <code>${escapeHtml(input.redactionProfile)}</code> \xB7 Verification: <code>${escapeHtml(input.verificationPolicy)}</code></p>
|
|
2672
|
+
${input.contractBinding !== void 0 ? `<p>Contract binding: <code>${escapeHtml(input.contractBinding.status)}</code>${input.contractBinding.ruleCount !== void 0 ? ` \xB7 Rules: <code>${escapeHtml(String(input.contractBinding.ruleCount))}</code>` : ""}${input.contractBinding.sha256 !== void 0 ? ` \xB7 Digest: <code>${escapeHtml(input.contractBinding.sha256.slice(0, 16))}\u2026</code>` : ""}</p>${input.contractBinding.note !== void 0 && input.contractBinding.note.trim() !== "" ? `<p class="muted">${escapeHtml(input.contractBinding.note)}</p>` : ""}` : ""}
|
|
2605
2673
|
<p>Generator: <code>${escapeHtml(input.generatorName)}@${escapeHtml(input.generatorVersion)}</code>
|
|
2606
2674
|
${input.createdAt ? ` \xB7 Created: <code>${escapeHtml(input.createdAt)}</code>` : ""}</p>
|
|
2607
2675
|
<h3>Runs</h3>
|
|
@@ -3163,29 +3231,6 @@ function buildEvidenceCiPackage(input) {
|
|
|
3163
3231
|
schemaVersions.add(version);
|
|
3164
3232
|
}
|
|
3165
3233
|
const createdAt = input.createdAt ?? (/* @__PURE__ */ new Date()).toISOString();
|
|
3166
|
-
const evidenceHtml = buildEvidenceHtmlShell({
|
|
3167
|
-
title: "AgentInspect evidence",
|
|
3168
|
-
runIds: input.runIds,
|
|
3169
|
-
assessmentStatus: input.assessmentStatus,
|
|
3170
|
-
sourceStatus: input.sourceStatus,
|
|
3171
|
-
redactionProfile: input.redactionProfile,
|
|
3172
|
-
verificationPolicy: input.redactionProfile,
|
|
3173
|
-
generatorName: "agent-inspect",
|
|
3174
|
-
generatorVersion: input.generatorVersion,
|
|
3175
|
-
createdAt,
|
|
3176
|
-
summaryText: input.summaryText,
|
|
3177
|
-
checkSummary: {
|
|
3178
|
-
aggregateStatus: input.assessmentStatus,
|
|
3179
|
-
runs: input.runIds.map((runId) => ({
|
|
3180
|
-
runId,
|
|
3181
|
-
status: input.assessmentStatus,
|
|
3182
|
-
sourceStatus: input.sourceStatus,
|
|
3183
|
-
errors: input.assessmentStatus === "UNSAFE" || input.assessmentStatus === "UNKNOWN" ? 1 : 0,
|
|
3184
|
-
warnings: input.assessmentStatus === "SAFE WITH WARNINGS" ? 1 : 0,
|
|
3185
|
-
findings: 0
|
|
3186
|
-
}))
|
|
3187
|
-
}
|
|
3188
|
-
});
|
|
3189
3234
|
let checkResultsJson = input.checkResultsJson;
|
|
3190
3235
|
let contractBinding;
|
|
3191
3236
|
let contractFileContent;
|
|
@@ -3208,6 +3253,37 @@ function buildEvidenceCiPackage(input) {
|
|
|
3208
3253
|
bindCheckResultsToContract(parsed, packaged2.checkBinding)
|
|
3209
3254
|
);
|
|
3210
3255
|
}
|
|
3256
|
+
const evidenceHtml = buildEvidenceHtmlShell({
|
|
3257
|
+
title: "AgentInspect evidence",
|
|
3258
|
+
runIds: input.runIds,
|
|
3259
|
+
assessmentStatus: input.assessmentStatus,
|
|
3260
|
+
sourceStatus: input.sourceStatus,
|
|
3261
|
+
redactionProfile: input.redactionProfile,
|
|
3262
|
+
verificationPolicy: input.redactionProfile,
|
|
3263
|
+
generatorName: "agent-inspect",
|
|
3264
|
+
generatorVersion: input.generatorVersion,
|
|
3265
|
+
createdAt,
|
|
3266
|
+
summaryText: input.summaryText,
|
|
3267
|
+
checkSummary: {
|
|
3268
|
+
aggregateStatus: input.assessmentStatus,
|
|
3269
|
+
runs: input.runIds.map((runId) => ({
|
|
3270
|
+
runId,
|
|
3271
|
+
status: input.assessmentStatus,
|
|
3272
|
+
sourceStatus: input.sourceStatus,
|
|
3273
|
+
errors: input.assessmentStatus === "UNSAFE" || input.assessmentStatus === "UNKNOWN" ? 1 : 0,
|
|
3274
|
+
warnings: input.assessmentStatus === "SAFE WITH WARNINGS" ? 1 : 0,
|
|
3275
|
+
findings: 0
|
|
3276
|
+
}))
|
|
3277
|
+
},
|
|
3278
|
+
...contractBinding !== void 0 ? {
|
|
3279
|
+
contractBinding: {
|
|
3280
|
+
status: contractBinding.status,
|
|
3281
|
+
...contractBinding.sha256 !== void 0 ? { sha256: contractBinding.sha256 } : {},
|
|
3282
|
+
...contractBinding.note !== void 0 ? { note: contractBinding.note } : {},
|
|
3283
|
+
ruleCount: contractBinding.ruleIds.length
|
|
3284
|
+
}
|
|
3285
|
+
} : {}
|
|
3286
|
+
});
|
|
3211
3287
|
const packaged = [
|
|
3212
3288
|
{ path: EVIDENCE_HTML_FILENAME, content: evidenceHtml },
|
|
3213
3289
|
{ path: "check-results.json", content: checkResultsJson },
|