@inkog-io/mcp 1.0.0 → 1.0.2

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.
@@ -10,7 +10,7 @@
10
10
  * - OWASP LLM Top 10
11
11
  */
12
12
  import { z } from 'zod';
13
- import { getClient, InkogAuthError, InkogNetworkError } from '../api/client.js';
13
+ import { getClient, InkogApiError, InkogAuthError, InkogNetworkError, InkogRateLimitError, } from '../api/client.js';
14
14
  import { getRelativePaths, readDirectory } from '../utils/file-reader.js';
15
15
  // =============================================================================
16
16
  // Schema
@@ -41,44 +41,109 @@ function getFrameworkDisplayName(framework) {
41
41
  return 'ISO 42001 AI Management System';
42
42
  case 'owasp-llm-top-10':
43
43
  return 'OWASP LLM Top 10';
44
- case 'all':
45
- return 'All Frameworks';
46
44
  default:
47
45
  return framework;
48
46
  }
49
47
  }
50
48
  function getStatusIcon(status) {
51
- switch (status) {
52
- case 'COMPLIANT':
49
+ const lower = status.toLowerCase();
50
+ switch (lower) {
51
+ case 'compliant':
52
+ case 'pass':
53
53
  return '✅';
54
- case 'NON_COMPLIANT':
54
+ case 'non-compliant':
55
+ case 'non_compliant':
56
+ case 'fail':
55
57
  return '❌';
56
- case 'PARTIAL':
58
+ case 'partial':
57
59
  return '⚠️';
58
- case 'NOT_APPLICABLE':
60
+ case 'not_applicable':
61
+ case 'n/a':
59
62
  return '➖';
60
63
  default:
61
64
  return '❓';
62
65
  }
63
66
  }
67
+ function getRiskLevelIcon(level) {
68
+ const lower = level.toLowerCase();
69
+ switch (lower) {
70
+ case 'critical':
71
+ return '🔴';
72
+ case 'high':
73
+ return '🟠';
74
+ case 'medium':
75
+ return '🟡';
76
+ case 'low':
77
+ return '🟢';
78
+ default:
79
+ return '⚪';
80
+ }
81
+ }
82
+ function formatScore(score) {
83
+ if (score >= 90) {
84
+ return `✅ ${score}/100 (Excellent)`;
85
+ }
86
+ else if (score >= 70) {
87
+ return `🟢 ${score}/100 (Good)`;
88
+ }
89
+ else if (score >= 50) {
90
+ return `🟡 ${score}/100 (Fair)`;
91
+ }
92
+ else if (score >= 30) {
93
+ return `🟠 ${score}/100 (Poor)`;
94
+ }
95
+ else {
96
+ return `🔴 ${score}/100 (Critical)`;
97
+ }
98
+ }
64
99
  function formatArticle(article) {
65
100
  const icon = getStatusIcon(article.status);
66
101
  let output = `${icon} ${article.id}: ${article.title}\n`;
67
- output += ` Status: ${article.status}\n`;
68
- if (article.findings.length > 0) {
69
- output += ` Findings: ${article.findings.length}\n`;
70
- for (const finding of article.findings.slice(0, 3)) {
71
- output += ` • ${finding.message} (${finding.file}:${finding.line})\n`;
102
+ output += ` Status: ${article.status} | Score: ${article.score}/100\n`;
103
+ if (article.requirements && article.requirements.length > 0) {
104
+ output += ` Requirements:\n`;
105
+ for (const req of article.requirements) {
106
+ output += ` • ${req}\n`;
107
+ }
108
+ }
109
+ // findings is an array of finding IDs (strings)
110
+ if (article.findings && article.findings.length > 0) {
111
+ output += ` Related Findings: ${article.findings.length}\n`;
112
+ for (const findingId of article.findings.slice(0, 3)) {
113
+ output += ` • ${findingId}\n`;
72
114
  }
73
115
  if (article.findings.length > 3) {
74
116
  output += ` ... and ${article.findings.length - 3} more\n`;
75
117
  }
76
118
  }
77
- if (article.recommendations.length > 0) {
78
- output += ` Recommendations:\n`;
79
- for (const rec of article.recommendations) {
80
- output += ` 💡 ${rec}\n`;
81
- }
119
+ if (article.remediation) {
120
+ output += ` 💡 Remediation: ${article.remediation}\n`;
121
+ }
122
+ return output;
123
+ }
124
+ function formatCategory(category) {
125
+ const icon = getStatusIcon(category.status);
126
+ let output = `${icon} ${category.id}: ${category.name}\n`;
127
+ output += ` Status: ${category.status}\n`;
128
+ if (category.description) {
129
+ output += ` ${category.description}\n`;
130
+ }
131
+ if (category.finding_ids && category.finding_ids.length > 0) {
132
+ output += ` Related Findings: ${category.finding_ids.length}\n`;
133
+ }
134
+ if (category.impact) {
135
+ output += ` Impact: ${category.impact}\n`;
136
+ }
137
+ return output;
138
+ }
139
+ function formatRecommendation(rec, index) {
140
+ let output = `${index + 1}. [${rec.priority.toUpperCase()}] ${rec.title}\n`;
141
+ output += ` ${rec.description}\n`;
142
+ if (rec.article) {
143
+ output += ` Article: ${rec.article}\n`;
144
+ }
145
+ if (rec.effort) {
146
+ output += ` Effort: ${rec.effort}\n`;
82
147
  }
83
148
  return output;
84
149
  }
@@ -116,45 +181,66 @@ async function complianceHandler(rawArgs) {
116
181
  }
117
182
  // Get relative paths
118
183
  const files = getRelativePaths(readResult.files, args.path);
119
- // Call Inkog API
184
+ // Call Inkog API - first scan, then generate compliance report
120
185
  const client = getClient();
121
- const response = await client.generateComplianceReport(files, {
186
+ // Step 1: Run a scan to get a scan_id
187
+ const scanResponse = await client.scan(files, { policy: 'balanced' });
188
+ if (!scanResponse.success || !scanResponse.scan_id) {
189
+ return {
190
+ content: [
191
+ {
192
+ type: 'text',
193
+ text: 'Scan failed: Unable to analyze files',
194
+ },
195
+ ],
196
+ isError: true,
197
+ };
198
+ }
199
+ // Step 2: Use scan_id to generate compliance report
200
+ const response = await client.generateComplianceReport({
201
+ scanId: scanResponse.scan_id,
122
202
  framework: args.framework,
123
203
  format: args.format,
124
204
  });
125
- // If format is markdown or pdf, return the pre-formatted content
126
- if (args.format !== 'json' && response.reportContent !== undefined) {
205
+ // If format is markdown or pdf and there's a pre-formatted report, return it
206
+ if (args.format !== 'json' && response.markdown_report) {
127
207
  return {
128
208
  content: [
129
209
  {
130
210
  type: 'text',
131
- text: response.reportContent,
211
+ text: response.markdown_report,
132
212
  },
133
213
  ],
134
214
  };
135
215
  }
136
216
  // Build formatted output
137
217
  const frameworkName = getFrameworkDisplayName(response.framework);
138
- const overallIcon = getStatusIcon(response.overallStatus);
139
218
  let output = '╔══════════════════════════════════════════════════════╗\n';
140
219
  output += '║ 📋 Compliance Report ║\n';
141
220
  output += '╚══════════════════════════════════════════════════════╝\n\n';
142
221
  output += `🏛️ Framework: ${frameworkName}\n`;
143
- output += `📊 Compliance Score: ${response.complianceScore}/100\n`;
144
- output += `${overallIcon} Overall Status: ${response.overallStatus}\n`;
145
- output += `📅 Generated: ${response.generatedAt}\n\n`;
146
- // Executive Summary
222
+ output += `📊 Compliance Score: ${formatScore(response.overall_score)}\n`;
223
+ output += `${getRiskLevelIcon(response.risk_level)} Risk Level: ${response.risk_level.toUpperCase()}\n`;
224
+ output += `📅 Generated: ${response.generated_at}\n`;
225
+ if (response.report_id) {
226
+ output += `🔗 Report ID: ${response.report_id}\n`;
227
+ }
228
+ output += '\n';
229
+ // Findings summary
147
230
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
148
- output += '📝 EXECUTIVE SUMMARY\n\n';
149
- output += response.executiveSummary + '\n\n';
150
- // Article breakdown
151
- if (response.articles.length > 0) {
231
+ output += '📊 FINDINGS SUMMARY\n\n';
232
+ const fs = response.findings_summary;
233
+ output += ` Total: ${fs.total}\n`;
234
+ output += ` 🔴 Critical: ${fs.critical} | 🟠 High: ${fs.high} | 🟡 Medium: ${fs.medium} | 🟢 Low: ${fs.low}\n\n`;
235
+ // Article breakdown (for EU AI Act, NIST, ISO)
236
+ const articles = response.articles ?? [];
237
+ if (articles.length > 0) {
152
238
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
153
239
  output += '📑 ARTICLE BREAKDOWN\n\n';
154
240
  // Group by status
155
- const compliant = response.articles.filter((a) => a.status === 'COMPLIANT');
156
- const nonCompliant = response.articles.filter((a) => a.status === 'NON_COMPLIANT');
157
- const partial = response.articles.filter((a) => a.status === 'PARTIAL');
241
+ const compliant = articles.filter((a) => a.status.toLowerCase() === 'compliant');
242
+ const nonCompliant = articles.filter((a) => a.status.toLowerCase() === 'non-compliant' || a.status.toLowerCase() === 'non_compliant');
243
+ const partial = articles.filter((a) => a.status.toLowerCase() === 'partial');
158
244
  if (nonCompliant.length > 0) {
159
245
  output += '❌ NON-COMPLIANT:\n\n';
160
246
  for (const article of nonCompliant) {
@@ -170,11 +256,51 @@ async function complianceHandler(rawArgs) {
170
256
  if (compliant.length > 0) {
171
257
  output += '✅ COMPLIANT:\n\n';
172
258
  for (const article of compliant) {
173
- output += ` ${article.id}: ${article.title}\n`;
259
+ output += ` ${article.id}: ${article.title} (${article.score}/100)\n`;
174
260
  }
175
261
  output += '\n';
176
262
  }
177
263
  }
264
+ // Category breakdown (for OWASP)
265
+ const categories = response.categories ?? [];
266
+ if (categories.length > 0) {
267
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
268
+ output += '📂 CATEGORY BREAKDOWN\n\n';
269
+ const passing = categories.filter((c) => c.status.toLowerCase() === 'pass');
270
+ const failing = categories.filter((c) => c.status.toLowerCase() === 'fail');
271
+ const partialCats = categories.filter((c) => c.status.toLowerCase() === 'partial');
272
+ if (failing.length > 0) {
273
+ output += '❌ FAILING:\n\n';
274
+ for (const cat of failing) {
275
+ output += formatCategory(cat) + '\n';
276
+ }
277
+ }
278
+ if (partialCats.length > 0) {
279
+ output += '⚠️ PARTIAL:\n\n';
280
+ for (const cat of partialCats) {
281
+ output += formatCategory(cat) + '\n';
282
+ }
283
+ }
284
+ if (passing.length > 0) {
285
+ output += '✅ PASSING:\n\n';
286
+ for (const cat of passing) {
287
+ output += ` ${cat.id}: ${cat.name}\n`;
288
+ }
289
+ output += '\n';
290
+ }
291
+ }
292
+ // Recommendations
293
+ const recommendations = response.recommendations ?? [];
294
+ if (recommendations.length > 0) {
295
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
296
+ output += '💡 RECOMMENDATIONS\n\n';
297
+ // Sort by priority
298
+ const priorityOrder = { critical: 0, high: 1, medium: 2, low: 3 };
299
+ const sorted = [...recommendations].sort((a, b) => (priorityOrder[a.priority.toLowerCase()] ?? 4) - (priorityOrder[b.priority.toLowerCase()] ?? 4));
300
+ for (const [index, rec] of sorted.entries()) {
301
+ output += formatRecommendation(rec, index) + '\n';
302
+ }
303
+ }
178
304
  // EU AI Act specific note
179
305
  if (response.framework === 'eu-ai-act') {
180
306
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
@@ -183,8 +309,12 @@ async function complianceHandler(rawArgs) {
183
309
  output += 'Ensure all high-risk AI systems have:\n';
184
310
  output += '• Human-in-the-loop controls\n';
185
311
  output += '• Ability to interrupt operations\n';
186
- output += '• Audit logging of all actions\n';
312
+ output += '• Audit logging of all actions\n\n';
187
313
  }
314
+ // Footer
315
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n';
316
+ output += 'Compliance Report powered by Inkog AI Security Platform\n';
317
+ output += 'Learn more: https://inkog.io/compliance\n';
188
318
  return {
189
319
  content: [
190
320
  {
@@ -206,6 +336,17 @@ async function complianceHandler(rawArgs) {
206
336
  isError: true,
207
337
  };
208
338
  }
339
+ if (error instanceof InkogRateLimitError) {
340
+ return {
341
+ content: [
342
+ {
343
+ type: 'text',
344
+ text: `⏱️ Rate Limited\n\nToo many requests. Please retry after ${error.retryAfter} seconds.`,
345
+ },
346
+ ],
347
+ isError: true,
348
+ };
349
+ }
209
350
  if (error instanceof InkogNetworkError) {
210
351
  return {
211
352
  content: [
@@ -217,7 +358,27 @@ async function complianceHandler(rawArgs) {
217
358
  isError: true,
218
359
  };
219
360
  }
220
- throw error;
361
+ if (error instanceof InkogApiError) {
362
+ return {
363
+ content: [
364
+ {
365
+ type: 'text',
366
+ text: `API error: ${error.message}${error.details ? `\n\nDetails: ${JSON.stringify(error.details)}` : ''}`,
367
+ },
368
+ ],
369
+ isError: true,
370
+ };
371
+ }
372
+ const message = error instanceof Error ? error.message : 'Unknown error occurred';
373
+ return {
374
+ content: [
375
+ {
376
+ type: 'text',
377
+ text: `Error: ${message}`,
378
+ },
379
+ ],
380
+ isError: true,
381
+ };
221
382
  }
222
383
  }
223
384
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/tools/compliance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"compliance.js","sourceRoot":"","sources":["../../src/tools/compliance.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/tools/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAuM7D,eAAO,MAAM,WAAW,EAAE,cAqBzB,CAAC"}
1
+ {"version":3,"file":"explain.d.ts","sourceRoot":"","sources":["../../src/tools/explain.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAWH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAiO7D,eAAO,MAAM,WAAW,EAAE,cAqBzB,CAAC"}
@@ -10,7 +10,7 @@
10
10
  * - Code examples (vulnerable vs secure)
11
11
  */
12
12
  import { z } from 'zod';
13
- import { getClient, InkogAuthError, InkogNetworkError } from '../api/client.js';
13
+ import { getClient, InkogApiError, InkogAuthError, InkogNetworkError, InkogRateLimitError, } from '../api/client.js';
14
14
  // =============================================================================
15
15
  // Schema
16
16
  // =============================================================================
@@ -45,18 +45,7 @@ function formatSeverityBadge(severity) {
45
45
  return severity;
46
46
  }
47
47
  }
48
- function formatRiskTier(tier) {
49
- switch (tier) {
50
- case 'vulnerability':
51
- return '🔴 Exploitable Vulnerability';
52
- case 'risk_pattern':
53
- return '🟠 Risk Pattern';
54
- case 'hardening':
55
- return '🟡 Hardening Recommendation';
56
- default:
57
- return tier;
58
- }
59
- }
48
+ // formatRiskTier removed - now using response.category directly
60
49
  // =============================================================================
61
50
  // Handler
62
51
  // =============================================================================
@@ -92,53 +81,58 @@ async function explainHandler(rawArgs) {
92
81
  output += '╚══════════════════════════════════════════════════════╝\n\n';
93
82
  // Title and metadata
94
83
  output += `🔍 ${response.title}\n`;
95
- output += ` Pattern: ${response.pattern}\n`;
84
+ output += ` Pattern: ${response.pattern_id}\n`;
96
85
  output += ` Severity: ${formatSeverityBadge(response.severity)}\n`;
97
- output += ` Category: ${formatRiskTier(response.riskTier)}\n`;
98
- if (response.cwe !== undefined) {
99
- output += ` CWE: ${response.cwe}\n`;
86
+ output += ` Category: ${response.category}\n`;
87
+ // CWE - backend sends as array
88
+ if (response.cwe !== undefined && response.cwe.length > 0) {
89
+ output += ` CWE: ${response.cwe.join(', ')}\n`;
100
90
  }
101
- if (response.owaspLlm !== undefined) {
102
- output += ` OWASP LLM: ${response.owaspLlm}\n`;
91
+ // OWASP - backend sends as array
92
+ if (response.owasp !== undefined && response.owasp.length > 0) {
93
+ output += ` OWASP LLM: ${response.owasp.join(', ')}\n`;
103
94
  }
104
95
  output += '\n';
105
96
  // Description
106
97
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
107
98
  output += '📝 DESCRIPTION\n\n';
108
99
  output += response.description + '\n\n';
109
- // Explanation
110
- output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
111
- output += '🔬 WHY THIS IS DANGEROUS\n\n';
112
- output += response.explanation + '\n\n';
113
100
  // Impact
114
- output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
115
- output += '💥 POTENTIAL IMPACT\n\n';
116
- output += response.impact + '\n\n';
117
- // Remediation steps
118
- output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
119
- output += '🔧 HOW TO FIX\n\n';
120
- for (const step of response.remediationSteps) {
121
- output += `${step.order}. ${step.description}\n`;
122
- if (step.codeExample !== undefined) {
123
- const lang = step.language ?? '';
124
- output += `\n\`\`\`${lang}\n${step.codeExample}\n\`\`\`\n\n`;
101
+ if (response.impact) {
102
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
103
+ output += '💥 POTENTIAL IMPACT\n\n';
104
+ output += response.impact + '\n\n';
105
+ }
106
+ // Remediation
107
+ if (response.remediation) {
108
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
109
+ output += '🔧 HOW TO FIX\n\n';
110
+ output += response.remediation + '\n\n';
111
+ }
112
+ // Remediation steps - backend sends as string[]
113
+ if (response.remediation_steps && response.remediation_steps.length > 0) {
114
+ output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
115
+ output += '📋 REMEDIATION STEPS\n\n';
116
+ for (let i = 0; i < response.remediation_steps.length; i++) {
117
+ output += `${i + 1}. ${response.remediation_steps[i]}\n`;
125
118
  }
119
+ output += '\n';
126
120
  }
127
- // Code examples
128
- if (response.codeExamples !== undefined) {
121
+ // Code examples - backend sends as examples: { vulnerable, secure }
122
+ if (response.examples !== undefined) {
129
123
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
130
124
  output += '📝 CODE EXAMPLES\n\n';
131
125
  output += '❌ Vulnerable:\n';
132
- output += `\`\`\`${response.codeExamples.language}\n${response.codeExamples.vulnerable}\n\`\`\`\n\n`;
126
+ output += `\`\`\`\n${response.examples.vulnerable}\n\`\`\`\n\n`;
133
127
  output += '✅ Secure:\n';
134
- output += `\`\`\`${response.codeExamples.language}\n${response.codeExamples.secure}\n\`\`\`\n\n`;
128
+ output += `\`\`\`\n${response.examples.secure}\n\`\`\`\n\n`;
135
129
  }
136
- // References
137
- if (response.references.length > 0) {
130
+ // References - backend sends as { title, url }[]
131
+ if (response.references !== undefined && response.references.length > 0) {
138
132
  output += '━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\n';
139
133
  output += '📚 REFERENCES\n\n';
140
134
  for (const ref of response.references) {
141
- output += `• ${ref}\n`;
135
+ output += `• ${ref.title}: ${ref.url}\n`;
142
136
  }
143
137
  }
144
138
  return {
@@ -162,6 +156,17 @@ async function explainHandler(rawArgs) {
162
156
  isError: true,
163
157
  };
164
158
  }
159
+ if (error instanceof InkogRateLimitError) {
160
+ return {
161
+ content: [
162
+ {
163
+ type: 'text',
164
+ text: `⏱️ Rate Limited\n\nToo many requests. Please retry after ${error.retryAfter} seconds.`,
165
+ },
166
+ ],
167
+ isError: true,
168
+ };
169
+ }
165
170
  if (error instanceof InkogNetworkError) {
166
171
  return {
167
172
  content: [
@@ -173,7 +178,27 @@ async function explainHandler(rawArgs) {
173
178
  isError: true,
174
179
  };
175
180
  }
176
- throw error;
181
+ if (error instanceof InkogApiError) {
182
+ return {
183
+ content: [
184
+ {
185
+ type: 'text',
186
+ text: `API error: ${error.message}${error.details ? `\n\nDetails: ${JSON.stringify(error.details)}` : ''}`,
187
+ },
188
+ ],
189
+ isError: true,
190
+ };
191
+ }
192
+ const message = error instanceof Error ? error.message : 'Unknown error occurred';
193
+ return {
194
+ content: [
195
+ {
196
+ type: 'text',
197
+ text: `Error: ${message}`,
198
+ },
199
+ ],
200
+ isError: true,
201
+ };
177
202
  }
178
203
  }
179
204
  // =============================================================================
@@ -1 +1 @@
1
- {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/tools/explain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"explain.js","sourceRoot":"","sources":["../../src/tools/explain.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/tools/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAqM7D,eAAO,MAAM,cAAc,EAAE,cAiB5B,CAAC"}
1
+ {"version":3,"file":"governance.d.ts","sourceRoot":"","sources":["../../src/tools/governance.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAaH,OAAO,KAAK,EAAE,cAAc,EAAc,MAAM,YAAY,CAAC;AAsV7D,eAAO,MAAM,cAAc,EAAE,cAiB5B,CAAC"}