heron-ai 0.1.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +423 -0
  3. package/dist/bin/heron.d.ts +3 -0
  4. package/dist/bin/heron.d.ts.map +1 -0
  5. package/dist/bin/heron.js +198 -0
  6. package/dist/bin/heron.js.map +1 -0
  7. package/dist/src/analysis/analyzer.d.ts +14 -0
  8. package/dist/src/analysis/analyzer.d.ts.map +1 -0
  9. package/dist/src/analysis/analyzer.js +130 -0
  10. package/dist/src/analysis/analyzer.js.map +1 -0
  11. package/dist/src/analysis/risk-scorer.d.ts +20 -0
  12. package/dist/src/analysis/risk-scorer.d.ts.map +1 -0
  13. package/dist/src/analysis/risk-scorer.js +143 -0
  14. package/dist/src/analysis/risk-scorer.js.map +1 -0
  15. package/dist/src/config/loader.d.ts +15 -0
  16. package/dist/src/config/loader.d.ts.map +1 -0
  17. package/dist/src/config/loader.js +39 -0
  18. package/dist/src/config/loader.js.map +1 -0
  19. package/dist/src/config/schema.d.ts +146 -0
  20. package/dist/src/config/schema.d.ts.map +1 -0
  21. package/dist/src/config/schema.js +27 -0
  22. package/dist/src/config/schema.js.map +1 -0
  23. package/dist/src/connectors/http-connector.d.ts +17 -0
  24. package/dist/src/connectors/http-connector.d.ts.map +1 -0
  25. package/dist/src/connectors/http-connector.js +56 -0
  26. package/dist/src/connectors/http-connector.js.map +1 -0
  27. package/dist/src/connectors/index.d.ts +5 -0
  28. package/dist/src/connectors/index.d.ts.map +1 -0
  29. package/dist/src/connectors/index.js +13 -0
  30. package/dist/src/connectors/index.js.map +1 -0
  31. package/dist/src/connectors/interactive-connector.d.ts +13 -0
  32. package/dist/src/connectors/interactive-connector.d.ts.map +1 -0
  33. package/dist/src/connectors/interactive-connector.js +44 -0
  34. package/dist/src/connectors/interactive-connector.js.map +1 -0
  35. package/dist/src/connectors/types.d.ts +15 -0
  36. package/dist/src/connectors/types.d.ts.map +1 -0
  37. package/dist/src/connectors/types.js +2 -0
  38. package/dist/src/connectors/types.js.map +1 -0
  39. package/dist/src/index.d.ts +12 -0
  40. package/dist/src/index.d.ts.map +1 -0
  41. package/dist/src/index.js +60 -0
  42. package/dist/src/index.js.map +1 -0
  43. package/dist/src/interview/interviewer.d.ts +19 -0
  44. package/dist/src/interview/interviewer.d.ts.map +1 -0
  45. package/dist/src/interview/interviewer.js +68 -0
  46. package/dist/src/interview/interviewer.js.map +1 -0
  47. package/dist/src/interview/protocol.d.ts +38 -0
  48. package/dist/src/interview/protocol.d.ts.map +1 -0
  49. package/dist/src/interview/protocol.js +290 -0
  50. package/dist/src/interview/protocol.js.map +1 -0
  51. package/dist/src/interview/questions.d.ts +20 -0
  52. package/dist/src/interview/questions.d.ts.map +1 -0
  53. package/dist/src/interview/questions.js +131 -0
  54. package/dist/src/interview/questions.js.map +1 -0
  55. package/dist/src/llm/client.d.ts +13 -0
  56. package/dist/src/llm/client.d.ts.map +1 -0
  57. package/dist/src/llm/client.js +128 -0
  58. package/dist/src/llm/client.js.map +1 -0
  59. package/dist/src/llm/prompts.d.ts +13 -0
  60. package/dist/src/llm/prompts.d.ts.map +1 -0
  61. package/dist/src/llm/prompts.js +192 -0
  62. package/dist/src/llm/prompts.js.map +1 -0
  63. package/dist/src/report/generator.d.ts +23 -0
  64. package/dist/src/report/generator.d.ts.map +1 -0
  65. package/dist/src/report/generator.js +304 -0
  66. package/dist/src/report/generator.js.map +1 -0
  67. package/dist/src/report/templates.d.ts +3 -0
  68. package/dist/src/report/templates.d.ts.map +1 -0
  69. package/dist/src/report/templates.js +386 -0
  70. package/dist/src/report/templates.js.map +1 -0
  71. package/dist/src/report/types.d.ts +954 -0
  72. package/dist/src/report/types.d.ts.map +1 -0
  73. package/dist/src/report/types.js +161 -0
  74. package/dist/src/report/types.js.map +1 -0
  75. package/dist/src/server/index.d.ts +17 -0
  76. package/dist/src/server/index.d.ts.map +1 -0
  77. package/dist/src/server/index.js +650 -0
  78. package/dist/src/server/index.js.map +1 -0
  79. package/dist/src/server/sessions.d.ts +68 -0
  80. package/dist/src/server/sessions.d.ts.map +1 -0
  81. package/dist/src/server/sessions.js +268 -0
  82. package/dist/src/server/sessions.js.map +1 -0
  83. package/dist/src/util/id.d.ts +2 -0
  84. package/dist/src/util/id.d.ts.map +1 -0
  85. package/dist/src/util/id.js +5 -0
  86. package/dist/src/util/id.js.map +1 -0
  87. package/dist/src/util/logger.d.ts +9 -0
  88. package/dist/src/util/logger.d.ts.map +1 -0
  89. package/dist/src/util/logger.js +32 -0
  90. package/dist/src/util/logger.js.map +1 -0
  91. package/heron.example.yaml +46 -0
  92. package/package.json +40 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { type InterviewProtocol } from '../interview/protocol.js';
