guardlink 1.1.0 → 1.3.0

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 (154) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +11 -2
  3. package/dist/agents/config.d.ts +17 -0
  4. package/dist/agents/config.d.ts.map +1 -1
  5. package/dist/agents/config.js +38 -4
  6. package/dist/agents/config.js.map +1 -1
  7. package/dist/agents/index.d.ts +5 -1
  8. package/dist/agents/index.d.ts.map +1 -1
  9. package/dist/agents/index.js +4 -1
  10. package/dist/agents/index.js.map +1 -1
  11. package/dist/agents/launcher.d.ts +25 -8
  12. package/dist/agents/launcher.d.ts.map +1 -1
  13. package/dist/agents/launcher.js +137 -9
  14. package/dist/agents/launcher.js.map +1 -1
  15. package/dist/agents/prompts.d.ts +9 -0
  16. package/dist/agents/prompts.d.ts.map +1 -1
  17. package/dist/agents/prompts.js +43 -6
  18. package/dist/agents/prompts.js.map +1 -1
  19. package/dist/analyze/index.d.ts +44 -8
  20. package/dist/analyze/index.d.ts.map +1 -1
  21. package/dist/analyze/index.js +291 -15
  22. package/dist/analyze/index.js.map +1 -1
  23. package/dist/analyze/llm.d.ts +65 -13
  24. package/dist/analyze/llm.d.ts.map +1 -1
  25. package/dist/analyze/llm.js +429 -107
  26. package/dist/analyze/llm.js.map +1 -1
  27. package/dist/analyze/prompts.d.ts +6 -2
  28. package/dist/analyze/prompts.d.ts.map +1 -1
  29. package/dist/analyze/prompts.js +230 -111
  30. package/dist/analyze/prompts.js.map +1 -1
  31. package/dist/analyze/tools.d.ts +28 -0
  32. package/dist/analyze/tools.d.ts.map +1 -0
  33. package/dist/analyze/tools.js +236 -0
  34. package/dist/analyze/tools.js.map +1 -0
  35. package/dist/analyzer/index.d.ts +3 -0
  36. package/dist/analyzer/index.d.ts.map +1 -1
  37. package/dist/analyzer/index.js +3 -0
  38. package/dist/analyzer/index.js.map +1 -1
  39. package/dist/analyzer/sarif.d.ts +5 -6
  40. package/dist/analyzer/sarif.d.ts.map +1 -1
  41. package/dist/analyzer/sarif.js +5 -6
  42. package/dist/analyzer/sarif.js.map +1 -1
  43. package/dist/cli/index.d.ts +27 -16
  44. package/dist/cli/index.d.ts.map +1 -1
  45. package/dist/cli/index.js +524 -105
  46. package/dist/cli/index.js.map +1 -1
  47. package/dist/dashboard/data.d.ts +5 -0
  48. package/dist/dashboard/data.d.ts.map +1 -1
  49. package/dist/dashboard/data.js +5 -0
  50. package/dist/dashboard/data.js.map +1 -1
  51. package/dist/dashboard/generate.d.ts +8 -5
  52. package/dist/dashboard/generate.d.ts.map +1 -1
  53. package/dist/dashboard/generate.js +206 -66
  54. package/dist/dashboard/generate.js.map +1 -1
  55. package/dist/dashboard/index.d.ts +5 -0
  56. package/dist/dashboard/index.d.ts.map +1 -1
  57. package/dist/dashboard/index.js +5 -0
  58. package/dist/dashboard/index.js.map +1 -1
  59. package/dist/diff/git.d.ts +10 -7
  60. package/dist/diff/git.d.ts.map +1 -1
  61. package/dist/diff/git.js +10 -7
  62. package/dist/diff/git.js.map +1 -1
  63. package/dist/diff/index.d.ts +4 -0
  64. package/dist/diff/index.d.ts.map +1 -1
  65. package/dist/diff/index.js +4 -0
  66. package/dist/diff/index.js.map +1 -1
  67. package/dist/init/detect.d.ts +5 -0
  68. package/dist/init/detect.d.ts.map +1 -1
  69. package/dist/init/detect.js +5 -0
  70. package/dist/init/detect.js.map +1 -1
  71. package/dist/init/index.d.ts +26 -6
  72. package/dist/init/index.d.ts.map +1 -1
  73. package/dist/init/index.js +91 -11
  74. package/dist/init/index.js.map +1 -1
  75. package/dist/init/picker.d.ts.map +1 -1
  76. package/dist/init/picker.js +17 -6
  77. package/dist/init/picker.js.map +1 -1
  78. package/dist/init/templates.d.ts +20 -0
  79. package/dist/init/templates.d.ts.map +1 -1
  80. package/dist/init/templates.js +167 -36
  81. package/dist/init/templates.js.map +1 -1
  82. package/dist/mcp/index.d.ts +5 -0
  83. package/dist/mcp/index.d.ts.map +1 -1
  84. package/dist/mcp/index.js +5 -0
  85. package/dist/mcp/index.js.map +1 -1
  86. package/dist/mcp/lookup.d.ts +5 -0
  87. package/dist/mcp/lookup.d.ts.map +1 -1
  88. package/dist/mcp/lookup.js +5 -0
  89. package/dist/mcp/lookup.js.map +1 -1
  90. package/dist/mcp/server.d.ts +16 -13
  91. package/dist/mcp/server.d.ts.map +1 -1
  92. package/dist/mcp/server.js +140 -17
  93. package/dist/mcp/server.js.map +1 -1
  94. package/dist/mcp/suggest.d.ts +8 -6
  95. package/dist/mcp/suggest.d.ts.map +1 -1
  96. package/dist/mcp/suggest.js +8 -6
  97. package/dist/mcp/suggest.js.map +1 -1
  98. package/dist/parser/clear.d.ts +36 -0
  99. package/dist/parser/clear.d.ts.map +1 -0
  100. package/dist/parser/clear.js +148 -0
  101. package/dist/parser/clear.js.map +1 -0
  102. package/dist/parser/index.d.ts +3 -1
  103. package/dist/parser/index.d.ts.map +1 -1
  104. package/dist/parser/index.js +2 -1
  105. package/dist/parser/index.js.map +1 -1
  106. package/dist/parser/parse-file.d.ts +5 -2
  107. package/dist/parser/parse-file.d.ts.map +1 -1
  108. package/dist/parser/parse-file.js +29 -2
  109. package/dist/parser/parse-file.js.map +1 -1
  110. package/dist/parser/parse-line.d.ts +3 -3
  111. package/dist/parser/parse-line.js +3 -3
  112. package/dist/parser/parse-project.d.ts +7 -7
  113. package/dist/parser/parse-project.d.ts.map +1 -1
  114. package/dist/parser/parse-project.js +24 -11
  115. package/dist/parser/parse-project.js.map +1 -1
  116. package/dist/parser/validate.d.ts +12 -0
  117. package/dist/parser/validate.d.ts.map +1 -1
  118. package/dist/parser/validate.js +44 -0
  119. package/dist/parser/validate.js.map +1 -1
  120. package/dist/report/index.d.ts +3 -0
  121. package/dist/report/index.d.ts.map +1 -1
  122. package/dist/report/index.js +3 -0
  123. package/dist/report/index.js.map +1 -1
  124. package/dist/report/report.d.ts +4 -7
  125. package/dist/report/report.d.ts.map +1 -1
  126. package/dist/report/report.js +68 -7
  127. package/dist/report/report.js.map +1 -1
  128. package/dist/review/index.d.ts +62 -0
  129. package/dist/review/index.d.ts.map +1 -0
  130. package/dist/review/index.js +226 -0
  131. package/dist/review/index.js.map +1 -0
  132. package/dist/tui/commands.d.ts +26 -1
  133. package/dist/tui/commands.d.ts.map +1 -1
  134. package/dist/tui/commands.js +608 -101
  135. package/dist/tui/commands.js.map +1 -1
  136. package/dist/tui/config.d.ts +6 -0
  137. package/dist/tui/config.d.ts.map +1 -1
  138. package/dist/tui/config.js +6 -0
  139. package/dist/tui/config.js.map +1 -1
  140. package/dist/tui/format.d.ts +7 -0
  141. package/dist/tui/format.d.ts.map +1 -1
  142. package/dist/tui/format.js +59 -0
  143. package/dist/tui/format.js.map +1 -1
  144. package/dist/tui/index.d.ts +8 -8
  145. package/dist/tui/index.d.ts.map +1 -1
  146. package/dist/tui/index.js +47 -10
  147. package/dist/tui/index.js.map +1 -1
  148. package/dist/tui/input.d.ts +6 -0
  149. package/dist/tui/input.d.ts.map +1 -1
  150. package/dist/tui/input.js +6 -0
  151. package/dist/tui/input.js.map +1 -1
  152. package/dist/types/index.d.ts +2 -0
  153. package/dist/types/index.d.ts.map +1 -1
  154. package/package.json +1 -1
