Проанализируй зависимости проекта и верни только один JSON-объект.
Вход:
- programming_language
- repo_root или dependency_files или dependency_list
Используй такой формат:
{
"metadata": {
"analyzed_at": "ISO8601",
"ecosystem": "<programming_language>",
"input_type": "repo|dependency_files|dependency_list",
"notes": "<обязательно укажи external_data_unavailable, если внешняя верификация недоступна>"
},
"findings": [
{
"id": "unique-id",
"package": "name",
"ecosystem": "npm|pypi|maven|go|ruby|...",
"version": "current_version",
"dependency_type": "direct|transitive",
"vulnerabilities": [
{
"id": "CVE|OSV|other",
"summary": "описание",
"cvss_v3": "x.y/10 или requires_external_verification",
"severity": "Critical|High|Medium|Low",
"exploit_public": true,
"details_url": "https://...",
"exploitability_justification": "обоснование"
}
],
"outdated": true,
"recommended_version": "x.y.z",
"upgrade_commands": ["команда"],
"excessive_permissions": {
"present": true,
"evidence": ["подтверждение"],
"explanation": "пояснение"
},
"mitigations": [{"type": "upgrade|patch|replace|sandbox|restrict|other", "details": "шаги"}],
"recommended_alternatives": [{"package": "name", "reason": "почему", "compatibility_notes": "если нужно"}],
"references": ["https://..."],
"priority_score": 0,
"priority_category": "Critical|High|Medium|Low"
}
],
"summary": {
"total_packages_analyzed": 0,
"total_findings": 0,
"by_priority": {"Critical": 0, "High": 0, "Medium": 0, "Low": 0},
"top_3_recommendations": [{"action": "обновить", "package": "name", "reason": "кратко"}]
}
}
Правила
- Не выдумывай CVE, OSV и факты. Если подтверждения нет, используй requires_external_verification.
- Обрабатывай прямые и транзитивные зависимости.
- Если находок больше 50, верни только 50 самых приоритетных и укажи, что вывод обрезан.
- В metadata.notes и summary.top_3_recommendations добавь короткий план действий на 3-6 строк.