@brutalist/mcp 0.6.0 → 0.6.1

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 (67) hide show
  1. package/README.md +3 -1
  2. package/dist/brutalist-server.d.ts +5 -0
  3. package/dist/brutalist-server.d.ts.map +1 -1
  4. package/dist/brutalist-server.js +244 -80
  5. package/dist/brutalist-server.js.map +1 -1
  6. package/dist/cli-agents.d.ts +7 -3
  7. package/dist/cli-agents.d.ts.map +1 -1
  8. package/dist/cli-agents.js +307 -48
  9. package/dist/cli-agents.js.map +1 -1
  10. package/dist/streaming/circuit-breaker.d.ts +186 -0
  11. package/dist/streaming/circuit-breaker.d.ts.map +1 -0
  12. package/dist/streaming/circuit-breaker.js +463 -0
  13. package/dist/streaming/circuit-breaker.js.map +1 -0
  14. package/dist/streaming/intelligent-buffer.d.ts +141 -0
  15. package/dist/streaming/intelligent-buffer.d.ts.map +1 -0
  16. package/dist/streaming/intelligent-buffer.js +555 -0
  17. package/dist/streaming/intelligent-buffer.js.map +1 -0
  18. package/dist/streaming/output-parser.d.ts +89 -0
  19. package/dist/streaming/output-parser.d.ts.map +1 -0
  20. package/dist/streaming/output-parser.js +349 -0
  21. package/dist/streaming/output-parser.js.map +1 -0
  22. package/dist/streaming/progress-tracker.d.ts +149 -0
  23. package/dist/streaming/progress-tracker.d.ts.map +1 -0
  24. package/dist/streaming/progress-tracker.js +519 -0
  25. package/dist/streaming/progress-tracker.js.map +1 -0
  26. package/dist/streaming/session-manager.d.ts +238 -0
  27. package/dist/streaming/session-manager.d.ts.map +1 -0
  28. package/dist/streaming/session-manager.js +546 -0
  29. package/dist/streaming/session-manager.js.map +1 -0
  30. package/dist/streaming/sse-transport.d.ts +95 -0
  31. package/dist/streaming/sse-transport.d.ts.map +1 -0
  32. package/dist/streaming/sse-transport.js +319 -0
  33. package/dist/streaming/sse-transport.js.map +1 -0
  34. package/dist/streaming/streaming-orchestrator.d.ts +153 -0
  35. package/dist/streaming/streaming-orchestrator.d.ts.map +1 -0
  36. package/dist/streaming/streaming-orchestrator.js +436 -0
  37. package/dist/streaming/streaming-orchestrator.js.map +1 -0
  38. package/dist/test-utils/process-manager.d.ts +61 -0
  39. package/dist/test-utils/process-manager.d.ts.map +1 -0
  40. package/dist/test-utils/process-manager.js +262 -0
  41. package/dist/test-utils/process-manager.js.map +1 -0
  42. package/dist/test-utils/server-harness.d.ts +73 -0
  43. package/dist/test-utils/server-harness.d.ts.map +1 -0
  44. package/dist/test-utils/server-harness.js +296 -0
  45. package/dist/test-utils/server-harness.js.map +1 -0
  46. package/dist/test-utils/streaming-fuzz.d.ts +57 -0
  47. package/dist/test-utils/streaming-fuzz.d.ts.map +1 -0
  48. package/dist/test-utils/streaming-fuzz.js +287 -0
  49. package/dist/test-utils/streaming-fuzz.js.map +1 -0
  50. package/dist/test-utils/test-isolation.d.ts +70 -0
  51. package/dist/test-utils/test-isolation.d.ts.map +1 -0
  52. package/dist/test-utils/test-isolation.js +193 -0
  53. package/dist/test-utils/test-isolation.js.map +1 -0
  54. package/dist/tool-definitions.d.ts.map +1 -1
  55. package/dist/tool-definitions.js +12 -6
  56. package/dist/tool-definitions.js.map +1 -1
  57. package/dist/types/brutalist.d.ts +3 -3
  58. package/dist/types/brutalist.d.ts.map +1 -1
  59. package/dist/types/tool-config.d.ts +0 -1
  60. package/dist/types/tool-config.d.ts.map +1 -1
  61. package/dist/types/tool-config.js +0 -1
  62. package/dist/types/tool-config.js.map +1 -1
  63. package/dist/utils/response-cache.d.ts +14 -7
  64. package/dist/utils/response-cache.d.ts.map +1 -1
  65. package/dist/utils/response-cache.js +173 -62
  66. package/dist/utils/response-cache.js.map +1 -1
  67. package/package.json +13 -3
