@cyclonedx/cdxgen 12.3.0 → 12.3.2

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.
Files changed (121) hide show
  1. package/README.md +15 -5
  2. package/bin/audit.js +7 -0
  3. package/bin/cdxgen.js +241 -81
  4. package/bin/repl.js +138 -0
  5. package/data/rules/ai-agent-governance.yaml +249 -0
  6. package/data/rules/dependency-sources.yaml +41 -0
  7. package/data/rules/mcp-servers.yaml +304 -0
  8. package/data/rules/package-integrity.yaml +123 -0
  9. package/lib/audit/index.js +353 -29
  10. package/lib/audit/index.poku.js +247 -7
  11. package/lib/audit/reporters.js +26 -0
  12. package/lib/audit/scoring.js +262 -13
  13. package/lib/audit/scoring.poku.js +179 -0
  14. package/lib/audit/targets.js +391 -2
  15. package/lib/audit/targets.poku.js +416 -3
  16. package/lib/cli/index.js +588 -45
  17. package/lib/cli/index.poku.js +735 -1
  18. package/lib/evinser/evinser.js +8 -5
  19. package/lib/helpers/agentFormulationParser.js +318 -0
  20. package/lib/helpers/aiInventory.js +262 -0
  21. package/lib/helpers/aiInventory.poku.js +111 -0
  22. package/lib/helpers/analyzer.js +1769 -0
  23. package/lib/helpers/analyzer.poku.js +284 -3
  24. package/lib/helpers/auditCategories.js +76 -0
  25. package/lib/helpers/ciParsers/githubActions.js +140 -16
  26. package/lib/helpers/ciParsers/githubActions.poku.js +110 -0
  27. package/lib/helpers/communityAiConfigParser.js +672 -0
  28. package/lib/helpers/communityAiConfigParser.poku.js +63 -0
  29. package/lib/helpers/depsUtils.js +108 -0
  30. package/lib/helpers/depsUtils.poku.js +72 -1
  31. package/lib/helpers/display.js +325 -3
  32. package/lib/helpers/display.poku.js +301 -0
  33. package/lib/helpers/formulationParsers.js +28 -0
  34. package/lib/helpers/formulationParsers.poku.js +504 -1
  35. package/lib/helpers/jsonLike.js +102 -0
  36. package/lib/helpers/jsonLike.poku.js +34 -0
  37. package/lib/helpers/mcp.js +248 -0
  38. package/lib/helpers/mcp.poku.js +101 -0
  39. package/lib/helpers/mcpConfigParser.js +656 -0
  40. package/lib/helpers/mcpConfigParser.poku.js +126 -0
  41. package/lib/helpers/mcpDiscovery.js +84 -0
  42. package/lib/helpers/mcpDiscovery.poku.js +21 -0
  43. package/lib/helpers/protobom.js +3 -3
  44. package/lib/helpers/provenanceUtils.js +29 -4
  45. package/lib/helpers/provenanceUtils.poku.js +29 -3
  46. package/lib/helpers/registryProvenance.js +210 -0
  47. package/lib/helpers/registryProvenance.poku.js +144 -0
  48. package/lib/helpers/rustFormulationParser.js +330 -0
  49. package/lib/helpers/source.js +21 -2
  50. package/lib/helpers/source.poku.js +38 -0
  51. package/lib/helpers/utils.js +1331 -83
  52. package/lib/helpers/utils.poku.js +599 -188
  53. package/lib/helpers/vsixutils.js +12 -4
  54. package/lib/helpers/vsixutils.poku.js +34 -0
  55. package/lib/managers/binary.js +36 -12
  56. package/lib/managers/binary.poku.js +68 -0
  57. package/lib/managers/docker.js +59 -9
  58. package/lib/managers/docker.poku.js +61 -0
  59. package/lib/managers/piptree.js +12 -7
  60. package/lib/managers/piptree.poku.js +44 -0
  61. package/lib/stages/postgen/annotator.js +2 -1
  62. package/lib/stages/postgen/annotator.poku.js +15 -0
  63. package/lib/stages/postgen/auditBom.js +20 -6
  64. package/lib/stages/postgen/auditBom.poku.js +694 -1
  65. package/lib/stages/postgen/postgen.js +262 -11
  66. package/lib/stages/postgen/postgen.poku.js +306 -2
  67. package/lib/stages/postgen/ruleEngine.js +49 -1
  68. package/lib/stages/postgen/spdxConverter.poku.js +70 -0
  69. package/lib/stages/pregen/pregen.js +6 -4
  70. package/package.json +1 -1
  71. package/types/bin/repl.d.ts.map +1 -1
  72. package/types/lib/audit/index.d.ts.map +1 -1
  73. package/types/lib/audit/reporters.d.ts.map +1 -1
  74. package/types/lib/audit/scoring.d.ts.map +1 -1
  75. package/types/lib/audit/targets.d.ts +12 -0
  76. package/types/lib/audit/targets.d.ts.map +1 -1
  77. package/types/lib/cli/index.d.ts +2 -8
  78. package/types/lib/cli/index.d.ts.map +1 -1
  79. package/types/lib/evinser/evinser.d.ts.map +1 -1
  80. package/types/lib/helpers/agentFormulationParser.d.ts +19 -0
  81. package/types/lib/helpers/agentFormulationParser.d.ts.map +1 -0
  82. package/types/lib/helpers/aiInventory.d.ts +23 -0
  83. package/types/lib/helpers/aiInventory.d.ts.map +1 -0
  84. package/types/lib/helpers/analyzer.d.ts +10 -0
  85. package/types/lib/helpers/analyzer.d.ts.map +1 -1
  86. package/types/lib/helpers/auditCategories.d.ts +12 -0
  87. package/types/lib/helpers/auditCategories.d.ts.map +1 -0
  88. package/types/lib/helpers/ciParsers/githubActions.d.ts.map +1 -1
  89. package/types/lib/helpers/communityAiConfigParser.d.ts +29 -0
  90. package/types/lib/helpers/communityAiConfigParser.d.ts.map +1 -0
  91. package/types/lib/helpers/depsUtils.d.ts +8 -0
  92. package/types/lib/helpers/depsUtils.d.ts.map +1 -1
  93. package/types/lib/helpers/display.d.ts +17 -1
  94. package/types/lib/helpers/display.d.ts.map +1 -1
  95. package/types/lib/helpers/formulationParsers.d.ts.map +1 -1
  96. package/types/lib/helpers/jsonLike.d.ts +4 -0
  97. package/types/lib/helpers/jsonLike.d.ts.map +1 -0
  98. package/types/lib/helpers/mcp.d.ts +29 -0
  99. package/types/lib/helpers/mcp.d.ts.map +1 -0
  100. package/types/lib/helpers/mcpConfigParser.d.ts +30 -0
  101. package/types/lib/helpers/mcpConfigParser.d.ts.map +1 -0
  102. package/types/lib/helpers/mcpDiscovery.d.ts +5 -0
  103. package/types/lib/helpers/mcpDiscovery.d.ts.map +1 -0
  104. package/types/lib/helpers/provenanceUtils.d.ts +5 -3
  105. package/types/lib/helpers/provenanceUtils.d.ts.map +1 -1
  106. package/types/lib/helpers/registryProvenance.d.ts +9 -0
  107. package/types/lib/helpers/registryProvenance.d.ts.map +1 -1
  108. package/types/lib/helpers/rustFormulationParser.d.ts +17 -0
  109. package/types/lib/helpers/rustFormulationParser.d.ts.map +1 -0
  110. package/types/lib/helpers/source.d.ts.map +1 -1
  111. package/types/lib/helpers/utils.d.ts +31 -1
  112. package/types/lib/helpers/utils.d.ts.map +1 -1
  113. package/types/lib/helpers/vsixutils.d.ts.map +1 -1
  114. package/types/lib/managers/binary.d.ts.map +1 -1
  115. package/types/lib/managers/docker.d.ts.map +1 -1
  116. package/types/lib/managers/piptree.d.ts.map +1 -1
  117. package/types/lib/stages/postgen/annotator.d.ts.map +1 -1
  118. package/types/lib/stages/postgen/auditBom.d.ts.map +1 -1
  119. package/types/lib/stages/postgen/postgen.d.ts.map +1 -1
  120. package/types/lib/stages/postgen/ruleEngine.d.ts.map +1 -1
  121. package/types/lib/stages/pregen/pregen.d.ts.map +1 -1
