Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
55 commits
Select commit Hold shift + click to select a range
6639161
Enforce finding detail contracts
soyeon-oai Aug 14, 2026
b10dbd7
Accept string attack path assessments
soyeon-oai Aug 15, 2026
4ee0380
Type structured reachability fields
soyeon-oai Aug 15, 2026
95826e3
Type dataflow transformations
soyeon-oai Aug 15, 2026
0de470a
Type public attack-path aliases
soyeon-oai Aug 15, 2026
7bbf75d
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
cc462b7
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
0d5d452
fix: preserve compatible finding details
soyeon-oai Aug 15, 2026
d8ec936
fix: prefer populated finding aliases
soyeon-oai Aug 15, 2026
0842ef0
fix: merge compatible finding aliases
soyeon-oai Aug 15, 2026
a358237
fix: preserve legacy finding compatibility
soyeon-oai Aug 15, 2026
9a80b11
fix: merge all finding compatibility fields
soyeon-oai Aug 15, 2026
e6bc5b8
fix: enforce evidence alias consistency
soyeon-oai Aug 15, 2026
169a1ac
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 15, 2026
26fd835
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 16, 2026
ff4de63
fix: sync remaining finding compatibility
soyeon-oai Aug 16, 2026
7340e6c
fix: preserve legacy evidence compatibility
soyeon-oai Aug 16, 2026
548f2ad
Fix remaining finding detail contract gaps
soyeon-oai Aug 16, 2026
45472b2
Preserve empty legacy sealed fields
soyeon-oai Aug 16, 2026
5d900e5
Preserve null legacy sealed fields
soyeon-oai Aug 16, 2026
99925cc
Preserve null nested attack-path details
soyeon-oai Aug 16, 2026
fbcd699
Preserve null legacy detail scalars
soyeon-oai Aug 16, 2026
54d27ea
Preserve blank legacy detail scalars
soyeon-oai Aug 16, 2026
639d524
Preserve blank legacy validation statuses
soyeon-oai Aug 16, 2026
4e762b7
Fix legacy scan compatibility gaps
soyeon-oai Aug 16, 2026
7f585f1
Validate legacy draft evidence catalogs
soyeon-oai Aug 16, 2026
43f73df
Make report projection test CRLF-safe
soyeon-oai Aug 16, 2026
7271a5e
Merge legacy finding preview evidence
soyeon-oai Aug 16, 2026
5c3d7a5
Sync finding preview behavior
soyeon-oai Aug 17, 2026
c249361
Fix remaining plugin contract reviews
soyeon-oai Aug 17, 2026
89fdba2
Merge root-cause preview aliases
soyeon-oai Aug 17, 2026
8a69cf5
Normalize legacy finding details consistently
soyeon-oai Aug 17, 2026
2ba5bcf
Normalize report test newlines on Windows
soyeon-oai Aug 17, 2026
4bf5189
Preserve duplicate stable finding identities
soyeon-oai Aug 17, 2026
42c47bd
Validate legacy finding aliases consistently
soyeon-oai Aug 17, 2026
ca1396b
Project top-level attack path summaries
soyeon-oai Aug 17, 2026
97e81e0
Normalize and render attack path details
soyeon-oai Aug 17, 2026
e62a323
Project typed finding assessments
soyeon-oai Aug 17, 2026
d4e27a3
Project attack path context
soyeon-oai Aug 17, 2026
97b91aa
Merge remote-tracking branch 'origin/main' into soyeon/finding-detail…
soyeon-oai Aug 17, 2026
351ac48
Preserve legacy finding details in projections
soyeon-oai Aug 17, 2026
ae9832e
Filter malformed legacy evidence rows
soyeon-oai Aug 17, 2026
5f3ad2e
Filter malformed legacy evidence references
soyeon-oai Aug 17, 2026
9bebc66
Merge root cause evidence references
soyeon-oai Aug 17, 2026
b329976
Merge remote-tracking branch 'origin/main' into soyeon/finding-detail…
soyeon-oai Aug 17, 2026
09388a2
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 17, 2026
218f06e
fix: preserve legacy finding detail compatibility
soyeon-oai Aug 18, 2026
3232296
fix: preserve finding detail compatibility
soyeon-oai Aug 18, 2026
96ecd74
Merge remote-tracking branch 'origin/main' into soyeon/finding-detail…
soyeon-oai Aug 18, 2026
127a30b
fix: preserve persisted draft compatibility
soyeon-oai Aug 18, 2026
f72fa83
fix: return type-safe loaded findings
soyeon-oai Aug 18, 2026
5e4f3ca
fix: keep canonical root causes strict
soyeon-oai Aug 18, 2026
abe2033
fix: validate root-cause draft code fields
soyeon-oai Aug 18, 2026
34e687e
Merge remote-tracking branch 'origin/main' into soyeon/finding-detail…
soyeon-oai Aug 18, 2026
e2f80c8
Merge branch 'main' into soyeon/finding-detail-contracts
soyeon-oai Aug 18, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified sdk/typescript/_bundled_plugin/mcp/server.mjs.br.part-000
Binary file not shown.
Binary file modified sdk/typescript/_bundled_plugin/mcp/server.mjs.br.part-001
Binary file not shown.
329 changes: 327 additions & 2 deletions sdk/typescript/_bundled_plugin/schemas/findings.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -263,6 +263,29 @@
}
}
},
"code_evidence": {
"type": [
"array",
"null"
],
"items": {
"type": "object",
"required": [
"id",
"code"
],
"properties": {
"id": {
"type": "string",
"minLength": 1
},
"code": {
"type": "string",
"minLength": 1
}
}
}
},
"rootCause": {
"type": [
"object",
Expand Down Expand Up @@ -293,6 +316,41 @@
}
}
},
"root_cause": {
"type": [
"object",
"string",
"null"
],
"properties": {
"summary": {
"type": "string",
"minLength": 1
},
"evidenceRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"code": {
"type": "string",
"minLength": 1
},
"language": {
"type": "string",
"minLength": 1
}
}
},
"remediation": {
"type": "string",
"minLength": 1
Expand All @@ -301,13 +359,280 @@
"type": [
"object",
"null"
]
],
"properties": {
"assertions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"counterEvidence": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence": {
"type": [
"string",
"array"
],
"minLength": 1,
"items": {
"type": "string",
"minLength": 1
}
},
"evidenceRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"method": {
"type": "string",
"minLength": 1
Comment thread
soyeon-oai marked this conversation as resolved.
},
"status": {
"type": [
"string",
"null"
],
"minLength": 1
},
"summary": {
"type": "string",
"minLength": 1
},
"disposition": {
"type": [
"string",
"null"
],
"minLength": 1
},
"result": {
"type": [
"string",
"null"
],
"minLength": 1
}
}
},
"attackPath": {
"type": [
"object",
"null"
]
],
"properties": {
"assumptions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"blindspots": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"controls": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"dataFlow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"data_flow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"dataflow": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"transformations": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"evidenceRefs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"evidence_refs": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"impact": {
"type": [
"string",
"object",
"null"
],
"minLength": 1,
"properties": {
"level": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 1 },
"why": { "type": "string", "minLength": 1 }
}
},
"likelihood": {
"type": [
"string",
"object",
"null"
],
"minLength": 1,
"properties": {
"level": { "type": "string", "minLength": 1 },
"rationale": { "type": "string", "minLength": 1 },
"why": { "type": "string", "minLength": 1 }
}
},
"limitations": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"preconditions": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"reachability": {
"type": [
"string",
"object"
],
"minLength": 1,
"properties": {
"summary": { "type": "string", "minLength": 1 },
"attacker": { "type": "string", "minLength": 1 },
"entrypoint": { "type": "string", "minLength": 1 },
"source": { "type": "string", "minLength": 1 },
"sink": { "type": "string", "minLength": 1 },
"outcome": { "type": "string", "minLength": 1 },
"preconditions": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidenceRefs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
},
"evidence_refs": {
"type": "array",
"items": { "type": "string", "minLength": 1 }
}
}
},
"steps": {
"type": "array",
"items": {
"type": "string",
"minLength": 1
}
},
"summary": {
"type": "string",
"minLength": 1
}
}
},
"remediationTests": {
"type": "array",
Expand Down
Loading
Loading