@adversarylabs/sdk 0.1.3 → 0.1.5

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/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { mkdir, readFile, readdir, writeFile } from \"node:fs/promises\";\nimport { dirname, isAbsolute, relative, resolve } from \"node:path\";\nimport { Ajv2020, type ValidateFunction } from \"ajv/dist/2020.js\";\n\nexport const DEFAULT_INPUT_PATH = \"/adversary/input.json\";\nexport const DEFAULT_OUTPUT_PATH = \"/adversary/output.json\";\nexport const ADVERSARY_RUN_PROTOCOL_VERSION = 1;\n\nconst verboseValues = new Set([\"1\", \"true\", \"TRUE\", \"yes\", \"YES\"]);\nlet envelopeValidator: ValidateFunction | undefined;\n\nexport const Severity = {\n Info: \"info\",\n Low: \"low\",\n Medium: \"medium\",\n High: \"high\",\n Critical: \"critical\",\n} as const;\n\nexport type Severity = (typeof Severity)[keyof typeof Severity];\n\nexport interface SeverityGuidanceEntry {\n severity: Severity;\n guidance: string;\n}\n\nexport const DEFAULT_SEVERITY_GUIDANCE: SeverityGuidanceEntry[] = [\n {\n severity: Severity.Info,\n guidance: \"Interesting observations.\",\n },\n {\n severity: Severity.Low,\n guidance: \"Reasonable engineering improvements.\",\n },\n {\n severity: Severity.Medium,\n guidance: \"Issues likely to create operational problems.\",\n },\n {\n severity: Severity.High,\n guidance: \"Security, correctness, or reliability risks.\",\n },\n {\n severity: Severity.Critical,\n guidance: \"Immediate production risk.\",\n },\n];\n\nexport const Confidence = {\n Low: \"low\",\n Medium: \"medium\",\n High: \"high\",\n} as const;\n\nexport type Confidence = (typeof Confidence)[keyof typeof Confidence];\nexport type ConfidenceInput = Confidence | number;\n\nexport interface ConfidenceThresholds {\n medium: number;\n high: number;\n}\n\nexport const DEFAULT_CONFIDENCE_THRESHOLDS: ConfidenceThresholds = {\n medium: 0.6,\n high: 0.85,\n};\n\nexport interface Location {\n file?: string;\n line?: number;\n endLine?: number;\n}\n\nexport interface EvidenceInput extends Location {\n location?: Location;\n label?: string;\n message?: string;\n snippet?: string;\n data?: Record<string, unknown>;\n /** @deprecated Use data. */\n metadata?: Record<string, unknown>;\n}\n\nexport interface Evidence {\n location?: Location;\n label?: string;\n message?: string;\n snippet?: string;\n data?: Record<string, unknown>;\n}\n\nexport interface Remediation {\n complexity?: \"trivial\" | \"small\" | \"medium\" | \"large\" | \"architectural\";\n}\n\nexport interface RecommendationInput {\n summary: string;\n details?: string;\n}\n\nexport type ObservationTitle =\n | string\n | {\n singular: string;\n plural: string;\n };\n\nexport type ObservationSummary =\n | string\n | {\n singular?: string;\n grouped?: string;\n };\n\nexport type ConfidenceAggregation = \"maximum\" | \"minimum\" | \"average\";\nexport type SeverityAggregation = \"highest\" | \"lowest\";\n\nexport interface ObservationInit {\n ruleId: string;\n subject: string;\n groupKey?: string;\n groupBy?: string[];\n groupedTitle?: string;\n deduplicate?: boolean;\n category?: string;\n severity?: Severity;\n confidence?: ConfidenceInput;\n confidenceAggregation?: ConfidenceAggregation;\n severityAggregation?: SeverityAggregation;\n title: ObservationTitle;\n summary?: ObservationSummary;\n whyItMatters?: string;\n impact?: string;\n location?: EvidenceInput;\n evidence?: string | Record<string, unknown>;\n recommendation?: string | RecommendationInput;\n remediation?: Remediation;\n tags?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface FindingInput {\n id?: string;\n ruleId?: string;\n groupKey?: string;\n deduplicate?: boolean;\n title: string;\n category: string;\n severity: Severity;\n confidence: ConfidenceInput;\n summary: string;\n whyItMatters?: string;\n impact?: string;\n evidence: EvidenceInput[];\n recommendation?: string;\n remediation?: Remediation;\n tags?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface ReviewFinding {\n id: string;\n ruleId?: string;\n groupKey?: string;\n title: string;\n category: string;\n severity: Severity;\n confidence: Confidence;\n summary: string;\n whyItMatters?: string;\n impact?: string;\n evidence: Evidence[];\n recommendation?: string;\n remediation?: Remediation;\n tags?: string[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface ReviewNote {\n key: string;\n summary: string;\n evidence?: Evidence[];\n metadata?: Record<string, unknown>;\n}\n\nexport interface ReviewNoteInput extends Omit<ReviewNote, \"evidence\"> {\n evidence?: EvidenceInput[];\n}\n\nexport interface ReviewAssessment {\n risk: \"none\" | \"low\" | \"medium\" | \"high\" | \"critical\";\n summary?: string;\n}\n\nexport interface ReviewOpinion {\n ship?: boolean;\n summary: string;\n}\n\nexport interface ReviewScore {\n key: string;\n label?: string;\n score: number;\n max?: number;\n summary?: string;\n}\n\nexport interface ReviewPolicy {\n minimumConfidence?: Confidence;\n maximumFindings?: number;\n includeInformational?: boolean;\n confidenceThresholds?: ConfidenceThresholds;\n severityOverrides?: Record<string, Severity>;\n}\n\nexport interface ReviewResult {\n adversary: {\n name: string;\n version?: string;\n };\n target: {\n repository?: string;\n filesScanned?: number;\n };\n assessment?: ReviewAssessment;\n positives: ReviewNote[];\n observations: ReviewNote[];\n findings: ReviewFinding[];\n opinion?: ReviewOpinion;\n suppressed: {\n observations: number;\n findings: number;\n };\n timing?: {\n buildMs?: number;\n startupMs?: number;\n scanMs?: number;\n totalMs?: number;\n };\n suppressedFindings?: ReviewFinding[];\n rawObservations?: ObservationInit[];\n}\n\nexport interface AdversaryRunEnvelope {\n protocolVersion: typeof ADVERSARY_RUN_PROTOCOL_VERSION;\n result: WireReviewResult;\n}\n\nexport interface WireEvidence {\n file?: string;\n line?: number;\n endLine?: number;\n message?: string;\n snippet?: string;\n metadata?: Record<string, unknown>;\n}\n\nexport interface WireReviewFinding extends Omit<ReviewFinding, \"evidence\"> {\n evidence: WireEvidence[];\n}\n\nexport interface WireReviewNote extends Omit<ReviewNote, \"evidence\"> {\n evidence?: WireEvidence[];\n}\n\nexport interface WireReviewResult\n extends Omit<ReviewResult, \"positives\" | \"observations\" | \"findings\" | \"suppressedFindings\"> {\n positives: WireReviewNote[];\n observations: WireReviewNote[];\n findings: WireReviewFinding[];\n suppressedFindings?: WireReviewFinding[];\n}\n\nexport interface RuntimeInput {\n source: {\n path: string;\n };\n [key: string]: unknown;\n}\n\nexport interface Summary {\n files_scanned?: number;\n}\n\nexport interface RuleContext {\n repoPath: string;\n summary: Summary;\n cache: Map<string, unknown>;\n relpath: (path: string) => string;\n glob: (pattern: string) => Promise<string[]>;\n rglob: (pattern: string) => Promise<string[]>;\n observe: (observation: ObservationInit) => void;\n finding: (finding: FindingInput) => void;\n review: {\n assessment: (assessment: ReviewAssessment) => void;\n positive: (note: ReviewNoteInput) => void;\n observe: (note: ReviewNoteInput) => void;\n score: (score: ReviewScore) => void;\n opinion: (opinion: ReviewOpinion) => void;\n };\n}\n\nexport type RuleHandler = (context: RuleContext) => void | Promise<void>;\n\nexport interface AdversaryOptions {\n name: string;\n version?: string;\n review?: ReviewPolicy;\n}\n\nexport interface RunOptions {\n input: RuntimeInput;\n review?: ReviewPolicy;\n includeSuppressed?: boolean;\n includeRawObservations?: boolean;\n includeTiming?: boolean;\n}\n\nexport interface EnvironmentRunOptions {\n input?: RuntimeInput;\n inputPath?: string;\n outputPath?: string;\n review?: ReviewPolicy;\n includeSuppressed?: boolean;\n includeRawObservations?: boolean;\n includeTiming?: boolean;\n}\n\nexport interface ReviewRenderer {\n render(result: ReviewResult): Promise<void> | void;\n}\n\nexport interface RuleDefinition {\n id: string;\n category?: string;\n defaultSeverity?: Severity;\n defaultConfidence?: ConfidenceInput;\n groupBy?: string[];\n aggregate?: (observations: ReadonlyArray<ObservationInit>) => FindingSynthesis;\n}\n\nexport type FindingSynthesis = Omit<Partial<ReviewFinding>, \"evidence\"> & {\n evidence?: EvidenceInput[];\n};\n\nexport class RuleRegistry {\n private readonly rules = new Map<string, RuleDefinition>();\n\n register(rule: RuleDefinition): void {\n assertRuleDefinition(rule);\n if (this.rules.has(rule.id)) {\n throw new Error(`Rule definition \"${rule.id}\" is already registered.`);\n }\n this.rules.set(rule.id, cloneRuleDefinition(rule));\n }\n\n replace(rule: RuleDefinition): void {\n assertRuleDefinition(rule);\n if (!this.rules.has(rule.id)) {\n throw new Error(`Rule definition \"${rule.id}\" is not registered.`);\n }\n this.rules.set(rule.id, cloneRuleDefinition(rule));\n }\n\n lookup(ruleId: string): RuleDefinition | undefined {\n const rule = this.rules.get(ruleId);\n return rule === undefined ? undefined : cloneRuleDefinition(rule);\n }\n\n has(ruleId: string): boolean {\n return this.rules.has(ruleId);\n }\n\n snapshot(): RuleRegistry {\n const snapshot = new RuleRegistry();\n for (const rule of this.rules.values()) {\n snapshot.register(rule);\n }\n return snapshot;\n }\n\n importMissing(source: RuleRegistry): void {\n for (const rule of source.rules.values()) {\n if (!this.rules.has(rule.id)) {\n this.rules.set(rule.id, cloneRuleDefinition(rule));\n }\n }\n }\n}\n\nfunction cloneRuleDefinition(rule: RuleDefinition): RuleDefinition {\n return {\n ...rule,\n groupBy: rule.groupBy === undefined ? undefined : [...rule.groupBy],\n };\n}\n\nfunction cloneReviewPolicy(policy: ReviewPolicy): ReviewPolicy {\n return {\n ...policy,\n confidenceThresholds:\n policy.confidenceThresholds === undefined ? undefined : { ...policy.confidenceThresholds },\n severityOverrides:\n policy.severityOverrides === undefined ? undefined : { ...policy.severityOverrides },\n };\n}\n\n/** @deprecated Prefer app.defineRule(...) so definitions remain instance-scoped. */\nexport const ruleRegistry = new RuleRegistry();\n\n/** @deprecated Prefer app.defineRule(...) so definitions remain instance-scoped. */\nexport function defineRule(rule: RuleDefinition): void {\n ruleRegistry.register(rule);\n}\n\n/** @deprecated Prefer app.replaceRule(...) so definitions remain instance-scoped. */\nexport function replaceRule(rule: RuleDefinition): void {\n ruleRegistry.replace(rule);\n}\n\nexport const log = {\n debug(message: unknown): void {\n if (isVerbose()) {\n writeLog(\"debug\", message);\n }\n },\n\n info(message: unknown): void {\n if (isVerbose()) {\n writeLog(\"info\", message);\n }\n },\n\n warn(message: unknown): void {\n writeLog(\"warn\", message);\n },\n\n error(message: unknown): void {\n writeLog(\"error\", message);\n },\n};\n\nexport class Adversary {\n readonly name: string;\n readonly version?: string;\n private readonly rules: Array<{ id: string; handler: RuleHandler }> = [];\n private readonly reviewPolicy: ReviewPolicy;\n private readonly ruleDefinitions: RuleRegistry;\n\n constructor(options: AdversaryOptions) {\n if (options.name.length === 0) {\n throw new Error(\"Adversary name must be a non-empty string.\");\n }\n\n this.name = options.name;\n this.version = options.version;\n this.reviewPolicy = cloneReviewPolicy(options.review ?? {});\n assertReviewPolicy(this.reviewPolicy, `adversary \"${this.name}\" review policy`);\n this.ruleDefinitions = ruleRegistry.snapshot();\n }\n\n defineRule(rule: RuleDefinition): void {\n this.ruleDefinitions.register(rule);\n }\n\n replaceRule(rule: RuleDefinition): void {\n this.ruleDefinitions.replace(rule);\n }\n\n hasRuleDefinition(ruleId: string): boolean {\n return this.ruleDefinitions.has(ruleId);\n }\n\n rule(id: string, handler: RuleHandler): void {\n if (id.length === 0) {\n throw new Error(\"Rule id must be a non-empty string.\");\n }\n\n if (this.rules.some((rule) => rule.id === id)) {\n throw new Error(`App rule \"${id}\" is already registered.`);\n }\n\n // Compatibility for definitions registered with the deprecated top-level API after\n // this Adversary was constructed. Once copied, later global changes cannot affect it.\n this.ruleDefinitions.importMissing(ruleRegistry);\n this.rules.push({ id, handler });\n }\n\n async run(options: RunOptions): Promise<ReviewResult> {\n const startedAt = performance.now();\n assertReviewPolicy(options.review ?? {}, `adversary \"${this.name}\" run review policy`);\n const repoPath = options.input.source.path;\n const summary: Summary = {};\n const cache = new Map<string, unknown>();\n const collector = createReviewCollector();\n const registry = this.ruleDefinitions.snapshot();\n const context = createRuleContext(repoPath, summary, cache, collector, registry);\n const includeSuppressed = options.includeSuppressed;\n\n for (const rule of this.rules) {\n log.debug(`running rule ${rule.id}`);\n await rule.handler(context);\n }\n\n const output = buildReviewResult({\n adversary: { name: this.name, version: this.version },\n repository: repoPath,\n filesScanned: typeof summary.files_scanned === \"number\" ? summary.files_scanned : undefined,\n collector,\n policy: cloneReviewPolicy({ ...this.reviewPolicy, ...options.review }),\n registry,\n includeSuppressed,\n includeRawObservations: options.includeRawObservations,\n timing: options.includeTiming\n ? { totalMs: Math.round(performance.now() - startedAt) }\n : undefined,\n });\n\n return output;\n }\n\n async runFromEnvironment(options: EnvironmentRunOptions = {}): Promise<ReviewResult> {\n const input =\n options.input ??\n (await parseInput(options.inputPath ?? process.env.ADVERSARY_INPUT ?? DEFAULT_INPUT_PATH));\n const repository = options.input\n ? input.source.path\n : (process.env.ADVERSARY_REPO ?? input.source.path);\n const result = await this.run({\n input: { ...input, source: { ...input.source, path: repository } },\n review: options.review,\n includeSuppressed:\n options.includeSuppressed ?? parseBooleanEnv(process.env.ADVERSARY_INCLUDE_SUPPRESSED),\n includeRawObservations: options.includeRawObservations,\n includeTiming: options.includeTiming,\n });\n await writeOutput(\n createAdversaryRunEnvelope(result),\n options.outputPath ?? process.env.ADVERSARY_OUTPUT ?? DEFAULT_OUTPUT_PATH,\n );\n return result;\n }\n}\n\nexport function createAdversaryRunEnvelope(result: ReviewResult): AdversaryRunEnvelope {\n return {\n protocolVersion: ADVERSARY_RUN_PROTOCOL_VERSION,\n result: toWireReviewResult(result),\n };\n}\n\nfunction toWireReviewResult(result: ReviewResult): WireReviewResult {\n return omitUndefined({\n adversary: omitUndefined(result.adversary),\n target: omitUndefined(result.target),\n assessment:\n result.assessment === undefined ? undefined : omitUndefined({ ...result.assessment }),\n positives: result.positives.map(toWireReviewNote),\n observations: result.observations.map(toWireReviewNote),\n findings: result.findings.map(toWireFinding),\n opinion: result.opinion === undefined ? undefined : omitUndefined({ ...result.opinion }),\n suppressed: result.suppressed,\n timing: result.timing === undefined ? undefined : omitUndefined(result.timing),\n suppressedFindings: result.suppressedFindings?.map(toWireFinding),\n rawObservations: result.rawObservations,\n }) as WireReviewResult;\n}\n\nfunction toWireReviewNote(note: ReviewNote): WireReviewNote {\n return omitUndefined({\n key: note.key,\n summary: note.summary,\n evidence: note.evidence?.map(toWireEvidence),\n metadata: note.metadata,\n });\n}\n\nfunction toWireFinding(finding: ReviewFinding): WireReviewFinding {\n return omitUndefined({\n id: finding.id,\n ruleId: finding.ruleId,\n groupKey: finding.groupKey,\n title: finding.title,\n category: finding.category,\n severity: finding.severity,\n confidence: finding.confidence,\n summary: finding.summary,\n whyItMatters: finding.whyItMatters,\n impact: finding.impact,\n evidence: finding.evidence.map(toWireEvidence),\n recommendation: finding.recommendation,\n remediation:\n finding.remediation === undefined ? undefined : omitUndefined({ ...finding.remediation }),\n tags: finding.tags,\n metadata: finding.metadata,\n }) as WireReviewFinding;\n}\n\nfunction toWireEvidence(evidence: Evidence): WireEvidence {\n return omitUndefined({\n file: evidence.location?.file,\n line: evidence.location?.line,\n endLine: evidence.location?.endLine,\n message: evidence.message ?? evidence.label,\n snippet: evidence.snippet,\n metadata: evidence.data,\n });\n}\n\nexport async function parseInput(path = DEFAULT_INPUT_PATH): Promise<RuntimeInput> {\n const raw = await readFile(path, \"utf8\");\n const parsed: unknown = JSON.parse(raw);\n\n if (!isRecord(parsed)) {\n throw new Error(`Invalid input at ${path}: expected an object.`);\n }\n\n if (!isRecord(parsed.source)) {\n throw new Error(`Invalid input at ${path}: source must be an object.`);\n }\n\n if (typeof parsed.source.path !== \"string\" || parsed.source.path.length === 0) {\n throw new Error(`Invalid input at ${path}: source.path must be a non-empty string.`);\n }\n\n return parsed as RuntimeInput;\n}\n\nexport async function writeOutput(\n output: AdversaryRunEnvelope,\n path = DEFAULT_OUTPUT_PATH,\n): Promise<void> {\n await validateRunEnvelope(output);\n await mkdir(dirname(path), { recursive: true });\n await writeFile(path, `${JSON.stringify(output, null, 2)}\\n`, \"utf8\");\n}\n\nexport async function validateRunEnvelope(output: unknown): Promise<void> {\n let validator = envelopeValidator;\n if (validator === undefined) {\n const schema = JSON.parse(\n await readFile(\n new URL(\"../schemas/adversary.review.v1.schema.json\", import.meta.url),\n \"utf8\",\n ),\n );\n validator = new Ajv2020({ allErrors: true, strict: true }).compile(schema);\n envelopeValidator = validator;\n }\n if (!validator(output)) {\n throw new Error(`Invalid adversary.review.v1 envelope: ${JSON.stringify(validator.errors)}`);\n }\n}\n\nexport function normalizeConfidence(\n confidence: ConfidenceInput,\n thresholds: ConfidenceThresholds = DEFAULT_CONFIDENCE_THRESHOLDS,\n): Confidence {\n if (isConfidence(confidence)) {\n return confidence;\n }\n\n if (\n typeof confidence !== \"number\" ||\n Number.isNaN(confidence) ||\n confidence < 0 ||\n confidence > 1\n ) {\n throw new Error(\"confidence must be low, medium, high, or a number from 0 to 1.\");\n }\n\n if (confidence >= thresholds.high) {\n return Confidence.High;\n }\n\n if (confidence >= thresholds.medium) {\n return Confidence.Medium;\n }\n\n return Confidence.Low;\n}\n\nexport function rankFindings(findings: ReviewFinding[]): ReviewFinding[] {\n return [...findings].sort((left, right) => {\n const scoreComparison = scoreFinding(right) - scoreFinding(left);\n if (scoreComparison !== 0) {\n return scoreComparison;\n }\n\n const severityComparison = severityWeight(right.severity) - severityWeight(left.severity);\n if (severityComparison !== 0) {\n return severityComparison;\n }\n\n const titleComparison = compareStrings(left.title, right.title);\n if (titleComparison !== 0) {\n return titleComparison;\n }\n\n return compareStrings(left.id, right.id);\n });\n}\n\nexport class JsonRenderer implements ReviewRenderer {\n constructor(\n private readonly write: (text: string) => void = (text) => process.stdout.write(text),\n ) {}\n\n render(result: ReviewResult): void {\n this.write(`${JSON.stringify(toWireReviewResult(result), null, 2)}\\n`);\n }\n}\n\nexport class TerminalRenderer implements ReviewRenderer {\n constructor(\n private readonly write: (text: string) => void = (text) => process.stdout.write(text),\n ) {}\n\n render(result: ReviewResult): void {\n const lines: string[] = [];\n lines.push(`Adversary: ${result.adversary.name}`);\n if (result.target.repository !== undefined) {\n lines.push(`Repository: ${result.target.repository}`);\n }\n lines.push(\"\");\n\n if (result.assessment !== undefined) {\n lines.push(\"Overall assessment\", \"\");\n lines.push(`Risk: ${capitalize(result.assessment.risk)}`, \"\");\n if (result.assessment.summary !== undefined) {\n lines.push(normalizeParagraph(result.assessment.summary), \"\");\n }\n }\n\n const scoreNotes = result.observations.filter(isScoreReviewNote);\n const additionalObservations = result.observations.filter((note) => !isScoreReviewNote(note));\n\n if (scoreNotes.length > 0) {\n lines.push(\"Scores\", \"\");\n for (const note of scoreNotes) {\n lines.push(note.summary);\n }\n lines.push(\"\");\n }\n\n if (result.positives.length > 0) {\n lines.push(\"Positive signals\", \"\");\n for (const positive of result.positives) {\n lines.push(`- ${normalizeParagraph(positive.summary)}`);\n }\n lines.push(\"\");\n }\n\n if (additionalObservations.length > 0) {\n lines.push(\"Additional observations\", \"\");\n for (const observation of additionalObservations) {\n lines.push(`- ${normalizeParagraph(observation.summary)}`);\n }\n lines.push(\"\");\n }\n\n const primary = result.findings[0];\n if (primary !== undefined) {\n lines.push(\"Primary opportunity\", \"\");\n lines.push(`- ${primary.title.endsWith(\".\") ? primary.title : `${primary.title}.`}`, \"\");\n }\n\n if (result.opinion !== undefined) {\n lines.push(\"Overall opinion\", \"\", normalizeParagraph(result.opinion.summary), \"\");\n }\n\n lines.push(\"Scan complete\", \"\");\n if (result.target.filesScanned !== undefined) {\n lines.push(`Files scanned: ${result.target.filesScanned}`);\n }\n lines.push(`Findings: ${result.findings.length}`, \"\");\n\n for (const finding of result.findings) {\n lines.push(`[${finding.severity}] ${finding.title}`);\n const firstEvidence = finding.evidence.find((item) => item.location?.file !== undefined);\n if (firstEvidence?.location?.file !== undefined) {\n lines.push(formatEvidenceLocation(firstEvidence));\n }\n lines.push(\"\");\n lines.push(`Category: ${finding.category}`);\n lines.push(`Confidence: ${finding.confidence}`, \"\");\n lines.push(\"Summary\", \"\", finding.summary, \"\");\n\n if (finding.whyItMatters !== undefined) {\n lines.push(\"Why it matters\", \"\", finding.whyItMatters, \"\");\n }\n\n if (finding.impact !== undefined) {\n lines.push(\"Impact\", \"\", finding.impact, \"\");\n }\n\n if (finding.evidence.length > 0) {\n lines.push(\"Evidence\", \"\");\n for (const evidence of finding.evidence) {\n lines.push(...formatEvidenceLines(evidence));\n }\n lines.push(\"\");\n }\n\n if (finding.recommendation !== undefined) {\n lines.push(\"Recommendation\", \"\", normalizeParagraph(finding.recommendation), \"\");\n }\n }\n\n this.write(`${lines.join(\"\\n\").trimEnd()}\\n`);\n }\n}\n\nfunction createRuleContext(\n repoPath: string,\n summary: Summary,\n cache: Map<string, unknown>,\n collector: ReviewCollector,\n registry: RuleRegistry,\n): RuleContext {\n const absoluteRepoPath = resolve(repoPath);\n\n return {\n repoPath: absoluteRepoPath,\n summary,\n cache,\n relpath(path: string): string {\n return relative(absoluteRepoPath, isAbsolute(path) ? path : resolve(absoluteRepoPath, path));\n },\n glob(pattern: string): Promise<string[]> {\n return findMatchingPaths(absoluteRepoPath, pattern, false);\n },\n rglob(pattern: string): Promise<string[]> {\n return findMatchingPaths(absoluteRepoPath, pattern, true);\n },\n observe(observation: ObservationInit): void {\n assertObservationInit(observation, \"ctx.observe\", registry);\n collector.observations.push(observation);\n },\n finding(finding: FindingInput): void {\n assertFindingInput(finding, \"ctx.finding\");\n collector.findings.push({\n finding: normalizeFindingInput(finding, collector.findings.length),\n deduplicate: finding.deduplicate !== false,\n });\n },\n review: {\n assessment(assessment: ReviewAssessment): void {\n assertAssessment(assessment);\n collector.assessment = assessment;\n },\n positive(note: ReviewNoteInput): void {\n assertReviewNote(note, \"ctx.review.positive\");\n collector.positives.push(normalizeReviewNote(note));\n },\n observe(note: ReviewNoteInput): void {\n assertReviewNote(note, \"ctx.review.observe\");\n collector.reviewObservations.push(normalizeReviewNote(note));\n },\n score(score: ReviewScore): void {\n assertReviewScore(score);\n collector.scores.push(score);\n },\n opinion(opinion: ReviewOpinion): void {\n assertOpinion(opinion);\n collector.opinion = opinion;\n },\n },\n };\n}\n\nasync function findMatchingPaths(\n repoPath: string,\n pattern: string,\n recursive: boolean,\n): Promise<string[]> {\n const matcher = globPatternToRegExp(pattern);\n const paths = recursive ? await walk(repoPath) : await listFiles(repoPath);\n\n return paths\n .map((path) => relative(repoPath, path))\n .filter((path) => {\n const posixPath = toPosixPath(path);\n const candidate = recursive && !pattern.includes(\"/\") ? basename(posixPath) : posixPath;\n return matcher.test(candidate);\n })\n .sort(compareStrings);\n}\n\nasync function listFiles(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n return entries.filter((entry) => entry.isFile()).map((entry) => resolve(directory, entry.name));\n}\n\nasync function walk(directory: string): Promise<string[]> {\n const entries = await readdir(directory, { withFileTypes: true });\n const paths: string[] = [];\n\n for (const entry of entries) {\n const path = resolve(directory, entry.name);\n\n if (entry.isDirectory()) {\n paths.push(...(await walk(path)));\n } else if (entry.isFile()) {\n paths.push(path);\n }\n }\n\n return paths;\n}\n\nfunction globPatternToRegExp(pattern: string): RegExp {\n const source = toPosixPath(pattern)\n .replace(/[.+^${}()|[\\]\\\\]/g, \"\\\\$&\")\n .replace(/\\*\\*/g, \"\\0\")\n .replace(/\\*/g, \"[^/]*\")\n .replace(/\\?/g, \"[^/]\")\n .replace(/\\0/g, \".*\");\n\n return new RegExp(`^${source}$`);\n}\n\ninterface ReviewCollector {\n observations: ObservationInit[];\n findings: CollectedFinding[];\n assessment?: ReviewAssessment;\n positives: ReviewNote[];\n reviewObservations: ReviewNote[];\n scores: ReviewScore[];\n opinion?: ReviewOpinion;\n}\n\ninterface CollectedFinding {\n finding: ReviewFinding;\n deduplicate: boolean;\n}\n\nfunction createReviewCollector(): ReviewCollector {\n return {\n observations: [],\n findings: [],\n positives: [],\n reviewObservations: [],\n scores: [],\n };\n}\n\nfunction buildReviewResult(input: {\n adversary: ReviewResult[\"adversary\"];\n repository: string;\n filesScanned?: number;\n collector: ReviewCollector;\n policy: ReviewPolicy;\n registry: RuleRegistry;\n includeSuppressed?: boolean;\n includeRawObservations?: boolean;\n timing?: ReviewResult[\"timing\"];\n}): ReviewResult {\n const thresholds = input.policy.confidenceThresholds ?? DEFAULT_CONFIDENCE_THRESHOLDS;\n const synthesis = synthesizeObservationFindings(\n input.collector.observations,\n thresholds,\n input.registry,\n );\n const allFindings = deduplicateFindings([\n ...synthesis.findings.map((finding) => ({ finding, deduplicate: true })),\n ...input.collector.findings,\n ]).map((finding) => calibrateFindingSeverity(finding, input.policy));\n const ranked = rankFindings(allFindings);\n const minimumConfidence = input.policy.minimumConfidence ?? Confidence.Medium;\n const includeInformational = input.policy.includeInformational ?? false;\n const maximumFindings = input.policy.maximumFindings ?? Number.POSITIVE_INFINITY;\n const eligible: ReviewFinding[] = [];\n const suppressedFindings: ReviewFinding[] = [];\n\n for (const finding of ranked) {\n const suppressed =\n confidenceWeight(finding.confidence) < confidenceWeight(minimumConfidence) ||\n (!includeInformational && finding.severity === Severity.Info) ||\n eligible.length >= maximumFindings;\n\n if (suppressed) {\n suppressedFindings.push(finding);\n } else {\n eligible.push(finding);\n }\n }\n\n const positives = selectPositiveSignals(input.collector.positives);\n const reviewObservations = deduplicateReviewObservations(\n [\n ...input.collector.reviewObservations,\n ...deduplicateScores(input.collector.scores).map(scoreToReviewNote),\n ],\n positives,\n );\n\n return omitUndefined({\n adversary: input.adversary,\n target: omitUndefined({\n repository: input.repository,\n filesScanned: input.filesScanned,\n }),\n assessment: input.collector.assessment ?? synthesizeAssessment(eligible, positives),\n positives,\n observations: reviewObservations,\n findings: eligible,\n opinion: input.collector.opinion ?? synthesizeOpinion(eligible),\n suppressed: {\n observations: synthesis.suppressedObservations,\n findings: suppressedFindings.length,\n },\n timing: input.timing,\n suppressedFindings: input.includeSuppressed ? suppressedFindings : undefined,\n rawObservations: input.includeRawObservations ? input.collector.observations : undefined,\n }) as ReviewResult;\n}\n\ninterface ObservationSynthesisResult {\n findings: ReviewFinding[];\n suppressedObservations: number;\n}\n\nfunction synthesizeObservationFindings(\n observations: ObservationInit[],\n thresholds: ConfidenceThresholds,\n registry: RuleRegistry,\n): ObservationSynthesisResult {\n const grouped = new Map<string, ObservationInit[]>();\n const seen = new Set<string>();\n let suppressedObservations = 0;\n\n for (const observation of observations) {\n const rule = registry.lookup(observation.ruleId);\n const groupKey = observation.groupKey ?? defaultObservationGroupKey(observation, rule);\n const dedupeKey = stableStringify({ groupKey, observation });\n if (observation.deduplicate !== false && seen.has(dedupeKey)) {\n suppressedObservations += 1;\n continue;\n }\n seen.add(dedupeKey);\n grouped.set(groupKey, [...(grouped.get(groupKey) ?? []), observation]);\n }\n\n const findings = [...grouped.entries()].map(([groupKey, group]) => {\n const first = group[0];\n if (first === undefined) {\n throw new Error(\"Cannot synthesize finding from an empty observation group.\");\n }\n\n const rule = registry.lookup(first.ruleId);\n const synthesis = rule?.aggregate?.(group) ?? {};\n const synthesisSource = rule?.aggregate === undefined ? \"generic\" : \"rule\";\n log.debug(\n `review synthesis ruleId=${first.ruleId} groupKey=${groupKey} observations=${group.length} selected=${synthesisSource} fallback=${synthesisSource === \"generic\"}`,\n );\n\n const evidence = deduplicateEvidence(synthesis.evidence ?? group.map(observationToEvidence));\n const recommendation =\n synthesis.recommendation === undefined\n ? synthesizeRecommendation(group)\n : normalizeParagraph(synthesis.recommendation);\n const confidence = aggregateConfidence(\n group.map((observation) =>\n normalizeConfidence(\n observation.confidence ?? rule?.defaultConfidence ?? Confidence.Medium,\n thresholds,\n ),\n ),\n first.confidenceAggregation ?? \"maximum\",\n );\n const severity = aggregateSeverity(\n group.map((observation) => observation.severity ?? rule?.defaultSeverity ?? Severity.Info),\n first.severityAggregation ?? \"highest\",\n );\n\n const finding: ReviewFinding = {\n id: synthesis.id ?? stableId(`${first.ruleId}:${groupKey}`),\n ruleId: synthesis.ruleId ?? first.ruleId,\n groupKey: synthesis.groupKey ?? groupKey,\n title:\n synthesis.title ??\n synthesizeObservationTitle(first.title, group.length, first.groupedTitle),\n category: synthesis.category ?? first.category ?? rule?.category ?? \"general\",\n severity: synthesis.severity ?? severity,\n confidence:\n synthesis.confidence ??\n (rule?.defaultConfidence === undefined\n ? confidence\n : normalizeConfidence(rule.defaultConfidence, thresholds)),\n summary: synthesis.summary ?? summarizeObservationGroup(group),\n whyItMatters: synthesis.whyItMatters ?? first.whyItMatters,\n impact: synthesis.impact ?? first.impact,\n evidence,\n recommendation: recommendation.length > 0 ? recommendation : undefined,\n remediation: synthesis.remediation ?? first.remediation,\n tags: synthesis.tags ?? uniqueStrings(group.flatMap((observation) => observation.tags ?? [])),\n metadata: synthesis.metadata ?? first.metadata,\n };\n assertFindingInput(finding, `adversary aggregate rule \"${first.ruleId}\"`);\n return finding;\n });\n return { findings, suppressedObservations };\n}\n\nfunction normalizeFindingInput(input: FindingInput, occurrence = 0): ReviewFinding {\n return omitUndefined({\n id:\n input.id ??\n stableId(\n `${input.ruleId ?? input.title}:${input.groupKey ?? input.category}${\n input.deduplicate === false ? `:${occurrence}` : \"\"\n }`,\n ),\n ruleId: input.ruleId,\n groupKey: input.groupKey,\n title: input.title,\n category: input.category,\n severity: input.severity,\n confidence: normalizeConfidence(input.confidence),\n summary: input.summary,\n whyItMatters: input.whyItMatters,\n impact: input.impact,\n evidence: deduplicateEvidence(input.evidence),\n recommendation:\n input.recommendation === undefined ? undefined : normalizeParagraph(input.recommendation),\n remediation: input.remediation,\n tags: input.tags === undefined ? undefined : uniqueStrings(input.tags),\n metadata: input.metadata,\n }) as ReviewFinding;\n}\n\nfunction deduplicateFindings(findings: CollectedFinding[]): ReviewFinding[] {\n const seen = new Set<string>();\n const result: ReviewFinding[] = [];\n\n for (const collected of findings) {\n const { finding } = collected;\n if (!collected.deduplicate) {\n result.push({ ...finding, evidence: deduplicateEvidence(finding.evidence) });\n continue;\n }\n const key = finding.groupKey ?? finding.id;\n if (seen.has(key)) {\n const existing = result.find((item) => (item.groupKey ?? item.id) === key);\n if (existing !== undefined) {\n existing.evidence = deduplicateEvidence([...existing.evidence, ...finding.evidence]);\n existing.tags = uniqueStrings([...(existing.tags ?? []), ...(finding.tags ?? [])]);\n }\n continue;\n }\n seen.add(key);\n result.push({ ...finding, evidence: deduplicateEvidence(finding.evidence) });\n }\n\n return result;\n}\n\nfunction deduplicateEvidence(evidence: ReadonlyArray<EvidenceInput | Evidence>): Evidence[] {\n const seen = new Set<string>();\n const result: Evidence[] = [];\n\n for (const item of evidence) {\n const normalized = normalizeEvidence(item);\n const key = stableStringify(normalized);\n if (!seen.has(key)) {\n seen.add(key);\n result.push(normalized);\n }\n }\n\n return result.sort((left, right) => {\n const fileComparison = compareStrings(left.location?.file ?? \"\", right.location?.file ?? \"\");\n if (fileComparison !== 0) {\n return fileComparison;\n }\n const lineComparison = compareNumbers(left.location?.line, right.location?.line);\n if (lineComparison !== 0) {\n return lineComparison;\n }\n return compareStrings(left.message ?? \"\", right.message ?? \"\");\n });\n}\n\nfunction normalizeEvidence(input: EvidenceInput | Evidence): Evidence {\n const legacy = input as EvidenceInput;\n const hasLocation =\n legacy.location !== undefined ||\n legacy.file !== undefined ||\n legacy.line !== undefined ||\n legacy.endLine !== undefined;\n const location = hasLocation\n ? omitUndefined({\n file: legacy.location?.file ?? legacy.file,\n line: legacy.location?.line ?? legacy.line,\n endLine: legacy.location?.endLine ?? legacy.endLine,\n })\n : undefined;\n return omitUndefined({\n location,\n label: input.label,\n message: input.message,\n snippet: input.snippet,\n data: input.data ?? legacy.metadata,\n });\n}\n\nfunction normalizeReviewNote(note: ReviewNoteInput): ReviewNote {\n return omitUndefined({\n ...note,\n evidence: note.evidence === undefined ? undefined : deduplicateEvidence(note.evidence),\n }) as ReviewNote;\n}\n\nfunction deduplicateNotes(notes: ReviewNote[]): ReviewNote[] {\n const seen = new Set<string>();\n const result: ReviewNote[] = [];\n\n for (const note of notes) {\n const normalized = {\n ...note,\n evidence: note.evidence === undefined ? undefined : deduplicateEvidence(note.evidence),\n };\n const key = note.key;\n if (!seen.has(key)) {\n seen.add(key);\n result.push(normalized);\n }\n }\n\n return result.sort((left, right) => compareStrings(left.key, right.key));\n}\n\nfunction selectPositiveSignals(notes: ReviewNote[]): ReviewNote[] {\n const selected: ReviewNote[] = [];\n const seen = new Set<string>();\n\n // Registration order expresses the review author's priority. Two strong signals\n // provide useful context without diluting the findings.\n for (const note of notes) {\n if (!seen.has(note.key)) {\n seen.add(note.key);\n selected.push(note);\n }\n if (selected.length === 2) {\n break;\n }\n }\n\n return deduplicateNotes(selected);\n}\n\nfunction deduplicateReviewObservations(\n observations: ReviewNote[],\n positives: ReviewNote[],\n): ReviewNote[] {\n const deduped = deduplicateNotes(observations);\n\n return deduped.filter((item) => {\n return !positives.some((positive) => notesDescribeSameFact(positive, item));\n });\n}\n\nfunction notesDescribeSameFact(positive: ReviewNote, observation: ReviewNote): boolean {\n if (positive.key === observation.key) {\n return true;\n }\n\n const positiveText = normalizeSemanticText(`${positive.key} ${positive.summary}`);\n const observationText = normalizeSemanticText(`${observation.key} ${observation.summary}`);\n return positiveText.length > 0 && positiveText === observationText;\n}\n\nfunction synthesizeAssessment(\n findings: ReviewFinding[],\n positives: ReviewNote[] = [],\n): ReviewAssessment {\n const strength = assessmentStrength(positives[0]);\n\n if (findings.length === 0) {\n return {\n risk: \"none\",\n summary: joinSentences(\n strength,\n \"No material concerns were identified in the reviewed repository.\",\n ),\n };\n }\n\n const risk = highestRisk(findings);\n const primary = findings[0];\n const primaryConcern =\n primary === undefined ? \"the highest-ranked finding\" : assessmentConcern(primary);\n\n if (findings.length === 1) {\n return {\n risk,\n summary: joinSentences(\n strength,\n `The only material concern identified is ${primaryConcern}.`,\n ),\n };\n }\n\n return {\n risk,\n summary: joinSentences(\n strength,\n `${numberWord(findings.length)} material concerns were identified. The highest-value improvement is ${primaryConcern}.`,\n ),\n };\n}\n\nfunction assessmentStrength(positive: ReviewNote | undefined): string | undefined {\n if (positive === undefined) {\n return undefined;\n }\n\n const summary = normalizeParagraph(positive.summary);\n if (/^uses\\b/i.test(summary)) {\n return `The repository ${lowercaseFirst(summary)}`;\n }\n return summary;\n}\n\nfunction assessmentConcern(finding: ReviewFinding): string {\n const summary = normalizeParagraph(finding.summary).split(/(?<=[.!?])\\s+/, 1)[0];\n return concernClause(\n lowercaseFirst(trimTrailingSentencePunctuation(summary ?? findingConcern(finding))),\n );\n}\n\nfunction concernClause(concern: string): string {\n const isClause =\n /\\b(?:allows|are|builds|can|contains|copies|could|did|do|does|exposes|has|have|includes|installs|is|lacks|may|might|must|reads|references|relies|requires|runs|uses|was|were|writes)\\b/i.test(\n concern,\n );\n if (!isClause) {\n return concern;\n }\n\n const hasDeterminer = /^(?:a|an|any|each|its|no|one|some|the|their|these|this|those)\\b/i.test(\n concern,\n );\n return `that ${hasDeterminer ? concern : `the ${concern}`}`;\n}\n\nfunction joinSentences(...sentences: Array<string | undefined>): string {\n return sentences.filter(isNonEmptyString).join(\" \");\n}\n\nfunction synthesizeOpinion(findings: ReviewFinding[]): ReviewOpinion | undefined {\n if (findings.length === 0) {\n return {\n ship: true,\n summary: \"I would ship this as-is.\",\n };\n }\n\n const highestSeverity = highestFindingSeverity(findings);\n const ship = severityWeight(highestSeverity) < severityWeight(Severity.High);\n\n if (findings.length > 1) {\n return {\n ship,\n summary: \"I would address the remaining findings before production.\",\n };\n }\n\n const finding = findings[0];\n const improvement = finding === undefined ? \"Addressing the finding\" : improvementPhrase(finding);\n return {\n ship,\n summary: ship\n ? `I would ship this as-is. ${improvement} is the only improvement I would recommend before production.`\n : `${improvement} is the most important improvement to address before production.`,\n };\n}\n\nfunction deduplicateScores(scores: ReviewScore[]): ReviewScore[] {\n const seen = new Set<string>();\n const result: ReviewScore[] = [];\n\n for (const score of scores) {\n if (!seen.has(score.key)) {\n seen.add(score.key);\n result.push(score);\n }\n }\n\n return result.sort((left, right) => compareStrings(left.key, right.key));\n}\n\nfunction scoreToReviewNote(score: ReviewScore): ReviewNote {\n return {\n key: `score.${score.key}`,\n summary: formatScore(score),\n metadata: {\n kind: \"score\",\n score: omitUndefined({\n key: score.key,\n label: score.label,\n score: score.score,\n max: score.max,\n summary: score.summary,\n }),\n },\n };\n}\n\nfunction isScoreReviewNote(note: ReviewNote): boolean {\n return note.metadata?.kind === \"score\" && isRecord(note.metadata.score);\n}\n\nfunction observationToEvidence(observation: ObservationInit): Evidence {\n const data = isRecord(observation.evidence)\n ? observation.evidence\n : observation.evidence === undefined\n ? undefined\n : { evidence: observation.evidence };\n const message = isRecord(observation.evidence)\n ? structuredEvidenceMessage(observation.evidence)\n : stringFromUnknown(observation.evidence);\n const snippet = isRecord(observation.evidence)\n ? (stringFromUnknown(observation.evidence.snippet) ??\n stringFromUnknown(observation.evidence.instruction))\n : observation.location?.snippet;\n\n return omitUndefined({\n location: normalizeEvidence(observation.location ?? {}).location,\n label: observation.location?.label ?? message,\n message: observation.location?.message ?? message,\n snippet,\n data,\n });\n}\n\nfunction structuredEvidenceMessage(evidence: Record<string, unknown>): string | undefined {\n const explicitMessage = stringFromUnknown(evidence.message);\n if (explicitMessage !== undefined) {\n return explicitMessage;\n }\n\n const label = stringFromUnknown(evidence.label) ?? stringFromUnknown(evidence.name);\n if (label !== undefined) {\n return label;\n }\n\n return stringFromUnknown(evidence.summary) ?? stringFromUnknown(evidence.instruction);\n}\n\nfunction synthesizeObservationTitle(\n title: ObservationTitle,\n count: number,\n groupedTitle: string | undefined,\n): string {\n if (typeof title === \"string\") {\n return count > 1 && groupedTitle !== undefined ? groupedTitle : title;\n }\n return count > 1 ? title.plural : title.singular;\n}\n\nfunction summarizeObservationGroup(group: ObservationInit[]): string {\n const first = group[0];\n if (first === undefined) {\n throw new Error(\"Cannot summarize an empty observation group.\");\n }\n\n if (first.summary !== undefined) {\n if (typeof first.summary === \"string\") {\n return normalizeParagraph(renderObservationTemplate(first.summary, group));\n }\n const template = group.length > 1 ? first.summary.grouped : first.summary.singular;\n if (template !== undefined) {\n return normalizeParagraph(renderObservationTemplate(template, group));\n }\n }\n\n const recommendation =\n typeof first.recommendation === \"string\" ? undefined : first.recommendation?.summary;\n if (group.length === 1) {\n return recommendation ?? synthesizeObservationTitle(first.title, 1, first.groupedTitle);\n }\n return `${group.length} related observations were reported for ${first.subject}.`;\n}\n\nfunction synthesizeRecommendation(group: ObservationInit[]): string {\n const recommendations = uniqueStrings(\n group.flatMap((observation) => {\n if (typeof observation.recommendation === \"string\") {\n return [observation.recommendation];\n }\n if (observation.recommendation !== undefined) {\n return [\n joinRecommendation(\n observation.recommendation.summary,\n observation.recommendation.details,\n ),\n ];\n }\n return [];\n }),\n );\n\n return recommendations.map(normalizeParagraph).join(\"\\n\\n\");\n}\n\nfunction joinRecommendation(summary: string, details: string | undefined): string {\n if (!isNonEmptyString(details)) {\n return summary;\n }\n\n const compactSummary = trimTrailingSentencePunctuation(summary);\n const compactDetails = trimTrailingSentencePunctuation(details);\n\n if (/^use\\s+/i.test(compactDetails)) {\n return `${compactSummary} and ${lowercaseFirst(compactDetails)}.`;\n }\n\n return `${compactSummary}. ${compactDetails}.`;\n}\n\nfunction defaultObservationGroupKey(\n observation: ObservationInit,\n rule: RuleDefinition | undefined,\n): string {\n const groupBy = observation.groupBy ?? rule?.groupBy;\n if (groupBy !== undefined && groupBy.length > 0) {\n return groupBy\n .map((field) => `${field}:${stringFromUnknown(observationValue(observation, field)) ?? \"\"}`)\n .join(\"|\");\n }\n return `${observation.ruleId}:${observation.subject}:${observation.category ?? rule?.category ?? \"general\"}`;\n}\n\nfunction renderObservationTemplate(template: string, group: ObservationInit[]): string {\n const values = observationTemplateValues(group);\n return template.replace(/\\{([a-zA-Z][a-zA-Z0-9_]*)\\}/g, (match, key: string) => {\n return values[key] ?? match;\n });\n}\n\nfunction observationTemplateValues(group: ObservationInit[]): Record<string, string> {\n const first = group[0];\n const subjects = uniqueStrings(group.map((observation) => observation.subject));\n const locations = uniqueStrings(group.map(formatObservationLocation).filter(isNonEmptyString));\n\n return omitUndefined({\n count: numberWord(group.length),\n location: locations[0],\n locations: joinHumanList(locations),\n subject: first?.subject,\n subjects: joinHumanList(subjects),\n });\n}\n\nfunction observationValue(observation: ObservationInit, field: string): unknown {\n if (field.includes(\".\")) {\n return field.split(\".\").reduce<unknown>((value, part) => {\n return isRecord(value) ? value[part] : undefined;\n }, observation);\n }\n return (observation as unknown as Record<string, unknown>)[field];\n}\n\nfunction formatObservationLocation(observation: ObservationInit): string | undefined {\n if (observation.location?.file === undefined) {\n return undefined;\n }\n if (observation.location.line === undefined) {\n return observation.location.file;\n }\n return `${observation.location.file}:${observation.location.line}`;\n}\n\nfunction joinHumanList(values: string[]): string {\n if (values.length <= 2) {\n return values.join(\" and \");\n }\n return `${values.slice(0, -1).join(\", \")}, and ${values.at(-1)}`;\n}\n\nfunction highestRisk(findings: ReviewFinding[]): ReviewAssessment[\"risk\"] {\n const severity = highestFindingSeverity(findings);\n if (severity === Severity.Info) {\n return \"none\";\n }\n return severity;\n}\n\nfunction highestFindingSeverity(findings: ReviewFinding[]): Severity {\n return aggregateSeverity(\n findings.map((finding) => finding.severity),\n \"highest\",\n );\n}\n\nfunction findingConcern(finding: ReviewFinding): string {\n return lowercaseFirst(trimTrailingSentencePunctuation(finding.title));\n}\n\nfunction improvementPhrase(finding: ReviewFinding): string {\n const recommendation = recommendationSubject(finding.recommendation);\n if (recommendation !== undefined) {\n return recommendation;\n }\n\n return `Addressing ${findingConcern(finding)}`;\n}\n\nfunction recommendationSubject(recommendation: string | undefined): string | undefined {\n if (recommendation === undefined) {\n return undefined;\n }\n\n const normalized = trimTrailingSentencePunctuation(normalizeParagraph(recommendation));\n const firstClause = normalized.split(/\\s+(?:and|when|where|with)\\s+/i)[0]?.trim();\n if (!isNonEmptyString(firstClause)) {\n return undefined;\n }\n\n return gerundPhrase(firstClause);\n}\n\nfunction gerundPhrase(phrase: string): string {\n const words = phrase.split(/\\s+/);\n const first = words[0];\n if (first === undefined) {\n return phrase;\n }\n\n return capitalize([toGerund(first), ...words.slice(1)].join(\" \"));\n}\n\nfunction toGerund(verb: string): string {\n const lower = verb.toLowerCase();\n const irregular: Record<string, string> = {\n pin: \"pinning\",\n run: \"running\",\n use: \"using\",\n };\n const known = irregular[lower];\n if (known !== undefined) {\n return known;\n }\n if (lower.endsWith(\"e\") && !lower.endsWith(\"ee\")) {\n return `${lower.slice(0, -1)}ing`;\n }\n return `${lower}ing`;\n}\n\nfunction normalizeSemanticText(value: string): string {\n return value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \" \")\n .split(/\\s+/)\n .filter((word) => word.length > 0 && !semanticStopWords.has(word))\n .join(\" \");\n}\n\nfunction trimTrailingWord(value: string | undefined, word: string): string | undefined {\n if (value === undefined) {\n return undefined;\n }\n const pattern = new RegExp(`\\\\s+${word}$`, \"i\");\n const trimmed = value.replace(pattern, \"\").trim();\n return trimmed.length > 0 ? trimmed : value;\n}\n\nfunction numberWord(value: number): string {\n return (\n {\n 1: \"One\",\n 2: \"Two\",\n 3: \"Three\",\n 4: \"Four\",\n 5: \"Five\",\n 6: \"Six\",\n 7: \"Seven\",\n 8: \"Eight\",\n 9: \"Nine\",\n 10: \"Ten\",\n }[value] ?? String(value)\n );\n}\n\nfunction calibrateFindingSeverity(finding: ReviewFinding, policy: ReviewPolicy): ReviewFinding {\n const override =\n policy.severityOverrides?.[finding.ruleId ?? \"\"] ??\n policy.severityOverrides?.[finding.groupKey ?? \"\"];\n\n return override === undefined ? finding : { ...finding, severity: override };\n}\n\nfunction scoreFinding(finding: ReviewFinding): number {\n const locationScore = Math.min(finding.evidence.length, 5) * 3;\n const remediationScore = finding.remediation?.complexity === \"trivial\" ? 3 : 0;\n return (\n severityWeight(finding.severity) * 10 +\n confidenceWeight(finding.confidence) * 12 +\n locationScore +\n remediationScore\n );\n}\n\nfunction severityWeight(severity: Severity): number {\n switch (severity) {\n case Severity.Critical:\n return 5;\n case Severity.High:\n return 4;\n case Severity.Medium:\n return 3;\n case Severity.Low:\n return 2;\n case Severity.Info:\n return 1;\n }\n}\n\nfunction confidenceWeight(confidence: Confidence): number {\n switch (confidence) {\n case Confidence.High:\n return 3;\n case Confidence.Medium:\n return 2;\n case Confidence.Low:\n return 1;\n }\n}\n\nfunction aggregateSeverity(values: Severity[], strategy: SeverityAggregation): Severity {\n const sorted = [...values].sort((left, right) => severityWeight(right) - severityWeight(left));\n if (strategy === \"lowest\") {\n return sorted.at(-1) ?? Severity.Info;\n }\n return sorted[0] ?? Severity.Info;\n}\n\nfunction aggregateConfidence(values: Confidence[], strategy: ConfidenceAggregation): Confidence {\n if (values.length === 0) {\n return Confidence.Low;\n }\n\n if (strategy === \"minimum\") {\n return (\n [...values].sort((left, right) => confidenceWeight(left) - confidenceWeight(right))[0] ??\n Confidence.Low\n );\n }\n\n if (strategy === \"average\") {\n const average =\n values.reduce((total, confidence) => total + confidenceNumericValue(confidence), 0) /\n values.length;\n return normalizeConfidence(average);\n }\n\n return (\n [...values].sort((left, right) => confidenceWeight(right) - confidenceWeight(left))[0] ??\n Confidence.Low\n );\n}\n\nfunction confidenceNumericValue(confidence: Confidence): number {\n switch (confidence) {\n case Confidence.High:\n return 0.95;\n case Confidence.Medium:\n return 0.72;\n case Confidence.Low:\n return 0.3;\n }\n}\n\nfunction stableId(value: string): string {\n let hash = 0;\n for (const character of value) {\n hash = (hash * 31 + character.charCodeAt(0)) >>> 0;\n }\n return `finding-${hash.toString(16).padStart(8, \"0\")}`;\n}\n\nfunction stableStringify(value: unknown): string {\n if (Array.isArray(value)) {\n return `[${value.map(stableStringify).join(\",\")}]`;\n }\n if (isRecord(value)) {\n return `{${Object.keys(value)\n .sort(compareStrings)\n .map((key) => `${JSON.stringify(key)}:${stableStringify(value[key])}`)\n .join(\",\")}}`;\n }\n return JSON.stringify(value);\n}\n\nfunction uniqueStrings(values: string[]): string[] {\n return [...new Set(values.filter(isNonEmptyString))].sort(compareStrings);\n}\n\nfunction assertObservationInit(\n value: ObservationInit,\n source: string,\n registry: RuleRegistry,\n): void {\n requireString(value.ruleId, `${source}.ruleId`);\n requireString(value.subject, `${source}.subject`);\n requireObservationTitle(value.title, `${source}.title`);\n const rule = registry.lookup(value.ruleId);\n if (value.category === undefined && rule?.category === undefined) {\n throw new Error(`${source}.category is required when rule.category is not defined.`);\n }\n optionalString(value.category, `${source}.category`);\n if (value.severity === undefined && rule?.defaultSeverity === undefined) {\n throw new Error(`${source}.severity is required when rule.defaultSeverity is not defined.`);\n }\n if (value.severity !== undefined && !isSeverity(value.severity)) {\n throw new Error(`${source}.severity must be one of info, low, medium, high, critical.`);\n }\n const ruleConfidence = rule?.defaultConfidence;\n if (value.confidence === undefined && ruleConfidence === undefined) {\n throw new Error(`${source}.confidence is required when rule.defaultConfidence is not defined.`);\n }\n if (value.confidence !== undefined) {\n normalizeConfidence(value.confidence);\n }\n optionalObservationSummary(value.summary, `${source}.summary`);\n optionalEvidence(value.location, `${source}.location`);\n optionalString(value.groupKey, `${source}.groupKey`);\n optionalStringArray(value.groupBy, `${source}.groupBy`);\n optionalStringArray(value.tags, `${source}.tags`);\n}\n\nfunction assertFindingInput(value: FindingInput, source: string): void {\n requireString(value.title, `${source}.title`);\n requireString(value.category, `${source}.category`);\n requireString(value.summary, `${source}.summary`);\n if (!isSeverity(value.severity)) {\n throw new Error(`${source}.severity must be one of info, low, medium, high, critical.`);\n }\n normalizeConfidence(value.confidence);\n if (!Array.isArray(value.evidence) || value.evidence.length === 0) {\n throw new Error(`${source}.evidence must contain at least one evidence item.`);\n }\n for (const [index, evidence] of value.evidence.entries()) {\n optionalEvidence(evidence, `${source}.evidence[${index}]`);\n }\n optionalString(value.id, `${source}.id`);\n optionalString(value.ruleId, `${source}.ruleId`);\n optionalString(value.groupKey, `${source}.groupKey`);\n optionalStringArray(value.tags, `${source}.tags`);\n optionalRemediation(value.remediation, `${source}.remediation`);\n}\n\nfunction assertReviewNote(value: ReviewNoteInput, source: string): void {\n requireString(value.key, `${source}.key`);\n requireString(value.summary, `${source}.summary`);\n if (value.evidence !== undefined) {\n for (const [index, evidence] of value.evidence.entries()) {\n optionalEvidence(evidence, `${source}.evidence[${index}]`);\n }\n }\n}\n\nfunction assertReviewScore(value: ReviewScore): void {\n requireString(value.key, \"ctx.review.score.key\");\n if (typeof value.score !== \"number\" || !Number.isFinite(value.score)) {\n throw new Error(\"ctx.review.score.score must be a finite number.\");\n }\n if (value.max !== undefined && (typeof value.max !== \"number\" || !Number.isFinite(value.max))) {\n throw new Error(\"ctx.review.score.max must be a finite number.\");\n }\n if (value.score < 0) {\n throw new Error(\"ctx.review.score.score must be greater than or equal to zero.\");\n }\n if (value.max !== undefined && (value.max <= 0 || value.score > value.max)) {\n throw new Error(\"ctx.review.score.max must be positive and no smaller than score.\");\n }\n optionalString(value.label, \"ctx.review.score.label\");\n optionalString(value.summary, \"ctx.review.score.summary\");\n}\n\nfunction assertAssessment(value: ReviewAssessment): void {\n if (![\"none\", \"low\", \"medium\", \"high\", \"critical\"].includes(value.risk)) {\n throw new Error(\"ctx.review.assessment.risk must be one of none, low, medium, high, critical.\");\n }\n optionalString(value.summary, \"ctx.review.assessment.summary\");\n}\n\nfunction assertOpinion(value: ReviewOpinion): void {\n requireString(value.summary, \"ctx.review.opinion.summary\");\n}\n\nfunction assertRuleDefinition(rule: RuleDefinition): void {\n requireString(rule.id, \"rule.id\");\n optionalString(rule.category, \"rule.category\");\n if (rule.defaultSeverity !== undefined && !isSeverity(rule.defaultSeverity)) {\n throw new Error(\"rule.defaultSeverity must be one of info, low, medium, high, critical.\");\n }\n if (rule.defaultConfidence !== undefined) {\n normalizeConfidence(rule.defaultConfidence);\n }\n optionalStringArray(rule.groupBy, \"rule.groupBy\");\n if (rule.aggregate !== undefined && typeof rule.aggregate !== \"function\") {\n throw new Error(\"rule.aggregate must be a function.\");\n }\n}\n\nfunction assertReviewPolicy(policy: ReviewPolicy, source: string): void {\n if (policy.minimumConfidence !== undefined && !isConfidence(policy.minimumConfidence)) {\n throw new Error(`${source}.minimumConfidence must be one of low, medium, high.`);\n }\n if (\n policy.maximumFindings !== undefined &&\n (!Number.isInteger(policy.maximumFindings) || policy.maximumFindings < 0)\n ) {\n throw new Error(`${source}.maximumFindings must be a non-negative integer.`);\n }\n if (policy.confidenceThresholds !== undefined) {\n const { medium, high } = policy.confidenceThresholds;\n if (medium < 0 || high > 1 || medium > high) {\n throw new Error(`${source}.confidenceThresholds must satisfy 0 <= medium <= high <= 1.`);\n }\n }\n for (const [ruleId, severity] of Object.entries(policy.severityOverrides ?? {})) {\n if (!isSeverity(severity)) {\n throw new Error(`${source}.severityOverrides[\"${ruleId}\"] is not a valid severity.`);\n }\n }\n}\n\nfunction optionalRemediation(value: Remediation | undefined, field: string): void {\n if (value === undefined) return;\n if (!isRecord(value)) throw new Error(`${field} must be an object.`);\n if (\n value.complexity !== undefined &&\n (typeof value.complexity !== \"string\" ||\n ![\"trivial\", \"small\", \"medium\", \"large\", \"architectural\"].includes(value.complexity))\n ) {\n throw new Error(`${field}.complexity is invalid.`);\n }\n}\n\nfunction requireObservationTitle(value: ObservationTitle, field: string): void {\n if (typeof value === \"string\") {\n requireString(value, field);\n return;\n }\n if (!isRecord(value)) {\n throw new Error(`${field} must be a string or { singular, plural }.`);\n }\n requireString(value.singular, `${field}.singular`);\n requireString(value.plural, `${field}.plural`);\n}\n\nfunction optionalObservationSummary(value: ObservationSummary | undefined, field: string): void {\n if (value === undefined) {\n return;\n }\n if (typeof value === \"string\") {\n optionalString(value, field);\n return;\n }\n if (!isRecord(value)) {\n throw new Error(`${field} must be a string or { singular, grouped }.`);\n }\n optionalString(value.singular, `${field}.singular`);\n optionalString(value.grouped, `${field}.grouped`);\n}\n\nfunction optionalEvidence(value: EvidenceInput | Evidence | undefined, field: string): void {\n if (value === undefined) {\n return;\n }\n if (!isRecord(value)) {\n throw new Error(`${field} must be an object.`);\n }\n const input = value as EvidenceInput;\n optionalString(input.file, `${field}.file`);\n optionalPositiveInteger(input.line, `${field}.line`);\n optionalPositiveInteger(input.endLine, `${field}.endLine`);\n optionalString(value.message, `${field}.message`);\n optionalString(value.snippet, `${field}.snippet`);\n optionalString(value.label, `${field}.label`);\n if (value.location !== undefined) {\n if (!isRecord(value.location)) {\n throw new Error(`${field}.location must be an object.`);\n }\n optionalString(value.location.file, `${field}.location.file`);\n optionalPositiveInteger(value.location.line, `${field}.location.line`);\n optionalPositiveInteger(value.location.endLine, `${field}.location.endLine`);\n }\n const line = value.location?.line ?? input.line;\n const endLine = value.location?.endLine ?? input.endLine;\n if (endLine !== undefined && line === undefined) {\n throw new Error(`${field}.endLine requires line.`);\n }\n if (endLine !== undefined && line !== undefined && endLine < line) {\n throw new Error(`${field}.endLine must not precede line.`);\n }\n if (value.data !== undefined && !isRecord(value.data)) {\n throw new Error(`${field}.data must be an object.`);\n }\n if (input.metadata !== undefined && !isRecord(input.metadata)) {\n throw new Error(`${field}.metadata must be an object.`);\n }\n}\n\nfunction writeLog(level: \"debug\" | \"info\" | \"warn\" | \"error\", message: unknown): void {\n process.stderr.write(`[adversary] ${level}: ${String(message)}\\n`);\n}\n\nfunction parseBooleanEnv(value: string | undefined): boolean | undefined {\n if (value === undefined || value.length === 0) {\n return undefined;\n }\n return [\"1\", \"true\", \"TRUE\", \"yes\", \"YES\"].includes(value);\n}\n\nfunction isVerbose(): boolean {\n return verboseValues.has(process.env.ADVERSARY_VERBOSE ?? \"\");\n}\n\nfunction compareStrings(left: string, right: string): number {\n return left.localeCompare(right);\n}\n\nfunction compareNumbers(left: number | undefined, right: number | undefined): number {\n return (left ?? Number.MAX_SAFE_INTEGER) - (right ?? Number.MAX_SAFE_INTEGER);\n}\n\nfunction toPosixPath(path: string): string {\n return path.replaceAll(\"\\\\\", \"/\");\n}\n\nfunction basename(path: string): string {\n return path.split(\"/\").at(-1) ?? path;\n}\n\nfunction requireString(value: unknown, field: string): void {\n if (typeof value !== \"string\" || value.length === 0) {\n throw new Error(`${field} must be a non-empty string.`);\n }\n}\n\nfunction optionalString(value: unknown, field: string): void {\n if (value !== undefined && typeof value !== \"string\") {\n throw new Error(`${field} must be a string.`);\n }\n}\n\nfunction optionalStringArray(value: unknown, field: string): void {\n if (\n value !== undefined &&\n (!Array.isArray(value) || value.some((item) => typeof item !== \"string\"))\n ) {\n throw new Error(`${field} must be an array of strings.`);\n }\n}\n\nfunction optionalPositiveInteger(value: unknown, field: string): void {\n if (value !== undefined && (!Number.isInteger(value) || Number(value) < 1)) {\n throw new Error(`${field} must be a positive integer.`);\n }\n}\n\nfunction isConfidence(value: unknown): value is Confidence {\n return value === Confidence.Low || value === Confidence.Medium || value === Confidence.High;\n}\n\nfunction isSeverity(value: unknown): value is Severity {\n return (\n value === Severity.Info ||\n value === Severity.Low ||\n value === Severity.Medium ||\n value === Severity.High ||\n value === Severity.Critical\n );\n}\n\nfunction isNonEmptyString(value: unknown): value is string {\n return typeof value === \"string\" && value.length > 0;\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction stringFromUnknown(value: unknown): string | undefined {\n return typeof value === \"string\" && value.length > 0 ? value : undefined;\n}\n\nfunction capitalize(value: string): string {\n return `${value.slice(0, 1).toUpperCase()}${value.slice(1)}`;\n}\n\nconst semanticStopWords = new Set([\n \"a\",\n \"an\",\n \"and\",\n \"are\",\n \"as\",\n \"from\",\n \"in\",\n \"is\",\n \"of\",\n \"the\",\n \"to\",\n \"uses\",\n \"using\",\n]);\n\nfunction formatEvidenceLocation(evidence: Evidence): string {\n const file = evidence.location?.file;\n const line = evidence.location?.line;\n const endLine = evidence.location?.endLine;\n\n if (file === undefined) {\n return \"\";\n }\n if (line !== undefined && endLine !== undefined) {\n return `${file}:${line}-${endLine}`;\n }\n if (line !== undefined) {\n return `${file}:${line}`;\n }\n return file;\n}\n\nfunction formatEvidenceLines(evidence: Evidence): string[] {\n const location = formatEvidenceLocation(evidence);\n const label = evidence.label ?? evidence.message;\n const firstLine =\n location.length > 0 && label !== undefined\n ? `- ${location} — ${label}`\n : `- ${location.length > 0 ? location : (label ?? \"Evidence\")}`;\n const lines = [firstLine];\n\n if (evidence.snippet !== undefined) {\n lines.push(` ${evidence.snippet}`);\n }\n\n return lines;\n}\n\nfunction formatScore(score: ReviewScore): string {\n const label = score.label ?? score.key;\n const max = score.max ?? 10;\n const summary = score.summary === undefined ? \"\" : ` - ${normalizeParagraph(score.summary)}`;\n return `${label}: ${score.score} / ${max}${summary}`;\n}\n\nfunction normalizeParagraph(value: string): string {\n return value\n .split(/\\n+/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0)\n .join(\" \");\n}\n\nfunction trimTrailingSentencePunctuation(value: string): string {\n return value.trim().replace(/[.!?]+$/g, \"\");\n}\n\nfunction lowercaseFirst(value: string): string {\n return `${value.slice(0, 1).toLowerCase()}${value.slice(1)}`;\n}\n\nfunction omitUndefined<T extends Record<string, unknown>>(value: T): T {\n return Object.fromEntries(\n Object.entries(value).filter(([, entryValue]) => entryValue !== undefined),\n ) as T;\n}\n"]}
package/package.json CHANGED
@@ -1,9 +1,20 @@
1
1
  {
2
2
  "name": "@adversarylabs/sdk",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Small TypeScript SDK for authoring Adversaries.",
5
5
  "type": "module",
6
6
  "license": "MIT",
7
+ "repository": {
8
+ "type": "git",
9
+ "url": "git+https://github.com/adversarylabs/adversary-sdk-typescript.git"
10
+ },
11
+ "homepage": "https://github.com/adversarylabs/adversary-sdk-typescript#readme",
12
+ "bugs": {
13
+ "url": "https://github.com/adversarylabs/adversary-sdk-typescript/issues"
14
+ },
15
+ "publishConfig": {
16
+ "access": "public"
17
+ },
7
18
  "main": "./dist/index.js",
8
19
  "types": "./dist/index.d.ts",
9
20
  "exports": {
@@ -12,7 +23,7 @@
12
23
  "import": "./dist/index.js"
13
24
  },
14
25
  "./schemas/adversary.input.v1": "./schemas/adversary.input.v1.schema.json",
15
- "./schemas/adversary.findings.v1": "./schemas/adversary.findings.v1.schema.json"
26
+ "./schemas/adversary.review.v1": "./schemas/adversary.review.v1.schema.json"
16
27
  },
