@euconform/cli 1.1.0 → 1.2.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.
@@ -0,0 +1,92 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://euconform.eu/schemas/spec/aibom-v1.1.schema.json",
4
+ "title": "EuConform Evidence Format AI BOM v1.1",
5
+ "description": "Stage 1 inventory document for AI-relevant components and compliance capabilities. Adds optional import provenance metadata.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "generatedAt", "project", "components", "complianceCapabilities"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": "euconform.aibom.v1.1"
12
+ },
13
+ "generatedAt": {
14
+ "type": "string",
15
+ "format": "date-time"
16
+ },
17
+ "project": {
18
+ "type": "object",
19
+ "required": ["name", "rootPath"],
20
+ "additionalProperties": false,
21
+ "properties": {
22
+ "name": { "type": "string" },
23
+ "rootPath": { "type": "string" }
24
+ }
25
+ },
26
+ "components": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "object",
30
+ "required": ["id", "kind", "name", "source"],
31
+ "additionalProperties": false,
32
+ "properties": {
33
+ "id": { "type": "string" },
34
+ "kind": {
35
+ "enum": [
36
+ "framework",
37
+ "runtime",
38
+ "inference-provider",
39
+ "ai-framework",
40
+ "model",
41
+ "vector-store",
42
+ "embedding",
43
+ "dataset",
44
+ "tool"
45
+ ]
46
+ },
47
+ "name": { "type": "string" },
48
+ "version": { "type": "string" },
49
+ "source": {
50
+ "enum": ["package.json", "lock-file", "code", "config", "docs", "sbom-import"]
51
+ }
52
+ }
53
+ }
54
+ },
55
+ "complianceCapabilities": {
56
+ "type": "object",
57
+ "required": [
58
+ "biasEvaluation",
59
+ "jsonExport",
60
+ "pdfExport",
61
+ "loggingInfrastructure",
62
+ "humanReviewFlow",
63
+ "incidentHandling"
64
+ ],
65
+ "additionalProperties": false,
66
+ "properties": {
67
+ "biasEvaluation": { "type": "boolean" },
68
+ "jsonExport": { "type": "boolean" },
69
+ "pdfExport": { "type": "boolean" },
70
+ "loggingInfrastructure": { "type": "boolean" },
71
+ "humanReviewFlow": { "type": "boolean" },
72
+ "incidentHandling": { "type": "boolean" }
73
+ }
74
+ },
75
+ "metadata": {
76
+ "type": "object",
77
+ "additionalProperties": false,
78
+ "properties": {
79
+ "importSource": {
80
+ "enum": ["cyclonedx", "spdx", "manual"]
81
+ },
82
+ "importTool": {
83
+ "type": "string"
84
+ },
85
+ "originalTimestamp": {
86
+ "type": "string",
87
+ "format": "date-time"
88
+ }
89
+ }
90
+ }
91
+ }
92
+ }
@@ -0,0 +1,76 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://euconform.eu/schemas/spec/aibom-v1.schema.json",
4
+ "title": "EuConform Evidence Format AI BOM v1",
5
+ "description": "Stage 1 inventory document for AI-relevant components and compliance capabilities.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "generatedAt", "project", "components", "complianceCapabilities"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": "euconform.aibom.v1"
12
+ },
13
+ "generatedAt": {
14
+ "type": "string",
15
+ "format": "date-time"
16
+ },
17
+ "project": {
18
+ "type": "object",
19
+ "required": ["name", "rootPath"],
20
+ "additionalProperties": false,
21
+ "properties": {
22
+ "name": { "type": "string" },
23
+ "rootPath": { "type": "string" }
24
+ }
25
+ },
26
+ "components": {
27
+ "type": "array",
28
+ "items": {
29
+ "type": "object",
30
+ "required": ["id", "kind", "name", "source"],
31
+ "additionalProperties": false,
32
+ "properties": {
33
+ "id": { "type": "string" },
34
+ "kind": {
35
+ "enum": [
36
+ "framework",
37
+ "runtime",
38
+ "inference-provider",
39
+ "ai-framework",
40
+ "model",
41
+ "vector-store",
42
+ "embedding",
43
+ "dataset",
44
+ "tool"
45
+ ]
46
+ },
47
+ "name": { "type": "string" },
48
+ "version": { "type": "string" },
49
+ "source": {
50
+ "enum": ["package.json", "lock-file", "code", "config", "docs", "sbom-import"]
51
+ }
52
+ }
53
+ }
54
+ },
55
+ "complianceCapabilities": {
56
+ "type": "object",
57
+ "required": [
58
+ "biasEvaluation",
59
+ "jsonExport",
60
+ "pdfExport",
61
+ "loggingInfrastructure",
62
+ "humanReviewFlow",
63
+ "incidentHandling"
64
+ ],
65
+ "additionalProperties": false,
66
+ "properties": {
67
+ "biasEvaluation": { "type": "boolean" },
68
+ "jsonExport": { "type": "boolean" },
69
+ "pdfExport": { "type": "boolean" },
70
+ "loggingInfrastructure": { "type": "boolean" },
71
+ "humanReviewFlow": { "type": "boolean" },
72
+ "incidentHandling": { "type": "boolean" }
73
+ }
74
+ }
75
+ }
76
+ }
@@ -0,0 +1,61 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://euconform.eu/schemas/spec/bundle-v1.schema.json",
4
+ "title": "EuConform Evidence Format Bundle v1",
5
+ "description": "Stage 2 integrity and transport manifest for EuConform Evidence Format scan artifacts.",
6
+ "type": "object",
7
+ "required": ["schemaVersion", "generatedAt", "tool", "target", "artifacts"],
8
+ "additionalProperties": false,
9
+ "properties": {
10
+ "schemaVersion": {
11
+ "const": "euconform.bundle.v1"
12
+ },
13
+ "generatedAt": {
14
+ "type": "string",
15
+ "format": "date-time"
16
+ },
17
+ "tool": {
18
+ "type": "object",
19
+ "required": ["name", "version"],
20
+ "additionalProperties": false,
21
+ "properties": {
22
+ "name": { "type": "string" },
23
+ "version": { "type": "string" }
24
+ }
25
+ },
26
+ "target": {
27
+ "type": "object",
28
+ "required": ["name", "rootPath"],
29
+ "additionalProperties": false,
30
+ "properties": {
31
+ "name": { "type": "string" },
32
+ "rootPath": { "type": "string" }
33
+ }
34
+ },
35
+ "artifacts": {
36
+ "type": "array",
37
+ "minItems": 1,
38
+ "items": { "$ref": "#/$defs/artifactRef" }
39
+ }
40
+ },
41
+ "$defs": {
42
+ "artifactRef": {
43
+ "type": "object",
44
+ "required": ["role", "fileName", "sha256", "required"],
45
+ "additionalProperties": false,
46
+ "properties": {
47
+ "role": {
48
+ "enum": ["report", "aibom", "ci", "summary"]
49
+ },
50
+ "fileName": { "type": "string" },
51
+ "sha256": {
52
+ "type": "string",
53
+ "pattern": "^[a-f0-9]{64}$"
54
+ },
55
+ "schemaVersion": { "type": "string" },
56
+ "mimeType": { "type": "string" },
57
+ "required": { "type": "boolean" }
58
+ }
59
+ }
60
+ }
61
+ }
@@ -0,0 +1,91 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://euconform.eu/schemas/spec/ci-v1.schema.json",
4
+ "title": "EuConform Evidence Format CI v1",
5
+ "description": "Stage 1 CI gate document for EuConform scan outputs.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "generatedAt",
10
+ "target",
11
+ "status",
12
+ "aiDetected",
13
+ "scanScope",
14
+ "artifacts",
15
+ "complianceOverview",
16
+ "topGaps"
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "schemaVersion": {
21
+ "const": "euconform.ci.v1"
22
+ },
23
+ "generatedAt": {
24
+ "type": "string",
25
+ "format": "date-time"
26
+ },
27
+ "target": {
28
+ "type": "object",
29
+ "required": ["name", "rootPath"],
30
+ "additionalProperties": false,
31
+ "properties": {
32
+ "name": { "type": "string" },
33
+ "rootPath": { "type": "string" }
34
+ }
35
+ },
36
+ "status": {
37
+ "type": "object",
38
+ "required": ["failOn", "failing", "gapCounts", "openQuestions"],
39
+ "additionalProperties": false,
40
+ "properties": {
41
+ "failOn": { "enum": ["none", "critical", "high", "medium", "low"] },
42
+ "failing": { "type": "boolean" },
43
+ "gapCounts": {
44
+ "type": "object",
45
+ "required": ["critical", "high", "medium", "low"],
46
+ "additionalProperties": false,
47
+ "properties": {
48
+ "critical": { "type": "integer" },
49
+ "high": { "type": "integer" },
50
+ "medium": { "type": "integer" },
51
+ "low": { "type": "integer" }
52
+ }
53
+ },
54
+ "openQuestions": { "type": "integer" }
55
+ }
56
+ },
57
+ "aiDetected": { "type": "boolean" },
58
+ "scanScope": { "enum": ["production", "all"] },
59
+ "artifacts": {
60
+ "type": "array",
61
+ "items": { "type": "string" }
62
+ },
63
+ "complianceOverview": {
64
+ "type": "array",
65
+ "items": {
66
+ "type": "object",
67
+ "required": ["area", "status", "confidence"],
68
+ "additionalProperties": false,
69
+ "properties": {
70
+ "area": { "type": "string" },
71
+ "status": { "enum": ["present", "partial", "absent", "unknown"] },
72
+ "confidence": { "enum": ["high", "medium", "low"] }
73
+ }
74
+ }
75
+ },
76
+ "topGaps": {
77
+ "type": "array",
78
+ "items": {
79
+ "type": "object",
80
+ "required": ["id", "title", "priority", "status"],
81
+ "additionalProperties": false,
82
+ "properties": {
83
+ "id": { "type": "string" },
84
+ "title": { "type": "string" },
85
+ "priority": { "enum": ["critical", "high", "medium", "low"] },
86
+ "status": { "enum": ["missing", "partial"] }
87
+ }
88
+ }
89
+ }
90
+ }
91
+ }
@@ -0,0 +1,199 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://euconform.eu/schemas/spec/report-v1.schema.json",
4
+ "title": "EuConform Evidence Format Report v1",
5
+ "description": "Stage 1 compliance evidence document produced by EuConform scan.",
6
+ "type": "object",
7
+ "required": [
8
+ "schemaVersion",
9
+ "generatedAt",
10
+ "tool",
11
+ "target",
12
+ "aiFootprint",
13
+ "complianceSignals",
14
+ "assessmentHints",
15
+ "gaps",
16
+ "recommendationSummary"
17
+ ],
18
+ "additionalProperties": false,
19
+ "properties": {
20
+ "schemaVersion": {
21
+ "const": "euconform.report.v1"
22
+ },
23
+ "generatedAt": {
24
+ "type": "string",
25
+ "format": "date-time"
26
+ },
27
+ "tool": {
28
+ "type": "object",
29
+ "required": ["name", "version"],
30
+ "additionalProperties": false,
31
+ "properties": {
32
+ "name": { "type": "string" },
33
+ "version": { "type": "string" }
34
+ }
35
+ },
36
+ "target": {
37
+ "type": "object",
38
+ "required": ["rootPath", "name", "repoType", "detectedStack"],
39
+ "additionalProperties": false,
40
+ "properties": {
41
+ "rootPath": { "type": "string" },
42
+ "name": { "type": "string" },
43
+ "repoType": {
44
+ "enum": [
45
+ "web-app",
46
+ "api-server",
47
+ "cli-tool",
48
+ "library",
49
+ "chatbot",
50
+ "ml-pipeline",
51
+ "unknown"
52
+ ]
53
+ },
54
+ "detectedStack": {
55
+ "type": "array",
56
+ "items": { "type": "string" }
57
+ }
58
+ }
59
+ },
60
+ "aiFootprint": {
61
+ "type": "object",
62
+ "required": ["usesAI", "inferenceModes", "providerHints", "ragHints"],
63
+ "additionalProperties": false,
64
+ "properties": {
65
+ "usesAI": { "type": "boolean" },
66
+ "inferenceModes": {
67
+ "type": "array",
68
+ "items": { "type": "string" }
69
+ },
70
+ "providerHints": {
71
+ "type": "array",
72
+ "items": { "type": "string" }
73
+ },
74
+ "ragHints": {
75
+ "type": "array",
76
+ "items": { "type": "string" }
77
+ }
78
+ }
79
+ },
80
+ "complianceSignals": {
81
+ "type": "object",
82
+ "required": [
83
+ "disclosure",
84
+ "biasTesting",
85
+ "reportingExports",
86
+ "loggingMonitoring",
87
+ "humanOversight",
88
+ "dataGovernance",
89
+ "incidentReporting"
90
+ ],
91
+ "additionalProperties": false,
92
+ "properties": {
93
+ "disclosure": { "$ref": "#/$defs/complianceSignalGroup" },
94
+ "biasTesting": { "$ref": "#/$defs/complianceSignalGroup" },
95
+ "reportingExports": { "$ref": "#/$defs/complianceSignalGroup" },
96
+ "loggingMonitoring": { "$ref": "#/$defs/complianceSignalGroup" },
97
+ "humanOversight": { "$ref": "#/$defs/complianceSignalGroup" },
98
+ "dataGovernance": { "$ref": "#/$defs/complianceSignalGroup" },
99
+ "incidentReporting": { "$ref": "#/$defs/complianceSignalGroup" }
100
+ }
101
+ },
102
+ "assessmentHints": {
103
+ "type": "object",
104
+ "required": ["possibleModes", "riskIndicators", "gpaiIndicators", "openQuestions"],
105
+ "additionalProperties": false,
106
+ "properties": {
107
+ "possibleModes": {
108
+ "type": "array",
109
+ "items": { "type": "string" }
110
+ },
111
+ "riskIndicators": {
112
+ "type": "array",
113
+ "items": { "$ref": "#/$defs/assessmentHint" }
114
+ },
115
+ "gpaiIndicators": {
116
+ "type": "array",
117
+ "items": { "$ref": "#/$defs/assessmentHint" }
118
+ },
119
+ "openQuestions": {
120
+ "type": "array",
121
+ "items": { "type": "string" }
122
+ }
123
+ }
124
+ },
125
+ "gaps": {
126
+ "type": "array",
127
+ "items": { "$ref": "#/$defs/scanGap" }
128
+ },
129
+ "recommendationSummary": {
130
+ "type": "array",
131
+ "items": { "type": "string" }
132
+ }
133
+ },
134
+ "$defs": {
135
+ "signalEvidence": {
136
+ "type": "object",
137
+ "required": ["file", "snippet"],
138
+ "additionalProperties": false,
139
+ "properties": {
140
+ "file": { "type": "string" },
141
+ "line": { "type": "integer" },
142
+ "snippet": { "type": "string" },
143
+ "provenance": {
144
+ "enum": [
145
+ "runtime",
146
+ "config",
147
+ "root-docs",
148
+ "docs",
149
+ "test",
150
+ "fixture",
151
+ "example",
152
+ "generated",
153
+ "tooling"
154
+ ]
155
+ }
156
+ }
157
+ },
158
+ "complianceSignalGroup": {
159
+ "type": "object",
160
+ "required": ["status", "confidence", "evidence"],
161
+ "additionalProperties": false,
162
+ "properties": {
163
+ "status": { "enum": ["present", "partial", "absent", "unknown"] },
164
+ "confidence": { "enum": ["high", "medium", "low"] },
165
+ "evidence": {
166
+ "type": "array",
167
+ "items": { "$ref": "#/$defs/signalEvidence" }
168
+ }
169
+ }
170
+ },
171
+ "assessmentHint": {
172
+ "type": "object",
173
+ "required": ["hint", "confidence"],
174
+ "additionalProperties": false,
175
+ "properties": {
176
+ "hint": { "type": "string" },
177
+ "articleRef": { "type": "string" },
178
+ "confidence": { "enum": ["high", "medium", "low"] }
179
+ }
180
+ },
181
+ "scanGap": {
182
+ "type": "object",
183
+ "required": ["id", "title", "description", "priority", "status", "basis", "evidence"],
184
+ "additionalProperties": false,
185
+ "properties": {
186
+ "id": { "type": "string" },
187
+ "title": { "type": "string" },
188
+ "description": { "type": "string" },
189
+ "priority": { "enum": ["critical", "high", "medium", "low"] },
190
+ "status": { "enum": ["missing", "partial"] },
191
+ "basis": { "const": "scanner-rule" },
192
+ "evidence": {
193
+ "type": "array",
194
+ "items": { "$ref": "#/$defs/signalEvidence" }
195
+ }
196
+ }
197
+ }
198
+ }
199
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@euconform/cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "license": "MIT OR EUPL-1.2",
5
5
  "author": "Benedikt Hiepler",
6
6
  "description": "CLI scanner and bundle verifier for the EuConform Evidence Format and offline EU AI Act evidence.",
@@ -41,7 +41,7 @@
41
41
  "citty": "^0.1.6",
42
42
  "consola": "^3.4.0",
43
43
  "fflate": "^0.8.2",
44
- "@euconform/core": "1.3.0"
44
+ "@euconform/core": "1.5.0"
45
45
  },
46
46
  "devDependencies": {
47
47
  "@types/node": "^22.15.30",