@xenos1996/usa 2.26.2 → 2.28.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.
Files changed (120) hide show
  1. package/dist/cli-help.d.ts.map +1 -1
  2. package/dist/cli-help.js +2 -0
  3. package/dist/cli-help.js.map +1 -1
  4. package/dist/cli-intent.d.ts +4 -0
  5. package/dist/cli-intent.d.ts.map +1 -0
  6. package/dist/cli-intent.js +108 -0
  7. package/dist/cli-intent.js.map +1 -0
  8. package/dist/cli-scan.d.ts +12 -0
  9. package/dist/cli-scan.d.ts.map +1 -0
  10. package/dist/cli-scan.js +142 -0
  11. package/dist/cli-scan.js.map +1 -0
  12. package/dist/cli.d.ts.map +1 -1
  13. package/dist/cli.js +4 -0
  14. package/dist/cli.js.map +1 -1
  15. package/dist/engine/audit-config.d.ts +66 -0
  16. package/dist/engine/audit-config.d.ts.map +1 -0
  17. package/dist/engine/audit-config.js +148 -0
  18. package/dist/engine/audit-config.js.map +1 -0
  19. package/dist/engine/audit-types.d.ts +44 -0
  20. package/dist/engine/audit-types.d.ts.map +1 -0
  21. package/dist/engine/audit-types.js +2 -0
  22. package/dist/engine/audit-types.js.map +1 -0
  23. package/dist/engine/audit-warnings.d.ts +56 -0
  24. package/dist/engine/audit-warnings.d.ts.map +1 -0
  25. package/dist/engine/audit-warnings.js +116 -0
  26. package/dist/engine/audit-warnings.js.map +1 -0
  27. package/dist/engine/audit.d.ts +14 -38
  28. package/dist/engine/audit.d.ts.map +1 -1
  29. package/dist/engine/audit.js +9 -500
  30. package/dist/engine/audit.js.map +1 -1
  31. package/dist/engine/evaluate-packs.d.ts +37 -0
  32. package/dist/engine/evaluate-packs.d.ts.map +1 -0
  33. package/dist/engine/evaluate-packs.js +144 -0
  34. package/dist/engine/evaluate-packs.js.map +1 -0
  35. package/dist/engine/evaluate.d.ts.map +1 -1
  36. package/dist/engine/evaluate.js +31 -8
  37. package/dist/engine/evaluate.js.map +1 -1
  38. package/dist/engine/invariants.d.ts +8 -0
  39. package/dist/engine/invariants.d.ts.map +1 -1
  40. package/dist/engine/invariants.js +11 -0
  41. package/dist/engine/invariants.js.map +1 -1
  42. package/dist/engine/pack-selection.d.ts +21 -0
  43. package/dist/engine/pack-selection.d.ts.map +1 -0
  44. package/dist/engine/pack-selection.js +63 -0
  45. package/dist/engine/pack-selection.js.map +1 -0
  46. package/dist/engine/report-build.d.ts +22 -0
  47. package/dist/engine/report-build.d.ts.map +1 -0
  48. package/dist/engine/report-build.js +67 -0
  49. package/dist/engine/report-build.js.map +1 -0
  50. package/dist/foundation/interview.d.ts.map +1 -1
  51. package/dist/foundation/interview.js +16 -5
  52. package/dist/foundation/interview.js.map +1 -1
  53. package/dist/intent/match.d.ts +38 -0
  54. package/dist/intent/match.d.ts.map +1 -0
  55. package/dist/intent/match.js +108 -0
  56. package/dist/intent/match.js.map +1 -0
  57. package/dist/intent/otm.d.ts +16 -0
  58. package/dist/intent/otm.d.ts.map +1 -0
  59. package/dist/intent/otm.js +144 -0
  60. package/dist/intent/otm.js.map +1 -0
  61. package/dist/intent/types.d.ts +111 -0
  62. package/dist/intent/types.d.ts.map +1 -0
  63. package/dist/intent/types.js +16 -0
  64. package/dist/intent/types.js.map +1 -0
  65. package/dist/scanner/adapters/codeql.d.ts +14 -0
  66. package/dist/scanner/adapters/codeql.d.ts.map +1 -0
  67. package/dist/scanner/adapters/codeql.js +134 -0
  68. package/dist/scanner/adapters/codeql.js.map +1 -0
  69. package/dist/scanner/adapters/dependency-cruiser.d.ts +3 -0
  70. package/dist/scanner/adapters/dependency-cruiser.d.ts.map +1 -0
  71. package/dist/scanner/adapters/dependency-cruiser.js +174 -0
  72. package/dist/scanner/adapters/dependency-cruiser.js.map +1 -0
  73. package/dist/scanner/adapters/ort.d.ts +12 -0
  74. package/dist/scanner/adapters/ort.d.ts.map +1 -0
  75. package/dist/scanner/adapters/ort.js +259 -0
  76. package/dist/scanner/adapters/ort.js.map +1 -0
  77. package/dist/scanner/adapters/scorecard.d.ts +7 -0
  78. package/dist/scanner/adapters/scorecard.d.ts.map +1 -0
  79. package/dist/scanner/adapters/scorecard.js +209 -0
  80. package/dist/scanner/adapters/scorecard.js.map +1 -0
  81. package/dist/scanner/adapters/semgrep.d.ts +3 -0
  82. package/dist/scanner/adapters/semgrep.d.ts.map +1 -0
  83. package/dist/scanner/adapters/semgrep.js +163 -0
  84. package/dist/scanner/adapters/semgrep.js.map +1 -0
  85. package/dist/scanner/adapters/trivy.d.ts +3 -0
  86. package/dist/scanner/adapters/trivy.d.ts.map +1 -0
  87. package/dist/scanner/adapters/trivy.js +163 -0
  88. package/dist/scanner/adapters/trivy.js.map +1 -0
  89. package/dist/scanner/config.d.ts +4 -0
  90. package/dist/scanner/config.d.ts.map +1 -0
  91. package/dist/scanner/config.js +15 -0
  92. package/dist/scanner/config.js.map +1 -0
  93. package/dist/scanner/identity.d.ts +17 -0
  94. package/dist/scanner/identity.d.ts.map +1 -0
  95. package/dist/scanner/identity.js +50 -0
  96. package/dist/scanner/identity.js.map +1 -0
  97. package/dist/scanner/normalize.d.ts +40 -0
  98. package/dist/scanner/normalize.d.ts.map +1 -0
  99. package/dist/scanner/normalize.js +85 -0
  100. package/dist/scanner/normalize.js.map +1 -0
  101. package/dist/scanner/registry.d.ts +19 -0
  102. package/dist/scanner/registry.d.ts.map +1 -0
  103. package/dist/scanner/registry.js +43 -0
  104. package/dist/scanner/registry.js.map +1 -0
  105. package/dist/scanner/run.d.ts +70 -0
  106. package/dist/scanner/run.d.ts.map +1 -0
  107. package/dist/scanner/run.js +419 -0
  108. package/dist/scanner/run.js.map +1 -0
  109. package/dist/scanner/sarif.d.ts +21 -0
  110. package/dist/scanner/sarif.d.ts.map +1 -0
  111. package/dist/scanner/sarif.js +156 -0
  112. package/dist/scanner/sarif.js.map +1 -0
  113. package/dist/scanner/types.d.ts +236 -0
  114. package/dist/scanner/types.d.ts.map +1 -0
  115. package/dist/scanner/types.js +11 -0
  116. package/dist/scanner/types.js.map +1 -0
  117. package/package.json +9 -8
  118. package/rules/core/code-quality.yaml +12 -2
  119. package/rules/core/provenance-attestation.yaml +5 -0
  120. package/rules/core/testing-assurance.yaml +19 -4
