File size: 5,811 Bytes
1432cf4
 
 
 
 
 
baa4989
babc153
1432cf4
 
 
 
babc153
 
 
 
 
1432cf4
 
 
babc153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1432cf4
 
babc153
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1432cf4
 
 
babc153
 
 
 
902cd29
babc153
 
 
 
 
 
1432cf4
 
 
baa4989
babc153
1432cf4
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
<!doctype html>
<html lang="en">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <title>GraphReview Results Console</title>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/styles/github.min.css" />
  <link rel="stylesheet" href="/static/css/app.css" />
</head>
<body>
  <header>
    <h1>GraphReview Results Console</h1>
    <nav class="top-nav">
      <button class="tab-btn active" data-tab="reportsTab" type="button">Reports</button>
      <button class="tab-btn" data-tab="trainingTab" type="button">Training</button>
      <button class="tab-btn" data-tab="analysisTab" type="button">Deterministic Analysis</button>
    </nav>
    <div class="muted" id="status">Loading results...</div>
  </header>

  <main>
    <section id="reportsTab" class="tab-panel active">
      <div class="layout">
        <section class="panel">
          <div class="results-list" id="results"></div>
        </section>

        <section class="panel viewer-wrap">
          <div class="viewer-toolbar">
            <strong id="viewerTitle">No report selected</strong>
            <a id="reportJsonLink" href="#" target="_blank" rel="noopener">Report JSON</a>
          </div>
          <iframe id="graphFrame" title="Graph visualization"></iframe>
        </section>

        <section class="panel details">
          <article class="section">
            <h3>Connectivity Diagnostics</h3>
            <div id="diag"></div>
          </article>

          <article class="section">
            <h3>Schema Columns</h3>
            <table>
              <thead>
                <tr>
                  <th>Table</th>
                  <th>Columns</th>
                </tr>
              </thead>
              <tbody id="schemaRows"></tbody>
            </table>
          </article>

          <article class="section">
            <h3>Modules in Scope</h3>
            <input id="moduleSearch" class="module-search" type="text" placeholder="Search module name..." />
            <div class="node-list" id="nodes"></div>
          </article>

          <article class="section">
            <h3>Selected Module Detail</h3>
            <div id="moduleDetail" class="muted">Select a module to inspect report fields, findings, and reviews.</div>
            <button id="rawJsonBtn" type="button" class="small-btn" style="display:none;">View Raw Module Report JSON</button>
            <pre id="moduleRawJson" style="display:none;"></pre>
          </article>

          <article class="section">
            <h3>Raw Code</h3>
            <div class="code-wrap">
              <pre><code id="rawCode" class="language-python">Select a module to view raw code.</code></pre>
            </div>
          </article>
        </section>
      </div>
    </section>

    <section id="trainingTab" class="tab-panel">
      <div class="simple-grid">
        <article class="panel section">
          <h3>Training Bootstrap</h3>
          <p class="muted">Verifies the registered Qwen GGUF weights and compares deterministic findings coverage.</p>
          <button id="bootstrapTrainingBtn" type="button">Run Training Bootstrap</button>
          <button id="runTrainingBtn" type="button">Run Training Episode</button>
          <pre id="trainingOutput">No run yet.</pre>
        </article>

        <article class="panel section">
          <h3>Pipeline Graph</h3>
          <div id="pipelineFlow" class="pipeline-flow">
            <div class="flow-node">Seed + Parse</div>
            <div class="flow-arrow">-></div>
            <div class="flow-node">Deterministic Analyzers</div>
            <div class="flow-arrow">-></div>
            <div class="flow-node">Agent Findings</div>
            <div class="flow-arrow">-></div>
            <div class="flow-node">Deterministic Grading</div>
            <div class="flow-arrow">-></div>
            <div class="flow-node">Gemma Explanations</div>
          </div>
        </article>

        <article class="panel section">
          <h3>Training Run History</h3>
          <button id="refreshTrainingRunsBtn" type="button">Refresh Run History</button>
          <div id="trainingRuns" class="training-runs muted">No runs yet.</div>
        </article>

        <article class="panel section">
          <h3>Critical Analysis (Non-Scoring)</h3>
          <p class="muted">Pick a run from history, then generate a narrative critique from the judge model. This does not affect rewards.</p>
          <div class="run-analysis-controls">
            <label for="analysisRunId">Run ID</label>
            <input id="analysisRunId" type="text" placeholder="Paste or select a run id..." />
            <button id="fetchRunAnalysisBtn" type="button">Generate Critical Analysis</button>
          </div>
          <pre id="runAnalysisOutput">No analysis yet.</pre>
        </article>
      </div>
    </section>

    <section id="analysisTab" class="tab-panel">
      <div class="simple-grid">
        <article class="panel section">
          <h3>Deterministic Analyzer Pipeline</h3>
          <p class="muted">Runs pyright strict, pysa taint analysis, bandit, pylint errors-only, radon complexity, and AST logical bug checks, then stores normalized findings in SQLite.</p>
          <label for="analysisTimeout">Timeout (seconds)</label>
          <input id="analysisTimeout" type="number" min="10" max="300" value="45" />
          <button id="runAnalysisBtn" type="button">Run Deterministic Analysis</button>
          <pre id="analysisOutput">No run yet.</pre>
        </article>
      </div>
    </section>
  </main>

  <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.10.0/highlight.min.js"></script>
  <script src="/static/js/app.js" defer></script>
</body>
</html>