17
28
  "files": ["dist", "schemas", "templates", "README.md"],
18
29
  "engines": {
@@ -21,14 +32,18 @@
21
32
  "scripts": {
22
33
  "clean": "rm -rf dist",
23
34
  "build": "npm run clean && tsc -p tsconfig.json",
35
+ "prepack": "npm run build",
24
36
  "test": "npm run build && vitest run",
25
37
  "lint": "biome check .",
26
38
  "format": "biome check --write ."
27
39
  },
28
40
  "devDependencies": {
29
41
  "@biomejs/biome": "^1.9.4",
30
- "@types/node": "^22.10.2",
31
- "typescript": "^5.7.2",
32
- "vitest": "^2.1.8"
42
+ "@types/node": "^22.20.1",
43
+ "typescript": "^5.9.3",
44
+ "vitest": "^4.1.10"
45
+ },
46
+ "dependencies": {
47
+ "ajv": "^8.20.0"
33
48
  }
34
49
  }
@@ -0,0 +1,136 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://adversary.dev/schemas/adversary.review.v1.schema.json",
4
+ "title": "Adversary review envelope v1",
5
+ "type": "object",
6
+ "additionalProperties": false,
7
+ "required": ["protocolVersion", "result"],
8
+ "properties": {
9
+ "protocolVersion": { "const": 1 },
10
+ "result": { "$ref": "#/$defs/reviewResult" }
11
+ },
12
+ "$defs": {
13
+ "metadata": { "type": "object" },
14
+ "adversary": {
15
+ "type": "object",
16
+ "additionalProperties": false,
17
+ "required": ["name"],
18
+ "properties": {
19
+ "name": { "type": "string", "minLength": 1, "pattern": "\\S" },
20
+ "version": { "type": "string" }
21
+ }
22
+ },
23
+ "target": {
24
+ "type": "object",
25
+ "additionalProperties": false,
26
+ "properties": {
27
+ "repository": { "type": "string" },
28
+ "filesScanned": { "type": "integer", "minimum": 0 }
29
+ }
30
+ },
31
+ "evidence": {
32
+ "type": "object",
33
+ "additionalProperties": false,
34
+ "properties": {
35
+ "file": { "type": "string" },
36
+ "line": { "type": "integer", "minimum": 1 },
37
+ "endLine": { "type": "integer", "minimum": 1 },
38
+ "message": { "type": "string" },
39
+ "snippet": { "type": "string" },
40
+ "metadata": { "$ref": "#/$defs/metadata" }
41
+ },
42
+ "dependentRequired": { "endLine": ["line"] }
43
+ },
44
+ "note": {
45
+ "type": "object",
46
+ "additionalProperties": false,
47
+ "required": ["key", "summary"],
48
+ "properties": {
49
+ "key": { "type": "string", "minLength": 1, "pattern": "\\S" },
50
+ "summary": { "type": "string", "minLength": 1, "pattern": "\\S" },
51
+ "evidence": { "type": "array", "items": { "$ref": "#/$defs/evidence" } },
52
+ "metadata": { "$ref": "#/$defs/metadata" }
53
+ }
54
+ },
55
+ "finding": {
56
+ "type": "object",
57
+ "additionalProperties": false,
58
+ "required": ["id", "title", "category", "severity", "confidence", "summary", "evidence"],
59
+ "properties": {
60
+ "id": { "type": "string", "minLength": 1, "pattern": "\\S" },
61
+ "ruleId": { "type": "string" },
62
+ "groupKey": { "type": "string" },
63
+ "title": { "type": "string", "minLength": 1, "pattern": "\\S" },
64
+ "category": { "type": "string", "minLength": 1, "pattern": "\\S" },
65
+ "severity": { "enum": ["info", "low", "medium", "high", "critical"] },
66
+ "confidence": { "enum": ["low", "medium", "high"] },
67
+ "summary": { "type": "string", "minLength": 1, "pattern": "\\S" },
68
+ "whyItMatters": { "type": "string" },
69
+ "impact": { "type": "string" },
70
+ "evidence": { "type": "array", "items": { "$ref": "#/$defs/evidence" } },
71
+ "recommendation": { "type": "string" },
72
+ "remediation": {
73
+ "type": "object",
74
+ "additionalProperties": false,
75
+ "properties": {
76
+ "estimate": { "type": "string" },
77
+ "complexity": { "type": "string" }
78
+ }
79
+ },
80
+ "tags": { "type": "array", "items": { "type": "string" }, "uniqueItems": true },
81
+ "metadata": { "$ref": "#/$defs/metadata" }
82
+ }
83
+ },
84
+ "reviewResult": {
85
+ "type": "object",
86
+ "additionalProperties": false,
87
+ "required": ["adversary", "target", "positives", "observations", "findings", "suppressed"],
88
+ "properties": {
89
+ "adversary": { "$ref": "#/$defs/adversary" },
90
+ "target": { "$ref": "#/$defs/target" },
91
+ "assessment": {
92
+ "type": "object",
93
+ "additionalProperties": false,
94
+ "required": ["risk"],
95
+ "properties": {
96
+ "risk": { "enum": ["none", "low", "medium", "high", "critical"] },
97
+ "summary": { "type": "string" }
98
+ }
99
+ },
100
+ "positives": { "type": "array", "items": { "$ref": "#/$defs/note" } },
101
+ "observations": { "type": "array", "items": { "$ref": "#/$defs/note" } },
102
+ "findings": { "type": "array", "items": { "$ref": "#/$defs/finding" } },
103
+ "opinion": {
104
+ "type": "object",
105
+ "additionalProperties": false,
106
+ "required": ["summary"],
107
+ "properties": {
108
+ "ship": { "type": "boolean" },
109
+ "summary": { "type": "string", "minLength": 1, "pattern": "\\S" }
110
+ }
111
+ },
112
+ "suppressed": {
113
+ "type": "object",
114
+ "additionalProperties": false,
115
+ "required": ["observations", "findings"],
116
+ "properties": {
117
+ "observations": { "type": "integer", "minimum": 0 },
118
+ "findings": { "type": "integer", "minimum": 0 }
119
+ }
120
+ },
121
+ "timing": {
122
+ "type": "object",
123
+ "additionalProperties": false,
124
+ "properties": {
125
+ "buildMs": { "type": "integer", "minimum": 0 },
126
+ "startupMs": { "type": "integer", "minimum": 0 },
127
+ "scanMs": { "type": "integer", "minimum": 0 },
128
+ "totalMs": { "type": "integer", "minimum": 0 }
129
+ }
130
+ },
131
+ "suppressedFindings": { "type": "array", "items": { "$ref": "#/$defs/finding" } },
132
+ "rawObservations": {}
133
+ }
134
+ }
135
+ }
136
+ }