@@ -5,11 +5,14 @@
5
5
  * 7 pages: Summary, AI Analysis, Threats, Diagrams, Code, Data, Assets.
6
6
  * Mermaid.js via CDN for diagrams. Zero build step.
7
7
  *
8
- * @exposes #dashboard to #xss [high] cwe:CWE-79 -- "Interpolates threat model data into HTML output"
9
- * @mitigates #dashboard against #xss using #output-encoding -- "esc() function HTML-encodes all dynamic content"
10
- * @flows #parser -> #dashboard via ThreatModel -- "Dashboard receives parsed threat model for visualization"
11
- * @flows #dashboard -> Filesystem via writeFile -- "Generated HTML written to disk"
12
- * @comment -- "esc() defined at line ~399 and ~1016 performs HTML entity encoding"
8
+ * @exposes #dashboard to #xss [high] cwe:CWE-79 -- "Generates HTML with user-controlled threat model data"
9
+ * @mitigates #dashboard against #xss using #output-encoding -- "esc() HTML-encodes all interpolated values"
10
+ * @exposes #dashboard to #path-traversal [medium] cwe:CWE-22 -- "readFileSync reads code files for annotation context"
11
+ * @mitigates #dashboard against #path-traversal using #path-validation -- "resolve() with root constrains file access"
12
+ * @flows ThreatModel -> #dashboard via computeStats -- "Model statistics input"
13
+ * @flows SourceFiles -> #dashboard via readFileSync -- "Code snippet reads"
14
+ * @flows #dashboard -> HTML via return -- "Generated HTML output"
15
+ * @handles internal on #dashboard -- "Processes and displays threat model data"
13
16
  */
14
17
  import { computeStats, computeSeverity, computeExposures, computeAssetHeatmap } from './data.js';
15
18
  import { generateThreatGraph, generateDataFlowDiagram, generateAttackSurface } from './diagrams.js';
@@ -74,15 +77,21 @@ ${CSS_CONTENT}
74
77
  <div class="layout">
75
78
 
76
79
  <!-- ═══════════ SIDEBAR ═══════════ -->
