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,386 @@
1
+ /** Filter out interview/orchestration platforms that aren't real business systems */
2
+ function isBusinessSystem(s) {
3
+ const id = s.systemId.toLowerCase();
4
+ if (/\bheron\b/.test(id))
5
+ return false;
6
+ if (/internal\s*(orchestrat|api|platform)/.test(id))
7
+ return false;
8
+ if (/interview\s*(platform|endpoint|api)/.test(id))
9
+ return false;
10
+ if (/audit\s*(platform|endpoint|api)/.test(id))
11
+ return false;
12
+ // Platform session token with no real scopes = orchestration layer
13
+ if (/platform.?session.?token/i.test(id) && s.scopesRequested.length === 0)
14
+ return false;
15
+ return true;
16
+ }
17
+ export function renderMarkdownReport(report) {
18
+ const sections = [
19
+ renderHeader(report),
20
+ renderScopeAndMethodology(report),
21
+ renderSummary(report),
22
+ renderAgentProfile(report),
23
+ renderFindings(report.risks),
24
+ renderSystems(report.systems),
25
+ renderPositiveFindings(report),
26
+ renderVerdict(report),
27
+ report.regulatoryCompliance ? renderRegulatoryCompliance(report.regulatoryCompliance) : null,
28
+ report.dataQuality ? renderDataQuality(report.dataQuality) : null,
29
+ renderTranscript(report.transcript),
30
+ renderDisclaimer(),
31
+ ];
32
+ return sections.filter(Boolean).join('\n\n---\n\n');
33
+ }
34
+ // ─── Header ──────────────────────────────────────────────────────────────────
35
+ function renderHeader(report) {
36
+ const riskIcon = report.overallRiskLevel === 'critical' || report.overallRiskLevel === 'high' ? '!!' : '';
37
+ const dqPart = report.dataQuality ? ` | **Data Quality**: ${report.dataQuality.score}/100` : '';
38
+ // Regulatory one-liner
39
+ let regLine = '';
40
+ if (report.regulatoryCompliance) {
41
+ const rc = report.regulatoryCompliance;
42
+ const regParts = [];
43
+ const summarizeJurisdiction = (flags) => {
44
+ if (flags.some(f => f.severity === 'action-required'))
45
+ return 'Action Required';
46
+ if (flags.some(f => f.severity === 'clarification-needed'))
47
+ return 'Needs Clarification';
48
+ if (flags.some(f => f.severity === 'warning'))
49
+ return 'Review';
50
+ return 'Clear';
51
+ };
52
+ regParts.push(`EU: ${summarizeJurisdiction(rc.eu)}`);
53
+ regParts.push(`US: ${summarizeJurisdiction(rc.us)}`);
54
+ regParts.push(`UK: ${summarizeJurisdiction(rc.uk)}`);
55
+ regLine = `\n**Regulatory**: ${regParts.join(' | ')}`;
56
+ }
57
+ return `# Agent Access Audit Report
58
+
59
+ **Generated**: ${report.metadata.date} | **Agent**: ${report.metadata.target} | **Risk Level**: ${report.overallRiskLevel.toUpperCase()} ${riskIcon}${dqPart}${regLine}`;
60
+ }
61
+ // ─── Scope & Methodology ────────────────────────────────────────────────────
62
+ function renderScopeAndMethodology(report) {
63
+ return `## Scope & Methodology
64
+
65
+ **Assessment type**: Automated structured interview
66
+
67
+ **Method**: Heron conducted a ${report.metadata.questionsAsked}-question interview covering agent purpose, data access, permissions, write operations, and operational frequency. **Duration**: ${Math.round(report.metadata.interviewDuration / 1000)}s.
68
+
69
+ **Limitations**: This assessment is based solely on the agent's self-reported information. No runtime analysis, code review, or network traffic inspection was performed. Findings should be verified against actual system configurations.`;
70
+ }
71
+ // ─── Data Quality Badge ──────────────────────────────────────────────────────
72
+ function renderDataQuality(dq) {
73
+ const provided = dq.fieldsProvided.length;
74
+ const total = provided + dq.fieldsMissing.length;
75
+ const qualityLabel = dq.score >= 70 ? 'Good' : dq.score >= 40 ? 'Partial' : 'Poor';
76
+ const fieldDescriptions = {
77
+ systemId: 'External systems connected (name, API type, auth)',
78
+ scopesRequested: 'Permissions/scopes granted to the agent',
79
+ dataSensitivity: 'Data classification (PII, financial, etc.)',
80
+ blastRadius: 'Scope of impact if something goes wrong',
81
+ frequencyAndVolume: 'How often it runs, API calls per run',
82
+ writeOperations: 'What the agent creates, modifies, or deletes',
83
+ reversibility: 'Whether write operations can be undone',
84
+ };
85
+ const rows = [
86
+ ...dq.fieldsProvided.map(f => `| ${f} | ${fieldDescriptions[f] ?? ''} | Provided |`),
87
+ ...dq.fieldsMissing.map(f => `| ${f} | ${fieldDescriptions[f] ?? ''} | **NOT PROVIDED** |`),
88
+ ];
89
+ let warning = '';
90
+ if (dq.repeatedAnswers > 0) {
91
+ warning = `\n\n> **Warning**: ${dq.repeatedAnswers} of ${dq.totalQuestions} answers were repeated/canned responses. Data in this report may be incomplete.`;
92
+ }
93
+ return `## Data Quality: ${qualityLabel} (${provided}/${total} fields) ${warning}
94
+
95
+ | Field | What it measures | Status |
96
+ |-------|-----------------|--------|
97
+ ${rows.join('\n')}`;
98
+ }
99
+ // ─── Summary ─────────────────────────────────────────────────────────────────
100
+ function renderSummary(report) {
101
+ // Dashboard: finding counts by severity
102
+ const allRisks = report.risks;
103
+ const countBySeverity = (sev) => allRisks.filter(r => r.severity === sev).length;
104
+ const critical = countBySeverity('critical');
105
+ const high = countBySeverity('high');
106
+ const medium = countBySeverity('medium');
107
+ const low = countBySeverity('low');
108
+ const findingsParts = [];
109
+ if (critical > 0)
110
+ findingsParts.push(`${critical} Critical`);
111
+ if (high > 0)
112
+ findingsParts.push(`${high} High`);
113
+ if (medium > 0)
114
+ findingsParts.push(`${medium} Medium`);
115
+ if (low > 0)
116
+ findingsParts.push(`${low} Low`);
117
+ if (findingsParts.length === 0)
118
+ findingsParts.push('None');
119
+ const systemCount = report.systems.filter(isBusinessSystem).length;
120
+ const dashboard = `| Risk | Systems | Findings |
121
+ |------|---------|----------|
122
+ | **${report.overallRiskLevel.toUpperCase()}** | ${systemCount} | ${findingsParts.join(', ')} |`;
123
+ return `## Executive Summary
124
+
125
+ ${dashboard}
126
+
127
+ ${report.summary}`;
128
+ }
129
+ // ─── Agent Profile ───────────────────────────────────────────────────────────
130
+ function renderAgentProfile(report) {
131
+ const lines = [`- **Purpose**: ${report.agentPurpose}`];
132
+ if (report.agentTrigger)
133
+ lines.push(`- **Trigger**: ${report.agentTrigger}`);
134
+ if (report.agentOwner && report.agentOwner !== 'NOT PROVIDED') {
135
+ lines.push(`- **Owner**: ${report.agentOwner}`);
136
+ }
137
+ // Frequency from first system if available
138
+ const freq = report.systems[0]?.frequencyAndVolume;
139
+ if (freq && freq !== 'NOT PROVIDED')
140
+ lines.push(`- **Frequency**: ${freq}`);
141
+ return `## Agent Profile
142
+
143
+ ${lines.join('\n')}`;
144
+ }
145
+ // ─── Per-System Cards ────────────────────────────────────────────────────────
146
+ function renderSystems(systems) {
147
+ const businessSystems = systems.filter(isBusinessSystem);
148
+ if (businessSystems.length === 0) {
149
+ return `## Systems & Access
150
+
151
+ No systems were identified in the interview.`;
152
+ }
153
+ const cards = businessSystems.map(renderSystemCard).join('\n\n');
154
+ return `## Systems & Access
155
+
156
+ ${cards}`;
157
+ }
158
+ function computeSystemRisk(sys) {
159
+ let score = 0;
160
+ // Blast radius
161
+ const brScores = { 'single-record': 0, 'single-user': 1, 'team-scope': 2, 'org-wide': 3, 'cross-tenant': 4 };
162
+ score += brScores[sys.blastRadius] ?? 1;
163
+ // Excessive scopes
164
+ if (sys.scopesDelta.length > 0)
165
+ score += 1;
166
+ // Irreversible writes
167
+ if (sys.writeOperations.some(w => !w.reversible))
168
+ score += 2;
169
+ // Data sensitivity
170
+ if (/pii|personal|health|financial|credit/i.test(sys.dataSensitivity))
171
+ score += 1;
172
+ if (score >= 5)
173
+ return 'HIGH';
174
+ if (score >= 3)
175
+ return 'MEDIUM';
176
+ return 'LOW';
177
+ }
178
+ function renderSystemCard(sys) {
179
+ const rows = [];
180
+ const risk = computeSystemRisk(sys);
181
+ // Scopes
182
+ const scopes = sys.scopesRequested.filter(s => s !== 'NOT PROVIDED');
183
+ rows.push(`| **Scopes granted** | ${scopes.length > 0 ? scopes.join(', ') : '*NOT PROVIDED*'} |`);
184
+ const needed = sys.scopesNeeded.filter(s => s !== 'NOT PROVIDED');
185
+ if (needed.length > 0) {
186
+ rows.push(`| **Scopes needed** | ${needed.join(', ')} |`);
187
+ }
188
+ const excessive = sys.scopesDelta;
189
+ if (excessive.length > 0) {
190
+ rows.push(`| **Excessive** | ${excessive.join(', ')} |`);
191
+ }
192
+ // Data sensitivity
193
+ if (sys.dataSensitivity && sys.dataSensitivity !== 'NOT PROVIDED') {
194
+ rows.push(`| **Data** | ${sys.dataSensitivity} |`);
195
+ }
196
+ // Blast radius
197
+ rows.push(`| **Blast radius** | ${sys.blastRadius} |`);
198
+ // Frequency
199
+ if (sys.frequencyAndVolume && sys.frequencyAndVolume !== 'NOT PROVIDED') {
200
+ rows.push(`| **Frequency** | ${sys.frequencyAndVolume} |`);
201
+ }
202
+ // Write operations — inline in card
203
+ if (sys.writeOperations.length > 0) {
204
+ const writesSummary = sys.writeOperations.map(w => {
205
+ const rev = w.reversible ? 'reversible' : '**irreversible**';
206
+ return `${w.operation} → ${w.target} (${rev}, ${w.volumePerDay})`;
207
+ }).join('; ');
208
+ rows.push(`| **Writes** | ${writesSummary} |`);
209
+ }
210
+ return `### ${sys.systemId} — Risk: ${risk}
211
+
212
+ | | |
213
+ |---|---|
214
+ ${rows.join('\n')}`;
215
+ }
216
+ // ─── Findings ───────────────────────────────────────────────────────────────
217
+ function renderFindings(risks) {
218
+ const allRisks = [...risks];
219
+ const sorted = allRisks
220
+ .sort((a, b) => severityOrder(b.severity) - severityOrder(a.severity));
221
+ const rows = sorted.map((r, i) => {
222
+ const id = `HERON-${String(i + 1).padStart(3, '0')}`;
223
+ const remediation = r.mitigation ?? '—';
224
+ return `| ${id} | ${r.severity.toUpperCase()} | ${r.title} | ${r.description} | ${remediation} |`;
225
+ }).join('\n');
226
+ return `## Findings
227
+
228
+ | ID | Severity | Finding | Description | Recommendation |
229
+ |----|----------|---------|-------------|----------------|
230
+ ${rows}`;
231
+ }
232
+ // ─── Positive Findings ─────────────────────────────────────────────────────
233
+ function renderPositiveFindings(report) {
234
+ const positives = [];
235
+ const systems = report.systems.filter(isBusinessSystem);
236
+ // All writes reversible
237
+ const allWrites = systems.flatMap(s => s.writeOperations);
238
+ if (allWrites.length > 0 && allWrites.every(w => w.reversible)) {
239
+ positives.push('All write operations are reversible');
240
+ }
241
+ // No excessive scopes
242
+ const totalExcessive = systems.reduce((n, s) => n + s.scopesDelta.length, 0);
243
+ if (totalExcessive === 0 && systems.length > 0) {
244
+ positives.push('No excessive permissions detected — follows least-privilege principle');
245
+ }
246
+ // Limited blast radius
247
+ if (systems.length > 0 && systems.every(s => s.blastRadius === 'single-user' || s.blastRadius === 'single-record')) {
248
+ positives.push('Blast radius limited to single user/record');
249
+ }
250
+ // Approval required on writes
251
+ if (allWrites.length > 0 && allWrites.some(w => w.approvalRequired)) {
252
+ positives.push('Some write operations require approval before execution');
253
+ }
254
+ // Low frequency
255
+ const freqText = systems.map(s => s.frequencyAndVolume).join(' ');
256
+ if (/\b(1|2|once|twice)\b.*\b(week|month)\b/i.test(freqText)) {
257
+ positives.push('Low execution frequency reduces operational risk');
258
+ }
259
+ // No decisions about people
260
+ if (report.makesDecisionsAboutPeople === false) {
261
+ positives.push('Does not make automated decisions about people');
262
+ }
263
+ if (positives.length === 0)
264
+ return '';
265
+ return `## What's Working Well
266
+
267
+ ${positives.map(p => `- ✓ ${p}`).join('\n')}`;
268
+ }
269
+ // ─── Verdict (merged Recommendation + Recommendations) ───────────────────────
270
+ function renderVerdict(report) {
271
+ // Never allow bare APPROVE for self-reported interview — always at least "WITH CONDITIONS"
272
+ let verdict = report.recommendation ?? 'APPROVE WITH CONDITIONS';
273
+ if (verdict === 'APPROVE') {
274
+ verdict = 'APPROVE WITH CONDITIONS';
275
+ }
276
+ const recs = report.recommendations;
277
+ // Ensure standard condition is always present
278
+ const standardCondition = 'Verify self-reported claims against actual system configurations before granting production access';
279
+ const allRecs = recs.some(r => /verify.*self.reported|verify.*claim/i.test(r))
280
+ ? recs
281
+ : [standardCondition, ...recs];
282
+ let body = `**${verdict}**`;
283
+ if (allRecs.length > 0) {
284
+ body += '\n\n' + allRecs.map((r, i) => `${i + 1}. ${r}`).join('\n');
285
+ }
286
+ // Permissions delta — grouped by system
287
+ const excessiveBySystem = new Map();
288
+ const missingBySystem = new Map();
289
+ for (const sys of report.systems) {
290
+ if (!isBusinessSystem(sys))
291
+ continue;
292
+ for (const scope of sys.scopesDelta) {
293
+ if (scope !== 'NOT PROVIDED') {
294
+ if (!excessiveBySystem.has(sys.systemId))
295
+ excessiveBySystem.set(sys.systemId, []);
296
+ excessiveBySystem.get(sys.systemId).push(scope);
297
+ }
298
+ }
299
+ for (const scope of sys.scopesNeeded) {
300
+ if (!sys.scopesRequested.includes(scope) && scope !== 'NOT PROVIDED') {
301
+ if (!missingBySystem.has(sys.systemId))
302
+ missingBySystem.set(sys.systemId, []);
303
+ missingBySystem.get(sys.systemId).push(scope);
304
+ }
305
+ }
306
+ }
307
+ if (excessiveBySystem.size > 0 || missingBySystem.size > 0) {
308
+ body += '\n\n**Permissions delta**:\n';
309
+ if (excessiveBySystem.size > 0) {
310
+ body += '\n*Excessive (can be revoked):*\n';
311
+ for (const [system, scopes] of excessiveBySystem) {
312
+ body += `- **${system}**: ${scopes.join('; ')}\n`;
313
+ }
314
+ }
315
+ if (missingBySystem.size > 0) {
316
+ body += '\n*Minimum needed:*\n';
317
+ for (const [system, scopes] of missingBySystem) {
318
+ body += `- **${system}**: ${scopes.join('; ')}\n`;
319
+ }
320
+ }
321
+ }
322
+ return `## Verdict & Recommendations
323
+
324
+ ${body}`;
325
+ }
326
+ // ─── Transcript ──────────────────────────────────────────────────────────────
327
+ function renderTranscript(transcript) {
328
+ const items = transcript
329
+ .map((qa, i) => `### Q${i + 1} [${qa.category}]\n\n**Q:** ${qa.question}\n\n**A:** ${qa.answer}`)
330
+ .join('\n\n');
331
+ return `## Interview Transcript
332
+
333
+ <details>
334
+ <summary>Full transcript (${transcript.length} questions)</summary>
335
+
336
+ ${items}
337
+
338
+ </details>`;
339
+ }
340
+ // ─── Regulatory Compliance ──────────────────────────────────────────────────
341
+ function renderRegulatoryCompliance(compliance) {
342
+ const renderFlags = (flags) => {
343
+ if (flags.length === 0)
344
+ return 'No specific flags identified.';
345
+ return flags.map(f => {
346
+ const labels = {
347
+ 'action-required': ' `ACTION REQUIRED`',
348
+ 'warning': ' `REVIEW`',
349
+ 'clarification-needed': ' `NEEDS CLARIFICATION`',
350
+ };
351
+ const label = labels[f.severity] ?? '';
352
+ return `- **${f.framework}**${label}\n ${f.description}`;
353
+ }).join('\n\n');
354
+ };
355
+ return `## Regulatory Compliance
356
+
357
+ > This section highlights potential regulatory implications based on interview data. It is advisory — consult qualified legal counsel for compliance decisions.
358
+
359
+ ### EU (EU AI Act + GDPR)
360
+
361
+ ${renderFlags(compliance.eu)}
362
+
363
+ ### US (SOC 2 + State AI Laws)
364
+
365
+ ${renderFlags(compliance.us)}
366
+
367
+ ### UK (UK GDPR + ICO Guidance)
368
+
369
+ ${renderFlags(compliance.uk)}`;
370
+ }
371
+ // ─── Disclaimer ─────────────────────────────────────────────────────────────
372
+ function renderDisclaimer() {
373
+ return `---
374
+
375
+ *This report was generated automatically by [Heron](https://github.com/jonydony/Heron), an open-source AI agent auditor. It is based on the agent's self-reported information obtained through a structured interview. This is not a formal security audit, penetration test, or compliance certification. Claims have not been independently verified against tool manifests, runtime behavior, or system configurations. Findings should be independently verified before making access control decisions.*`;
376
+ }
377
+ function severityOrder(severity) {
378
+ switch (severity) {
379
+ case 'critical': return 4;
380
+ case 'high': return 3;
381
+ case 'medium': return 2;
382
+ case 'low': return 1;
383
+ default: return 0;
384
+ }
385
+ }
386
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../src/report/templates.ts"],"names":[],"mappings":"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"}