@@ -237,15 +237,26 @@ const ANSWER_HANDLERS = {
237
237
  * setter itself stays a dumb path walk with no per-field branches.
238
238
  */
239
239
  const KNOWN_IDS = new Set(INTERVIEW_QUESTIONS.map((q) => q.id));
240
+ /**
241
+ * One view of a config node as a writable map. The cast follows a runtime
242
+ * object check, so it is a narrowing, not an escape: a non-object segment is
243
+ * a loud error naming the question instead of a TypeError on `undefined`.
244
+ */
245
+ function objectView(node, id) {
246
+ if (typeof node !== 'object' || node === null) {
247
+ throw new Error(`interview question path is not an object: ${JSON.stringify(id)}`);
248
+ }
249
+ return node;
250
+ }
240
251
  function setPath(config, id, value) {
241
252
  if (!KNOWN_IDS.has(id))
242
253
  throw new Error(`unknown interview question: ${JSON.stringify(id)}`);
243
254
  const keys = id.split('.');
244
- let node = config;
245
- for (const key of keys.slice(0, -1)) {
246
- node = node[key];
247
- }
248
- node[keys[keys.length - 1]] = value;
255
+ const last = keys.pop();
256
+ let node = objectView(config, id);
257
+ for (const key of keys)
258
+ node = objectView(node[key], id);
259
+ node[last] = value;
249
260
  }
250
261
  /**
251
262
  * Builds a FoundationConfig from a `{ [questionId]: rawAnswer }` map, in
@@ -1 +1 @@
1
- {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/foundation/interview.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interview.js","sourceRoot":"","sources":["../../src/foundation/interview.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Intended vs observed.
3
+ *
4
+ * The join key is the CWE id: a threat declares `cwes: ["CWE-79"]`, and scanner
5
+ * evidence that names the same CWE is the observation. That is deterministic and
6
+ * auditable — no similarity scoring, no LLM.
7
+ *
8
+ * What it deliberately does NOT do: treat "no evidence" as "mitigated". A threat
9
+ * with no matching observation is `UNKNOWN` and says so, because the scanners
10
+ * that ran may simply not cover it.
11
+ */
12
+ import { normaliseCwe } from './otm.js';
13
+ import type { IntentModel, IntentReport } from './types.js';
14
+ /**
15
+ * The shape this module needs from evidence. Structural, not imported, so the
16
+ * intent layer does not depend on the scanner subsystem — the JSON that
17
+ * `usa scan --json` emits satisfies it as-is.
18
+ */
19
+ export interface EvidenceLike {
20
+ id: string;
21
+ claim: string;
22
+ source?: {
23
+ tool?: string;
24
+ identifier?: string;
25
+ };
26
+ /** Structured CWEs from the tool itself — preferred over text scanning. */
27
+ cwes?: string[];
28
+ }
29
+ /** Every CWE token in a piece of evidence, with where it was found. */
30
+ export declare function cwesOf(evidence: EvidenceLike): {
31
+ cwe: string;
32
+ field: string;
33
+ }[];
34
+ export declare function matchThreats(model: IntentModel, evidence: EvidenceLike[]): IntentReport;
35
+ /** Convenience for a caller holding an untyped `usa scan --json` payload. */
36
+ export declare function evidenceFromScanJson(payload: unknown): EvidenceLike[];
37
+ export { normaliseCwe };
38
+ //# sourceMappingURL=match.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../src/intent/match.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAe,MAAM,YAAY,CAAC;AAEzE;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChD,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,uEAAuE;AACvE,wBAAgB,MAAM,CAAC,QAAQ,EAAE,YAAY,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,EAAE,CAgB/E;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,YAAY,EAAE,GAAG,YAAY,CAgDvF;AAcD,6EAA6E;AAC7E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,EAAE,CAYrE;AAED,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -0,0 +1,108 @@
1
+ /**
2
+ * Intended vs observed.
3
+ *
4
+ * The join key is the CWE id: a threat declares `cwes: ["CWE-79"]`, and scanner
5
+ * evidence that names the same CWE is the observation. That is deterministic and
6
+ * auditable — no similarity scoring, no LLM.
7
+ *
8
+ * What it deliberately does NOT do: treat "no evidence" as "mitigated". A threat
9
+ * with no matching observation is `UNKNOWN` and says so, because the scanners
10
+ * that ran may simply not cover it.
11
+ */
12
+ import { normaliseCwe } from './otm.js';
13
+ /** Every CWE token in a piece of evidence, with where it was found. */
14
+ export function cwesOf(evidence) {
15
+ // A tool that stated its CWE is authoritative; only fall back to scanning the
16
+ // text when it did not, and never invent a relationship from a substring.
17
+ if (Array.isArray(evidence.cwes) && evidence.cwes.length > 0) {
18
+ return evidence.cwes.map((cwe) => ({ cwe: normaliseCwe(cwe), field: 'cwes' }));
19
+ }
20
+ const found = [];
21
+ const scan = (text, field) => {
22
+ if (!text)
23
+ return;
24
+ for (const match of text.matchAll(/\bCWE[-_ ]?(\d{1,5})\b/gi)) {
25
+ found.push({ cwe: `CWE-${Number(match[1])}`, field });
26
+ }
27
+ };
28
+ scan(evidence.source?.identifier, 'source.identifier');
29
+ scan(evidence.claim, 'claim');
30
+ return found;
31
+ }
32
+ export function matchThreats(model, evidence) {
33
+ const byCwe = indexEvidence(evidence);
34
+ const matches = model.threats.map((threat) => {
35
+ const hits = new Set();
36
+ const seenCwes = [];
37
+ for (const cwe of threat.cwes) {
38
+ const ids = byCwe.get(cwe);
39
+ if (!ids)
40
+ continue;
41
+ seenCwes.push(cwe);
42
+ for (const id of ids)
43
+ hits.add(id);
44
+ }
45
+ if (threat.cwes.length === 0) {
46
+ return {
47
+ threat,
48
+ verdict: 'UNKNOWN',
49
+ evidenceIds: [],
50
+ reason: 'the threat declares no CWE, so no scanner observation can be joined to it',
51
+ };
52
+ }
53
+ if (hits.size === 0) {
54
+ return {
55
+ threat,
56
+ verdict: 'NOT_OBSERVED',
57
+ evidenceIds: [],
58
+ reason: `no evidence mentions ${threat.cwes.join(', ')} — this does not prove the threat is mitigated`,
59
+ };
60
+ }
61
+ return {
62
+ threat,
63
+ verdict: 'OBSERVED',
64
+ evidenceIds: [...hits].sort(),
65
+ reason: `evidence cites ${seenCwes.join(', ')}`,
66
+ };
67
+ });
68
+ const declared = new Set(model.threats.flatMap((t) => t.cwes));
69
+ const unmodeled = [...byCwe.entries()]
70
+ .filter(([cwe]) => !declared.has(cwe))
71
+ .map(([cwe, ids]) => ({ cwe, evidenceIds: [...ids].sort() }))
72
+ .sort((a, b) => a.cwe.localeCompare(b.cwe));
73
+ const usedZones = new Set(model.components.map((c) => c.trustZone).filter(Boolean));
74
+ return {
75
+ model,
76
+ matches,
77
+ unmodeled,
78
+ emptyTrustZones: model.trustZones.filter((z) => !usedZones.has(z.id)),
79
+ };
80
+ }
81
+ function indexEvidence(evidence) {
82
+ const index = new Map();
83
+ for (const item of evidence) {
84
+ for (const { cwe } of cwesOf(item)) {
85
+ const set = index.get(cwe) ?? new Set();
86
+ set.add(item.id);
87
+ index.set(cwe, set);
88
+ }
89
+ }
90
+ return index;
91
+ }
92
+ /** Convenience for a caller holding an untyped `usa scan --json` payload. */
93
+ export function evidenceFromScanJson(payload) {
94
+ const list = payload?.evidence;
95
+ if (!Array.isArray(list))
96
+ return [];
97
+ return list.map((raw) => {
98
+ const o = (raw ?? {});
99
+ return {
100
+ id: typeof o.id === 'string' ? o.id : '',
101
+ claim: typeof o.claim === 'string' ? o.claim : '',
102
+ source: (o.source ?? {}),
103
+ cwes: Array.isArray(o.cwes) ? o.cwes : undefined,
104
+ };
105
+ });
106
+ }
107
+ export { normaliseCwe };
108
+ //# sourceMappingURL=match.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"match.js","sourceRoot":"","sources":["../../src/intent/match.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * OTM (Open Threat Model) parser.
3
+ *
4
+ * Total, like the scanner normalisers: a field the format does not require
5
+ * becomes an empty value, an entity type we do not model is listed in
6
+ * `unrecognised`, and a document that is not OTM at all throws a single named
7
+ * error rather than half-parsing.
8
+ */
9
+ import type { IntentModel } from './types.js';
10
+ export declare class IntentFormatError extends Error {
11
+ constructor(message: string);
12
+ }
13
+ export declare function parseOtm(raw: string): IntentModel;
14
+ /** `CWE-79`, `cwe-79`, `CWE 79` and `79` all become `CWE-79`. */
15
+ export declare function normaliseCwe(value: unknown): string;
16
+ //# sourceMappingURL=otm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otm.d.ts","sourceRoot":"","sources":["../../src/intent/otm.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAKV,WAAW,EAGZ,MAAM,YAAY,CAAC;AAEpB,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,OAAO,EAAE,MAAM;CAI5B;AAeD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,WAAW,CAuCjD;AA2ED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAKnD"}
@@ -0,0 +1,144 @@
1
+ export class IntentFormatError extends Error {
2
+ constructor(message) {
3
+ super(message);
4
+ this.name = 'IntentFormatError';
5
+ }
6
+ }
7
+ /** Keys this parser models. Anything else in the document is reported, not dropped. */
8
+ const MODELLED = new Set([
9
+ 'otmVersion',
10
+ 'project',
11
+ 'assets',
12
+ 'components',
13
+ 'dataflows',
14
+ 'trustZones',
15
+ 'threats',
16
+ 'mitigations',
17
+ 'representations',
18
+ ]);
19
+ export function parseOtm(raw) {
20
+ let doc;
21
+ try {
22
+ doc = JSON.parse(raw);
23
+ }
24
+ catch (err) {
25
+ throw new IntentFormatError(`not valid JSON: ${err.message}`);
26
+ }
27
+ if (typeof doc !== 'object' || doc === null) {
28
+ throw new IntentFormatError('not an object');
29
+ }
30
+ const root = doc;
31
+ if (typeof root.otmVersion !== 'string') {
32
+ // Threat Dragon also exports its internal diagram format; saying which one
33
+ // this is beats "parse failed".
34
+ throw new IntentFormatError("not an OTM document (no otmVersion). Threat Dragon's internal diagram export is not supported — use its OTM export.");
35
+ }
36
+ const project = asRecord(root.project);
37
+ return {
38
+ format: 'otm',
39
+ version: root.otmVersion,
40
+ project: {
41
+ id: str(project.id),
42
+ name: str(project.name),
43
+ description: str(project.description),
44
+ owner: str(project.owner),
45
+ },
46
+ assets: list(root.assets).map(parseAsset),
47
+ components: list(root.components).map(parseComponent),
48
+ dataFlows: list(root.dataflows).map(parseFlow),
49
+ trustZones: list(root.trustZones).map(parseZone),
50
+ threats: list(root.threats).map(parseThreat),
51
+ mitigations: list(root.mitigations).map(parseMitigation),
52
+ // `$`-prefixed keys are annotations (a fixture note, a schema hint), not
53
+ // model content, so they are not reported as unmodelled entities.
54
+ unrecognised: Object.keys(root).filter((k) => !MODELLED.has(k) && !k.startsWith('$')),
55
+ };
56
+ }
57
+ function parseAsset(raw) {
58
+ const o = asRecord(raw);
59
+ const risk = asRecord(o.risk);
60
+ return {
61
+ id: str(o.id),
62
+ name: str(o.name),
63
+ description: str(o.description),
64
+ risk: {
65
+ confidentiality: num(risk.confidentiality),
66
+ integrity: num(risk.integrity),
67
+ availability: num(risk.availability),
68
+ },
69
+ };
70
+ }
71
+ function parseComponent(raw) {
72
+ const o = asRecord(raw);
73
+ const parent = asRecord(o.parent);
74
+ return {
75
+ id: str(o.id),
76
+ name: str(o.name),
77
+ type: str(o.type),
78
+ trustZone: parent.trustZone ? str(parent.trustZone) : undefined,
79
+ };
80
+ }
81
+ function parseFlow(raw) {
82
+ const o = asRecord(raw);
83
+ return {
84
+ id: str(o.id),
85
+ name: str(o.name),
86
+ source: str(o.source),
87
+ destination: str(o.destination),
88
+ bidirectional: o.bidirectional === true,
89
+ assets: list(o.assets).map(str).filter(Boolean),
90
+ };
91
+ }
92
+ function parseZone(raw) {
93
+ const o = asRecord(raw);
94
+ const risk = asRecord(o.risk);
95
+ return {
96
+ id: str(o.id),
97
+ name: str(o.name),
98
+ type: str(o.type),
99
+ trustRating: num(risk.trustRating),
100
+ };
101
+ }
102
+ function parseThreat(raw) {
103
+ const o = asRecord(raw);
104
+ const risk = asRecord(o.risk);
105
+ return {
106
+ id: str(o.id),
107
+ name: str(o.name),
108
+ description: str(o.description),
109
+ categories: list(o.categories).map(str).filter(Boolean),
110
+ cwes: list(o.cwes).map(normaliseCwe).filter(Boolean),
111
+ likelihood: num(risk.likelihood),
112
+ impact: num(risk.impact),
113
+ };
114
+ }
115
+ function parseMitigation(raw) {
116
+ const o = asRecord(raw);
117
+ return {
118
+ id: str(o.id),
119
+ name: str(o.name),
120
+ description: str(o.description),
121
+ riskReduction: num(o.riskReduction),
122
+ };
123
+ }
124
+ /** `CWE-79`, `cwe-79`, `CWE 79` and `79` all become `CWE-79`. */
125
+ export function normaliseCwe(value) {
126
+ const text = str(value)
127
+ .toUpperCase()
128
+ .replace(/[^0-9]/g, '');
129
+ return text ? `CWE-${Number(text)}` : '';
130
+ }
131
+ function asRecord(value) {
132
+ return typeof value === 'object' && value !== null ? value : {};
133
+ }
134
+ function list(value) {
135
+ return Array.isArray(value) ? value : [];
136
+ }
137
+ function str(value) {
138
+ return typeof value === 'string' ? value : '';
139
+ }
140
+ function num(value) {
141
+ const n = Number(value);
142
+ return Number.isFinite(n) ? n : undefined;
143
+ }
144
+ //# sourceMappingURL=otm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"otm.js","sourceRoot":"","sources":["../../src/intent/otm.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,111 @@
1
+ /**
2
+ * The intent model — what the project says it is, as distinct from what the
3
+ * scanners observe.
4
+ *
5
+ * Shapes come from the **Open Threat Model** format (OTM 0.2.0) that Threat
6
+ * Dragon exports, verified against the project's own example model rather than
7
+ * from memory:
8
+ *
9
+ * { otmVersion, project, assets[], components[], dataflows[],
10
+ * trustZones[], threats[], mitigations[] }
11
+ *
12
+ * We import the *concepts*, not the application: no Threat Dragon process runs,
13
+ * no diagram is rendered, and the model is a plain file under version control.
14
+ */
15
+ export interface IntentModel {
16
+ format: 'otm';
17
+ version: string;
18
+ project: IntentProject;
19
+ assets: IntentAsset[];
20
+ components: IntentComponent[];
21
+ dataFlows: IntentDataFlow[];
22
+ trustZones: IntentTrustZone[];
23
+ threats: IntentThreat[];
24
+ mitigations: IntentMitigation[];
25
+ /** Anything the parser recognised but does not model. Never dropped silently. */
26
+ unrecognised: string[];
27
+ }
28
+ export interface IntentProject {
29
+ id: string;
30
+ name: string;
31
+ description: string;
32
+ owner: string;
33
+ }
34
+ export interface IntentAsset {
35
+ id: string;
36
+ name: string;
37
+ description: string;
38
+ /** Confidentiality / integrity / availability, 0–100, when declared. */
39
+ risk?: {
40
+ confidentiality?: number;
41
+ integrity?: number;
42
+ availability?: number;
43
+ };
44
+ }
45
+ export interface IntentComponent {
46
+ id: string;
47
+ name: string;
48
+ type: string;
49
+ /** The trust zone this component sits in, when declared. */
50
+ trustZone?: string;
51
+ }
52
+ export interface IntentDataFlow {
53
+ id: string;
54
+ name: string;
55
+ source: string;
56
+ destination: string;
57
+ bidirectional: boolean;
58
+ /** Asset ids carried across this flow. */
59
+ assets: string[];
60
+ }
61
+ export interface IntentTrustZone {
62
+ id: string;
63
+ name: string;
64
+ type: string;
65
+ /** 0–100; lower means less trusted. */
66
+ trustRating?: number;
67
+ }
68
+ export interface IntentThreat {
69
+ id: string;
70
+ name: string;
71
+ description: string;
72
+ /** STRIDE categories, e.g. ["Spoofing", "Tampering"]. */
73
+ categories: string[];
74
+ /** CWE ids this threat is about — the join key to scanner evidence. */
75
+ cwes: string[];
76
+ likelihood?: number;
77
+ impact?: number;
78
+ }
79
+ export interface IntentMitigation {
80
+ id: string;
81
+ name: string;
82
+ description: string;
83
+ riskReduction?: number;
84
+ }
85
+ /**
86
+ * What the model claims vs what the evidence shows, per threat.
87
+ *
88
+ * `UNKNOWN` is the default and the honest answer when nothing was observed: a
89
+ * threat with no matching evidence is not "mitigated", it is *unexamined*.
90
+ */
91
+ export type ThreatVerdict = 'OBSERVED' | 'NOT_OBSERVED' | 'UNKNOWN';
92
+ export interface ThreatMatch {
93
+ threat: IntentThreat;
94
+ verdict: ThreatVerdict;
95
+ /** Evidence ids that cite one of the threat's CWEs. */
96
+ evidenceIds: string[];
97
+ /** Why the verdict is what it is — mandatory, never blank. */
98
+ reason: string;
99
+ }
100
+ export interface IntentReport {
101
+ model: IntentModel;
102
+ matches: ThreatMatch[];
103
+ /** CWE ids seen in evidence that no declared threat mentions. */
104
+ unmodeled: {
105
+ cwe: string;
106
+ evidenceIds: string[];
107
+ }[];
108
+ /** Declared trust zones with no component inside them. */
109
+ emptyTrustZones: IntentTrustZone[];
110
+ }
111
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * The intent model — what the project says it is, as distinct from what the
3
+ * scanners observe.
4
+ *
5
+ * Shapes come from the **Open Threat Model** format (OTM 0.2.0) that Threat
6
+ * Dragon exports, verified against the project's own example model rather than
7
+ * from memory:
8
+ *
9
+ * { otmVersion, project, assets[], components[], dataflows[],
10
+ * trustZones[], threats[], mitigations[] }
11
+ *
12
+ * We import the *concepts*, not the application: no Threat Dragon process runs,
13
+ * no diagram is rendered, and the model is a plain file under version control.
14
+ */
15
+ export {};
16
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/intent/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG"}
@@ -0,0 +1,14 @@
1
+ import type { ScannerAdapter } from '../types.js';
2
+ /** Where `database analyze` writes its SARIF, relative to the scan workdir. */
3
+ export declare const CODEQL_SARIF = "codeql-results.sarif";
4
+ export declare const codeqlAdapter: ScannerAdapter;
5
+ /**
6
+ * The analyze leg, exposed so tests and callers can build it without running create.
7
+ *
8
+ * `packs` is a *positional* argument, so an empty string is not "no packs" — it
9
+ * is one empty specifier, and CodeQL rejects the whole run with
10
+ * `Invalid package specification:` and writes no SARIF. Measured on 2.27.3: with
11
+ * no specifier at all, CodeQL runs the language's default (code-scanning) suite.
12
+ */
13
+ export declare function codeqlAnalyzeCommand(db: string, packs: string, out: string): string[];
14
+ //# sourceMappingURL=codeql.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codeql.d.ts","sourceRoot":"","sources":["../../../src/scanner/adapters/codeql.ts"],"names":[],"mappings":"AA+BA,OAAO,KAAK,EAA0B,cAAc,EAAiB,MAAM,aAAa,CAAC;AAGzF,+EAA+E;AAC/E,eAAO,MAAM,YAAY,yBAAyB,CAAC;AAEnD,eAAO,MAAM,aAAa,EAAE,cAiE3B,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWrF"}