77
- <nav class="sidebar">
78
- <a class="active" onclick="showSection('summary',this)"><span class="nav-icon">◆</span> Executive Summary</a>
79
- <a onclick="showSection('ai-analysis',this)"><span class="nav-icon">✨</span> Threat Reports</a>
80
- <a onclick="showSection('threats',this)"><span class="nav-icon">⚠</span> Threats &amp; Exposures</a>
81
- <a onclick="showSection('diagrams',this)"><span class="nav-icon">◉</span> Diagrams</a>
82
- <a onclick="showSection('code',this)"><span class="nav-icon">&lt;/&gt;</span> Code &amp; Annotations</a>
83
- <div class="sep"></div>
84
- <a onclick="showSection('data',this)"><span class="nav-icon">🔒</span> Data &amp; Boundaries</a>
85
- <a onclick="showSection('assets',this)"><span class="nav-icon">🗺</span> Asset Heatmap</a>
80
+ <nav class="sidebar" id="sidebar">
81
+ <div class="sidebar-nav">
82
+ <a class="active" onclick="showSection('summary',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 2l6 4v6l-6 4-6-4V6l6-4z"/></svg></span> <span class="nav-text">Executive Summary</span></a>
83
+ <a onclick="showSection('ai-analysis',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 1l2 5h5l-4 3 2 5-5-3-5 3 2-5-4-3h5l2-5z"/></svg></span> <span class="nav-text">Threat Reports</span></a>
84
+ <a onclick="showSection('threats',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M8 1L1 15h14L8 1zm0 4l3 8H5l3-8z"/></svg></span> <span class="nav-text">Threats &amp; Exposures</span></a>
85
+ <a onclick="showSection('diagrams',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><circle cx="8" cy="8" r="6" stroke="currentColor" stroke-width="1.5" fill="none"/><circle cx="8" cy="8" r="2"/></svg></span> <span class="nav-text">Diagrams</span></a>
86
+ <a onclick="showSection('code',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M5 4L1 8l4 4v-2L3 8l2-2V4zm6 0v2l2 2-2 2v2l4-4-4-4z"/></svg></span> <span class="nav-text">Code &amp; Annotations</span></a>
87
+ <div class="sep"></div>
88
+ <a onclick="showSection('data',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M4 2h8v2H4V2zm0 3h8v2H4V5zm0 3h8v2H4V8zm0 3h8v2H4v-2zm-2-9v12h12V2H2zm1 1h10v10H3V3z"/></svg></span> <span class="nav-text">Data &amp; Boundaries</span></a>
89
+ <a onclick="showSection('assets',this)"><span class="nav-icon"><svg width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M1 3h14v10H1V3zm1 1v8h12V4H2zm2 2h8v1H4V6zm0 2h6v1H4V8z"/></svg></span> <span class="nav-text">Asset Heatmap</span></a>
90
+ </div>
91
+ <button id="sidebarToggle" onclick="toggleSidebar()" title="Collapse sidebar">
92
+ <svg class="chevron-left" width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M10 2L4 8l6 6V2z"/></svg>
93
+ <svg class="chevron-right" width="16" height="16" viewBox="0 0 16 16" fill="currentColor"><path d="M6 2v12l6-6-6-6z"/></svg>
94
+ </button>
86
95
  </nav>
87
96
 
88
97
  <!-- ═══════════ MAIN ═══════════ -->
