devsecops-radar 0.2.9__tar.gz → 0.3.0__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.
Files changed (54) hide show
  1. {devsecops_radar-0.2.9/devsecops_radar.egg-info → devsecops_radar-0.3.0}/PKG-INFO +1 -1
  2. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/dashboard/routes.py +10 -0
  3. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0/devsecops_radar.egg-info}/PKG-INFO +1 -1
  4. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/pyproject.toml +1 -1
  5. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/LICENSE +0 -0
  6. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/MANIFEST.in +0 -0
  7. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/README.md +0 -0
  8. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/__init__.py +0 -0
  9. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/cli/__init__.py +0 -0
  10. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/cli/scanner.py +0 -0
  11. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/__init__.py +0 -0
  12. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/analyzer.py +0 -0
  13. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/attack_simulation.py +0 -0
  14. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/database.py +0 -0
  15. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/models.py +0 -0
  16. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/parser.py +0 -0
  17. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/rag.py +0 -0
  18. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/remediation.py +0 -0
  19. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/reporting.py +0 -0
  20. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/rule_fusion.py +0 -0
  21. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/sbom.py +0 -0
  22. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/core/valuation.py +0 -0
  23. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/plugins/__init__.py +0 -0
  24. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/adapter.py +0 -0
  25. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/base.py +0 -0
  26. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/gitleaks.py +0 -0
  27. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/poutine.py +0 -0
  28. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/semgrep.py +0 -0
  29. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/trivy.py +0 -0
  30. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/scanners/zizmor.py +0 -0
  31. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/__init__.py +0 -0
  32. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/app.py +0 -0
  33. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/attack_paths/__init__.py +0 -0
  34. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/attack_paths/routes.py +0 -0
  35. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/dashboard/__init__.py +0 -0
  36. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/sentry/routes.py +0 -0
  37. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/static/css/bootstrap.min.css +0 -0
  38. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/static/css/style.css +0 -0
  39. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/static/js/bootstrap.bundle.min.js +0 -0
  40. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/static/js/chart.umd.min.js +0 -0
  41. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/static/js/dashboard.js +0 -0
  42. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/summary/__init__.py +0 -0
  43. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/summary/routes.py +0 -0
  44. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/templates/index.html +0 -0
  45. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/topology/__init__.py +0 -0
  46. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar/web/topology/routes.py +0 -0
  47. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar.egg-info/SOURCES.txt +0 -0
  48. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar.egg-info/dependency_links.txt +0 -0
  49. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar.egg-info/entry_points.txt +0 -0
  50. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar.egg-info/requires.txt +0 -0
  51. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/devsecops_radar.egg-info/top_level.txt +0 -0
  52. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/setup.cfg +0 -0
  53. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/tests/test_cli.py +0 -0
  54. {devsecops_radar-0.2.9 → devsecops_radar-0.3.0}/tests/test_scanners.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devsecops-radar
3
- Version: 0.2.9
3
+ Version: 0.3.0
4
4
  Summary: Unified CI/CD Security Dashboard — Pipeline Sentinel
5
5
  Author-email: Mehrdoost <70381337+Mehrdoost@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -221,11 +221,14 @@ DASHBOARD_HTML = r"""
221
221
  renderTable(filtered);
222
222
  }
223
223
 
224
+ // ✅ FIX: use data.items for the array, and use allFindings for charts & stats
224
225
  fetch('/api/findings', { headers: getHeaders() })
225
226
  .then(res => res.json())
226
227
  .then(data => {
227
228
  allFindings = data.items;
228
229
  renderTable(allFindings);
230
+
231
+ // Doughnut chart counts
229
232
  const counts = {CRITICAL:0, HIGH:0, MEDIUM:0, LOW:0};
230
233
  allFindings.forEach(f => {
231
234
  const sev = f.severity.toUpperCase();
@@ -242,6 +245,8 @@ DASHBOARD_HTML = r"""
242
245
  },
243
246
  options: { plugins: { legend: { labels: { color: 'white' } } } }
244
247
  });
248
+
249
+ // Pipeline stats (Poutine + Zizmor)
245
250
  const pipeline = allFindings.filter(f => f.tool === 'Poutine' || f.tool === 'Zizmor');
246
251
  const pCounts = {CRITICAL:0, HIGH:0, MEDIUM:0, LOW:0};
247
252
  pipeline.forEach(f => {
@@ -252,6 +257,8 @@ DASHBOARD_HTML = r"""
252
257
  document.getElementById('pipeline-high').textContent = pCounts.HIGH;
253
258
  document.getElementById('pipeline-medium').textContent = pCounts.MEDIUM;
254
259
  document.getElementById('pipeline-low').textContent = pCounts.LOW;
260
+
261
+ // Attach filter events
255
262
  document.getElementById('searchInput').addEventListener('input', applyFilters);
256
263
  document.getElementById('toolFilter').addEventListener('change', applyFilters);
257
264
  document.getElementById('severityFilter').addEventListener('change', applyFilters);
@@ -290,6 +297,8 @@ DASHBOARD_HTML = r"""
290
297
  }
291
298
  if (!data.nodes || data.nodes.length === 0) return;
292
299
  const container = document.getElementById('attack-graph');
300
+ // ✅ Clean previous SVG before drawing new one
301
+ container.innerHTML = '';
293
302
  const width = container.clientWidth;
294
303
  const height = container.clientHeight;
295
304
  const svg = d3.select('#attack-graph')
@@ -372,6 +381,7 @@ DASHBOARD_HTML = r"""
372
381
  const nodes = topo.servers.map(s => ({ id: s.name, group: s.ip }));
373
382
  const links = topo.connections.map(c => ({ source: c.source, target: c.target, label: c.protocol }));
374
383
  const container = document.getElementById('topology-graph');
384
+ container.innerHTML = '';
375
385
  const width = container.clientWidth;
376
386
  const height = container.clientHeight;
377
387
  const svg = d3.select('#topology-graph')
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: devsecops-radar
3
- Version: 0.2.9
3
+ Version: 0.3.0
4
4
  Summary: Unified CI/CD Security Dashboard — Pipeline Sentinel
5
5
  Author-email: Mehrdoost <70381337+Mehrdoost@users.noreply.github.com>
6
6
  License-Expression: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "devsecops-radar"
7
- version = "0.2.9"
7
+ version = "0.3.0"
8
8
  description = "Unified CI/CD Security Dashboard — Pipeline Sentinel"
9
9
  readme = "README.md"
10
10
  license = "MIT"
File without changes