@@ -0,0 +1,519 @@
1
+ import { EventEmitter } from 'events';
2
+ import { logger } from '../logger.js';
3
+ /**
4
+ * Analysis progress phases with detailed milestones
5
+ */
6
+ export var AnalysisPhase;
7
+ (function (AnalysisPhase) {
8
+ AnalysisPhase["INITIALIZING"] = "initializing";
9
+ AnalysisPhase["COLLECTING_DATA"] = "collecting_data";
10
+ AnalysisPhase["ANALYZING"] = "analyzing";
11
+ AnalysisPhase["PROCESSING_RESULTS"] = "processing_results";
12
+ AnalysisPhase["GENERATING_REPORT"] = "generating_report";
13
+ AnalysisPhase["COMPLETE"] = "complete";
14
+ AnalysisPhase["ERROR"] = "error";
15
+ })(AnalysisPhase || (AnalysisPhase = {}));
16
+ /**
17
+ * Analysis type-specific milestone definitions
18
+ */
19
+ export const ANALYSIS_MILESTONES = {
20
+ roast_codebase: [
21
+ {
22
+ id: 'init_analysis',
23
+ phase: AnalysisPhase.INITIALIZING,
24
+ name: 'Initialize Analysis',
25
+ description: 'Setting up analysis environment and validating target path',
26
+ estimatedDuration: 5000,
27
+ weight: 0.05
28
+ },
29
+ {
30
+ id: 'scan_structure',
31
+ phase: AnalysisPhase.COLLECTING_DATA,
32
+ name: 'Scan Code Structure',
33
+ description: 'Analyzing directory structure and identifying files',
34
+ estimatedDuration: 15000,
35
+ weight: 0.15,
36
+ dependencies: ['init_analysis']
37
+ },
38
+ {
39
+ id: 'read_core_files',
40
+ phase: AnalysisPhase.COLLECTING_DATA,
41
+ name: 'Read Core Files',
42
+ description: 'Reading and parsing main source files',
43
+ estimatedDuration: 30000,
44
+ weight: 0.20,
45
+ dependencies: ['scan_structure']
46
+ },
47
+ {
48
+ id: 'analyze_architecture',
49
+ phase: AnalysisPhase.ANALYZING,
50
+ name: 'Analyze Architecture',
51
+ description: 'Evaluating system architecture and design patterns',
52
+ estimatedDuration: 45000,
53
+ weight: 0.25,
54
+ dependencies: ['read_core_files']
55
+ },
56
+ {
57
+ id: 'security_audit',
58
+ phase: AnalysisPhase.ANALYZING,
59
+ name: 'Security Audit',
60
+ description: 'Scanning for security vulnerabilities and issues',
61
+ estimatedDuration: 35000,
62
+ weight: 0.20,
63
+ dependencies: ['read_core_files']
64
+ },
65
+ {
66
+ id: 'performance_analysis',
67
+ phase: AnalysisPhase.ANALYZING,
68
+ name: 'Performance Analysis',
69
+ description: 'Identifying performance bottlenecks and inefficiencies',
70
+ estimatedDuration: 25000,
71
+ weight: 0.10,
72
+ dependencies: ['analyze_architecture'],
73
+ optional: true
74
+ },
75
+ {
76
+ id: 'generate_findings',
77
+ phase: AnalysisPhase.PROCESSING_RESULTS,
78
+ name: 'Generate Findings',
79
+ description: 'Compiling analysis results and prioritizing issues',
80
+ estimatedDuration: 20000,
81
+ weight: 0.05,
82
+ dependencies: ['analyze_architecture', 'security_audit']
83
+ }
84
+ ],
85
+ roast_idea: [
86
+ {
87
+ id: 'idea_validation',
88
+ phase: AnalysisPhase.INITIALIZING,
89
+ name: 'Validate Idea',
90
+ description: 'Understanding and validating the core concept',
91
+ estimatedDuration: 8000,
92
+ weight: 0.10
93
+ },
94
+ {
95
+ id: 'market_research',
96
+ phase: AnalysisPhase.COLLECTING_DATA,
97
+ name: 'Market Research',
98
+ description: 'Analyzing market conditions and competition',
99
+ estimatedDuration: 25000,
100
+ weight: 0.30,
101
+ dependencies: ['idea_validation']
102
+ },
103
+ {
104
+ id: 'feasibility_analysis',
105
+ phase: AnalysisPhase.ANALYZING,
106
+ name: 'Feasibility Analysis',
107
+ description: 'Evaluating technical and business feasibility',
108
+ estimatedDuration: 30000,
109
+ weight: 0.35,
110
+ dependencies: ['market_research']
111
+ },
112
+ {
113
+ id: 'risk_assessment',
114
+ phase: AnalysisPhase.ANALYZING,
115
+ name: 'Risk Assessment',
116
+ description: 'Identifying potential risks and failure modes',
117
+ estimatedDuration: 20000,
118
+ weight: 0.20,
119
+ dependencies: ['feasibility_analysis']
120
+ },
121
+ {
122
+ id: 'recommendation_synthesis',
123
+ phase: AnalysisPhase.PROCESSING_RESULTS,
124
+ name: 'Synthesize Recommendations',
125
+ description: 'Generating actionable recommendations and critique',
126
+ estimatedDuration: 15000,
127
+ weight: 0.05,
128
+ dependencies: ['risk_assessment']
129
+ }
130
+ ],
131
+ roast_security: [
132
+ {
133
+ id: 'threat_modeling',
134
+ phase: AnalysisPhase.INITIALIZING,
135
+ name: 'Threat Modeling',
136
+ description: 'Identifying attack vectors and threat landscape',
137
+ estimatedDuration: 15000,
138
+ weight: 0.20
139
+ },
140
+ {
141
+ id: 'vulnerability_scan',
142
+ phase: AnalysisPhase.ANALYZING,
143
+ name: 'Vulnerability Scan',
144
+ description: 'Scanning for known security vulnerabilities',
145
+ estimatedDuration: 40000,
146
+ weight: 0.40,
147
+ dependencies: ['threat_modeling']
148
+ },
149
+ {
150
+ id: 'privilege_analysis',
151
+ phase: AnalysisPhase.ANALYZING,
152
+ name: 'Privilege Analysis',
153
+ description: 'Analyzing access controls and privilege escalation',
154
+ estimatedDuration: 25000,
155
+ weight: 0.25,
156
+ dependencies: ['vulnerability_scan']
157
+ },
158
+ {
159
+ id: 'compliance_check',
160
+ phase: AnalysisPhase.ANALYZING,
161
+ name: 'Compliance Check',
162
+ description: 'Checking compliance with security standards',
163
+ estimatedDuration: 20000,
164
+ weight: 0.10,
165
+ dependencies: ['privilege_analysis'],
166
+ optional: true
167
+ },
168
+ {
169
+ id: 'security_recommendations',
170
+ phase: AnalysisPhase.PROCESSING_RESULTS,
171
+ name: 'Security Recommendations',
172
+ description: 'Generating prioritized security recommendations',
173
+ estimatedDuration: 10000,
174
+ weight: 0.05,
175
+ dependencies: ['privilege_analysis']
176
+ }
177
+ ]
178
+ };
179
+ /**
180
+ * Progress milestone system with intelligent phase detection
181
+ *
182
+ * Features:
183
+ * - Dynamic milestone tracking based on analysis type
184
+ * - Intelligent progress estimation with dependencies
185
+ * - Phase transition detection from CLI output
186
+ * - ETA calculation with adaptive learning
187
+ * - Progress events for real-time updates
188
+ */
189
+ export class ProgressTracker extends EventEmitter {
190
+ state;
191
+ milestones;
192
+ sessionId;
193
+ analysisType;
194
+ // Pattern matching for phase detection
195
+ PHASE_PATTERNS = {
196
+ [AnalysisPhase.INITIALIZING]: [
197
+ /initializing|starting|setting up|loading/i,
198
+ /^Starting analysis/i,
199
+ /Validating/i
200
+ ],
201
+ [AnalysisPhase.COLLECTING_DATA]: [
202
+ /reading|scanning|collecting|gathering|loading files/i,
203
+ /Found \d+ files/i,
204
+ /Processing directory/i,
205
+ /Analyzing structure/i
206
+ ],
207
+ [AnalysisPhase.ANALYZING]: [
208
+ /analyzing|examining|evaluating|processing|reviewing/i,
209
+ /Security scan/i,
210
+ /Architecture analysis/i,
211
+ /Performance check/i,
212
+ /^CRITICAL|^WARNING|^ERROR/i
213
+ ],
214
+ [AnalysisPhase.PROCESSING_RESULTS]: [
215
+ /generating|compiling|summarizing|finalizing/i,
216
+ /Creating report/i,
217
+ /Summary of findings/i
218
+ ],
219
+ [AnalysisPhase.COMPLETE]: [
220
+ /analysis complete|finished|done|summary complete/i,
221
+ /Total issues found/i,
222
+ /Analysis completed/i
223
+ ],
224
+ [AnalysisPhase.ERROR]: [
225
+ /failed|error|exception|crashed|timeout/i,
226
+ /Analysis failed/i,
227
+ /Fatal error/i
228
+ ]
229
+ };
230
+ // Milestone triggers based on content patterns
231
+ MILESTONE_TRIGGERS = {
232
+ scan_structure: [
233
+ /Found \d+ files/i,
234
+ /Directory structure:/i,
235
+ /Scanning.*files/i
236
+ ],
237
+ read_core_files: [
238
+ /Reading.*\.js|\.ts|\.py|\.go/i,
239
+ /Processing.*files/i,
240
+ /File analysis/i
241
+ ],
242
+ security_audit: [
243
+ /Security scan|vulnerability|CRITICAL|HIGH RISK/i,
244
+ /Authentication|Authorization|Injection/i,
245
+ /Security issue/i
246
+ ],
247
+ performance_analysis: [
248
+ /Performance|bottleneck|optimization|slow/i,
249
+ /Memory usage|CPU intensive/i,
250
+ /Performance issue/i
251
+ ],
252
+ threat_modeling: [
253
+ /Threat model|attack vector|threat landscape/i,
254
+ /Potential attacks/i
255
+ ],
256
+ vulnerability_scan: [
257
+ /Vulnerability scan|CVE-|security flaw/i,
258
+ /Known vulnerabilities/i
259
+ ]
260
+ };
261
+ constructor(sessionId, analysisType) {
262
+ super();
263
+ this.sessionId = sessionId;
264
+ this.analysisType = analysisType;
265
+ this.milestones = ANALYSIS_MILESTONES[analysisType] || [];
266
+ this.state = {
267
+ currentPhase: AnalysisPhase.INITIALIZING,
268
+ overallProgress: 0,
269
+ phaseProgress: 0,
270
+ completedMilestones: new Set(),
271
+ startTime: Date.now(),
272
+ lastUpdate: Date.now(),
273
+ errors: []
274
+ };
275
+ logger.info(`📊 Progress tracker initialized for ${analysisType} (${this.milestones.length} milestones)`);
276
+ }
277
+ /**
278
+ * Process streaming event and update progress
279
+ */
280
+ processEvent(event) {
281
+ if (event.sessionId !== this.sessionId) {
282
+ return;
283
+ }
284
+ const content = event.content || '';
285
+ this.state.lastUpdate = Date.now();
286
+ // Detect phase transitions
287
+ this.detectPhaseFromContent(content);
288
+ // Detect milestone completion
289
+ this.detectMilestonesFromContent(content);
290
+ // Handle errors
291
+ if (event.type === 'agent_error') {
292
+ this.handleError(content);
293
+ }
294
+ // Update progress calculations
295
+ this.updateProgress();
296
+ // Emit progress event
297
+ this.emitProgressEvent('progress_updated');
298
+ }
299
+ /**
300
+ * Detect current phase from CLI output content
301
+ */
302
+ detectPhaseFromContent(content) {
303
+ for (const [phase, patterns] of Object.entries(this.PHASE_PATTERNS)) {
304
+ for (const pattern of patterns) {
305
+ if (pattern.test(content)) {
306
+ this.transitionToPhase(phase);
307
+ return;
308
+ }
309
+ }
310
+ }
311
+ }
312
+ /**
313
+ * Detect milestone completion from content
314
+ */
315
+ detectMilestonesFromContent(content) {
316
+ for (const milestone of this.milestones) {
317
+ // Skip already completed milestones
318
+ if (this.state.completedMilestones.has(milestone.id)) {
319
+ continue;
320
+ }
321
+ // Check if dependencies are met
322
+ if (!this.areDependenciesMet(milestone)) {
323
+ continue;
324
+ }
325
+ // Check milestone triggers
326
+ const triggers = this.MILESTONE_TRIGGERS[milestone.id];
327
+ if (triggers) {
328
+ for (const trigger of triggers) {
329
+ if (trigger.test(content)) {
330
+ this.completeMilestone(milestone);
331
+ break;
332
+ }
333
+ }
334
+ }
335
+ // Auto-complete milestones when phase advances beyond milestone phase
336
+ if (this.shouldAutoCompleteMilestone(milestone)) {
337
+ this.completeMilestone(milestone);
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Transition to new phase
343
+ */
344
+ transitionToPhase(newPhase) {
345
+ if (this.state.currentPhase === newPhase) {
346
+ return;
347
+ }
348
+ logger.debug(`🔄 Phase transition: ${this.state.currentPhase} → ${newPhase}`);
349
+ const oldPhase = this.state.currentPhase;
350
+ this.state.currentPhase = newPhase;
351
+ this.state.phaseProgress = 0;
352
+ // Auto-complete milestones from previous phases
353
+ this.autoCompletePreviousPhaseMilestones(oldPhase);
354
+ this.emitProgressEvent('phase_changed', {
355
+ previousPhase: oldPhase,
356
+ newPhase
357
+ });
358
+ }
359
+ /**
360
+ * Complete a milestone
361
+ */
362
+ completeMilestone(milestone) {
363
+ if (this.state.completedMilestones.has(milestone.id)) {
364
+ return;
365
+ }
366
+ logger.info(`✅ Milestone completed: ${milestone.name}`);
367
+ this.state.completedMilestones.add(milestone.id);
368
+ this.state.currentMilestone = milestone;
369
+ this.emitProgressEvent('milestone_completed', {
370
+ milestone: milestone.id,
371
+ milestoneName: milestone.name
372
+ });
373
+ }
374
+ /**
375
+ * Check if milestone dependencies are met
376
+ */
377
+ areDependenciesMet(milestone) {
378
+ if (!milestone.dependencies) {
379
+ return true;
380
+ }
381
+ return milestone.dependencies.every(depId => this.state.completedMilestones.has(depId));
382
+ }
383
+ /**
384
+ * Check if milestone should be auto-completed
385
+ */
386
+ shouldAutoCompleteMilestone(milestone) {
387
+ // Get phase order
388
+ const phases = Object.values(AnalysisPhase);
389
+ const currentPhaseIndex = phases.indexOf(this.state.currentPhase);
390
+ const milestonePhaseIndex = phases.indexOf(milestone.phase);
391
+ // Auto-complete if we've moved past the milestone's phase
392
+ return currentPhaseIndex > milestonePhaseIndex;
393
+ }
394
+ /**
395
+ * Auto-complete milestones from previous phases
396
+ */
397
+ autoCompletePreviousPhaseMilestones(previousPhase) {
398
+ const phases = Object.values(AnalysisPhase);
399
+ const previousPhaseIndex = phases.indexOf(previousPhase);
400
+ for (const milestone of this.milestones) {
401
+ const milestonePhaseIndex = phases.indexOf(milestone.phase);
402
+ if (milestonePhaseIndex <= previousPhaseIndex &&
403
+ !this.state.completedMilestones.has(milestone.id) &&
404
+ this.areDependenciesMet(milestone)) {
405
+ logger.debug(`🔄 Auto-completing milestone: ${milestone.name}`);
406
+ this.completeMilestone(milestone);
407
+ }
408
+ }
409
+ }
410
+ /**
411
+ * Update progress calculations
412
+ */
413
+ updateProgress() {
414
+ // Calculate overall progress based on completed milestone weights
415
+ let totalWeight = 0;
416
+ let completedWeight = 0;
417
+ for (const milestone of this.milestones) {
418
+ totalWeight += milestone.weight;
419
+ if (this.state.completedMilestones.has(milestone.id)) {
420
+ completedWeight += milestone.weight;
421
+ }
422
+ }
423
+ this.state.overallProgress = totalWeight > 0 ? completedWeight / totalWeight : 0;
424
+ // Calculate phase progress
425
+ const phaseMilestones = this.milestones.filter(m => m.phase === this.state.currentPhase);
426
+ const completedPhaseMilestones = phaseMilestones.filter(m => this.state.completedMilestones.has(m.id));
427
+ this.state.phaseProgress = phaseMilestones.length > 0
428
+ ? completedPhaseMilestones.length / phaseMilestones.length
429
+ : 0;
430
+ // Estimate completion time
431
+ this.updateEstimatedCompletion();
432
+ }
433
+ /**
434
+ * Update estimated completion time
435
+ */
436
+ updateEstimatedCompletion() {
437
+ if (this.state.overallProgress <= 0) {
438
+ return;
439
+ }
440
+ const elapsed = Date.now() - this.state.startTime;
441
+ const estimatedTotal = elapsed / this.state.overallProgress;
442
+ this.state.estimatedCompletion = this.state.startTime + estimatedTotal;
443
+ }
444
+ /**
445
+ * Handle error in analysis
446
+ */
447
+ handleError(error) {
448
+ this.state.errors.push(error);
449
+ this.state.currentPhase = AnalysisPhase.ERROR;
450
+ this.emitProgressEvent('analysis_error', {
451
+ error,
452
+ errorCount: this.state.errors.length
453
+ });
454
+ }
455
+ /**
456
+ * Mark analysis as complete
457
+ */
458
+ markComplete() {
459
+ this.state.currentPhase = AnalysisPhase.COMPLETE;
460
+ this.state.overallProgress = 1.0;
461
+ this.state.phaseProgress = 1.0;
462
+ // Auto-complete any remaining milestones
463
+ for (const milestone of this.milestones) {
464
+ if (!this.state.completedMilestones.has(milestone.id) &&
465
+ this.areDependenciesMet(milestone)) {
466
+ this.completeMilestone(milestone);
467
+ }
468
+ }
469
+ this.emitProgressEvent('analysis_complete', {
470
+ duration: Date.now() - this.state.startTime,
471
+ totalMilestones: this.milestones.length,
472
+ completedMilestones: this.state.completedMilestones.size,
473
+ errorCount: this.state.errors.length
474
+ });
475
+ }
476
+ /**
477
+ * Emit progress event
478
+ */
479
+ emitProgressEvent(type, metadata) {
480
+ const event = {
481
+ type,
482
+ sessionId: this.sessionId,
483
+ timestamp: Date.now(),
484
+ phase: this.state.currentPhase,
485
+ milestone: this.state.currentMilestone,
486
+ progress: {
487
+ overall: this.state.overallProgress,
488
+ phase: this.state.phaseProgress
489
+ },
490
+ estimatedCompletion: this.state.estimatedCompletion,
491
+ metadata
492
+ };
493
+ this.emit('progress', event);
494
+ }
495
+ /**
496
+ * Get current progress state
497
+ */
498
+ getState() {
499
+ return { ...this.state };
500
+ }
501
+ /**
502
+ * Get progress summary for display
503
+ */
504
+ getProgressSummary() {
505
+ const timeRemaining = this.state.estimatedCompletion
506
+ ? Math.max(0, this.state.estimatedCompletion - Date.now())
507
+ : undefined;
508
+ return {
509
+ phase: this.state.currentPhase,
510
+ overallProgress: Math.round(this.state.overallProgress * 100) / 100,
511
+ phaseProgress: Math.round(this.state.phaseProgress * 100) / 100,
512
+ currentMilestone: this.state.currentMilestone?.name,
513
+ estimatedTimeRemaining: timeRemaining,
514
+ completedMilestones: this.state.completedMilestones.size,
515
+ totalMilestones: this.milestones.length
516
+ };
517
+ }
518
+ }
519
+ //# sourceMappingURL=progress-tracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress-tracker.js","sourceRoot":"","sources":["../../src/streaming/progress-tracker.ts"],"names":[],"mappings":"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"}