@@ -92,7 +101,7 @@ ${renderSummaryPage(stats, severity, riskScore, unmitigated, exposures, model, m
92
101
  ${renderAIAnalysisPage(analyses || [])}
93
102
  ${renderThreatsPage(exposures, model)}
94
103
  ${renderDiagramsPage(threatGraph, dataFlow, attackSurface)}
95
- ${renderCodePage(fileAnnotations)}
104
+ ${renderCodePage(fileAnnotations, model)}
96
105
  ${renderDataPage(model)}
97
106
  ${renderAssetsPage(heatmap)}
98
107
 
@@ -124,16 +133,28 @@ function showSection(id, el) {
124
133
  const sec = document.getElementById('sec-' + id);
125
134
  if (sec) sec.classList.add('active');
126
135
  if (el) el.classList.add('active');
127
- // Re-render mermaid if switching to diagrams
136
+ closeDrawer();
128
137
  if (id === 'diagrams' && !window._mermaidRendered) {
129
138
  setTimeout(() => { renderMermaid(); }, 100);
130
139
  }
131
- // Render AI analysis explorer on first visit
132
140
  if (id === 'ai-analysis' && !window._aiAnalysisRendered) {
133
141
  renderAIAnalysis();
134
142
  }
135
143
  }
136
144
 
145
+ /* ===== SIDEBAR TOGGLE ===== */
146
+ function toggleSidebar() {
147
+ const sidebar = document.getElementById('sidebar');
148
+ sidebar.classList.toggle('collapsed');
149
+ localStorage.setItem('sidebarCollapsed', sidebar.classList.contains('collapsed'));
150
+ }
151
+
152
+ // Restore sidebar state on load
153
+ window.addEventListener('DOMContentLoaded', () => {
154
+ const collapsed = localStorage.getItem('sidebarCollapsed') === 'true';
155
+ if (collapsed) document.getElementById('sidebar').classList.add('collapsed');
156
+ });
157
+
137
158
  /* ===== FILE TOGGLE ===== */
138
159
  function toggleFile(header) {
139
160
  header.classList.toggle('open');
@@ -568,41 +589,37 @@ function formatAnalysisDate(ts) {
568
589
 
569
590
  function renderAIAnalysis() {
570
591
  window._aiAnalysisRendered = true;
571
- const wrap = document.querySelector('.ai-analysis-wrap');
572
- const explorer = document.getElementById('ai-analyses-explorer');
592
+ const selector = document.getElementById('report-selector');
573
593
  const container = document.getElementById('ai-content');
574
594
  if (!container) return;
575
595
 
576
596
  const list = savedAnalyses;
577
597
  const hasList = Array.isArray(list) && list.length > 0;
578
598
 
579
- if (hasList) {
580
- if (wrap) wrap.classList.add('has-explorer');
581
- if (explorer) {
582
- explorer.innerHTML = list.map((a, i) =>
583
- '<div class="ai-analysis-item ' + (i === _selectedAnalysisIdx ? 'active' : '') + '" data-index="' + i + '" role="button" tabindex="0">' +
584
- '<div class="aai-type">' + esc(a.label || a.framework || 'Analysis') + '</div>' +
585
- '<div class="aai-date">' + esc(formatAnalysisDate(a.timestamp || '')) + '</div>' +
586
- (a.model ? '<div class="aai-model">' + esc(a.model) + '</div>' : '') +
587
- '</div>'
588
- ).join('');
589
-
590
- explorer.querySelectorAll('.ai-analysis-item').forEach(function(el) {
591
- el.addEventListener('click', function() {
592
- var idx = parseInt(this.getAttribute('data-index'), 10);
593
- if (idx === _selectedAnalysisIdx) return;
594
- _selectedAnalysisIdx = idx;
595
- explorer.querySelectorAll('.ai-analysis-item').forEach(function(item, i) {
596
- item.classList.toggle('active', i === idx);
597
- });
598
- renderAIAnalysisContent(container, (list[idx] && list[idx].content) ? list[idx].content : '');
599
- });
600
- });
601
- }
599
+ if (hasList && selector) {
600
+ // Populate dropdown with reports
601
+ selector.innerHTML = list.map((a, i) => {
602
+ const label = esc(a.label || a.framework || 'Analysis');
603
+ const date = esc(formatAnalysisDate(a.timestamp || ''));
604
+ const model = a.model ? ' ' + esc(a.model) : '';
605
+ return '<option value="' + i + '">' + label + ' (' + date + ')' + model + '</option>';
606
+ }).join('');
607
+
608
+ // Set initial selection
609
+ selector.value = String(_selectedAnalysisIdx);
610
+
611
+ // Handle dropdown change
612
+ selector.addEventListener('change', function() {
613
+ var idx = parseInt(this.value, 10);
614
+ if (isNaN(idx) || idx === _selectedAnalysisIdx) return;
615
+ _selectedAnalysisIdx = idx;
616
+ renderAIAnalysisContent(container, (list[idx] && list[idx].content) ? list[idx].content : '');
617
+ });
618
+
619
+ // Render initial content
602
620
  renderAIAnalysisContent(container, (list[_selectedAnalysisIdx] && list[_selectedAnalysisIdx].content) ? list[_selectedAnalysisIdx].content : '');
603
621
  } else {
604
- if (wrap) wrap.classList.remove('has-explorer');
605
- if (explorer) explorer.innerHTML = '';
622
+ if (selector) selector.style.display = 'none';
606
623
  renderAIAnalysisContent(container, '');
607
624
  }
608
625
  }
@@ -635,7 +652,12 @@ function renderSummaryPage(stats, severity, risk, unmitigated, exposures, model,
635
652
  ${statCard(stats.flows, 'Data Flows')}
636
653
  ${statCard(stats.boundaries, 'Boundaries')}
637
654
  ${statCard(stats.transfers, 'Transfers')}
655
+ ${statCard(stats.validations, 'Validations', 'success')}
656
+ ${statCard(stats.audits, 'Audits')}
657
+ ${statCard(stats.assumptions, 'Assumptions')}
658
+ ${statCard(stats.ownership, 'Ownership')}
638
659
  ${statCard(stats.comments, 'Comments', 'muted')}
660
+ ${stats.shields > 0 ? statCard(stats.shields, 'Shields', 'muted') : ''}
639
661
  </div>
640
662
 
641
663
  <!-- Coverage Bar -->
@@ -691,10 +713,11 @@ function renderAIAnalysisPage(analyses) {
691
713
  return `
692
714
  <div id="sec-ai-analysis" class="section-content">
693
715
  <div class="sec-h"><span class="sec-icon">✨</span> Threat Reports</div>
694
- <div class="ai-analysis-wrap">
695
- <aside id="ai-analyses-explorer" class="ai-analyses-explorer" aria-label="Saved analyses"></aside>
696
- <div id="ai-content" class="md-content ai-analysis-main"></div>
716
+ <div class="ai-analysis-controls">
717
+ <label for="report-selector" class="report-selector-label">Select Report:</label>
718
+ <select id="report-selector" class="report-selector" aria-label="Select threat report"></select>
697
719
  </div>
720
+ <div id="ai-content" class="md-content ai-analysis-main"></div>
698
721
  </div>`;
699
722
  }
700
723
  function renderThreatsPage(exposures, model) {
@@ -819,7 +842,10 @@ function renderDiagramsPage(threatGraph, dataFlow, attackSurface) {
819
842
  ${panels.join('\n')}
820
843
  </div>`;
821
844
  }
822
- function renderCodePage(fileAnnotations) {
845
+ function renderCodePage(fileAnnotations, model) {
846
+ const unannotated = model.unannotated_files || [];
847
+ const annotatedCount = model.annotated_files?.length || fileAnnotations.length;
848
+ const totalFiles = annotatedCount + unannotated.length;
823
849
  return `
824
850
  <div id="sec-code" class="section-content">
825
851
  <div class="sec-h"><span class="sec-icon">&lt;/&gt;</span> Code &amp; Annotations</div>
@@ -848,6 +874,23 @@ function renderCodePage(fileAnnotations) {
848
874
  </div>`).join('')}
849
875
  </div>
850
876
  </div>`).join('') : '<p class="empty-state">No annotations found.</p>'}
877
+
878
+ <!-- File Coverage Summary -->
879
+ <div class="sub-h" style="margin-top:1.5rem">File Coverage</div>
880
+ <div style="display:flex;align-items:center;gap:.8rem;margin-bottom:.3rem">
881
+ <span style="font-size:.88rem;font-weight:600;color:${totalFiles > 0 && annotatedCount / totalFiles >= 0.7 ? 'var(--green)' : annotatedCount / totalFiles >= 0.4 ? 'var(--yellow)' : 'var(--red)'}">${annotatedCount} of ${totalFiles} files</span>
882
+ <span style="color:var(--muted);font-size:.82rem">have GuardLink annotations</span>
883
+ </div>
884
+ ${totalFiles > 0 ? `<div class="posture-bar"><div class="posture-fill ${annotatedCount / totalFiles >= 0.7 ? 'good' : annotatedCount / totalFiles >= 0.4 ? 'warn' : 'bad'}" style="width:${Math.round(annotatedCount / totalFiles * 100)}%"></div></div>` : ''}
885
+
886
+ ${unannotated.length > 0 ? `
887
+ <div class="sub-h" style="color:var(--yellow);margin-top:1rem">⚠ Unannotated Files (${unannotated.length})</div>
888
+ <p style="color:var(--muted);font-size:.78rem;margin-bottom:.5rem">
889
+ Source files with no GuardLink annotations. Not all files need annotations — only those touching security boundaries.
890
+ </p>
891
+ <div style="display:flex;flex-direction:column;gap:2px;margin-bottom:1rem">
892
+ ${unannotated.map(f => `<div style="font-family:var(--font-mono);font-size:.78rem;padding:.3rem .6rem;background:var(--surface2);border-left:3px solid var(--yellow);border-radius:2px">${esc(f)}</div>`).join('')}
893
+ </div>` : `<p style="color:var(--green);font-size:.82rem;margin-top:.5rem">✓ All source files have annotations.</p>`}
851
894
  </div>`;
852
895
  }
853
896
  function renderDataPage(model) {
@@ -886,6 +929,79 @@ function renderDataPage(model) {
886
929
  </tbody>
887
930
  </table>` : ''}
888
931
 
932
+ ${model.validations.length > 0 ? `
933
+ <div class="sub-h">Validations (${model.validations.length})</div>
934
+ <table>
935
+ <thead><tr><th>Control</th><th>Asset</th><th>Description</th><th>Location</th></tr></thead>
936
+ <tbody>
937
+ ${model.validations.map(v => `
938
+ <tr>
939
+ <td><code>${esc(v.control)}</code></td>
940
+ <td><code>${esc(v.asset)}</code></td>
941
+ <td>${esc(v.description || '—')}</td>
942
+ <td class="loc">${v.location ? `${esc(v.location.file)}:${v.location.line}` : ''}</td>
943
+ </tr>`).join('')}
944
+ </tbody>
945
+ </table>` : ''}
946
+
947
+ ${model.ownership.length > 0 ? `
948
+ <div class="sub-h">Ownership (${model.ownership.length})</div>
949
+ <table>
950
+ <thead><tr><th>Asset</th><th>Owner</th><th>Description</th><th>Location</th></tr></thead>
951
+ <tbody>
952
+ ${model.ownership.map(o => `
953
+ <tr>
954
+ <td><code>${esc(o.asset)}</code></td>
955
+ <td><strong>${esc(o.owner)}</strong></td>
956
+ <td>${esc(o.description || '—')}</td>
957
+ <td class="loc">${o.location ? `${esc(o.location.file)}:${o.location.line}` : ''}</td>
958
+ </tr>`).join('')}
959
+ </tbody>
960
+ </table>` : ''}
961
+
962
+ ${model.audits.length > 0 ? `
963
+ <div class="sub-h">Audit Items (${model.audits.length})</div>
964
+ <table>
965
+ <thead><tr><th>Asset</th><th>Description</th><th>Location</th></tr></thead>
966
+ <tbody>
967
+ ${model.audits.map(a => `
968
+ <tr>
969
+ <td><code>${esc(a.asset)}</code></td>
970
+ <td>${esc(a.description || 'Needs review')}</td>
971
+ <td class="loc">${a.location ? `${esc(a.location.file)}:${a.location.line}` : ''}</td>
972
+ </tr>`).join('')}
973
+ </tbody>
974
+ </table>` : ''}
975
+
976
+ ${model.assumptions.length > 0 ? `
977
+ <div class="sub-h">Assumptions (${model.assumptions.length})</div>
978
+ <p style="color:var(--muted);font-size:.78rem;margin-bottom:.5rem">Unverified assumptions that should be periodically reviewed.</p>
979
+ <table>
980
+ <thead><tr><th>Asset</th><th>Assumption</th><th>Location</th></tr></thead>
981
+ <tbody>
982
+ ${model.assumptions.map(a => `
983
+ <tr>
984
+ <td><code>${esc(a.asset)}</code></td>
985
+ <td>${esc(a.description || 'Unverified assumption')}</td>
986
+ <td class="loc">${a.location ? `${esc(a.location.file)}:${a.location.line}` : ''}</td>
987
+ </tr>`).join('')}
988
+ </tbody>
989
+ </table>` : ''}
990
+
991
+ ${model.shields.length > 0 ? `
992
+ <div class="sub-h">Shielded Regions (${model.shields.length})</div>
993
+ <p style="color:var(--muted);font-size:.78rem;margin-bottom:.5rem">Code regions where annotations are intentionally suppressed via <code>@shield</code>.</p>
994
+ <table>
995
+ <thead><tr><th>Reason</th><th>Location</th></tr></thead>
996
+ <tbody>
997
+ ${model.shields.map(s => `
998
+ <tr>
999
+ <td>${esc(s.reason || 'No reason provided')}</td>
1000
+ <td class="loc">${s.location ? `${esc(s.location.file)}:${s.location.line}` : ''}</td>
1001
+ </tr>`).join('')}
1002
+ </tbody>
1003
+ </table>` : ''}
1004
+
889
1005
  ${model.comments.length > 0 ? `
890
1006
  <div class="sub-h">Developer Comments (${model.comments.length})</div>
891
1007
  <table>
@@ -900,7 +1016,9 @@ function renderDataPage(model) {
900
1016
  </table>` : ''}
901
1017
 
902
1018
  ${model.boundaries.length === 0 && model.data_handling.length === 0 && model.comments.length === 0
903
- ? '<p class="empty-state">No data classifications, trust boundaries, or comments found.</p>' : ''}
1019
+ && model.validations.length === 0 && model.ownership.length === 0 && model.audits.length === 0
1020
+ && model.assumptions.length === 0 && model.shields.length === 0
1021
+ ? '<p class="empty-state">No data classifications, trust boundaries, or lifecycle annotations found.</p>' : ''}
904
1022
  </div>`;
905
1023
  }
906
1024
  function renderAssetsPage(heatmap) {
@@ -978,6 +1096,18 @@ function buildFileAnnotations(model, root) {
978
1096
  addEntry('flow', f, `${f.source} → ${f.target}`);
979
1097
  for (const b of model.boundaries)
980
1098
  addEntry('boundary', b, `${b.asset_a} ↔ ${b.asset_b}`);
1099
+ for (const h of model.data_handling)
1100
+ addEntry('handles', h, `${h.asset}: ${h.classification}`);
1101
+ for (const v of model.validations)
1102
+ addEntry('validates', v, `${v.control} validates ${v.asset}`);
1103
+ for (const o of model.ownership)
1104
+ addEntry('owns', o, `${o.owner} owns ${o.asset}`);
1105
+ for (const a of model.audits)
1106
+ addEntry('audit', a, `Audit: ${a.asset}`);
1107
+ for (const a of model.assumptions)
1108
+ addEntry('assumes', a, `Assumes: ${a.asset}`);
1109
+ for (const s of model.shields)
1110
+ addEntry('shield', s, s.reason || 'Shielded region');
981
1111
  for (const c of model.comments)
982
1112
  addEntry('comment', c, c.description || 'Developer note');
983
1113
  const result = [];
@@ -1091,12 +1221,23 @@ code { background: var(--border); padding: 1px 4px; border-radius: 3px; font-siz
1091
1221
  [data-theme="light"] .icon-moon { display: none; }
1092
1222
 
1093
1223
  /* ── Layout ── */
1094
- .layout { display: flex; height: calc(100vh - 48px); }
1095
- .sidebar { width: var(--sidebar-w); min-width: var(--sidebar-w); background: var(--surface); border-right: 1px solid var(--border); overflow-y: auto; padding: .6rem 0; }
1224
+ .layout { display: flex; height: calc(100vh - 48px); position: relative; }
1225
+ .sidebar { width: var(--sidebar-w); min-width: var(--sidebar-w); background: var(--surface); border-right: 1px solid var(--border); display: flex; flex-direction: column; transition: all .25s ease; }
1226
+ .sidebar-nav { flex: 1; overflow-y: auto; padding: .6rem 0; }
1227
+ .sidebar.collapsed { width: 50px; min-width: 50px; }
1228
+ .sidebar.collapsed .nav-text { display: none; }
1229
+ .sidebar.collapsed .sep { margin: .5rem .5rem; }
1230
+ .sidebar.collapsed .chevron-left { display: none; }
1231
+ .sidebar.collapsed .chevron-right { display: block; }
1232
+ #sidebarToggle { background: var(--surface2); border: none; border-top: 1px solid var(--border); padding: .8rem; cursor: pointer; color: var(--muted); transition: all .2s; display: flex; align-items: center; justify-content: center; width: 100%; }
1233
+ #sidebarToggle:hover { background: var(--border); color: var(--accent); }
1234
+ #sidebarToggle svg { display: block; }
1235
+ #sidebarToggle .chevron-right { display: none; }
1096
1236
  .sidebar a { display: flex; align-items: center; gap: .6rem; padding: .55rem 1rem; font-size: .8rem; color: var(--muted); cursor: pointer; border-left: 3px solid transparent; transition: all .12s; user-select: none; }
1097
1237
  .sidebar a:hover { background: var(--surface2); color: var(--text); }
1098
1238
  .sidebar a.active { color: var(--accent); border-left-color: var(--accent); background: rgba(45,212,167,.08); }
1099
- .sidebar .nav-icon { font-size: 1rem; width: 20px; text-align: center; }
1239
+ .sidebar .nav-icon { width: 20px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
1240
+ .sidebar .nav-icon svg { display: block; }
1100
1241
  .sidebar .sep { height: 1px; background: var(--border); margin: .5rem 1rem; }
1101
1242
  .main { flex: 1; overflow-y: auto; padding: 0; }
1102
1243
  .section-content { display: none; padding: 1.2rem 1.5rem; } .section-content.active { display: block; }
@@ -1188,6 +1329,9 @@ tr.clickable { cursor: pointer; } tr.clickable:hover { background: var(--table-h
1188
1329
  .ann-mitigates { background: #1a3a1a; color: #3fb950; } .ann-accepts { background: #3a3a1a; color: #d29922; }
1189
1330
  .ann-transfers { background: #2a1a3a; color: #bc8cff; } .ann-flow { background: #2a2a2a; color: #8b949e; }
1190
1331
  .ann-boundary { background: #2a1a3a; color: #bc8cff; } .ann-data { background: #3a2a1a; color: #db6d28; }
1332
+ .ann-handles { background: #3a2a1a; color: #db6d28; } .ann-validates { background: #1a3a1a; color: #3fb950; }
1333
+ .ann-owns { background: #1c3a5e; color: #58a6ff; } .ann-audit { background: #3a3a1a; color: #d29922; }
1334
+ .ann-assumes { background: #3a3a1a; color: #d29922; } .ann-shield { background: #2a2a2a; color: #8b949e; }
1191
1335
  .ann-comment { background: var(--surface2); color: var(--muted); border: 1px solid var(--border); }
1192
1336
 
1193
1337
  /* ── File Cards (Code Browser) ── */
@@ -1237,18 +1381,14 @@ tr.clickable { cursor: pointer; } tr.clickable:hover { background: var(--table-h
1237
1381
  .diagram-tab.active { color: var(--accent); border-bottom-color: var(--accent); }
1238
1382
  .diagram-panel { display: none; } .diagram-panel.active { display: block; }
1239
1383
 
1240
- /* ── AI Analysis Explorer ── */
1241
- .ai-analysis-wrap { display: flex; gap: 1.5rem; margin-top: 0.75rem; min-height: 400px; }
1242
- .ai-analyses-explorer { width: 240px; min-width: 240px; max-height: calc(100vh - 220px); overflow-y: auto; padding-right: 0.5rem; border-right: 1px solid var(--border); }
1243
- .ai-analyses-explorer:empty { display: none; }
1244
- .ai-analysis-wrap:not(.has-explorer) .ai-analyses-explorer { display: none; }
1245
- .ai-analysis-main { flex: 1; min-width: 0; }
1246
- .ai-analysis-item { padding: 0.5rem 0.6rem; margin-bottom: 0.35rem; border-radius: 6px; font-size: 0.8rem; cursor: pointer; border: 1px solid transparent; transition: background 0.15s, border-color 0.15s; }
1247
- .ai-analysis-item:hover { background: var(--surface2); }
1248
- .ai-analysis-item.active { background: rgba(45,212,167,.12); border-color: var(--accent); }
1249
- .ai-analysis-item .aai-type { font-weight: 600; color: var(--accent); text-transform: capitalize; }
1250
- .ai-analysis-item .aai-date { color: var(--muted); font-size: 0.72rem; margin-top: 0.2rem; }
1251
- .ai-analysis-item .aai-model { color: var(--text-dim); font-size: 0.68rem; margin-top: 0.15rem; font-family: var(--font-mono); }
1384
+ /* ── AI Analysis Controls ── */
1385
+ .ai-analysis-controls { display: flex; align-items: center; gap: 0.75rem; margin: 0.75rem 0 1.25rem; }
1386
+ .report-selector-label { font-weight: 600; font-size: 0.88rem; color: var(--text); }
1387
+ .report-selector { flex: 1; max-width: 600px; padding: 0.5rem 0.75rem; font-size: 0.88rem; font-family: var(--font-base); background: var(--surface2); color: var(--text); border: 1px solid var(--border); border-radius: 6px; cursor: pointer; transition: border-color 0.15s, background 0.15s; }
1388
+ .report-selector:hover { background: var(--surface3); border-color: var(--accent); }
1389
+ .report-selector:focus { outline: none; border-color: var(--accent); box-shadow: 0 0 0 3px rgba(45,212,167,0.1); }
1390
+ .report-selector option { background: var(--surface); color: var(--text); padding: 0.5rem; }
1391
+ .ai-analysis-main { margin-top: 0.5rem; }
1252
1392
  .md-content h1 { font-size: 1.4rem; font-weight: 700; margin: 1.2rem 0 .6rem; color: var(--text); }
1253
1393
  .md-content h2 { font-size: 1.15rem; font-weight: 600; margin: 1rem 0 .5rem; color: var(--text); border-bottom: 1px solid var(--border); padding-bottom: .3rem; }
1254
1394
  .md-content h3 { font-size: 1rem; font-weight: 600; margin: .8rem 0 .4rem; color: var(--text); }
@@ -1266,9 +1406,9 @@ tr.clickable { cursor: pointer; } tr.clickable:hover { background: var(--table-h
1266
1406
 
1267
1407
  /* ── Responsive ── */
1268
1408
  @media (max-width: 768px) {
1269
- .sidebar { width: 50px; min-width: 50px; } .sidebar a span:not(.nav-icon) { display: none; }
1409
+ .sidebar { width: 50px; min-width: 50px; } .sidebar .nav-text { display: none; }
1270
1410
  .topnav .tn-stat { display: none; }
1271
1411
  }
1272
- @media print { .topnav, .sidebar { display: none; } .main { margin: 0; } .layout { display: block; } #themeToggle { display: none; } }
1412
+ @media print { .topnav, .sidebar, #sidebarToggle { display: none; } .main { margin: 0; } .layout { display: block; } #themeToggle { display: none; } }
1273
1413
  `;
1274
1414
  //# sourceMappingURL=generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/dashboard/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/dashboard/generate.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
1
  /**
2
2
  * GuardLink Dashboard — Self-contained HTML threat model dashboard.
3
+ *
4
+ * @exposes #dashboard to #xss [high] cwe:CWE-79 -- "Generates HTML with threat model data"
5
+ * @mitigates #dashboard against #xss using #output-encoding -- "esc() function encodes all interpolated values"
6
+ * @flows ThreatModel -> #dashboard via generateDashboardHTML -- "Model to HTML transformation"
7
+ * @comment -- "Self-contained HTML; no external data injection after generation"
3
8
  */
4
9
  export { generateDashboardHTML } from './generate.js';
5
10
  export { computeStats, computeSeverity, computeExposures, computeAssetHeatmap } from './data.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -1,5 +1,10 @@
1
1
  /**
2
2
  * GuardLink Dashboard — Self-contained HTML threat model dashboard.
3
+ *
4
+ * @exposes #dashboard to #xss [high] cwe:CWE-79 -- "Generates HTML with threat model data"
5
+ * @mitigates #dashboard against #xss using #output-encoding -- "esc() function encodes all interpolated values"
6
+ * @flows ThreatModel -> #dashboard via generateDashboardHTML -- "Model to HTML transformation"
7
+ * @comment -- "Self-contained HTML; no external data injection after generation"
3
8
  */
4
9
  export { generateDashboardHTML } from './generate.js';
5
10
  export { computeStats, computeSeverity, computeExposures, computeAssetHeatmap } from './data.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/dashboard/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AACjG,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC"}
@@ -3,13 +3,16 @@
3
3
  * Resolves git refs to threat models by checking out files at a given commit
4
4
  * and parsing them in a temp directory.
5
5
  *
6
- * @exposes #diff to #cmd-injection [critical] cwe:CWE-78 -- "Invokes git commands with execSync using user-provided ref"
7
- * @exposes #diff to #path-traversal [high] cwe:CWE-22 -- "Writes files to temp directory based on git ls-tree output"
8
- * @mitigates #diff against #cmd-injection using #param-commands -- "Git ref validated via git rev-parse before use in other commands"
9
- * @mitigates #diff against #path-traversal using #resource-limits -- "Files written only to mkdtempSync temp directory"
10
- * @flows #cli -> #diff via parseAtRef -- "CLI passes git ref from user arguments"
11
- * @flows #diff -> git via execSync -- "Executes git rev-parse, git ls-tree, git show commands"
12
- * @comment -- "Temp directory cleaned up in finally block after parsing"
6
+ * @exposes #diff to #cmd-injection [high] cwe:CWE-78 -- "execSync runs git commands with ref argument"
7
+ * @mitigates #diff against #cmd-injection using #input-sanitize -- "rev-parse validates ref exists before use in other commands"
8
+ * @exposes #diff to #arbitrary-write [medium] cwe:CWE-73 -- "writeFileSync creates files in temp directory"
9
+ * @mitigates #diff against #arbitrary-write using #path-validation -- "mkdtempSync creates isolated temp dir; rmSync cleans up"
10
+ * @exposes #diff to #path-traversal [medium] cwe:CWE-22 -- "git show extracts files based on ls-tree output"
11
+ * @mitigates #diff against #path-traversal using #glob-filtering -- "Files constrained to relevantFiles from git ls-tree"
12
+ * @flows GitRef -> #diff via execSync -- "Git command execution"
13
+ * @flows #diff -> TempDir via writeFileSync -- "Extracted file writes"
14
+ * @flows #diff -> ThreatModel via parseProject -- "Parsed model output"
15
+ * @boundary #diff and GitRepo (#git-boundary) -- "Trust boundary at git command execution"
13
16
  */
14
17
  import type { ThreatModel } from '../types/index.js';
15
18
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/diff/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoDjG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD"}
1
+ {"version":3,"file":"git.d.ts","sourceRoot":"","sources":["../../src/diff/git.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAOH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAErD;;;GAGG;AACH,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoDjG;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlD"}
package/dist/diff/git.js CHANGED
@@ -3,13 +3,16 @@
3
3
  * Resolves git refs to threat models by checking out files at a given commit
4
4
  * and parsing them in a temp directory.
5
5
  *
6
- * @exposes #diff to #cmd-injection [critical] cwe:CWE-78 -- "Invokes git commands with execSync using user-provided ref"
7
- * @exposes #diff to #path-traversal [high] cwe:CWE-22 -- "Writes files to temp directory based on git ls-tree output"
8
- * @mitigates #diff against #cmd-injection using #param-commands -- "Git ref validated via git rev-parse before use in other commands"
9
- * @mitigates #diff against #path-traversal using #resource-limits -- "Files written only to mkdtempSync temp directory"
10
- * @flows #cli -> #diff via parseAtRef -- "CLI passes git ref from user arguments"
11
- * @flows #diff -> git via execSync -- "Executes git rev-parse, git ls-tree, git show commands"
12
- * @comment -- "Temp directory cleaned up in finally block after parsing"
6
+ * @exposes #diff to #cmd-injection [high] cwe:CWE-78 -- "execSync runs git commands with ref argument"
7
+ * @mitigates #diff against #cmd-injection using #input-sanitize -- "rev-parse validates ref exists before use in other commands"
8
+ * @exposes #diff to #arbitrary-write [medium] cwe:CWE-73 -- "writeFileSync creates files in temp directory"
9
+ * @mitigates #diff against #arbitrary-write using #path-validation -- "mkdtempSync creates isolated temp dir; rmSync cleans up"
10
+ * @exposes #diff to #path-traversal [medium] cwe:CWE-22 -- "git show extracts files based on ls-tree output"
11
+ * @mitigates #diff against #path-traversal using #glob-filtering -- "Files constrained to relevantFiles from git ls-tree"
12
+ * @flows GitRef -> #diff via execSync -- "Git command execution"
13
+ * @flows #diff -> TempDir via writeFileSync -- "Extracted file writes"
14
+ * @flows #diff -> ThreatModel via parseProject -- "Parsed model output"
15
+ * @boundary #diff and GitRepo (#git-boundary) -- "Trust boundary at git command execution"
13
16
  */
14
17
  import { execSync } from 'node:child_process';
15
18
  import { mkdtempSync, writeFileSync, rmSync, mkdirSync } from 'node:fs';