heron-ai 0.2.2 → 0.4.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.
- package/dist/bin/heron.js +31 -2
- package/dist/bin/heron.js.map +1 -1
- package/dist/src/analysis/analyzer.d.ts +1 -1
- package/dist/src/analysis/analyzer.d.ts.map +1 -1
- package/dist/src/analysis/analyzer.js +120 -6
- package/dist/src/analysis/analyzer.js.map +1 -1
- package/dist/src/analysis/risk-scorer.d.ts +32 -0
- package/dist/src/analysis/risk-scorer.d.ts.map +1 -1
- package/dist/src/analysis/risk-scorer.js +134 -0
- package/dist/src/analysis/risk-scorer.js.map +1 -1
- package/dist/src/commands/diff.d.ts +17 -0
- package/dist/src/commands/diff.d.ts.map +1 -0
- package/dist/src/commands/diff.js +63 -0
- package/dist/src/commands/diff.js.map +1 -0
- package/dist/src/compliance/control-mappings.d.ts +21 -0
- package/dist/src/compliance/control-mappings.d.ts.map +1 -0
- package/dist/src/compliance/control-mappings.js +182 -0
- package/dist/src/compliance/control-mappings.js.map +1 -0
- package/dist/src/compliance/frameworks.d.ts +24 -0
- package/dist/src/compliance/frameworks.d.ts.map +1 -0
- package/dist/src/compliance/frameworks.js +55 -0
- package/dist/src/compliance/frameworks.js.map +1 -0
- package/dist/src/compliance/index.d.ts +9 -0
- package/dist/src/compliance/index.d.ts.map +1 -0
- package/dist/src/compliance/index.js +8 -0
- package/dist/src/compliance/index.js.map +1 -0
- package/dist/src/compliance/mapper.d.ts +126 -0
- package/dist/src/compliance/mapper.d.ts.map +1 -0
- package/dist/src/compliance/mapper.js +443 -0
- package/dist/src/compliance/mapper.js.map +1 -0
- package/dist/src/compliance/types.d.ts +120 -0
- package/dist/src/compliance/types.d.ts.map +1 -0
- package/dist/src/compliance/types.js +99 -0
- package/dist/src/compliance/types.js.map +1 -0
- package/dist/src/diff/differ.d.ts +9 -0
- package/dist/src/diff/differ.d.ts.map +1 -0
- package/dist/src/diff/differ.js +52 -0
- package/dist/src/diff/differ.js.map +1 -0
- package/dist/src/interview/interviewer.d.ts +2 -0
- package/dist/src/interview/interviewer.d.ts.map +1 -1
- package/dist/src/interview/interviewer.js.map +1 -1
- package/dist/src/interview/protocol.d.ts.map +1 -1
- package/dist/src/interview/protocol.js +28 -5
- package/dist/src/interview/protocol.js.map +1 -1
- package/dist/src/interview/questions.d.ts.map +1 -1
- package/dist/src/interview/questions.js +55 -0
- package/dist/src/interview/questions.js.map +1 -1
- package/dist/src/llm/client.d.ts +26 -1
- package/dist/src/llm/client.d.ts.map +1 -1
- package/dist/src/llm/client.js +108 -15
- package/dist/src/llm/client.js.map +1 -1
- package/dist/src/llm/prompts.d.ts +27 -1
- package/dist/src/llm/prompts.d.ts.map +1 -1
- package/dist/src/llm/prompts.js +133 -1
- package/dist/src/llm/prompts.js.map +1 -1
- package/dist/src/report/generator.d.ts +1 -7
- package/dist/src/report/generator.d.ts.map +1 -1
- package/dist/src/report/generator.js +47 -236
- package/dist/src/report/generator.js.map +1 -1
- package/dist/src/report/templates.d.ts +2 -1
- package/dist/src/report/templates.d.ts.map +1 -1
- package/dist/src/report/templates.js +436 -84
- package/dist/src/report/templates.js.map +1 -1
- package/dist/src/report/types.d.ts +34 -19
- package/dist/src/report/types.d.ts.map +1 -1
- package/dist/src/report/types.js +8 -4
- package/dist/src/report/types.js.map +1 -1
- package/dist/src/server/index.d.ts +1 -1
- package/dist/src/server/index.d.ts.map +1 -1
- package/dist/src/server/index.js +212 -55
- package/dist/src/server/index.js.map +1 -1
- package/dist/src/server/sessions.d.ts +10 -0
- package/dist/src/server/sessions.d.ts.map +1 -1
- package/dist/src/server/sessions.js +73 -9
- package/dist/src/server/sessions.js.map +1 -1
- package/dist/src/util/provided.d.ts +49 -0
- package/dist/src/util/provided.d.ts.map +1 -0
- package/dist/src/util/provided.js +83 -0
- package/dist/src/util/provided.js.map +1 -0
- package/dist/src/util/systems.d.ts +15 -0
- package/dist/src/util/systems.d.ts.map +1 -0
- package/dist/src/util/systems.js +41 -0
- package/dist/src/util/systems.js.map +1 -0
- package/package.json +1 -1
- package/skills/heron-audit/bin/heron-update-check +13 -4
package/dist/src/server/index.js
CHANGED
|
@@ -48,6 +48,18 @@ export async function startServer(config) {
|
|
|
48
48
|
await handleGetReport(res, sessions, reportMatch[1]);
|
|
49
49
|
return;
|
|
50
50
|
}
|
|
51
|
+
// REST: POST compare (upload previous report for diff)
|
|
52
|
+
const postCompareMatch = url.pathname.match(/^\/api\/sessions\/([^/]+)\/compare$/);
|
|
53
|
+
if (postCompareMatch && req.method === 'POST') {
|
|
54
|
+
await handlePostCompare(req, res, sessions, postCompareMatch[1]);
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
// HTML: compare page (rendered diff)
|
|
58
|
+
const comparePageMatch = url.pathname.match(/^\/sessions\/([^/]+)\/compare$/);
|
|
59
|
+
if (comparePageMatch && req.method === 'GET') {
|
|
60
|
+
await handleComparePage(res, sessions, comparePageMatch[1]);
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
51
63
|
// Favicon
|
|
52
64
|
if (url.pathname === '/favicon.svg') {
|
|
53
65
|
res.writeHead(200, { 'Content-Type': 'image/svg+xml', 'Cache-Control': 'public, max-age=86400' });
|
|
@@ -77,53 +89,56 @@ export async function startServer(config) {
|
|
|
77
89
|
json(res, 500, { error: 'Internal server error' });
|
|
78
90
|
}
|
|
79
91
|
});
|
|
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
|
-
|
|
92
|
+
return new Promise((resolve) => {
|
|
93
|
+
server.listen(config.port, config.host, () => {
|
|
94
|
+
const baseUrl = `http://localhost:${config.port}`;
|
|
95
|
+
logger.raw('');
|
|
96
|
+
logger.raw(` \x1b[1mHeron Server\x1b[0m`);
|
|
97
|
+
logger.raw('');
|
|
98
|
+
logger.raw(` Dashboard: ${baseUrl}`);
|
|
99
|
+
logger.raw(` Agent URL: ${baseUrl}/v1/chat/completions`);
|
|
100
|
+
logger.raw(` Reports: ${config.reportDir}`);
|
|
101
|
+
logger.raw('');
|
|
102
|
+
logger.raw(` \x1b[1mHow to connect an agent:\x1b[0m`);
|
|
103
|
+
logger.raw('');
|
|
104
|
+
logger.raw(' Option 1 — Paste this prompt into your agent\'s chat:');
|
|
105
|
+
logger.raw('');
|
|
106
|
+
logger.raw(' ┌──────────────────────────────────────────────────────────────────────');
|
|
107
|
+
logger.raw(' │ I need you to complete a security access review for this project.');
|
|
108
|
+
logger.raw(' │ Make sequential API calls to the Heron endpoint until it says');
|
|
109
|
+
logger.raw(' │ "Interview complete".');
|
|
110
|
+
logger.raw(' │');
|
|
111
|
+
logger.raw(' │ Step 1 — Start the interview:');
|
|
112
|
+
logger.raw(` │ POST ${baseUrl}/v1/chat/completions`);
|
|
113
|
+
logger.raw(' │ Body: {"model":"any","messages":[{"role":"user",');
|
|
114
|
+
logger.raw(' │ "content":"Hi, I am ready to answer questions about this project."}]}');
|
|
115
|
+
logger.raw(' │');
|
|
116
|
+
logger.raw(' │ The response will contain a question and a session ID');
|
|
117
|
+
logger.raw(' │ (in the text and in the "heron_session_id" JSON field).');
|
|
118
|
+
logger.raw(' │');
|
|
119
|
+
logger.raw(' │ Step 2 — Send each answer:');
|
|
120
|
+
logger.raw(` │ POST ${baseUrl}/v1/chat/completions`);
|
|
121
|
+
logger.raw(' │ Body: {"model":"any","messages":[{"role":"user",');
|
|
122
|
+
logger.raw(' │ "content":"YOUR ANSWER HERE"}],');
|
|
123
|
+
logger.raw(' │ "heron_session_id":"SESSION_ID_FROM_STEP_1"}');
|
|
124
|
+
logger.raw(' │');
|
|
125
|
+
logger.raw(' │ Step 3 — Repeat step 2 with each new answer until the response');
|
|
126
|
+
logger.raw(' │ says "Interview complete".');
|
|
127
|
+
logger.raw(' │');
|
|
128
|
+
logger.raw(' │ Important: answer about THIS specific project — what you actually');
|
|
129
|
+
logger.raw(' │ do, what systems you connect to, what data you handle. Not general');
|
|
130
|
+
logger.raw(' │ capabilities. Never reveal actual secret values — just describe');
|
|
131
|
+
logger.raw(' │ credential types.');
|
|
132
|
+
logger.raw(' └──────────────────────────────────────────────────────────────────────');
|
|
133
|
+
logger.raw('');
|
|
134
|
+
logger.raw(' Option 2 — Set OPENAI_BASE_URL:');
|
|
135
|
+
logger.raw('');
|
|
136
|
+
logger.raw(` OPENAI_BASE_URL=${baseUrl}/v1 python your_agent.py`);
|
|
137
|
+
logger.raw('');
|
|
138
|
+
logger.success('Ready — waiting for agents to connect...');
|
|
139
|
+
logger.raw('');
|
|
140
|
+
resolve(server);
|
|
141
|
+
});
|
|
127
142
|
});
|
|
128
143
|
}
|
|
129
144
|
/** Extract session ID from assistant messages in conversation history */
|
|
@@ -239,6 +254,7 @@ async function handleListSessions(res, sessions) {
|
|
|
239
254
|
createdAt: s.createdAt.toISOString(),
|
|
240
255
|
updatedAt: s.updatedAt.toISOString(),
|
|
241
256
|
riskLevel: s.reportJson?.overallRiskLevel ?? null,
|
|
257
|
+
hasDiff: sessions.hasDiff(s.id),
|
|
242
258
|
}));
|
|
243
259
|
json(res, 200, { sessions: list });
|
|
244
260
|
}
|
|
@@ -336,7 +352,16 @@ const SHARED_CSS = `
|
|
|
336
352
|
.report-rendered { background: #fff; border: 1px solid #e5e7eb; border-radius: 8px; padding: 32px; line-height: 1.6; }
|
|
337
353
|
.report-rendered h1 { font-size: 1.5em; border-bottom: 2px solid #e5e7eb; padding-bottom: 8px; }
|
|
338
354
|
.report-rendered h2 { font-size: 1.2em; margin-top: 28px; border-bottom: 1px solid #f0f0f0; padding-bottom: 6px; color: #1e293b; }
|
|
339
|
-
|
|
355
|
+
/*
|
|
356
|
+
Long unbreakable tokens in cells (e.g. an OAuth scope URL inside a
|
|
357
|
+
finding description) used to push the Description column wide enough
|
|
358
|
+
to squeeze the Finding column down to one word per line. table-layout
|
|
359
|
+
fixed allocates columns proportionally regardless of content; the
|
|
360
|
+
overflow-wrap rule lets long URLs break mid-word so they fit the
|
|
361
|
+
allocated width.
|
|
362
|
+
*/
|
|
363
|
+
.report-rendered table { margin: 12px 0; font-size: 0.9em; table-layout: fixed; }
|
|
364
|
+
.report-rendered table th, .report-rendered table td { overflow-wrap: anywhere; word-break: break-word; vertical-align: top; }
|
|
340
365
|
.report-rendered p { margin: 8px 0; }
|
|
341
366
|
.report-rendered strong { color: #0f172a; }
|
|
342
367
|
.report-rendered hr { border: none; border-top: 1px solid #e5e7eb; margin: 24px 0; }
|
|
@@ -367,17 +392,25 @@ function markdownToHtml(md) {
|
|
|
367
392
|
let html = escapeHtml(md);
|
|
368
393
|
// Horizontal rules
|
|
369
394
|
html = html.replace(/^---$/gm, '<hr>');
|
|
370
|
-
// Headers
|
|
395
|
+
// Headers (most specific first — #### before ### before ## before #)
|
|
396
|
+
html = html.replace(/^#### (.+)$/gm, '<h4>$1</h4>');
|
|
371
397
|
html = html.replace(/^### (.+)$/gm, '<h3>$1</h3>');
|
|
372
398
|
html = html.replace(/^## (.+)$/gm, '<h2>$1</h2>');
|
|
373
399
|
html = html.replace(/^# (.+)$/gm, '<h1>$1</h1>');
|
|
374
400
|
// Bold
|
|
375
401
|
html = html.replace(/\*\*\[([A-Z]+)\]\s*(.+?)\*\*/g, '<strong>[$1] $2</strong>');
|
|
376
402
|
html = html.replace(/\*\*(.+?)\*\*/g, '<strong>$1</strong>');
|
|
377
|
-
// Details/summary
|
|
403
|
+
// Details/summary + safe inline tags inside them.
|
|
404
|
+
// The Top-3 + "Additional findings" block in templates.ts wraps the
|
|
405
|
+
// summary label in <strong>, e.g. "<summary><strong>Additional findings
|
|
406
|
+
// (2)</strong></summary>". escapeHtml() above turned the inner <strong>
|
|
407
|
+
// into <strong>, which used to leak into the rendered HTML as
|
|
408
|
+
// literal text. Unescape these inline tags too — they are the only HTML
|
|
409
|
+
// we ever emit from the markdown templates, so a global pass is safe.
|
|
378
410
|
html = html.replace(/<details>/g, '<details>');
|
|
379
411
|
html = html.replace(/<\/details>/g, '</details>');
|
|
380
|
-
html = html.replace(/<summary>(
|
|
412
|
+
html = html.replace(/<summary>([\s\S]+?)<\/summary>/g, '<summary>$1</summary>');
|
|
413
|
+
html = html.replace(/<(\/?)(strong|em)>/g, '<$1$2>');
|
|
381
414
|
// Tables
|
|
382
415
|
html = html.replace(/((?:^\|.+\|$\n?)+)/gm, (tableBlock) => {
|
|
383
416
|
const rows = tableBlock.trim().split('\n').filter(r => !r.match(/^\|[\s\-:|]+\|$/));
|
|
@@ -445,6 +478,22 @@ async function handleSessionPage(req, res, sessions, id) {
|
|
|
445
478
|
: session.status === 'error'
|
|
446
479
|
? `<h2>Report</h2><p class="error-msg">Error: ${escapeHtml(session.error ?? 'Unknown error')}</p>`
|
|
447
480
|
: '';
|
|
481
|
+
const compareSection = session.status === 'complete' && session.report
|
|
482
|
+
? sessions.hasDiff(id)
|
|
483
|
+
? `<h2>Comparison</h2>
|
|
484
|
+
<p>This session has been compared against a previous report.</p>
|
|
485
|
+
<div class="report-actions">
|
|
486
|
+
<a href="/sessions/${id}/compare" class="btn">View diff</a>
|
|
487
|
+
<button onclick="document.getElementById('compare-upload').click()" class="btn btn-outline">Replace — upload a different previous report</button>
|
|
488
|
+
</div>
|
|
489
|
+
<input type="file" id="compare-upload" accept=".md,.markdown,text/markdown" style="display:none" onchange="uploadCompare(this)">`
|
|
490
|
+
: `<h2>Compare to previous report</h2>
|
|
491
|
+
<p>Upload an older Heron audit report (markdown) to see what changed.</p>
|
|
492
|
+
<div class="report-actions">
|
|
493
|
+
<button onclick="document.getElementById('compare-upload').click()" class="btn">📁 Upload previous report (.md)</button>
|
|
494
|
+
</div>
|
|
495
|
+
<input type="file" id="compare-upload" accept=".md,.markdown,text/markdown" style="display:none" onchange="uploadCompare(this)">`
|
|
496
|
+
: '';
|
|
448
497
|
const html = `<!DOCTYPE html>
|
|
449
498
|
<html>
|
|
450
499
|
<head><title>Heron</title>${FAVICON_LINK}
|
|
@@ -458,6 +507,13 @@ async function handleSessionPage(req, res, sessions, id) {
|
|
|
458
507
|
<h2>Session <code>${id}</code> <span class="badge badge-${session.status}" id="session-status">${session.status}</span> ${riskBadge}</h2>
|
|
459
508
|
<div class="meta" id="session-meta">${session.questionsAsked} questions · started ${session.createdAt.toISOString().slice(0, 19).replace('T', ' ')} UTC</div>
|
|
460
509
|
|
|
510
|
+
<!--
|
|
511
|
+
UI ordering (2026-04-25): Compare-to-previous-report sits ABOVE the
|
|
512
|
+
rendered report. The compare CTA is short and discoverable; if it
|
|
513
|
+
sat below the long report a reader would have to scroll past the
|
|
514
|
+
entire findings table to find the upload button.
|
|
515
|
+
-->
|
|
516
|
+
<div id="compare-section">${compareSection}</div>
|
|
461
517
|
<div id="report-section">${reportSection}</div>
|
|
462
518
|
|
|
463
519
|
<h2>Interview Transcript (<span id="qa-count">${transcript.length}</span> Q&A)</h2>
|
|
@@ -484,6 +540,30 @@ async function handleSessionPage(req, res, sessions, id) {
|
|
|
484
540
|
}, 3000);
|
|
485
541
|
})();
|
|
486
542
|
</script>` : ''}
|
|
543
|
+
${session.status === 'complete' ? `<script>
|
|
544
|
+
function uploadCompare(input) {
|
|
545
|
+
var file = input.files[0];
|
|
546
|
+
if (!file) return;
|
|
547
|
+
if (file.size > 128 * 1024) {
|
|
548
|
+
alert('File too large (max 128 KB)');
|
|
549
|
+
input.value = '';
|
|
550
|
+
return;
|
|
551
|
+
}
|
|
552
|
+
var reader = new FileReader();
|
|
553
|
+
reader.onload = function(e) {
|
|
554
|
+
fetch('/api/sessions/${id}/compare', {
|
|
555
|
+
method: 'POST',
|
|
556
|
+
headers: { 'Content-Type': 'text/markdown' },
|
|
557
|
+
body: e.target.result,
|
|
558
|
+
}).then(function(r) {
|
|
559
|
+
if (r.redirected) { window.location = r.url; return; }
|
|
560
|
+
if (r.ok) { window.location = '/sessions/${id}/compare'; return; }
|
|
561
|
+
return r.json().then(function(d) { alert('Upload failed: ' + (d.error || 'unknown')); });
|
|
562
|
+
}).catch(function(err) { alert('Upload error: ' + err.message); });
|
|
563
|
+
};
|
|
564
|
+
reader.readAsText(file);
|
|
565
|
+
}
|
|
566
|
+
</script>` : ''}
|
|
487
567
|
</body>
|
|
488
568
|
</html>`;
|
|
489
569
|
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8', 'X-Content-Type-Options': 'nosniff' });
|
|
@@ -508,13 +588,14 @@ async function handleLanding(res, sessions, host) {
|
|
|
508
588
|
<div id="sessions-table">${activeSessions.length === 0
|
|
509
589
|
? '<div class="empty"><p>No sessions yet.</p><p>Connect an agent to <code>/v1/chat/completions</code> to start an interview.</p></div>'
|
|
510
590
|
: `<table>
|
|
511
|
-
<thead><tr><th>Session</th><th>Status</th><th>Questions</th><th>Risk</th><th>Started</th></tr></thead>
|
|
591
|
+
<thead><tr><th>Session</th><th>Status</th><th>Questions</th><th>Risk</th><th>Compare</th><th>Started</th></tr></thead>
|
|
512
592
|
<tbody>
|
|
513
593
|
${activeSessions.map(s => `<tr data-id="${s.id}">
|
|
514
594
|
<td><a href="/sessions/${s.id}"><code>${s.id}</code></a></td>
|
|
515
595
|
<td><span class="badge badge-${s.status}">${s.status}</span></td>
|
|
516
596
|
<td>${s.questionsAsked}</td>
|
|
517
597
|
<td>${s.reportJson?.overallRiskLevel ? `<span class="risk risk-${s.reportJson.overallRiskLevel}">${s.reportJson.overallRiskLevel.toUpperCase()}</span>` : '—'}</td>
|
|
598
|
+
<td>${sessions.hasDiff(s.id) ? `<a href="/sessions/${s.id}/compare">compare</a>` : '—'}</td>
|
|
518
599
|
<td>${s.createdAt.toISOString().slice(0, 19).replace('T', ' ')}</td>
|
|
519
600
|
</tr>`).join('')}
|
|
520
601
|
</tbody>
|
|
@@ -554,6 +635,8 @@ Important: answer about THIS specific project — what you actually do, what sys
|
|
|
554
635
|
<tr><td><code>GET /api/sessions</code></td><td>List all sessions (JSON)</td></tr>
|
|
555
636
|
<tr><td><code>GET /api/sessions/:id</code></td><td>Session details + transcript</td></tr>
|
|
556
637
|
<tr><td><code>GET /api/sessions/:id/report</code></td><td>Download audit report (markdown)</td></tr>
|
|
638
|
+
<tr><td><code>POST /api/sessions/:id/compare</code></td><td>Upload previous report, generate diff</td></tr>
|
|
639
|
+
<tr><td><code>GET /sessions/:id/compare</code></td><td>View diff (HTML)</td></tr>
|
|
557
640
|
</tbody>
|
|
558
641
|
</table>
|
|
559
642
|
|
|
@@ -582,7 +665,7 @@ Important: answer about THIS specific project — what you actually do, what sys
|
|
|
582
665
|
var hasActive = sessions.some(function(s) { return s.status === 'interviewing' || s.status === 'analyzing'; });
|
|
583
666
|
var tbody = table.querySelector('tbody');
|
|
584
667
|
if (!tbody) {
|
|
585
|
-
table.innerHTML = '<table><thead><tr><th>Session</th><th>Status</th><th>Questions</th><th>Risk</th><th>Started</th></tr></thead><tbody></tbody></table>';
|
|
668
|
+
table.innerHTML = '<table><thead><tr><th>Session</th><th>Status</th><th>Questions</th><th>Risk</th><th>Compare</th><th>Started</th></tr></thead><tbody></tbody></table>';
|
|
586
669
|
tbody = table.querySelector('tbody');
|
|
587
670
|
}
|
|
588
671
|
sessions.forEach(function(s) {
|
|
@@ -590,14 +673,15 @@ Important: answer about THIS specific project — what you actually do, what sys
|
|
|
590
673
|
if (!row) {
|
|
591
674
|
row = document.createElement('tr');
|
|
592
675
|
row.setAttribute('data-id', s.id);
|
|
593
|
-
row.innerHTML = '<td><a href="/sessions/' + s.id + '"><code>' + s.id + '</code></a></td><td></td><td></td><td></td><td></td>';
|
|
676
|
+
row.innerHTML = '<td><a href="/sessions/' + s.id + '"><code>' + s.id + '</code></a></td><td></td><td></td><td></td><td></td><td></td>';
|
|
594
677
|
tbody.insertBefore(row, tbody.firstChild);
|
|
595
678
|
}
|
|
596
679
|
var cells = row.querySelectorAll('td');
|
|
597
680
|
cells[1].innerHTML = '<span class="badge badge-' + s.status + '">' + s.status + '</span>';
|
|
598
681
|
cells[2].textContent = s.questionsAsked;
|
|
599
682
|
cells[3].innerHTML = s.riskLevel ? '<span class="risk risk-' + s.riskLevel + '">' + s.riskLevel.toUpperCase() + '</span>' : '\\u2014';
|
|
600
|
-
cells[4].
|
|
683
|
+
cells[4].innerHTML = s.hasDiff ? '<a href="/sessions/' + s.id + '/compare">compare</a>' : '\\u2014';
|
|
684
|
+
cells[5].textContent = s.createdAt.slice(0,19).replace('T',' ');
|
|
601
685
|
});
|
|
602
686
|
if (!hasActive) clearInterval(polling);
|
|
603
687
|
}).catch(function() {});
|
|
@@ -609,6 +693,79 @@ Important: answer about THIS specific project — what you actually do, what sys
|
|
|
609
693
|
res.writeHead(200, { 'Content-Type': 'text/html; charset=utf-8', 'X-Content-Type-Options': 'nosniff' });
|
|
610
694
|
res.end(html);
|
|
611
695
|
}
|
|
696
|
+
// ─── Compare handlers (AAP-32) ────────────────────────────────────────────
|
|
697
|
+
const MAX_COMPARE_BODY_BYTES = 128 * 1024;
|
|
698
|
+
async function handlePostCompare(req, res, sessions, sessionId) {
|
|
699
|
+
// Stream-read the body with size cap.
|
|
700
|
+
const chunks = [];
|
|
701
|
+
let total = 0;
|
|
702
|
+
let oversize = false;
|
|
703
|
+
for await (const chunk of req) {
|
|
704
|
+
const buf = chunk;
|
|
705
|
+
total += buf.length;
|
|
706
|
+
if (total > MAX_COMPARE_BODY_BYTES) {
|
|
707
|
+
oversize = true;
|
|
708
|
+
req.resume(); // drain remaining chunks so the socket can be reused
|
|
709
|
+
break;
|
|
710
|
+
}
|
|
711
|
+
chunks.push(buf);
|
|
712
|
+
}
|
|
713
|
+
if (oversize) {
|
|
714
|
+
json(res, 413, { error: `Upload exceeds ${MAX_COMPARE_BODY_BYTES} byte limit` });
|
|
715
|
+
return;
|
|
716
|
+
}
|
|
717
|
+
const uploaded = Buffer.concat(chunks).toString('utf-8');
|
|
718
|
+
if (!uploaded.trim()) {
|
|
719
|
+
json(res, 400, { error: 'Empty upload' });
|
|
720
|
+
return;
|
|
721
|
+
}
|
|
722
|
+
const session = sessions.getSession(sessionId);
|
|
723
|
+
if (!session) {
|
|
724
|
+
json(res, 404, { error: 'Session not found' });
|
|
725
|
+
return;
|
|
726
|
+
}
|
|
727
|
+
if (session.status !== 'complete' || !session.report) {
|
|
728
|
+
json(res, 409, { error: `Session ${sessionId} has no report yet (status: ${session.status})` });
|
|
729
|
+
return;
|
|
730
|
+
}
|
|
731
|
+
try {
|
|
732
|
+
await sessions.compareWithUpload(sessionId, uploaded);
|
|
733
|
+
res.writeHead(303, { Location: `/sessions/${sessionId}/compare` });
|
|
734
|
+
res.end();
|
|
735
|
+
}
|
|
736
|
+
catch (err) {
|
|
737
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
738
|
+
logger.error(`Compare failed for ${sessionId}: ${msg}`);
|
|
739
|
+
json(res, 500, { error: msg });
|
|
740
|
+
}
|
|
741
|
+
}
|
|
742
|
+
async function handleComparePage(res, sessions, sessionId) {
|
|
743
|
+
const diff = sessions.getDiffContent(sessionId);
|
|
744
|
+
if (!diff) {
|
|
745
|
+
json(res, 404, {
|
|
746
|
+
error: 'No diff exists for this session. Upload a previous report first.',
|
|
747
|
+
});
|
|
748
|
+
return;
|
|
749
|
+
}
|
|
750
|
+
const html = `<!DOCTYPE html>
|
|
751
|
+
<html>
|
|
752
|
+
<head><title>Diff — ${sessionId}</title>${FAVICON_LINK}
|
|
753
|
+
<style>${SHARED_CSS}</style>
|
|
754
|
+
</head>
|
|
755
|
+
<body>
|
|
756
|
+
<div class="header">${HERON_LOGO}<h1>Heron</h1></div>
|
|
757
|
+
<p style="margin: 0 0 24px 0;"><a href="/sessions/${sessionId}">← Back to session ${sessionId}</a></p>
|
|
758
|
+
<h2>Report Comparison</h2>
|
|
759
|
+
<div class="report-rendered">${markdownToHtml(diff)}</div>
|
|
760
|
+
<div class="footer">Powered by <a href="https://github.com/theonaai/Heron">Heron</a> — open-source agent checkpoint</div>
|
|
761
|
+
</body>
|
|
762
|
+
</html>`;
|
|
763
|
+
res.writeHead(200, {
|
|
764
|
+
'Content-Type': 'text/html; charset=utf-8',
|
|
765
|
+
'X-Content-Type-Options': 'nosniff',
|
|
766
|
+
});
|
|
767
|
+
res.end(html);
|
|
768
|
+
}
|
|
612
769
|
function escapeHtml(s) {
|
|
613
770
|
return s.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
614
771
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -62,6 +62,16 @@ export declare class SessionManager {
|
|
|
62
62
|
}>;
|
|
63
63
|
getSession(id: string): Session | undefined;
|
|
64
64
|
listSessions(): Session[];
|
|
65
|
+
/**
|
|
66
|
+
* Diff an uploaded markdown report against this session's current report.
|
|
67
|
+
* Writes `${reportDir}/${sessionId}-diff.md` and returns the diff markdown.
|
|
68
|
+
* Overwrites any previous diff for this session.
|
|
69
|
+
*/
|
|
70
|
+
compareWithUpload(sessionId: string, uploadedMd: string): Promise<string>;
|
|
71
|
+
/** Cheap existence check used by landing page + session page. */
|
|
72
|
+
hasDiff(sessionId: string): boolean;
|
|
73
|
+
/** Read the saved diff markdown for a session, or null if none. */
|
|
74
|
+
getDiffContent(sessionId: string): string | null;
|
|
65
75
|
private getNextQuestion;
|
|
66
76
|
private finishSession;
|
|
67
77
|
private logEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/server/sessions.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/server/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAiC,KAAK,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAKjG,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAe,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAKnE,MAAM,MAAM,aAAa,GAAG,cAAc,GAAG,WAAW,GAAG,UAAU,GAAG,OAAO,CAAC;AAEhF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,UAAU,GAAG,QAAQ,GAAG,UAAU,GAAG,kBAAkB,GAAG,gBAAgB,GAAG,mBAAmB,GAAG,OAAO,CAAC;IACjH,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,MAAM,WAAW,OAAO;IACtB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,sEAAsE;IACtE,eAAe,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC1C,wEAAwE;IACxE,YAAY,EAAE,MAAM,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC;IACxC,kFAAkF;IAClF,aAAa,EAAE,OAAO,CAAC;IACvB,+DAA+D;IAC/D,aAAa,EAAE,iBAAiB,EAAE,CAAC;IACnC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,UAAU,EAAE,WAAW,GAAG,IAAI,CAAC;IAC/B,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,uDAAuD;IACvD,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;GAGG;AACH,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,SAAS,CAAqB;gBAE1B,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAM7F,yDAAyD;IACzD,aAAa,IAAI;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE;IAkC5D,6EAA6E;IACvE,aAAa,CACjB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC;QAAE,IAAI,EAAE,KAAK,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,WAAW,CAAA;KAAE,GAAG;QAAE,IAAI,EAAE,IAAI,CAAC;QAAC,SAAS,EAAE,IAAI,CAAA;KAAE,CAAC;IAiEzI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,YAAY,IAAI,OAAO,EAAE;IAIzB;;;;OAIG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAqB/E,iEAAiE;IACjE,OAAO,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAKnC,mEAAmE;IACnE,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;YAOlC,eAAe;YA4Bf,aAAa;IA8F3B,OAAO,CAAC,QAAQ;CAOjB"}
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
import { existsSync, writeFileSync, mkdirSync, readFileSync } from 'node:fs';
|
|
1
2
|
import { generateId } from '../util/id.js';
|
|
2
3
|
import { createProtocol, isStaleAnswer } from '../interview/protocol.js';
|
|
3
4
|
import { analyzeTranscript } from '../analysis/analyzer.js';
|
|
4
|
-
import { computeRiskScore } from '../analysis/risk-scorer.js';
|
|
5
|
-
import {
|
|
5
|
+
import { computeRiskScore, applySeverityOverrides } from '../analysis/risk-scorer.js';
|
|
6
|
+
import { mapFindingsToRiskCategories } from '../compliance/mapper.js';
|
|
6
7
|
import { renderMarkdownReport } from '../report/templates.js';
|
|
7
8
|
import * as logger from '../util/logger.js';
|
|
9
|
+
import { diffReports } from '../diff/differ.js';
|
|
10
|
+
import { isProvided } from '../util/provided.js';
|
|
8
11
|
/**
|
|
9
12
|
* Manages interrogation sessions for server mode.
|
|
10
13
|
* Each agent that connects gets its own session with its own interview state.
|
|
@@ -117,6 +120,42 @@ export class SessionManager {
|
|
|
117
120
|
listSessions() {
|
|
118
121
|
return Array.from(this.sessions.values());
|
|
119
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Diff an uploaded markdown report against this session's current report.
|
|
125
|
+
* Writes `${reportDir}/${sessionId}-diff.md` and returns the diff markdown.
|
|
126
|
+
* Overwrites any previous diff for this session.
|
|
127
|
+
*/
|
|
128
|
+
async compareWithUpload(sessionId, uploadedMd) {
|
|
129
|
+
const session = this.sessions.get(sessionId);
|
|
130
|
+
if (!session)
|
|
131
|
+
throw new Error(`Session not found: ${sessionId}`);
|
|
132
|
+
if (session.status !== 'complete' || !session.report) {
|
|
133
|
+
throw new Error(`Session ${sessionId} has no report yet (status: ${session.status})`);
|
|
134
|
+
}
|
|
135
|
+
if (!this.reportDir) {
|
|
136
|
+
throw new Error('Server has no reportDir configured; cannot save diff');
|
|
137
|
+
}
|
|
138
|
+
const diff = await diffReports(uploadedMd, session.report, this.llmClient);
|
|
139
|
+
mkdirSync(this.reportDir, { recursive: true });
|
|
140
|
+
const diffPath = `${this.reportDir}/${sessionId}-diff.md`;
|
|
141
|
+
writeFileSync(diffPath, diff, 'utf-8');
|
|
142
|
+
return diff;
|
|
143
|
+
}
|
|
144
|
+
/** Cheap existence check used by landing page + session page. */
|
|
145
|
+
hasDiff(sessionId) {
|
|
146
|
+
if (!this.reportDir)
|
|
147
|
+
return false;
|
|
148
|
+
return existsSync(`${this.reportDir}/${sessionId}-diff.md`);
|
|
149
|
+
}
|
|
150
|
+
/** Read the saved diff markdown for a session, or null if none. */
|
|
151
|
+
getDiffContent(sessionId) {
|
|
152
|
+
if (!this.reportDir)
|
|
153
|
+
return null;
|
|
154
|
+
const path = `${this.reportDir}/${sessionId}-diff.md`;
|
|
155
|
+
if (!existsSync(path))
|
|
156
|
+
return null;
|
|
157
|
+
return readFileSync(path, 'utf-8');
|
|
158
|
+
}
|
|
120
159
|
async getNextQuestion(session) {
|
|
121
160
|
// Drain the question queue first (clean replacement for monkey-patching)
|
|
122
161
|
if (session.questionQueue.length > 0) {
|
|
@@ -145,10 +184,17 @@ export class SessionManager {
|
|
|
145
184
|
this.logEvent(session, 'analysis_start', {});
|
|
146
185
|
try {
|
|
147
186
|
const transcript = session.protocol.getTranscript();
|
|
148
|
-
const
|
|
149
|
-
|
|
187
|
+
const analysis = await analyzeTranscript(this.llmClient, transcript, session.id);
|
|
188
|
+
analysis.risks = applySeverityOverrides(analysis.risks, analysis.systems, analysis.makesDecisionsAboutPeople);
|
|
189
|
+
// AAP-43 P1 #6: compute DQ AFTER analysis so we can penalize extracted NOT_PROVIDED
|
|
190
|
+
const dataQuality = computeDataQuality(transcript, analysis.systems);
|
|
150
191
|
const riskScore = computeRiskScore(analysis.systems, analysis.risks);
|
|
151
|
-
const
|
|
192
|
+
const compliance = mapFindingsToRiskCategories({
|
|
193
|
+
systems: analysis.systems,
|
|
194
|
+
transcript,
|
|
195
|
+
makesDecisionsAboutPeople: analysis.makesDecisionsAboutPeople,
|
|
196
|
+
decisionMakingDetails: analysis.decisionMakingDetails,
|
|
197
|
+
});
|
|
152
198
|
const reportJson = {
|
|
153
199
|
summary: analysis.summary,
|
|
154
200
|
agentPurpose: analysis.agentPurpose,
|
|
@@ -165,7 +211,7 @@ export class SessionManager {
|
|
|
165
211
|
dataQuality,
|
|
166
212
|
makesDecisionsAboutPeople: analysis.makesDecisionsAboutPeople,
|
|
167
213
|
decisionMakingDetails: analysis.decisionMakingDetails,
|
|
168
|
-
|
|
214
|
+
compliance,
|
|
169
215
|
metadata: {
|
|
170
216
|
date: session.createdAt.toISOString().split('T')[0],
|
|
171
217
|
target: `session:${session.id}`,
|
|
@@ -224,7 +270,7 @@ export class SessionManager {
|
|
|
224
270
|
}
|
|
225
271
|
// ─── Data Quality Computation ────────────────────────────────────────────────
|
|
226
272
|
/** Compute data quality metrics from the interview transcript */
|
|
227
|
-
function computeDataQuality(transcript) {
|
|
273
|
+
function computeDataQuality(transcript, systems) {
|
|
228
274
|
const totalQuestions = transcript.length;
|
|
229
275
|
// Count repeated/canned answers
|
|
230
276
|
const repeatedAnswers = transcript.filter(qa => qa.answer.startsWith('[REPEATED RESPONSE]')).length;
|
|
@@ -255,10 +301,28 @@ function computeDataQuality(transcript) {
|
|
|
255
301
|
fieldsMissing.push(field);
|
|
256
302
|
}
|
|
257
303
|
}
|
|
258
|
-
// Score: percentage of fields provided, penalized by repeats
|
|
304
|
+
// Score: percentage of fields provided, penalized by repeats + extraction gaps
|
|
259
305
|
const fieldScore = (fieldsProvided.length / Object.keys(fieldChecks).length) * 100;
|
|
260
306
|
const repeatPenalty = (repeatedAnswers / Math.max(totalQuestions, 1)) * 50;
|
|
261
|
-
|
|
307
|
+
// AAP-43 P1 #6: penalty for NOT_PROVIDED fields in extracted systems
|
|
308
|
+
let notProvidedPenalty = 0;
|
|
309
|
+
if (systems) {
|
|
310
|
+
let gaps = 0;
|
|
311
|
+
for (const s of systems) {
|
|
312
|
+
if (!isProvided(s.dataSensitivity))
|
|
313
|
+
gaps++;
|
|
314
|
+
if (!isProvided(s.frequencyAndVolume))
|
|
315
|
+
gaps++;
|
|
316
|
+
if (s.scopesRequested.length === 0 || !s.scopesRequested.some(isProvided))
|
|
317
|
+
gaps++;
|
|
318
|
+
for (const w of s.writeOperations) {
|
|
319
|
+
if (!isProvided(w.volumePerDay))
|
|
320
|
+
gaps++;
|
|
321
|
+
}
|
|
322
|
+
}
|
|
323
|
+
notProvidedPenalty = Math.min(50, gaps * 8);
|
|
324
|
+
}
|
|
325
|
+
const score = Math.max(0, Math.min(100, Math.round(fieldScore - repeatPenalty - notProvidedPenalty)));
|
|
262
326
|
return {
|
|
263
327
|
score,
|
|
264
328
|
uniqueAnswers,
|