shadowcat 2.2.1__tar.gz → 2.2.2__tar.gz
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.
- {shadowcat-2.2.1 → shadowcat-2.2.2}/PKG-INFO +1 -1
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/reporting/generator.py +8 -2
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/StatusChip.tsx +3 -2
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/lib/severity.ts +12 -5
- {shadowcat-2.2.1 → shadowcat-2.2.2}/pyproject.toml +1 -1
- {shadowcat-2.2.1 → shadowcat-2.2.2}/.clineignore +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/.env.example +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/.gitignore +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/.gitmodules +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/.mcp.json +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/CLAUDE.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/Dockerfile +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/LICENSE.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/Makefile +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/README.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/benchmark/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/benchmark/cli.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/benchmark/config.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/benchmark/docker.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/benchmark/registry.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/agent.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/backend.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/config.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/controller.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/events.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/langfuse.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/phantom.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/planner.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/profiling.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/sanitizer.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/session.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/core/tracer.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/components/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/components/activity_feed.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/components/renderers.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/components/splash.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/main.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/styles.tcss +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/interface/tui.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/parsing/html_distiller.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/parsing/tool_parser.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/prompts/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/prompts/pentesting.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/rag_module/knowledge_base.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/tests/benchmark_phantom.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/tools/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/tools/base.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/tools/executor.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/agent/tools/registry.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/README.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/api/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/api/routes_scan.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/authz.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/cli.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/compliance/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/compliance/pdpa_mapping.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/coverage.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/events.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/llm_client.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/orchestrator.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/core/scan_memory.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/csrf.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/headless.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/js_analyzer.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/spider.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/crawler/subdomains.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/daemon.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/README.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/engine.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/models.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/repository.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/db/schema.sql +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/base.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/ctf.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/enterprise.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/general.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/modes/registry.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/reporting/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/schemas/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/schemas/api.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/dirbrute_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/general_report_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/http_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/nuclei_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/report_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/tools/shell_tools.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/user_config.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/verification/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/verification/evidence_store.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/verification/general_oracle.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/verification/idor_oracle.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/waf/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/waf/detector.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/waf/evasion.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/webui/index.html +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/backend/workspace.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/custom_exploits/example_exploit.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docker-compose.yml +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/CHANGES_SUMMARY_TH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/DASHBOARD_IMPROVEMENTS_TH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/ENTERPRISE_ARCH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/HOW_TO_RUN_TH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/NSC_PREP_TH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/PROGRESS.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/ROADMAP.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/ShadowCat_/340/271/200/340/270/255/340/270/201/340/270/252/340/270/262/340/270/243/340/270/233/340/270/243/340/270/260/340/270/201/340/270/255/340/270/232/340/271/202/340/270/233/340/270/243/340/271/200/340/270/210/340/270/204_NSC2026.pdf" +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/TECHNICAL_DEEP_DIVE_TH.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/WEBSITE_SPEC.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/nsc-shadowcat-pitch.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/docs/research/README.md +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/fix-workspace-permissions.sh +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/next.config.ts +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/postcss.config.mjs +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/public/logo-mark.png +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/public/logo.png +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/app/globals.css +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/app/layout.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/app/page.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/AppShell.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/EmptyBlock.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/NewScanModal.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/PageHeader.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/ReportButtons.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/Sidebar.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/Topbar.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/charts/SeverityBarChart.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/charts/VerdictBar.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/icons.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/FindingsView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/LiveFeedView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/MemoryView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/OverviewView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/SessionsView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/components/views/SettingsView.tsx +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/lib/api.ts +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/lib/useActiveScan.ts +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/src/lib/useScanDetails.ts +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/frontend/tsconfig.json +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/hatch_build.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/scripts/config.sh +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/scripts/entrypoint.sh +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/scripts/gen_report.js +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/scripts/test_client.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/setup.sh +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/conftest.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/docker/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/docker/test_container_health.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/docker/test_docker_build.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/integration/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/integration/test_benchmark_cli.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/integration/test_controller.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_config_cli.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_coverage_ledger.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_daemon_cli.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_db_persistence.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_enterprise_api.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_enterprise_engine.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_executor.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_general_oracle.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_general_report_tool.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_headless.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_llm_wiring.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_memory_briefing.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_pdpa_mapping.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_scan_memory.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_sse_replay.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/test_user_config.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/__init__.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_backend_interface.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_benchmark_registry.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_config.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_events.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_flag_detection.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_langfuse.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_phantom_two_tier.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_planner_context.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/tests/unit/test_session.py +0 -0
- {shadowcat-2.2.1 → shadowcat-2.2.2}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: shadowcat
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.2
|
|
4
4
|
Summary: AI-powered autonomous web security scanner with real-time streaming — enterprise DAST platform
|
|
5
5
|
Project-URL: Homepage, https://github.com/shadowcat-dast/shadowcat
|
|
6
6
|
Project-URL: Repository, https://github.com/shadowcat-dast/shadowcat
|
|
@@ -122,6 +122,7 @@ h3 { font-size: 1rem; color: #334155; margin-bottom: 8px; }
|
|
|
122
122
|
padding:2px 8px; font-size:0.8rem; font-family:monospace; }
|
|
123
123
|
.verdict { padding:6px 12px; border-radius:6px; font-size:0.85rem; margin-top:10px; display:inline-block; }
|
|
124
124
|
.verdict-confirmed { background:#dcfce7; color:#16a34a; }
|
|
125
|
+
.verdict-likely { background:#fef3c7; color:#b45309; }
|
|
125
126
|
.verdict-inconclusive { background:#ffedd5; color:#c2410c; }
|
|
126
127
|
.verdict-refuted { background:#f1f5f9; color:#64748b; }
|
|
127
128
|
.verdict-pending { background:#fef9c3; color:#92400e; }
|
|
@@ -165,12 +166,17 @@ def _render_finding(idx: int, finding: dict[str, Any], verdicts: dict[str, Any])
|
|
|
165
166
|
elif reproduced is False:
|
|
166
167
|
repro_badge = ' <span class="req-id" title="Did not reproduce on a clean-session replay">⚠ did not reproduce</span>'
|
|
167
168
|
# The oracle's ruling vocabulary is exactly confirmed / refuted / inconclusive
|
|
168
|
-
# (see idor_oracle.py, general_oracle.py)
|
|
169
|
-
#
|
|
169
|
+
# (see idor_oracle.py, general_oracle.py) plus GeneralOracle's "likely" tier
|
|
170
|
+
# (a suggestive but context-blind signal — worth attention, not proof). A
|
|
171
|
+
# finding with no verdict entry at all hasn't been through the oracle yet —
|
|
172
|
+
# that's the only true "pending" case.
|
|
170
173
|
verdict_label = verdict_info.get("status")
|
|
171
174
|
if verdict_label == "confirmed":
|
|
172
175
|
vc = "verdict-confirmed"
|
|
173
176
|
vt = "Confirmed"
|
|
177
|
+
elif verdict_label == "likely":
|
|
178
|
+
vc = "verdict-likely"
|
|
179
|
+
vt = "Likely"
|
|
174
180
|
elif verdict_label == "refuted":
|
|
175
181
|
vc = "verdict-refuted"
|
|
176
182
|
vt = "Refuted"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { Chip } from "@heroui/react";
|
|
2
2
|
|
|
3
3
|
// Covers both scan RunStatus (queued/running/verifying/completed/failed/cancelled)
|
|
4
|
-
// and the oracle's verdict vocabulary (confirmed/refuted/inconclusive —
|
|
5
|
-
// backend/verification/{idor,general}_oracle.py). Anything else (e.g. a
|
|
4
|
+
// and the oracle's verdict vocabulary (confirmed/likely/refuted/inconclusive —
|
|
5
|
+
// see backend/verification/{idor,general}_oracle.py). Anything else (e.g. a
|
|
6
6
|
// finding's own "pending_verification" lifecycle field) falls back to default.
|
|
7
7
|
const COLOR: Record<string, "accent" | "success" | "danger" | "warning" | "default"> = {
|
|
8
8
|
queued: "accent",
|
|
@@ -10,6 +10,7 @@ const COLOR: Record<string, "accent" | "success" | "danger" | "warning" | "defau
|
|
|
10
10
|
verifying: "accent",
|
|
11
11
|
completed: "success",
|
|
12
12
|
confirmed: "success",
|
|
13
|
+
likely: "warning",
|
|
13
14
|
failed: "danger",
|
|
14
15
|
error: "danger",
|
|
15
16
|
cancelled: "default",
|
|
@@ -23,12 +23,19 @@ export function severityOf(finding: Finding): Severity {
|
|
|
23
23
|
return (cwe && SEVERITY_BY_CWE[cwe]) || "medium";
|
|
24
24
|
}
|
|
25
25
|
|
|
26
|
-
export type Verdict = "confirmed" | "refuted" | "inconclusive";
|
|
26
|
+
export type Verdict = "confirmed" | "likely" | "refuted" | "inconclusive";
|
|
27
27
|
|
|
28
|
-
/** The oracle's ruling vocabulary
|
|
29
|
-
*
|
|
30
|
-
*
|
|
28
|
+
/** The oracle's ruling vocabulary — confirmed/refuted/inconclusive from both
|
|
29
|
+
* oracles, plus GeneralOracle's "likely" tier (a suggestive but context-blind
|
|
30
|
+
* signal — worth attention, not proof; see backend/verification/general_oracle.py).
|
|
31
|
+
* Anything else means the finding hasn't been verified yet. */
|
|
31
32
|
export function normalizeVerdict(status: string | undefined): Verdict | "pending" {
|
|
32
|
-
if (
|
|
33
|
+
if (
|
|
34
|
+
status === "confirmed" ||
|
|
35
|
+
status === "likely" ||
|
|
36
|
+
status === "refuted" ||
|
|
37
|
+
status === "inconclusive"
|
|
38
|
+
)
|
|
39
|
+
return status;
|
|
33
40
|
return "pending";
|
|
34
41
|
}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|