2
+ import type { LLMClient } from '../llm/client.js';
3
+ import type { AuditReport, QAPair } from '../report/types.js';
4
+ import type { InterviewQuestion } from '../interview/questions.js';
5
+ export type SessionStatus = 'interviewing' | 'analyzing' | 'complete' | 'error';
6
+ export interface SessionEvent {
7
+ timestamp: string;
8
+ type: 'question' | 'answer' | 'followup' | 'greeting_skipped' | 'analysis_start' | 'analysis_complete' | 'error';
9
+ data: Record<string, unknown>;
10
+ }
11
+ export interface Session {
12
+ id: string;
13
+ status: SessionStatus;
14
+ protocol: InterviewProtocol;
15
+ /** The question Heron is currently waiting for the agent to answer */
16
+ pendingQuestion: InterviewQuestion | null;
17
+ /** Category of the last answered question (for follow-up generation) */
18
+ lastCategory: QAPair['category'] | null;
19
+ /** Whether we need to try generating a follow-up before the next core question */
20
+ needsFollowUp: boolean;
21
+ /** Queue of questions to ask before resuming core questions */
22
+ questionQueue: InterviewQuestion[];
23
+ report: string | null;
24
+ reportJson: AuditReport | null;
25
+ createdAt: Date;
26
+ updatedAt: Date;
27
+ questionsAsked: number;
28
+ /** Structured event log for ground truth comparison */
29
+ eventLog: SessionEvent[];
30
+ error?: string;
31
+ }
32
+ /**
33
+ * Manages interrogation sessions for server mode.
34
+ * Each agent that connects gets its own session with its own interview state.
35
+ */
36
+ export declare class SessionManager {
37
+ private sessions;
38
+ private llmClient;
39
+ private maxFollowUps;
40
+ private reportDir;
41
+ constructor(llmClient: LLMClient, options?: {
42
+ maxFollowUps?: number;
43
+ reportDir?: string;
44
+ });
45
+ /** Create a new session and return the first question */
46
+ createSession(): {
47
+ session: Session;
48
+ firstQuestion: string;
49
+ };
50
+ /** Process an agent's answer and return the next question or final result */
51
+ processAnswer(sessionId: string, answer: string): Promise<{
52
+ done: false;
53
+ question: string;
54
+ } | {
55
+ done: true;
56
+ report: string;
57
+ reportJson: AuditReport;
58
+ } | {
59
+ done: true;
60
+ analyzing: true;
61
+ }>;
62
+ getSession(id: string): Session | undefined;
63
+ listSessions(): Session[];
64
+ private getNextQuestion;
65
+ private finishSession;
66
+ private logEvent;
67
+ }
68
+ //# sourceMappingURL=sessions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../../src/server/sessions.ts"],"names":[],"mappings":"AACA,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;AAInE,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,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;IAiC5D,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;IAgEzI,UAAU,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS;IAI3C,YAAY,IAAI,OAAO,EAAE;YAKX,eAAe;YA4Bf,aAAa;IAmF3B,OAAO,CAAC,QAAQ;CAOjB"}
@@ -0,0 +1,268 @@
1
+ import { generateId } from '../util/id.js';
2
+ import { createProtocol, isStaleAnswer } from '../interview/protocol.js';
3
+ import { analyzeTranscript } from '../analysis/analyzer.js';
4
+ import { computeRiskScore } from '../analysis/risk-scorer.js';
5
+ import { computeRegulatoryFlags } from '../report/generator.js';
6
+ import { renderMarkdownReport } from '../report/templates.js';
7
+ import * as logger from '../util/logger.js';
8
+ /**
9
+ * Manages interrogation sessions for server mode.
10
+ * Each agent that connects gets its own session with its own interview state.
11
+ */
12
+ export class SessionManager {
13
+ sessions = new Map();
14
+ llmClient;
15
+ maxFollowUps;
16
+ reportDir;
17
+ constructor(llmClient, options = {}) {
18
+ this.llmClient = llmClient;
19
+ this.maxFollowUps = options.maxFollowUps ?? 6;
20
+ this.reportDir = options.reportDir;
21
+ }
22
+ /** Create a new session and return the first question */
23
+ createSession() {
24
+ const id = generateId('sess');
25
+ const protocol = createProtocol(this.llmClient, this.maxFollowUps);
26
+ const firstQ = protocol.nextQuestion();
27
+ const session = {
28
+ id,
29
+ status: 'interviewing',
30
+ protocol,
31
+ pendingQuestion: firstQ,
32
+ lastCategory: null,
33
+ needsFollowUp: false,
34
+ questionQueue: [],
35
+ report: null,
36
+ reportJson: null,
37
+ createdAt: new Date(),
38
+ updatedAt: new Date(),
39
+ questionsAsked: 0,
40
+ eventLog: [],
41
+ };
42
+ this.logEvent(session, 'question', { questionId: firstQ.id, text: firstQ.text, category: firstQ.category });
43
+ this.sessions.set(id, session);
44
+ logger.raw('');
45
+ logger.raw(` \x1b[1mNew session: ${id}\x1b[0m`);
46
+ logger.raw(` Dashboard: http://localhost:3700/sessions/${id}`);
47
+ const total = protocol.totalCoreQuestions;
48
+ logger.raw('');
49
+ logger.raw(` \x1b[36mQ1/${total}\x1b[0m \x1b[2m[${firstQ.category}]\x1b[0m`);
50
+ logger.raw(` \x1b[36mQ:\x1b[0m ${firstQ.text}`);
51
+ return { session, firstQuestion: firstQ.text };
52
+ }
53
+ /** Process an agent's answer and return the next question or final result */
54
+ async processAnswer(sessionId, answer) {
55
+ const session = this.sessions.get(sessionId);
56
+ if (!session)
57
+ throw new Error(`Session not found: ${sessionId}`);
58
+ if (session.status !== 'interviewing') {
59
+ throw new Error(`Session ${sessionId} is in status "${session.status}", not interviewing`);
60
+ }
61
+ // Record the answer to the pending question
62
+ if (session.pendingQuestion) {
63
+ const recorded = session.protocol.recordAnswer(session.pendingQuestion, answer);
64
+ if (!recorded) {
65
+ // Greeting or stale answer was skipped — re-ask the same question
66
+ const isStale = answer.length >= 100 && isStaleAnswer(session.pendingQuestion, answer);
67
+ if (isStale) {
68
+ this.logEvent(session, 'greeting_skipped', { reason: 'stale_answer', answerLength: answer.length });
69
+ logger.raw(` \x1b[2mGreeting skipped (stale answer, ${answer.length} chars) — re-asking\x1b[0m`);
70
+ }
71
+ else {
72
+ this.logEvent(session, 'greeting_skipped', { answer: answer.slice(0, 100) });
73
+ logger.raw(` \x1b[2mGreeting skipped — re-asking\x1b[0m`);
74
+ }
75
+ // pendingQuestion stays the same, just return it again
76
+ return { done: false, question: session.pendingQuestion.text };
77
+ }
78
+ this.logEvent(session, 'answer', {
79
+ questionId: session.pendingQuestion.id,
80
+ category: session.pendingQuestion.category,
81
+ answerLength: answer.length,
82
+ });
83
+ session.lastCategory = session.pendingQuestion.category;
84
+ session.questionsAsked++;
85
+ session.needsFollowUp = true;
86
+ // Live terminal output — show answer (question was already printed when sent)
87
+ logger.raw(` \x1b[2mA:\x1b[0m ${answer}`);
88
+ }
89
+ session.updatedAt = new Date();
90
+ // Try to get the next question (follow-up or core)
91
+ const nextQ = await this.getNextQuestion(session);
92
+ if (nextQ) {
93
+ session.pendingQuestion = nextQ;
94
+ this.logEvent(session, 'question', { questionId: nextQ.id, text: nextQ.text, category: nextQ.category });
95
+ const total = session.protocol.totalCoreQuestions;
96
+ const isFollowUp = nextQ.id.startsWith('followup_');
97
+ const qLabel = isFollowUp ? 'Follow-up' : `Q${session.questionsAsked + 1}/${total}`;
98
+ logger.raw('');
99
+ logger.raw(` \x1b[36m${qLabel}\x1b[0m \x1b[2m[${nextQ.category}]\x1b[0m`);
100
+ logger.raw(` \x1b[36mQ:\x1b[0m ${nextQ.text}`);
101
+ return { done: false, question: nextQ.text };
102
+ }
103
+ // No more questions — start analysis in background, return immediately
104
+ logger.raw('');
105
+ logger.raw(` \x1b[33m⏳ Analyzing transcript...\x1b[0m`);
106
+ this.finishSession(session).catch(err => {
107
+ logger.error(`Background analysis failed for ${session.id}: ${err instanceof Error ? err.message : String(err)}`);
108
+ });
109
+ return { done: true, analyzing: true };
110
+ }
111
+ getSession(id) {
112
+ return this.sessions.get(id);
113
+ }
114
+ listSessions() {
115
+ return Array.from(this.sessions.values());
116
+ }
117
+ async getNextQuestion(session) {
118
+ // Drain the question queue first (clean replacement for monkey-patching)
119
+ if (session.questionQueue.length > 0) {
120
+ return session.questionQueue.shift();
121
+ }
122
+ // Try a follow-up if category just changed
123
+ if (session.needsFollowUp && session.lastCategory) {
124
+ session.needsFollowUp = false;
125
+ const nextCore = session.protocol.nextQuestion();
126
+ // If the next core question is a different category, generate follow-up for the previous
127
+ if (nextCore && nextCore.category !== session.lastCategory) {
128
+ const followUp = await session.protocol.generateFollowUp(session.lastCategory);
129
+ if (followUp) {
130
+ // Enqueue the core question, return the follow-up first
131
+ session.questionQueue.push(nextCore);
132
+ this.logEvent(session, 'followup', { questionId: followUp.id, text: followUp.text, category: followUp.category });
133
+ return followUp;
134
+ }
135
+ }
136
+ return nextCore;
137
+ }
138
+ return session.protocol.nextQuestion();
139
+ }
140
+ async finishSession(session) {
141
+ session.status = 'analyzing';
142
+ this.logEvent(session, 'analysis_start', {});
143
+ try {
144
+ const transcript = session.protocol.getTranscript();
145
+ const dataQuality = computeDataQuality(transcript);
146
+ const analysis = await analyzeTranscript(this.llmClient, transcript);
147
+ const riskScore = computeRiskScore(analysis.systems, analysis.risks);
148
+ const regulatoryCompliance = computeRegulatoryFlags(analysis, transcript);
149
+ const reportJson = {
150
+ summary: analysis.summary,
151
+ agentPurpose: analysis.agentPurpose,
152
+ agentTrigger: analysis.agentTrigger,
153
+ agentOwner: analysis.agentOwner,
154
+ systems: analysis.systems,
155
+ dataNeeds: analysis.dataNeeds,
156
+ accessAssessment: analysis.accessAssessment,
157
+ risks: analysis.risks,
158
+ recommendations: analysis.recommendations,
159
+ recommendation: analysis.recommendation,
160
+ overallRiskLevel: riskScore.overall,
161
+ transcript,
162
+ dataQuality,
163
+ makesDecisionsAboutPeople: analysis.makesDecisionsAboutPeople,
164
+ decisionMakingDetails: analysis.decisionMakingDetails,
165
+ regulatoryCompliance,
166
+ metadata: {
167
+ date: session.createdAt.toISOString().split('T')[0],
168
+ target: `session:${session.id}`,
169
+ interviewDuration: Date.now() - session.createdAt.getTime(),
170
+ questionsAsked: session.questionsAsked,
171
+ },
172
+ };
173
+ const report = renderMarkdownReport(reportJson);
174
+ // Save report + event log to disk if reportDir is set
175
+ if (this.reportDir) {
176
+ const { writeFileSync, mkdirSync } = await import('node:fs');
177
+ mkdirSync(this.reportDir, { recursive: true });
178
+ const filePath = `${this.reportDir}/${session.id}.md`;
179
+ writeFileSync(filePath, report, 'utf-8');
180
+ // JSON session event log for ground truth comparison
181
+ const logPath = `${this.reportDir}/${session.id}.events.json`;
182
+ writeFileSync(logPath, JSON.stringify(session.eventLog, null, 2), 'utf-8');
183
+ logger.success(`Report saved: ${filePath}`);
184
+ logger.raw(` Event log: ${logPath}`);
185
+ }
186
+ session.report = report;
187
+ session.reportJson = reportJson;
188
+ session.status = 'complete';
189
+ session.updatedAt = new Date();
190
+ this.logEvent(session, 'analysis_complete', { riskLevel: riskScore.overall, riskScore: riskScore.score });
191
+ const riskColor = riskScore.overall === 'high' ? '\x1b[31m' // red
192
+ : riskScore.overall === 'medium' ? '\x1b[33m' // yellow
193
+ : '\x1b[32m'; // green
194
+ logger.raw('');
195
+ logger.raw(` \x1b[1mAudit complete: ${session.id}\x1b[0m`);
196
+ logger.raw(` Risk: ${riskColor}${riskScore.overall.toUpperCase()}\x1b[0m`);
197
+ logger.raw(` Data quality: ${dataQuality.score}/100`);
198
+ logger.raw(` Verdict: ${reportJson.recommendation ?? 'APPROVE WITH CONDITIONS'}`);
199
+ logger.raw(` Findings: ${reportJson.risks.length}`);
200
+ if (this.reportDir) {
201
+ logger.raw(` Report: ${this.reportDir}/${session.id}.md`);
202
+ }
203
+ logger.raw(` Dashboard: http://localhost:3700/sessions/${session.id}`);
204
+ logger.raw('');
205
+ return { done: true, report, reportJson };
206
+ }
207
+ catch (err) {
208
+ session.status = 'error';
209
+ session.error = err instanceof Error ? err.message : String(err);
210
+ this.logEvent(session, 'error', { message: session.error });
211
+ throw err;
212
+ }
213
+ }
214
+ logEvent(session, type, data) {
215
+ session.eventLog.push({
216
+ timestamp: new Date().toISOString(),
217
+ type,
218
+ data,
219
+ });
220
+ }
221
+ }
222
+ // ─── Data Quality Computation ────────────────────────────────────────────────
223
+ /** Compute data quality metrics from the interview transcript */
224
+ function computeDataQuality(transcript) {
225
+ const totalQuestions = transcript.length;
226
+ // Count repeated/canned answers
227
+ const repeatedAnswers = transcript.filter(qa => qa.answer.startsWith('[REPEATED RESPONSE]')).length;
228
+ // Count greetings that slipped through
229
+ const greetingCount = transcript.filter(qa => /^hi\b|^hello\b|ready to answer|ready for questions|^i am ready/i.test(qa.answer.trim())).length;
230
+ const uniqueAnswers = totalQuestions - repeatedAnswers - greetingCount;
231
+ // Check which compliance fields have real data
232
+ const nonRepeatedText = transcript
233
+ .filter(qa => !qa.answer.startsWith('[REPEATED RESPONSE]'))
234
+ .map(qa => qa.answer.toLowerCase())
235
+ .join(' ');
236
+ const fieldsProvided = [];
237
+ const fieldsMissing = [];
238
+ const fieldChecks = {
239
+ systemId: /\b(api|oauth|sdk|via|using|rest|webhook|token)\b/i,
240
+ scopesRequested: /\b(scope|permission|role|\.readonly|\.send|\.modify|\.admin|\.edit|\.file|spreadsheets|drive)\b/i,
241
+ dataSensitivity: /\b(pii|sensitive|confidential|financial|personal|classified|non.?sensitive|credentials?)\b/i,
242
+ blastRadius: /\b(single.?record|single.?user|team|org.?wide|cross.?tenant|one record|one user|affected)\b/i,
243
+ frequencyAndVolume: /\b(\d+\s*(times?|per|\/|calls?|runs?|operations?)\s*(day|hour|minute|week|session|run)|batch|\d+\/day)\b/i,
244
+ writeOperations: /\b(write|create|update|append|send|modify|delete|insert|post)\b/i,
245
+ reversibility: /\b(revers|rollback|undo|irrevers|cannot be undone|can be restored|can be undone|can be deleted|can be corrected|cannot be unsent|already sent|no.?undo)\b/i,
246
+ };
247
+ for (const [field, pattern] of Object.entries(fieldChecks)) {
248
+ if (pattern.test(nonRepeatedText)) {
249
+ fieldsProvided.push(field);
250
+ }
251
+ else {
252
+ fieldsMissing.push(field);
253
+ }
254
+ }
255
+ // Score: percentage of fields provided, penalized by repeats
256
+ const fieldScore = (fieldsProvided.length / Object.keys(fieldChecks).length) * 100;
257
+ const repeatPenalty = (repeatedAnswers / Math.max(totalQuestions, 1)) * 50;
258
+ const score = Math.max(0, Math.min(100, Math.round(fieldScore - repeatPenalty)));
259
+ return {
260
+ score,
261
+ uniqueAnswers,
262
+ totalQuestions,
263
+ fieldsProvided,
264
+ fieldsMissing,
265
+ repeatedAnswers,
266
+ };
267
+ }
268
+ //# sourceMappingURL=sessions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../../src/server/sessions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,aAAa,EAA0B,MAAM,0BAA0B,CAAC;AACjG,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAK9D,OAAO,KAAK,MAAM,MAAM,mBAAmB,CAAC;AAgC5C;;;GAGG;AACH,MAAM,OAAO,cAAc;IACjB,QAAQ,GAAG,IAAI,GAAG,EAAmB,CAAC;IACtC,SAAS,CAAY;IACrB,YAAY,CAAS;IACrB,SAAS,CAAqB;IAEtC,YAAY,SAAoB,EAAE,UAAyD,EAAE;QAC3F,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,CAAC;IACrC,CAAC;IAED,yDAAyD;IACzD,aAAa;QACX,MAAM,EAAE,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QAC9B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,QAAQ,CAAC,YAAY,EAAG,CAAC;QAExC,MAAM,OAAO,GAAY;YACvB,EAAE;YACF,MAAM,EAAE,cAAc;YACtB,QAAQ;YACR,eAAe,EAAE,MAAM;YACvB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,KAAK;YACpB,aAAa,EAAE,EAAE;YACjB,MAAM,EAAE,IAAI;YACZ,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,SAAS,EAAE,IAAI,IAAI,EAAE;YACrB,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC5G,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;QAC/B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,yBAAyB,EAAE,SAAS,CAAC,CAAC;QACjD,MAAM,CAAC,GAAG,CAAC,+CAA+C,EAAE,EAAE,CAAC,CAAC;QAChE,MAAM,KAAK,GAAG,QAAQ,CAAC,kBAAkB,CAAC;QAC1C,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,gBAAgB,KAAK,mBAAmB,MAAM,CAAC,QAAQ,UAAU,CAAC,CAAC;QAC9E,MAAM,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QACjD,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACjD,CAAC;IAED,6EAA6E;IAC7E,KAAK,CAAC,aAAa,CACjB,SAAiB,EACjB,MAAc;QAEd,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,SAAS,EAAE,CAAC,CAAC;QACjE,IAAI,OAAO,CAAC,MAAM,KAAK,cAAc,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,WAAW,SAAS,kBAAkB,OAAO,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAC7F,CAAC;QAED,4CAA4C;QAC5C,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;YAEhF,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,kEAAkE;gBAClE,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,IAAI,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;gBACvF,IAAI,OAAO,EAAE,CAAC;oBACZ,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;oBACpG,MAAM,CAAC,GAAG,CAAC,4CAA4C,MAAM,CAAC,MAAM,4BAA4B,CAAC,CAAC;gBACpG,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;oBAC7E,MAAM,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;gBAC7D,CAAC;gBACD,uDAAuD;gBACvD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;YACjE,CAAC;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,EAAE;gBAC/B,UAAU,EAAE,OAAO,CAAC,eAAe,CAAC,EAAE;gBACtC,QAAQ,EAAE,OAAO,CAAC,eAAe,CAAC,QAAQ;gBAC1C,YAAY,EAAE,MAAM,CAAC,MAAM;aAC5B,CAAC,CAAC;YACH,OAAO,CAAC,YAAY,GAAG,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC;YACxD,OAAO,CAAC,cAAc,EAAE,CAAC;YACzB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;YAE7B,8EAA8E;YAC9E,MAAM,CAAC,GAAG,CAAC,sBAAsB,MAAM,EAAE,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;QAE/B,mDAAmD;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QAElD,IAAI,KAAK,EAAE,CAAC;YACV,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YACzG,MAAM,KAAK,GAAG,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAClD,MAAM,UAAU,GAAG,KAAK,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,cAAc,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC;YACpF,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,aAAa,MAAM,mBAAmB,KAAK,CAAC,QAAQ,UAAU,CAAC,CAAC;YAC3E,MAAM,CAAC,GAAG,CAAC,uBAAuB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/C,CAAC;QAED,uEAAuE;QACvE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACtC,MAAM,CAAC,KAAK,CAAC,kCAAkC,OAAO,CAAC,EAAE,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACpH,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,UAAU,CAAC,EAAU;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC/B,CAAC;IAED,YAAY;QACV,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5C,CAAC;IAGO,KAAK,CAAC,eAAe,CAAC,OAAgB;QAC5C,yEAAyE;QACzE,IAAI,OAAO,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACrC,OAAO,OAAO,CAAC,aAAa,CAAC,KAAK,EAAG,CAAC;QACxC,CAAC;QAED,2CAA2C;QAC3C,IAAI,OAAO,CAAC,aAAa,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;YAC9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;YAEjD,yFAAyF;YACzF,IAAI,QAAQ,IAAI,QAAQ,CAAC,QAAQ,KAAK,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3D,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;gBAC/E,IAAI,QAAQ,EAAE,CAAC;oBACb,wDAAwD;oBACxD,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACrC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAClH,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,OAAO,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IACzC,CAAC;IAEO,KAAK,CAAC,aAAa,CACzB,OAAgB;QAEhB,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC;QAC7B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,gBAAgB,EAAE,EAAE,CAAC,CAAC;QAE7C,IAAI,CAAC;YACH,MAAM,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YACpD,MAAM,WAAW,GAAG,kBAAkB,CAAC,UAAU,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;YACrE,MAAM,SAAS,GAAG,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,oBAAoB,GAAG,sBAAsB,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;YAE1E,MAAM,UAAU,GAAgB;gBAC9B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,YAAY,EAAE,QAAQ,CAAC,YAAY;gBACnC,UAAU,EAAE,QAAQ,CAAC,UAAU;gBAC/B,OAAO,EAAE,QAAQ,CAAC,OAAO;gBACzB,SAAS,EAAE,QAAQ,CAAC,SAAS;gBAC7B,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;gBAC3C,KAAK,EAAE,QAAQ,CAAC,KAAK;gBACrB,eAAe,EAAE,QAAQ,CAAC,eAAe;gBACzC,cAAc,EAAE,QAAQ,CAAC,cAAc;gBACvC,gBAAgB,EAAE,SAAS,CAAC,OAAO;gBACnC,UAAU;gBACV,WAAW;gBACX,yBAAyB,EAAE,QAAQ,CAAC,yBAAyB;gBAC7D,qBAAqB,EAAE,QAAQ,CAAC,qBAAqB;gBACrD,oBAAoB;gBACpB,QAAQ,EAAE;oBACR,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACnD,MAAM,EAAE,WAAW,OAAO,CAAC,EAAE,EAAE;oBAC/B,iBAAiB,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE;oBAC3D,cAAc,EAAE,OAAO,CAAC,cAAc;iBACvC;aACF,CAAC;YAEF,MAAM,MAAM,GAAG,oBAAoB,CAAC,UAAU,CAAC,CAAC;YAEhD,sDAAsD;YACtD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;gBAC7D,SAAS,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/C,MAAM,QAAQ,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC;gBACtD,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;gBACzC,qDAAqD;gBACrD,MAAM,OAAO,GAAG,GAAG,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,cAAc,CAAC;gBAC9D,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;gBAC3E,MAAM,CAAC,OAAO,CAAC,iBAAiB,QAAQ,EAAE,CAAC,CAAC;gBAC5C,MAAM,CAAC,GAAG,CAAC,iBAAiB,OAAO,EAAE,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,CAAC,MAAM,GAAG,MAAM,CAAC;YACxB,OAAO,CAAC,UAAU,GAAG,UAAU,CAAC;YAChC,OAAO,CAAC,MAAM,GAAG,UAAU,CAAC;YAC5B,OAAO,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAE/B,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,mBAAmB,EAAE,EAAE,SAAS,EAAE,SAAS,CAAC,OAAO,EAAE,SAAS,EAAE,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;YAC1G,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,KAAK,MAAM,CAAC,CAAC,CAAC,UAAU,CAAI,MAAM;gBACnE,CAAC,CAAC,SAAS,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAgB,SAAS;oBACtE,CAAC,CAAC,UAAU,CAAC,CAAgD,QAAQ;YACvE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACf,MAAM,CAAC,GAAG,CAAC,4BAA4B,OAAO,CAAC,EAAE,SAAS,CAAC,CAAC;YAC5D,MAAM,CAAC,GAAG,CAAC,mBAAmB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;YACpF,MAAM,CAAC,GAAG,CAAC,mBAAmB,WAAW,CAAC,KAAK,MAAM,CAAC,CAAC;YACvD,MAAM,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC,cAAc,IAAI,yBAAyB,EAAE,CAAC,CAAC;YACxF,MAAM,CAAC,GAAG,CAAC,mBAAmB,UAAU,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,SAAS,IAAI,OAAO,CAAC,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,kDAAkD,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;YAC3E,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEf,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QAC5C,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC;YACzB,OAAO,CAAC,KAAK,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC;QACZ,CAAC;IACH,CAAC;IAEO,QAAQ,CAAC,OAAgB,EAAE,IAA0B,EAAE,IAA6B;QAC1F,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;YACpB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,IAAI;YACJ,IAAI;SACL,CAAC,CAAC;IACL,CAAC;CACF;AAED,gFAAgF;AAEhF,iEAAiE;AACjE,SAAS,kBAAkB,CAAC,UAAoB;IAC9C,MAAM,cAAc,GAAG,UAAU,CAAC,MAAM,CAAC;IAEzC,gCAAgC;IAChC,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC,CAAC,MAAM,CAAC;IAEpG,uCAAuC;IACvC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAC3C,iEAAiE,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CACzF,CAAC,MAAM,CAAC;IAET,MAAM,aAAa,GAAG,cAAc,GAAG,eAAe,GAAG,aAAa,CAAC;IAEvE,+CAA+C;IAC/C,MAAM,eAAe,GAAG,UAAU;SAC/B,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,qBAAqB,CAAC,CAAC;SAC1D,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;SAClC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEb,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,WAAW,GAA2B;QAC1C,QAAQ,EAAE,mDAAmD;QAC7D,eAAe,EAAE,kGAAkG;QACnH,eAAe,EAAE,6FAA6F;QAC9G,WAAW,EAAE,8FAA8F;QAC3G,kBAAkB,EAAE,2GAA2G;QAC/H,eAAe,EAAE,kEAAkE;QACnF,aAAa,EAAE,4JAA4J;KAC5K,CAAC;IAEF,KAAK,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3D,IAAI,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;YAClC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;IAED,6DAA6D;IAC7D,MAAM,UAAU,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC;IACnF,MAAM,aAAa,GAAG,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,CAAC;IAEjF,OAAO;QACL,KAAK;QACL,aAAa;QACb,cAAc;QACd,cAAc;QACd,aAAa;QACb,eAAe;KAChB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function generateId(prefix?: string): string;
2
+ //# sourceMappingURL=id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.d.ts","sourceRoot":"","sources":["../../../src/util/id.ts"],"names":[],"mappings":"AAEA,wBAAgB,UAAU,CAAC,MAAM,SAAU,GAAG,MAAM,CAEnD"}
@@ -0,0 +1,5 @@
1
+ import { randomBytes } from 'node:crypto';
2
+ export function generateId(prefix = 'heron') {
3
+ return `${prefix}_${randomBytes(8).toString('hex')}`;
4
+ }
5
+ //# sourceMappingURL=id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"id.js","sourceRoot":"","sources":["../../../src/util/id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,UAAU,UAAU,CAAC,MAAM,GAAG,OAAO;IACzC,OAAO,GAAG,MAAM,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;AACvD,CAAC"}
@@ -0,0 +1,9 @@
1
+ export declare function log(message: string): void;
2
+ export declare function success(message: string): void;
3
+ export declare function warn(message: string): void;
4
+ export declare function error(message: string): void;
5
+ export declare function step(n: number, total: number, message: string): void;
6
+ export declare function heading(message: string): void;
7
+ /** Raw output without [heron] prefix — for banners and formatted blocks */
8
+ export declare function raw(message: string): void;
9
+ //# sourceMappingURL=logger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.d.ts","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":"AAUA,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,wBAAgB,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE1C;AAED,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,wBAAgB,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAEpE;AAED,wBAAgB,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAE7C;AAED,2EAA2E;AAC3E,wBAAgB,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAEzC"}
@@ -0,0 +1,32 @@
1
+ const COLORS = {
2
+ reset: '\x1b[0m',
3
+ dim: '\x1b[2m',
4
+ green: '\x1b[32m',
5
+ yellow: '\x1b[33m',
6
+ red: '\x1b[31m',
7
+ cyan: '\x1b[36m',
8
+ bold: '\x1b[1m',
9
+ };
10
+ export function log(message) {
11
+ console.error(`${COLORS.dim}[heron]${COLORS.reset} ${message}`);
12
+ }
13
+ export function success(message) {
14
+ console.error(`${COLORS.green}\u2713${COLORS.reset} ${message}`);
15
+ }
16
+ export function warn(message) {
17
+ console.error(`${COLORS.yellow}\u26A0${COLORS.reset} ${message}`);
18
+ }
19
+ export function error(message) {
20
+ console.error(`${COLORS.red}\u2717${COLORS.reset} ${message}`);
21
+ }
22
+ export function step(n, total, message) {
23
+ console.error(`${COLORS.cyan}[${n}/${total}]${COLORS.reset} ${message}`);
24
+ }
25
+ export function heading(message) {
26
+ console.error(`\n${COLORS.bold}${message}${COLORS.reset}`);
27
+ }
28
+ /** Raw output without [heron] prefix — for banners and formatted blocks */
29
+ export function raw(message) {
30
+ console.error(message);
31
+ }
32
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/util/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,GAAG,EAAE,SAAS;IACd,KAAK,EAAE,UAAU;IACjB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;IAChB,IAAI,EAAE,SAAS;CAChB,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,UAAU,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,KAAK,SAAS,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,OAAe;IAClC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,SAAS,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,KAAK,CAAC,OAAe;IACnC,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,CAAS,EAAE,KAAa,EAAE,OAAe;IAC5D,OAAO,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,UAAU,OAAO,CAAC,OAAe;IACrC,OAAO,CAAC,KAAK,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AAC7D,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,GAAG,CAAC,OAAe;IACjC,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACzB,CAAC"}
@@ -0,0 +1,46 @@
1
+ # Heron Agent Checkpoint — Configuration Example
2
+ # Copy this file to heron.yaml and fill in your values
3
+
4
+ # ─── Scan mode (Heron → Agent) ─────────────────────────────────
5
+ target:
6
+ # How to connect to the agent you want to audit
7
+ # Options: http, interactive
8
+ type: http
9
+
10
+ # For HTTP targets (OpenAI-compatible chat API)
11
+ url: http://localhost:8080/v1/chat/completions
12
+ # apiKey: sk-...
13
+ # model: gpt-4o # optional, depends on target
14
+
15
+ # For interactive mode (you copy questions to the agent manually):
16
+ # type: interactive
17
+
18
+ # ─── Server mode (Agent → Heron) ───────────────────────────────
19
+ # Start with: npx heron-ai serve
20
+ # server:
21
+ # port: 3700
22
+ # host: 0.0.0.0
23
+ # reportDir: ./reports
24
+
25
+ # ─── LLM for analysis ──────────────────────────────────────────
26
+ llm:
27
+ # LLM used by Heron to analyze agent responses
28
+ # Options: anthropic, openai, gemini
29
+ provider: anthropic
30
+
31
+ # API key resolution (in order):
32
+ # 1. Explicit key below or --llm-key flag
33
+ # 2. HERON_LLM_API_KEY env var
34
+ # 3. Stored credentials from `heron login <provider>`
35
+ #
36
+ # apiKey: sk-ant-...
37
+
38
+ model: claude-sonnet-4-20250514
39
+ # For OpenAI: gpt-4o
40
+ # For Gemini: gemini-2.0-flash
41
+
42
+ output:
43
+ # Output format: markdown or json
44
+ format: markdown
45
+ # Where to save the report (default: stdout)
46
+ # path: ./reports/audit-report.md
package/package.json ADDED
@@ -0,0 +1,40 @@
1
+ {
2
+ "name": "heron-ai",
3
+ "version": "0.1.0",
4
+ "description": "Open-source agent interrogator — audit what your AI agents do, need, and access",
5
+ "type": "module",
6
+ "bin": {
7
+ "heron": "./dist/bin/heron.js"
8
+ },
9
+ "scripts": {
10
+ "dev": "tsx bin/heron.ts",
11
+ "build": "tsc",
12
+ "test": "vitest run",
13
+ "test:watch": "vitest",
14
+ "lint": "tsc --noEmit"
15
+ },
16
+ "keywords": ["ai", "agent", "audit", "security", "mcp", "interrogation", "access-control"],
17
+ "license": "MIT",
18
+ "files": [
19
+ "dist/",
20
+ "README.md",
21
+ "LICENSE",
22
+ "heron.example.yaml"
23
+ ],
24
+ "engines": {
25
+ "node": ">=20.0.0"
26
+ },
27
+ "dependencies": {
28
+ "@anthropic-ai/sdk": "^0.39.0",
29
+ "commander": "^12.0.0",
30
+ "openai": "^4.70.0",
31
+ "yaml": "^2.4.0",
32
+ "zod": "^3.23.0"
33
+ },
34
+ "devDependencies": {
35
+ "@types/node": "^22.0.0",
36
+ "tsx": "^4.21.0",
37
+ "typescript": "~5.8.0",
38
+ "vitest": "^2.0.0"
39
+ }
40
+ }