@tudovu/api-client 0.1.2 → 0.1.4
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/dist/client.d.ts +55 -28
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +80 -28
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/security-score.d.ts +40 -0
- package/dist/security-score.d.ts.map +1 -0
- package/dist/security-score.js +81 -0
- package/dist/security-score.js.map +1 -0
- package/package.json +1 -1
package/dist/client.d.ts
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { type SecurityScoreBreakdown } from "./security-score.js";
|
|
2
|
+
export type { SecurityScoreBreakdown };
|
|
1
3
|
export type Finding = {
|
|
2
4
|
id: string;
|
|
3
5
|
title: string;
|
|
@@ -18,20 +20,6 @@ export type FindingsResponse = {
|
|
|
18
20
|
guardduty: Finding[];
|
|
19
21
|
errors?: Record<string, string>;
|
|
20
22
|
};
|
|
21
|
-
/** Combined security score from stored checks + findings history (no live eval). */
|
|
22
|
-
export type SecurityScoreBreakdown = {
|
|
23
|
-
/** Checks-only weighted posture (alias of checksScore). */
|
|
24
|
-
weightedSecurityScore: number;
|
|
25
|
-
/** Checks posture base. */
|
|
26
|
-
checksScore: number;
|
|
27
|
-
/** Points subtracted for findings (capped) or incomplete-detection ding. */
|
|
28
|
-
findingsPenalty: number;
|
|
29
|
-
/** Combined: clamp(0, 100, checksScore − findingsPenalty). */
|
|
30
|
-
securityScore: number;
|
|
31
|
-
bySeverity: Partial<Record<Finding["severity"], number>>;
|
|
32
|
-
findingsLoad: number;
|
|
33
|
-
detectionIncomplete: boolean;
|
|
34
|
-
};
|
|
35
23
|
export type LatestChecksResponse = {
|
|
36
24
|
run: {
|
|
37
25
|
id?: string;
|
|
@@ -55,7 +43,10 @@ export type LatestChecksResponse = {
|
|
|
55
43
|
failed?: number | null;
|
|
56
44
|
[key: string]: unknown;
|
|
57
45
|
} | null;
|
|
58
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Findings-primary security score (from findings history). Present even when
|
|
48
|
+
* `missing` is true (no check run) — checksScore is null in that case.
|
|
49
|
+
*/
|
|
59
50
|
security?: SecurityScoreBreakdown;
|
|
60
51
|
missing: boolean;
|
|
61
52
|
hint?: string;
|
|
@@ -104,8 +95,9 @@ export type ReviewSnapshot = {
|
|
|
104
95
|
/** Full PASS/FAIL matrix when `includeChecks` was requested. */
|
|
105
96
|
checks?: ReviewChecksSummary;
|
|
106
97
|
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
98
|
+
* Findings-primary security score from open finding counts.
|
|
99
|
+
* Always present after a findings pull (no check run required).
|
|
100
|
+
* Optional `checksScore` when a stored check run exists.
|
|
109
101
|
*/
|
|
110
102
|
security: SecurityScoreBreakdown | null;
|
|
111
103
|
securityHint?: string;
|
|
@@ -188,6 +180,26 @@ export declare class TudovuClient {
|
|
|
188
180
|
githubIacRootPath?: string;
|
|
189
181
|
[key: string]: unknown;
|
|
190
182
|
}>;
|
|
183
|
+
/**
|
|
184
|
+
* GitHub App installation status + granted repos for the current org.
|
|
185
|
+
* Same payload Architect uses (`GET /api/github/test`).
|
|
186
|
+
*/
|
|
187
|
+
githubInstallStatus(): Promise<{
|
|
188
|
+
configured?: boolean;
|
|
189
|
+
installed?: boolean;
|
|
190
|
+
installUrl?: string | null;
|
|
191
|
+
manageInstallationUrl?: string;
|
|
192
|
+
repositorySelection?: string;
|
|
193
|
+
repos?: Array<{
|
|
194
|
+
full_name: string;
|
|
195
|
+
html_url: string;
|
|
196
|
+
default_branch: string;
|
|
197
|
+
}>;
|
|
198
|
+
warning?: string;
|
|
199
|
+
canRecoverInstall?: boolean;
|
|
200
|
+
missing?: string[];
|
|
201
|
+
[key: string]: unknown;
|
|
202
|
+
}>;
|
|
191
203
|
awsConnectStatus(): Promise<{
|
|
192
204
|
configured?: boolean;
|
|
193
205
|
connected?: boolean;
|
|
@@ -269,17 +281,18 @@ export declare class TudovuClient {
|
|
|
269
281
|
[key: string]: unknown;
|
|
270
282
|
}>;
|
|
271
283
|
/**
|
|
272
|
-
* Latest persisted check run (full PASS/FAIL matrix) plus
|
|
273
|
-
* breakdown
|
|
274
|
-
* When no run exists, `missing` is true
|
|
284
|
+
* Latest persisted check run (full PASS/FAIL matrix) plus findings-primary
|
|
285
|
+
* `security` breakdown (optional compliance checksScore when a run exists).
|
|
286
|
+
* Does not evaluate live. When no run exists, `missing` is true; `security`
|
|
287
|
+
* may still be present from findings history alone.
|
|
275
288
|
*/
|
|
276
289
|
getLatestChecks(): Promise<LatestChecksResponse>;
|
|
277
290
|
postureHistory(limit?: number): Promise<{
|
|
278
291
|
runs: unknown[];
|
|
279
292
|
}>;
|
|
280
293
|
/**
|
|
281
|
-
* Read-only security posture snapshot: open findings +
|
|
282
|
-
* (+ optional stored check matrix). Never live-evals checks.
|
|
294
|
+
* Read-only security posture snapshot: open findings + findings-primary security
|
|
295
|
+
* score (+ optional stored check matrix). Never live-evals checks.
|
|
283
296
|
*/
|
|
284
297
|
review(opts?: {
|
|
285
298
|
region?: string;
|
|
@@ -302,28 +315,39 @@ export declare class TudovuClient {
|
|
|
302
315
|
}): Promise<UpsertDispositionResponse>;
|
|
303
316
|
/**
|
|
304
317
|
* Resolve a finding by id, title, or subject key. Pulls live findings (same as review).
|
|
318
|
+
* Optional `resource` (bucket name / ARN substring) disambiguates title matches.
|
|
305
319
|
* When nothing matches but the needle looks like `source:control:resource`, returns that key.
|
|
306
320
|
*/
|
|
307
321
|
resolveFindingForDisposition(opts: {
|
|
308
322
|
idOrTitle: string;
|
|
309
323
|
region?: string;
|
|
324
|
+
resource?: string;
|
|
310
325
|
}): Promise<{
|
|
311
326
|
finding?: Finding;
|
|
312
327
|
subjectKey: string;
|
|
313
328
|
}>;
|
|
314
329
|
/**
|
|
315
|
-
* Record a temporary exception (
|
|
316
|
-
*
|
|
330
|
+
* Record a temporary exception (accepted risk) via PUT /api/org/dispositions.
|
|
331
|
+
* Same model the UI uses for findings and checks (`type: "exception"`, expiry required).
|
|
332
|
+
* Check exceptions use subjectKey = checkId; finding exceptions use
|
|
333
|
+
* `source:controlId:resourceId` (resource scoping is via that key / live resolve).
|
|
317
334
|
*/
|
|
318
335
|
addException(input: {
|
|
319
|
-
|
|
336
|
+
/** Required justification (e.g. "Marketing assets bucket must be publicly readable"). */
|
|
337
|
+
reason: string;
|
|
320
338
|
expiresAt: string;
|
|
321
|
-
/**
|
|
339
|
+
/** `finding` | `check` — preferred with `id`. */
|
|
340
|
+
kind?: "finding" | "check";
|
|
341
|
+
/** Finding id from review (preferred), title/subject key, or check id (e.g. AC-S3-001). */
|
|
342
|
+
id?: string;
|
|
343
|
+
/** @deprecated Prefer kind=finding + id */
|
|
322
344
|
finding?: string;
|
|
323
|
-
/** Explicit disposition subject key (skips live lookup). */
|
|
345
|
+
/** Explicit disposition subject key (skips live lookup when kind=finding). */
|
|
324
346
|
subjectKey?: string;
|
|
325
|
-
/**
|
|
347
|
+
/** @deprecated Prefer kind=check + id */
|
|
326
348
|
checkId?: string;
|
|
349
|
+
/** For findings: disambiguate by bucket name / ARN. Checks are check-scoped. */
|
|
350
|
+
resource?: string;
|
|
327
351
|
region?: string;
|
|
328
352
|
framework?: string[];
|
|
329
353
|
}): Promise<{
|
|
@@ -333,6 +357,9 @@ export declare class TudovuClient {
|
|
|
333
357
|
subjectKey: string;
|
|
334
358
|
disposition?: Disposition;
|
|
335
359
|
finding?: Finding;
|
|
360
|
+
checkId?: string;
|
|
361
|
+
rationale: string;
|
|
362
|
+
expiresAt: string;
|
|
336
363
|
}>;
|
|
337
364
|
}
|
|
338
365
|
//# sourceMappingURL=client.d.ts.map
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,OAAO,GAAG;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,GAAG,eAAe,CAAC;IACnE,MAAM,EAAE,KAAK,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;IACvD,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACjC,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
CHANGED
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
// (`/api/org/api-keys`). Against a host with auth disabled (demo / no
|
|
5
5
|
// DATABASE_URL), cookie-less calls still resolve to the anonymous session.
|
|
6
6
|
// Against auth-enabled hosts, omit the key and you get 401.
|
|
7
|
+
import { computeFindingsSecurityScore, } from "./security-score.js";
|
|
7
8
|
/**
|
|
8
9
|
* Stable per-finding subject key: `source:controlId:resourceId`.
|
|
9
10
|
* Matches platform `findingSubjectKey` (ASFF ids rotate; this does not).
|
|
@@ -69,6 +70,13 @@ export class TudovuClient {
|
|
|
69
70
|
async setupConfig() {
|
|
70
71
|
return this.request("/api/org/setup-config", { method: "GET" });
|
|
71
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* GitHub App installation status + granted repos for the current org.
|
|
75
|
+
* Same payload Architect uses (`GET /api/github/test`).
|
|
76
|
+
*/
|
|
77
|
+
async githubInstallStatus() {
|
|
78
|
+
return this.request("/api/github/test", { method: "GET" });
|
|
79
|
+
}
|
|
72
80
|
async awsConnectStatus() {
|
|
73
81
|
return this.request("/api/aws/connect", { method: "GET" });
|
|
74
82
|
}
|
|
@@ -162,9 +170,10 @@ export class TudovuClient {
|
|
|
162
170
|
});
|
|
163
171
|
}
|
|
164
172
|
/**
|
|
165
|
-
* Latest persisted check run (full PASS/FAIL matrix) plus
|
|
166
|
-
* breakdown
|
|
167
|
-
* When no run exists, `missing` is true
|
|
173
|
+
* Latest persisted check run (full PASS/FAIL matrix) plus findings-primary
|
|
174
|
+
* `security` breakdown (optional compliance checksScore when a run exists).
|
|
175
|
+
* Does not evaluate live. When no run exists, `missing` is true; `security`
|
|
176
|
+
* may still be present from findings history alone.
|
|
168
177
|
*/
|
|
169
178
|
async getLatestChecks() {
|
|
170
179
|
return this.request("/api/infranitum/checks/latest", { method: "GET" });
|
|
@@ -173,17 +182,23 @@ export class TudovuClient {
|
|
|
173
182
|
return this.request(`/api/posture/history?limit=${limit}`, { method: "GET" });
|
|
174
183
|
}
|
|
175
184
|
/**
|
|
176
|
-
* Read-only security posture snapshot: open findings +
|
|
177
|
-
* (+ optional stored check matrix). Never live-evals checks.
|
|
185
|
+
* Read-only security posture snapshot: open findings + findings-primary security
|
|
186
|
+
* score (+ optional stored check matrix). Never live-evals checks.
|
|
178
187
|
*/
|
|
179
188
|
async review(opts) {
|
|
180
189
|
const findingsRes = await this.pullFindings(opts?.region);
|
|
181
190
|
const all = this.flattenFindings(findingsRes);
|
|
182
191
|
const open = all.filter((f) => f.status === "NEW" || f.status === "NOTIFIED");
|
|
192
|
+
// Score uses NEW-only counts (matches findings_history snapshots).
|
|
193
|
+
const scoreOpen = all.filter((f) => f.status === "NEW");
|
|
183
194
|
const bySeverity = {};
|
|
184
195
|
for (const f of open) {
|
|
185
196
|
bySeverity[f.severity] = (bySeverity[f.severity] ?? 0) + 1;
|
|
186
197
|
}
|
|
198
|
+
const scoreBySeverity = {};
|
|
199
|
+
for (const f of scoreOpen) {
|
|
200
|
+
scoreBySeverity[f.severity] = (scoreBySeverity[f.severity] ?? 0) + 1;
|
|
201
|
+
}
|
|
187
202
|
const limit = opts?.findingsLimit ?? 25;
|
|
188
203
|
const criticalHigh = open
|
|
189
204
|
.filter((f) => f.severity === "CRITICAL" || f.severity === "HIGH")
|
|
@@ -200,15 +215,27 @@ export class TudovuClient {
|
|
|
200
215
|
region: f.region,
|
|
201
216
|
controlId: f.controlId,
|
|
202
217
|
}));
|
|
218
|
+
const findingsErrors = findingsRes.errors && Object.keys(findingsRes.errors).length
|
|
219
|
+
? findingsRes.errors
|
|
220
|
+
: undefined;
|
|
221
|
+
const detectionIncomplete = Boolean(findingsErrors);
|
|
203
222
|
const latest = await this.getLatestChecks().catch(() => ({
|
|
204
223
|
run: null,
|
|
205
224
|
missing: true,
|
|
206
225
|
hint: "Could not load stored check run.",
|
|
207
226
|
}));
|
|
208
|
-
|
|
209
|
-
const
|
|
210
|
-
? latest.
|
|
211
|
-
|
|
227
|
+
// Findings-primary from the live pull; attach compliance checksScore when a run exists.
|
|
228
|
+
const storedChecksScore = typeof latest.security?.checksScore === "number"
|
|
229
|
+
? latest.security.checksScore
|
|
230
|
+
: typeof latest.run?.postureScore === "number"
|
|
231
|
+
? latest.run.postureScore
|
|
232
|
+
: null;
|
|
233
|
+
const security = computeFindingsSecurityScore(scoreBySeverity, {
|
|
234
|
+
detectionIncomplete,
|
|
235
|
+
checksScore: storedChecksScore,
|
|
236
|
+
});
|
|
237
|
+
const securityHint = security.detectionIncomplete
|
|
238
|
+
? "Detection incomplete — one or more findings feeds returned an error."
|
|
212
239
|
: undefined;
|
|
213
240
|
let checks;
|
|
214
241
|
if (opts?.includeChecks) {
|
|
@@ -242,9 +269,7 @@ export class TudovuClient {
|
|
|
242
269
|
findings: {
|
|
243
270
|
totalOpen: open.length,
|
|
244
271
|
bySeverity,
|
|
245
|
-
errors:
|
|
246
|
-
? findingsRes.errors
|
|
247
|
-
: undefined,
|
|
272
|
+
errors: findingsErrors,
|
|
248
273
|
criticalHigh,
|
|
249
274
|
},
|
|
250
275
|
checks,
|
|
@@ -274,6 +299,7 @@ export class TudovuClient {
|
|
|
274
299
|
}
|
|
275
300
|
/**
|
|
276
301
|
* Resolve a finding by id, title, or subject key. Pulls live findings (same as review).
|
|
302
|
+
* Optional `resource` (bucket name / ARN substring) disambiguates title matches.
|
|
277
303
|
* When nothing matches but the needle looks like `source:control:resource`, returns that key.
|
|
278
304
|
*/
|
|
279
305
|
async resolveFindingForDisposition(opts) {
|
|
@@ -281,7 +307,17 @@ export class TudovuClient {
|
|
|
281
307
|
if (!needle)
|
|
282
308
|
throw new Error("Finding id or title is required.");
|
|
283
309
|
const res = await this.pullFindings(opts.region);
|
|
284
|
-
|
|
310
|
+
let all = this.flattenFindings(res);
|
|
311
|
+
const resourceNeedle = opts.resource?.trim().toLowerCase();
|
|
312
|
+
if (resourceNeedle && all.length) {
|
|
313
|
+
all = all.filter((f) => {
|
|
314
|
+
const rid = (f.resourceId ?? "").toLowerCase();
|
|
315
|
+
return rid === resourceNeedle || rid.includes(resourceNeedle);
|
|
316
|
+
});
|
|
317
|
+
if (!all.length) {
|
|
318
|
+
throw new Error(`No finding matched resource "${opts.resource}". Pass a fuller ARN/name, or omit resource.`);
|
|
319
|
+
}
|
|
320
|
+
}
|
|
285
321
|
if (all.length) {
|
|
286
322
|
const byId = all.filter((f) => f.id === needle);
|
|
287
323
|
if (byId.length === 1) {
|
|
@@ -297,7 +333,7 @@ export class TudovuClient {
|
|
|
297
333
|
return { finding: exactTitle[0], subjectKey: findingSubjectKey(exactTitle[0]) };
|
|
298
334
|
}
|
|
299
335
|
if (exactTitle.length > 1) {
|
|
300
|
-
throw new Error(`Multiple findings titled "${needle}".
|
|
336
|
+
throw new Error(`Multiple findings titled "${needle}". Use id from \`tudovu review\` or --resource.`);
|
|
301
337
|
}
|
|
302
338
|
const partial = all.filter((f) => f.title.toLowerCase().includes(lower));
|
|
303
339
|
if (partial.length === 1) {
|
|
@@ -306,9 +342,9 @@ export class TudovuClient {
|
|
|
306
342
|
if (partial.length > 1) {
|
|
307
343
|
const sample = partial
|
|
308
344
|
.slice(0, 5)
|
|
309
|
-
.map((f) => ` ${f.id} ${f.title}`)
|
|
345
|
+
.map((f) => ` ${f.id} ${f.title} ${f.resourceId ?? ""}`)
|
|
310
346
|
.join("\n");
|
|
311
|
-
throw new Error(`Multiple findings match "${needle}".
|
|
347
|
+
throw new Error(`Multiple findings match "${needle}". Use id from \`tudovu review\` or --resource:\n${sample}`);
|
|
312
348
|
}
|
|
313
349
|
}
|
|
314
350
|
// No live match — accept an explicit disposition subject key.
|
|
@@ -316,40 +352,53 @@ export class TudovuClient {
|
|
|
316
352
|
return { subjectKey: needle };
|
|
317
353
|
}
|
|
318
354
|
throw new Error(all.length
|
|
319
|
-
? `No finding matched "${needle}". Use
|
|
320
|
-
: "No findings returned. Connect AWS in the app, or pass
|
|
355
|
+
? `No finding matched "${needle}". Use review to list findings, or pass a check id.`
|
|
356
|
+
: "No findings returned. Connect AWS in the app, or pass a check id / subject key.");
|
|
321
357
|
}
|
|
322
358
|
/**
|
|
323
|
-
* Record a temporary exception (
|
|
324
|
-
*
|
|
359
|
+
* Record a temporary exception (accepted risk) via PUT /api/org/dispositions.
|
|
360
|
+
* Same model the UI uses for findings and checks (`type: "exception"`, expiry required).
|
|
361
|
+
* Check exceptions use subjectKey = checkId; finding exceptions use
|
|
362
|
+
* `source:controlId:resourceId` (resource scoping is via that key / live resolve).
|
|
325
363
|
*/
|
|
326
364
|
async addException(input) {
|
|
327
|
-
const rationale = input.
|
|
365
|
+
const rationale = (input.reason ?? "").trim();
|
|
328
366
|
const expiresAt = input.expiresAt.trim();
|
|
329
367
|
if (!rationale)
|
|
330
|
-
throw new Error("A rationale is required.");
|
|
368
|
+
throw new Error("A reason / rationale is required.");
|
|
331
369
|
if (!expiresAt)
|
|
332
|
-
throw new Error("Exception requires an expiry date (expiresAt).");
|
|
370
|
+
throw new Error("Exception requires an expiry date (expiresAt, YYYY-MM-DD).");
|
|
333
371
|
let subjectKind = "finding";
|
|
334
372
|
let subjectKey = input.subjectKey?.trim() || "";
|
|
335
373
|
let finding;
|
|
336
|
-
|
|
374
|
+
let checkIdOut;
|
|
375
|
+
const kind = input.kind;
|
|
376
|
+
const id = input.id?.trim();
|
|
377
|
+
const checkId = input.checkId?.trim() || (kind === "check" ? id : undefined);
|
|
378
|
+
const findingNeedle = input.finding?.trim() || (kind === "finding" || (!kind && !checkId) ? id : undefined);
|
|
337
379
|
if (checkId) {
|
|
338
380
|
subjectKind = "check";
|
|
339
381
|
subjectKey = checkId;
|
|
382
|
+
checkIdOut = checkId;
|
|
340
383
|
}
|
|
341
384
|
else if (!subjectKey) {
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
throw new Error("Provide a finding (id/title), --subject-key, or --check.");
|
|
385
|
+
if (!findingNeedle) {
|
|
386
|
+
throw new Error("Provide --kind finding|check and --id, or a finding / check selector.");
|
|
345
387
|
}
|
|
346
388
|
const resolved = await this.resolveFindingForDisposition({
|
|
347
|
-
idOrTitle:
|
|
389
|
+
idOrTitle: findingNeedle,
|
|
348
390
|
region: input.region,
|
|
391
|
+
resource: input.resource,
|
|
349
392
|
});
|
|
393
|
+
subjectKind = "finding";
|
|
350
394
|
subjectKey = resolved.subjectKey;
|
|
351
395
|
finding = resolved.finding;
|
|
352
396
|
}
|
|
397
|
+
else {
|
|
398
|
+
subjectKind = kind === "check" ? "check" : "finding";
|
|
399
|
+
if (subjectKind === "check")
|
|
400
|
+
checkIdOut = subjectKey;
|
|
401
|
+
}
|
|
353
402
|
const result = await this.upsertDisposition({
|
|
354
403
|
subjectKind,
|
|
355
404
|
subjectKey,
|
|
@@ -367,6 +416,9 @@ export class TudovuClient {
|
|
|
367
416
|
subjectKey,
|
|
368
417
|
disposition: result.disposition,
|
|
369
418
|
finding,
|
|
419
|
+
checkId: checkIdOut,
|
|
420
|
+
rationale,
|
|
421
|
+
expiresAt,
|
|
370
422
|
};
|
|
371
423
|
}
|
|
372
424
|
}
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { TudovuApiError, TudovuClient, findingSubjectKey, type Finding, type FindingsResponse, type SecurityScoreBreakdown, type LatestChecksResponse, type ReviewFindingSummary, type ReviewChecksSummary, type ReviewSnapshot, type SubjectKind, type DispositionSubjectKind, type DispositionType, type DispositionInput, type Disposition, type DispositionEntry, type UpsertDispositionResponse, } from "./client.js";
|
|
2
|
+
export { computeFindingsSecurityScore, computeFindingsPenalty, findingsWeightedLoad, MAX_FINDINGS_PENALTY, INCOMPLETE_DETECTION_PENALTY, FINDINGS_WEIGHT_DIVISOR, } from "./security-score.js";
|
|
2
3
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,EACjB,KAAK,OAAO,EACZ,KAAK,gBAAgB,EACrB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,EACzB,KAAK,oBAAoB,EACzB,KAAK,mBAAmB,EACxB,KAAK,cAAc,EACnB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,eAAe,EACpB,KAAK,gBAAgB,EACrB,KAAK,WAAW,EAChB,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,GAC/B,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,3 @@
|
|
|
1
1
|
export { TudovuApiError, TudovuClient, findingSubjectKey, } from "./client.js";
|
|
2
|
+
export { computeFindingsSecurityScore, computeFindingsPenalty, findingsWeightedLoad, MAX_FINDINGS_PENALTY, INCOMPLETE_DETECTION_PENALTY, FINDINGS_WEIGHT_DIVISOR, } from "./security-score.js";
|
|
2
3
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAelB,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,YAAY,EACZ,iBAAiB,GAelB,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,4BAA4B,EAC5B,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,4BAA4B,EAC5B,uBAAuB,GACxB,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Findings-primary security score (mirrors apps/platform/lib/security-score.ts).
|
|
3
|
+
* Pure — used by CLI/MCP `review` when attaching a score from live finding counts.
|
|
4
|
+
*/
|
|
5
|
+
export declare const MAX_FINDINGS_PENALTY = 30;
|
|
6
|
+
export declare const INCOMPLETE_DETECTION_PENALTY = 5;
|
|
7
|
+
export declare const FINDINGS_WEIGHT_DIVISOR = 4;
|
|
8
|
+
/** Same severity weights as platform posture-score. */
|
|
9
|
+
export declare const FINDINGS_SEVERITY_WEIGHTS: Record<string, number>;
|
|
10
|
+
export type SeverityCounts = Partial<Record<string, number>>;
|
|
11
|
+
export type SecurityScoreBreakdown = {
|
|
12
|
+
/** Primary: clamp(0, 100, 100 − findingsPenalty). */
|
|
13
|
+
securityScore: number;
|
|
14
|
+
/** Compliance (checks) when a stored run exists; otherwise null. */
|
|
15
|
+
checksScore: number | null;
|
|
16
|
+
/** Alias of checksScore when present; else securityScore. */
|
|
17
|
+
weightedSecurityScore: number;
|
|
18
|
+
findingsPenalty: number;
|
|
19
|
+
bySeverity: SeverityCounts;
|
|
20
|
+
findingsLoad: number;
|
|
21
|
+
detectionIncomplete: boolean;
|
|
22
|
+
};
|
|
23
|
+
export declare function findingsWeightedLoad(bySeverity: SeverityCounts): number;
|
|
24
|
+
export declare function computeFindingsPenalty(opts: {
|
|
25
|
+
findingsBySeverity?: SeverityCounts;
|
|
26
|
+
detectionIncomplete?: boolean;
|
|
27
|
+
}): {
|
|
28
|
+
findingsPenalty: number;
|
|
29
|
+
findingsLoad: number;
|
|
30
|
+
bySeverity: SeverityCounts;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Findings-primary security score (0–100). No check run required.
|
|
34
|
+
* securityScore = clamp(0, 100, 100 − findingsPenalty)
|
|
35
|
+
*/
|
|
36
|
+
export declare function computeFindingsSecurityScore(bySeverity: SeverityCounts, opts?: {
|
|
37
|
+
detectionIncomplete?: boolean;
|
|
38
|
+
checksScore?: number | null;
|
|
39
|
+
}): SecurityScoreBreakdown;
|
|
40
|
+
//# sourceMappingURL=security-score.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-score.d.ts","sourceRoot":"","sources":["../src/security-score.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,oBAAoB,KAAK,CAAC;AACvC,eAAO,MAAM,4BAA4B,IAAI,CAAC;AAC9C,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC,uDAAuD;AACvD,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAM5D,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;AAE7D,MAAM,MAAM,sBAAsB,GAAG;IACnC,qDAAqD;IACrD,aAAa,EAAE,MAAM,CAAC;IACtB,oEAAoE;IACpE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,6DAA6D;IAC7D,qBAAqB,EAAE,MAAM,CAAC;IAC9B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,cAAc,CAAC;IAC3B,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;CAC9B,CAAC;AAiBF,wBAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,GAAG,MAAM,CAQvE;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE;IAC3C,kBAAkB,CAAC,EAAE,cAAc,CAAC;IACpC,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B,GAAG;IAAE,eAAe,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,cAAc,CAAA;CAAE,CAgBhF;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,UAAU,EAAE,cAAc,EAC1B,IAAI,CAAC,EAAE;IAAE,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GACpE,sBAAsB,CAqBxB"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Findings-primary security score (mirrors apps/platform/lib/security-score.ts).
|
|
3
|
+
* Pure — used by CLI/MCP `review` when attaching a score from live finding counts.
|
|
4
|
+
*/
|
|
5
|
+
export const MAX_FINDINGS_PENALTY = 30;
|
|
6
|
+
export const INCOMPLETE_DETECTION_PENALTY = 5;
|
|
7
|
+
export const FINDINGS_WEIGHT_DIVISOR = 4;
|
|
8
|
+
/** Same severity weights as platform posture-score. */
|
|
9
|
+
export const FINDINGS_SEVERITY_WEIGHTS = {
|
|
10
|
+
CRITICAL: 40,
|
|
11
|
+
HIGH: 24,
|
|
12
|
+
MEDIUM: 14,
|
|
13
|
+
LOW: 7,
|
|
14
|
+
INFORMATIONAL: 3,
|
|
15
|
+
};
|
|
16
|
+
function clampScore(n) {
|
|
17
|
+
return Math.min(100, Math.max(0, Math.round(n)));
|
|
18
|
+
}
|
|
19
|
+
function normalizeCounts(counts) {
|
|
20
|
+
if (!counts)
|
|
21
|
+
return {};
|
|
22
|
+
const out = {};
|
|
23
|
+
for (const [k, v] of Object.entries(counts)) {
|
|
24
|
+
if (typeof v === "number" && v > 0 && Number.isFinite(v)) {
|
|
25
|
+
out[k] = Math.floor(v);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return out;
|
|
29
|
+
}
|
|
30
|
+
export function findingsWeightedLoad(bySeverity) {
|
|
31
|
+
let load = 0;
|
|
32
|
+
for (const [sev, count] of Object.entries(bySeverity)) {
|
|
33
|
+
if (!count)
|
|
34
|
+
continue;
|
|
35
|
+
const w = FINDINGS_SEVERITY_WEIGHTS[sev] ?? FINDINGS_SEVERITY_WEIGHTS.MEDIUM;
|
|
36
|
+
load += count * w;
|
|
37
|
+
}
|
|
38
|
+
return load;
|
|
39
|
+
}
|
|
40
|
+
export function computeFindingsPenalty(opts) {
|
|
41
|
+
const bySeverity = normalizeCounts(opts.findingsBySeverity);
|
|
42
|
+
if (opts.detectionIncomplete) {
|
|
43
|
+
return {
|
|
44
|
+
findingsPenalty: INCOMPLETE_DETECTION_PENALTY,
|
|
45
|
+
findingsLoad: 0,
|
|
46
|
+
bySeverity,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const findingsLoad = findingsWeightedLoad(bySeverity);
|
|
50
|
+
const scaled = Math.round(findingsLoad / FINDINGS_WEIGHT_DIVISOR);
|
|
51
|
+
return {
|
|
52
|
+
findingsPenalty: Math.min(MAX_FINDINGS_PENALTY, Math.max(0, scaled)),
|
|
53
|
+
findingsLoad,
|
|
54
|
+
bySeverity,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Findings-primary security score (0–100). No check run required.
|
|
59
|
+
* securityScore = clamp(0, 100, 100 − findingsPenalty)
|
|
60
|
+
*/
|
|
61
|
+
export function computeFindingsSecurityScore(bySeverity, opts) {
|
|
62
|
+
const detectionIncomplete = Boolean(opts?.detectionIncomplete);
|
|
63
|
+
const { findingsPenalty, findingsLoad, bySeverity: normalized } = computeFindingsPenalty({
|
|
64
|
+
findingsBySeverity: bySeverity,
|
|
65
|
+
detectionIncomplete,
|
|
66
|
+
});
|
|
67
|
+
const securityScore = clampScore(100 - findingsPenalty);
|
|
68
|
+
const checksScore = typeof opts?.checksScore === "number" && Number.isFinite(opts.checksScore)
|
|
69
|
+
? clampScore(opts.checksScore)
|
|
70
|
+
: null;
|
|
71
|
+
return {
|
|
72
|
+
securityScore,
|
|
73
|
+
checksScore,
|
|
74
|
+
weightedSecurityScore: checksScore ?? securityScore,
|
|
75
|
+
findingsPenalty,
|
|
76
|
+
bySeverity: normalized,
|
|
77
|
+
findingsLoad,
|
|
78
|
+
detectionIncomplete,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=security-score.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"security-score.js","sourceRoot":"","sources":["../src/security-score.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,CAAC;AACvC,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAEzC,uDAAuD;AACvD,MAAM,CAAC,MAAM,yBAAyB,GAA2B;IAC/D,QAAQ,EAAE,EAAE;IACZ,IAAI,EAAE,EAAE;IACR,MAAM,EAAE,EAAE;IACV,GAAG,EAAE,CAAC;IACN,aAAa,EAAE,CAAC;CACjB,CAAC;AAiBF,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,MAAkC;IACzD,IAAI,CAAC,MAAM;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,GAAG,GAAmB,EAAE,CAAC;IAC/B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,GAAG,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,UAA0B;IAC7D,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QACtD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,MAAM,CAAC,GAAG,yBAAyB,CAAC,GAAG,CAAC,IAAI,yBAAyB,CAAC,MAAM,CAAC;QAC7E,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,sBAAsB,CAAC,IAGtC;IACC,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAC5D,IAAI,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC7B,OAAO;YACL,eAAe,EAAE,4BAA4B;YAC7C,YAAY,EAAE,CAAC;YACf,UAAU;SACX,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,uBAAuB,CAAC,CAAC;IAClE,OAAO;QACL,eAAe,EAAE,IAAI,CAAC,GAAG,CAAC,oBAAoB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;QACpE,YAAY;QACZ,UAAU;KACX,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAC1C,UAA0B,EAC1B,IAAqE;IAErE,MAAM,mBAAmB,GAAG,OAAO,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAC/D,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,sBAAsB,CAAC;QACvF,kBAAkB,EAAE,UAAU;QAC9B,mBAAmB;KACpB,CAAC,CAAC;IACH,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,GAAG,eAAe,CAAC,CAAC;IACxD,MAAM,WAAW,GACf,OAAO,IAAI,EAAE,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC;QACxE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9B,CAAC,CAAC,IAAI,CAAC;IAEX,OAAO;QACL,aAAa;QACb,WAAW;QACX,qBAAqB,EAAE,WAAW,IAAI,aAAa;QACnD,eAAe;QACf,UAAU,EAAE,UAAU;QACtB,YAAY;QACZ,mBAAmB;KACpB,CAAC;AACJ,CAAC"}
|