@@ -0,0 +1,111 @@
1
+ import { assert, describe, it } from "poku";
2
+
3
+ import {
4
+ filterInventoryDependencies,
5
+ inventoryTypesForSubject,
6
+ matchesAiInventoryExcludeType,
7
+ matchesAiInventoryType,
8
+ summarizeAiInventory,
9
+ } from "./aiInventory.js";
10
+
11
+ describe("aiInventory", () => {
12
+ it("classifies agent-derived MCP services as both mcp and ai-skill", () => {
13
+ const service = {
14
+ "bom-ref": "urn:service:agent-mcp:demo:1",
15
+ group: "mcp",
16
+ properties: [
17
+ { name: "cdx:mcp:inventorySource", value: "agent-file" },
18
+ { name: "cdx:mcp:serviceType", value: "inferred-endpoint" },
19
+ ],
20
+ };
21
+ assert.deepStrictEqual(inventoryTypesForSubject(service).sort(), [
22
+ "ai-skill",
23
+ "mcp",
24
+ ]);
25
+ assert.strictEqual(matchesAiInventoryType(service, "mcp"), true);
26
+ assert.strictEqual(matchesAiInventoryType(service, "ai-skill"), true);
27
+ });
28
+
29
+ it("limits MCP exclusion matching to AI inventory services, files, and primitives", () => {
30
+ const mcpPackage = {
31
+ "bom-ref": "pkg:npm/@modelcontextprotocol/server-filesystem@1.0.0",
32
+ name: "@modelcontextprotocol/server-filesystem",
33
+ purl: "pkg:npm/%40modelcontextprotocol/server-filesystem@1.0.0",
34
+ };
35
+ const mcpPrimitive = {
36
+ "bom-ref": "urn:mcp:tool:docs:search",
37
+ properties: [{ name: "cdx:mcp:role", value: "tool" }],
38
+ tags: ["mcp", "mcp-tool"],
39
+ };
40
+ const mcpConfig = {
41
+ "bom-ref": "file:/repo/.vscode/mcp.json",
42
+ properties: [{ name: "cdx:file:kind", value: "mcp-config" }],
43
+ type: "file",
44
+ };
45
+ const mcpService = {
46
+ "bom-ref": "urn:service:mcp:docs:latest",
47
+ group: "mcp",
48
+ properties: [{ name: "cdx:mcp:inventorySource", value: "config-file" }],
49
+ };
50
+ assert.strictEqual(matchesAiInventoryExcludeType(mcpPackage, "mcp"), false);
51
+ assert.strictEqual(
52
+ matchesAiInventoryExcludeType(mcpPrimitive, "mcp"),
53
+ true,
54
+ );
55
+ assert.strictEqual(matchesAiInventoryExcludeType(mcpConfig, "mcp"), true);
56
+ assert.strictEqual(matchesAiInventoryExcludeType(mcpService, "mcp"), true);
57
+ });
58
+
59
+ it("filters dependencies to retained component and service refs", () => {
60
+ const components = [{ "bom-ref": "file:/repo/CLAUDE.md" }];
61
+ const services = [{ "bom-ref": "urn:service:mcp:docs:latest" }];
62
+ const filtered = filterInventoryDependencies(
63
+ [
64
+ {
65
+ ref: "urn:service:mcp:docs:latest",
66
+ provides: ["file:/repo/CLAUDE.md", "urn:service:mcp:other:latest"],
67
+ },
68
+ {
69
+ ref: "urn:service:mcp:missing:latest",
70
+ provides: ["file:/repo/CLAUDE.md"],
71
+ },
72
+ ],
73
+ components,
74
+ services,
75
+ );
76
+ assert.deepStrictEqual(filtered, [
77
+ {
78
+ ref: "urn:service:mcp:docs:latest",
79
+ provides: ["file:/repo/CLAUDE.md"],
80
+ },
81
+ ]);
82
+ });
83
+
84
+ it("summarizes AI inventory counts for instructions, skills, configs, and services", () => {
85
+ const summary = summarizeAiInventory({
86
+ components: [
87
+ {
88
+ properties: [{ name: "cdx:file:kind", value: "agent-instructions" }],
89
+ },
90
+ {
91
+ properties: [
92
+ { name: "cdx:file:kind", value: "copilot-instructions" },
93
+ ],
94
+ },
95
+ {
96
+ properties: [{ name: "cdx:file:kind", value: "skill-file" }],
97
+ },
98
+ {
99
+ properties: [{ name: "cdx:file:kind", value: "mcp-config" }],
100
+ },
101
+ ],
102
+ services: [{ name: "releaseDocs" }, { name: "deployBot" }],
103
+ });
104
+ assert.deepStrictEqual(summary, {
105
+ instructionCount: 2,
106
+ mcpConfigCount: 1,
107
+ mcpServiceCount: 2,
108
+ skillCount: 1,
109
+ });
110
+ });
111
+ });