@office-ai/aioncli-core 0.24.1 → 0.24.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.
@@ -0,0 +1,628 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2025 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { FinishReason, GenerateContentResponse } from '@google/genai';
7
+ import { BedrockRuntimeClient, ConverseCommand, ConverseStreamCommand, } from '@aws-sdk/client-bedrock-runtime';
8
+ import { debugLogger } from '../utils/debugLogger.js';
9
+ import { retryWithBackoff } from '../utils/retry.js';
10
+ /**
11
+ * BedrockContentGenerator implements ContentGenerator interface for AWS Bedrock.
12
+ */
13
+ export class BedrockContentGenerator {
14
+ client;
15
+ model;
16
+ region;
17
+ /**
18
+ * Accumulator for streaming tool calls.
19
+ * Bedrock sends tool input as JSON fragments across multiple contentBlockDelta events.
20
+ * We accumulate the fragments and emit complete functionCall when contentBlockStop arrives.
21
+ */
22
+ streamingToolUses = new Map();
23
+ constructor(config) {
24
+ this.model = config.model;
25
+ this.region = config.region || process.env['AWS_REGION'] || 'us-east-1';
26
+ this.client = new BedrockRuntimeClient({
27
+ region: this.region,
28
+ });
29
+ const credentialSource = this.detectCredentialSource();
30
+ debugLogger.log(`[Bedrock] Initialized:\n` +
31
+ ` Model: ${this.model}\n` +
32
+ ` Region: ${this.region}\n` +
33
+ ` Credentials: ${credentialSource}`);
34
+ }
35
+ detectCredentialSource() {
36
+ if (process.env['AWS_ACCESS_KEY_ID']) {
37
+ return 'Environment variables (AWS_ACCESS_KEY_ID)';
38
+ }
39
+ if (process.env['AWS_PROFILE']) {
40
+ return `AWS Profile (${process.env['AWS_PROFILE']})`;
41
+ }
42
+ return 'AWS SDK default credential chain';
43
+ }
44
+ async generateContent(request, _userPromptId) {
45
+ const startTime = Date.now();
46
+ const { messages, system } = this.convertToBedrockMessages(request);
47
+ // Convert tools if present
48
+ let toolConfig;
49
+ if (request.config?.tools && request.config.tools.length > 0) {
50
+ toolConfig = await this.convertToolsToBedrockFormat(request.config.tools);
51
+ }
52
+ // Wrap API call with retry logic
53
+ return retryWithBackoff(async () => {
54
+ try {
55
+ const command = new ConverseCommand({
56
+ modelId: this.model,
57
+ messages,
58
+ system,
59
+ toolConfig,
60
+ inferenceConfig: {
61
+ maxTokens: request.config?.maxOutputTokens || 4096,
62
+ temperature: request.config?.temperature ?? 1.0,
63
+ topP: request.config?.topP,
64
+ },
65
+ });
66
+ debugLogger.log(`[Bedrock] Sending request:\n` +
67
+ ` Model: ${this.model}\n` +
68
+ ` Messages: ${messages.length}\n` +
69
+ ` System: ${system ? 'yes' : 'no'}`);
70
+ const response = await this.client.send(command);
71
+ const elapsedTime = Date.now() - startTime;
72
+ debugLogger.log(`[Bedrock] Response received (${elapsedTime}ms):\n` +
73
+ ` Stop Reason: ${response.stopReason}\n` +
74
+ ` Input Tokens: ${response.usage?.inputTokens || 0}\n` +
75
+ ` Output Tokens: ${response.usage?.outputTokens || 0}`);
76
+ return this.convertToGeminiFormat(response);
77
+ }
78
+ catch (error) {
79
+ debugLogger.error(`[Bedrock] Error:`, error);
80
+ throw this.enhanceError(error);
81
+ }
82
+ }, {
83
+ maxAttempts: 3,
84
+ initialDelayMs: 1000,
85
+ maxDelayMs: 10000,
86
+ authType: 'bedrock',
87
+ });
88
+ }
89
+ async generateContentStream(request, _userPromptId) {
90
+ const startTime = Date.now();
91
+ const { messages, system } = this.convertToBedrockMessages(request);
92
+ // Convert tools if present
93
+ let toolConfig;
94
+ if (request.config?.tools && request.config.tools.length > 0) {
95
+ toolConfig = await this.convertToolsToBedrockFormat(request.config.tools);
96
+ }
97
+ // Wrap initial stream setup with retry logic
98
+ // Note: Once stream starts, we cannot retry mid-stream
99
+ const stream = await retryWithBackoff(async () => {
100
+ try {
101
+ const command = new ConverseStreamCommand({
102
+ modelId: this.model,
103
+ messages,
104
+ system,
105
+ toolConfig,
106
+ inferenceConfig: {
107
+ maxTokens: request.config?.maxOutputTokens || 4096,
108
+ temperature: request.config?.temperature ?? 1.0,
109
+ topP: request.config?.topP,
110
+ },
111
+ });
112
+ debugLogger.log(`[Bedrock] Sending stream request:\n` +
113
+ ` Model: ${this.model}\n` +
114
+ ` Messages: ${messages.length}\n` +
115
+ ` System: ${system ? 'yes' : 'no'}\n` +
116
+ ` Tools: ${toolConfig?.tools?.length || 0}`);
117
+ const response = await this.client.send(command);
118
+ if (!response.stream) {
119
+ throw new Error('No stream in response');
120
+ }
121
+ return response.stream;
122
+ }
123
+ catch (error) {
124
+ debugLogger.error(`[Bedrock] Stream error:`, error);
125
+ throw this.enhanceError(error);
126
+ }
127
+ }, {
128
+ maxAttempts: 3,
129
+ initialDelayMs: 1000,
130
+ maxDelayMs: 10000,
131
+ authType: 'bedrock',
132
+ });
133
+ return this.streamGenerator(stream, startTime);
134
+ }
135
+ async countTokens(request) {
136
+ // Handle both array and single content
137
+ const contents = Array.isArray(request.contents)
138
+ ? request.contents
139
+ : [request.contents];
140
+ const textParts = [];
141
+ for (const c of contents) {
142
+ if (typeof c === 'string') {
143
+ textParts.push(c);
144
+ }
145
+ else if ('parts' in c && c.parts) {
146
+ for (const p of c.parts) {
147
+ if (typeof p === 'string') {
148
+ textParts.push(p);
149
+ }
150
+ else if ('text' in p && p.text) {
151
+ textParts.push(p.text);
152
+ }
153
+ }
154
+ }
155
+ }
156
+ const text = textParts.join('');
157
+ const totalTokens = Math.ceil(text.length / 4);
158
+ return { totalTokens };
159
+ }
160
+ async embedContent(_request) {
161
+ throw new Error('Embedding is not supported for Claude models on Bedrock.');
162
+ }
163
+ /**
164
+ * Generator function to process streaming response from Bedrock.
165
+ * Handles text chunks and accumulates tool calls until complete.
166
+ */
167
+ async *streamGenerator(stream, startTime) {
168
+ // Reset accumulator for new stream
169
+ this.streamingToolUses.clear();
170
+ let currentBlockIndex = 0;
171
+ try {
172
+ for await (const event of stream) {
173
+ // 1. Handle tool use start
174
+ if (event.contentBlockStart) {
175
+ const start = event.contentBlockStart;
176
+ currentBlockIndex = start.contentBlockIndex ?? 0;
177
+ // Check if this is a tool use block
178
+ if (start.start && 'toolUse' in start.start) {
179
+ const toolUse = start.start.toolUse;
180
+ this.streamingToolUses.set(currentBlockIndex, {
181
+ toolUseId: toolUse?.toolUseId,
182
+ name: toolUse?.name,
183
+ input: '',
184
+ });
185
+ debugLogger.log(`[Bedrock] Tool use started: ${toolUse?.name} (index ${currentBlockIndex})`);
186
+ }
187
+ }
188
+ // 2. Handle content block delta - accumulate JSON input or emit text
189
+ if (event.contentBlockDelta) {
190
+ const delta = event.contentBlockDelta;
191
+ const index = delta.contentBlockIndex ?? currentBlockIndex;
192
+ // Check delta type
193
+ if (delta.delta) {
194
+ // Accumulate tool input (JSON may be fragmented)
195
+ if ('toolUse' in delta.delta && delta.delta.toolUse) {
196
+ const accumulated = this.streamingToolUses.get(index);
197
+ if (accumulated && delta.delta.toolUse.input) {
198
+ accumulated.input += delta.delta.toolUse.input;
199
+ debugLogger.log(`[Bedrock] Tool input fragment (${accumulated.input.length} chars)`);
200
+ }
201
+ }
202
+ // Emit text content immediately
203
+ if ('text' in delta.delta && delta.delta.text) {
204
+ const response = new GenerateContentResponse();
205
+ response.candidates = [
206
+ {
207
+ content: {
208
+ role: 'model',
209
+ parts: [{ text: delta.delta.text }],
210
+ },
211
+ finishReason: FinishReason.STOP,
212
+ safetyRatings: [],
213
+ },
214
+ ];
215
+ yield response;
216
+ }
217
+ }
218
+ }
219
+ // 3. Handle content block stop - emit complete tool call
220
+ if (event.contentBlockStop) {
221
+ const index = event.contentBlockStop?.contentBlockIndex ?? currentBlockIndex;
222
+ const accumulated = this.streamingToolUses.get(index);
223
+ if (accumulated?.toolUseId && accumulated.name) {
224
+ try {
225
+ // Parse complete JSON input
226
+ const args = JSON.parse(accumulated.input || '{}');
227
+ debugLogger.log(`[Bedrock] Tool use complete: ${accumulated.name}`, JSON.stringify(args, null, 2));
228
+ const response = new GenerateContentResponse();
229
+ response.candidates = [
230
+ {
231
+ content: {
232
+ role: 'model',
233
+ parts: [
234
+ {
235
+ functionCall: {
236
+ id: accumulated.toolUseId,
237
+ name: accumulated.name,
238
+ args,
239
+ },
240
+ },
241
+ ],
242
+ },
243
+ finishReason: FinishReason.STOP,
244
+ safetyRatings: [],
245
+ },
246
+ ];
247
+ yield response;
248
+ // Clear this tool call
249
+ this.streamingToolUses.delete(index);
250
+ }
251
+ catch (error) {
252
+ debugLogger.error(`[Bedrock] Failed to parse tool input for ${accumulated.name}:`, accumulated.input, error);
253
+ throw new Error(`Invalid JSON in tool call ${accumulated.name}: ${error instanceof Error ? error.message : String(error)}`);
254
+ }
255
+ }
256
+ }
257
+ // 4. Handle stream metadata (usage information)
258
+ if (event.metadata) {
259
+ const usage = event.metadata.usage;
260
+ if (usage) {
261
+ const response = new GenerateContentResponse();
262
+ response.usageMetadata = {
263
+ promptTokenCount: usage.inputTokens || 0,
264
+ candidatesTokenCount: usage.outputTokens || 0,
265
+ totalTokenCount: usage.totalTokens || 0,
266
+ };
267
+ yield response;
268
+ const elapsedTime = Date.now() - startTime;
269
+ debugLogger.log(`[Bedrock] Stream complete (${elapsedTime}ms):\n` +
270
+ ` Input Tokens: ${usage.inputTokens || 0}\n` +
271
+ ` Output Tokens: ${usage.outputTokens || 0}`);
272
+ }
273
+ }
274
+ // 5. Handle message stop (finish reason)
275
+ if (event.messageStop) {
276
+ debugLogger.log(`[Bedrock] Message stop: ${event.messageStop.stopReason}`);
277
+ }
278
+ }
279
+ }
280
+ finally {
281
+ // Ensure cleanup
282
+ this.streamingToolUses.clear();
283
+ }
284
+ }
285
+ /**
286
+ * Convert Gemini request to Bedrock Converse format.
287
+ */
288
+ convertToBedrockMessages(request) {
289
+ const messages = [];
290
+ let system;
291
+ // Handle system instruction
292
+ if (request.config?.systemInstruction) {
293
+ const sysInstr = request.config.systemInstruction;
294
+ // Type guard: Only pass if it's string, Content, or Content[]
295
+ if (typeof sysInstr === 'string' || this.isContentOrArray(sysInstr)) {
296
+ system = this.convertSystemInstruction(sysInstr);
297
+ }
298
+ }
299
+ // Handle contents
300
+ const contents = Array.isArray(request.contents)
301
+ ? request.contents
302
+ : [request.contents];
303
+ for (const content of contents) {
304
+ if (typeof content === 'string') {
305
+ messages.push({
306
+ role: 'user',
307
+ content: [{ text: content }],
308
+ });
309
+ continue;
310
+ }
311
+ if (!('role' in content) || !('parts' in content)) {
312
+ continue;
313
+ }
314
+ // Separate different part types
315
+ const textParts = [];
316
+ const functionCalls = [];
317
+ const functionResponses = [];
318
+ for (const part of content.parts || []) {
319
+ if (typeof part === 'string') {
320
+ textParts.push(part);
321
+ }
322
+ else if ('text' in part && part.text) {
323
+ textParts.push(part.text);
324
+ }
325
+ else if ('functionCall' in part && part.functionCall) {
326
+ functionCalls.push({
327
+ id: part.functionCall.id,
328
+ name: part.functionCall.name || '',
329
+ args: part.functionCall.args || {},
330
+ });
331
+ }
332
+ else if ('functionResponse' in part && part.functionResponse) {
333
+ functionResponses.push({
334
+ id: part.functionResponse.id,
335
+ response: part.functionResponse.response,
336
+ });
337
+ }
338
+ }
339
+ const role = content.role === 'model' ? 'assistant' : 'user';
340
+ // Handle function responses (tool results)
341
+ if (functionResponses.length > 0) {
342
+ const toolResultBlocks = functionResponses.map((fr) => ({
343
+ toolResult: {
344
+ toolUseId: fr.id || '',
345
+ content: [
346
+ {
347
+ text: typeof fr.response === 'string'
348
+ ? fr.response
349
+ : JSON.stringify(fr.response),
350
+ },
351
+ ],
352
+ },
353
+ }));
354
+ if (textParts.length > 0) {
355
+ toolResultBlocks.unshift({ text: textParts.join('\n') });
356
+ }
357
+ messages.push({
358
+ role: 'user',
359
+ content: toolResultBlocks,
360
+ });
361
+ }
362
+ // Handle function calls (tool uses)
363
+ else if (functionCalls.length > 0) {
364
+ const contentBlocks = [];
365
+ if (textParts.length > 0) {
366
+ contentBlocks.push({ text: textParts.join('\n') });
367
+ }
368
+ for (const fc of functionCalls) {
369
+ contentBlocks.push({
370
+ toolUse: {
371
+ toolUseId: fc.id || `tool_${Date.now()}_${Math.random()}`,
372
+ name: fc.name,
373
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
374
+ input: fc.args, // Bedrock accepts any JSON-serializable value
375
+ },
376
+ });
377
+ }
378
+ messages.push({
379
+ role: 'assistant',
380
+ content: contentBlocks,
381
+ });
382
+ }
383
+ // Handle regular text messages
384
+ else if (textParts.length > 0) {
385
+ messages.push({
386
+ role,
387
+ content: [{ text: textParts.join('\n') }],
388
+ });
389
+ }
390
+ }
391
+ return { messages, system };
392
+ }
393
+ /**
394
+ * Type guard to check if value is Content or Content[]
395
+ */
396
+ isContentOrArray(value) {
397
+ if (Array.isArray(value)) {
398
+ return value.every((item) => typeof item === 'object' && item !== null && 'parts' in item);
399
+ }
400
+ return typeof value === 'object' && value !== null && 'parts' in value;
401
+ }
402
+ /**
403
+ * Convert system instruction to Bedrock format.
404
+ */
405
+ convertSystemInstruction(systemInstruction) {
406
+ let systemText = '';
407
+ if (Array.isArray(systemInstruction)) {
408
+ systemText = systemInstruction
409
+ .map((content) => {
410
+ if (typeof content === 'string')
411
+ return content;
412
+ if ('parts' in content) {
413
+ return (content.parts || [])
414
+ .map((p) => typeof p === 'string' ? p : 'text' in p ? p.text : '')
415
+ .join('\n');
416
+ }
417
+ return '';
418
+ })
419
+ .join('\n');
420
+ }
421
+ else if (typeof systemInstruction === 'string') {
422
+ systemText = systemInstruction;
423
+ }
424
+ else if ('parts' in systemInstruction) {
425
+ systemText = (systemInstruction.parts || [])
426
+ .map((p) => typeof p === 'string' ? p : 'text' in p ? p.text : '')
427
+ .join('\n');
428
+ }
429
+ return systemText ? [{ text: systemText }] : [];
430
+ }
431
+ /**
432
+ * Convert Bedrock response to Gemini format.
433
+ */
434
+ convertToGeminiFormat(bedrockResponse) {
435
+ const response = new GenerateContentResponse();
436
+ const parts = [];
437
+ let finishReason = FinishReason.STOP;
438
+ const contentBlocks = bedrockResponse.output?.message?.content || [];
439
+ for (const block of contentBlocks) {
440
+ if ('text' in block && block.text) {
441
+ parts.push({ text: block.text });
442
+ }
443
+ else if ('toolUse' in block && block.toolUse) {
444
+ const toolUse = block.toolUse;
445
+ parts.push({
446
+ functionCall: {
447
+ id: toolUse.toolUseId,
448
+ name: toolUse.name || '',
449
+ args: toolUse.input || {},
450
+ },
451
+ });
452
+ }
453
+ }
454
+ if (bedrockResponse.stopReason) {
455
+ finishReason = this.convertStopReason(bedrockResponse.stopReason);
456
+ }
457
+ // Set response properties
458
+ response.candidates = [
459
+ {
460
+ content: {
461
+ role: 'model',
462
+ parts,
463
+ },
464
+ finishReason,
465
+ safetyRatings: [],
466
+ },
467
+ ];
468
+ response.usageMetadata = bedrockResponse.usage
469
+ ? {
470
+ promptTokenCount: bedrockResponse.usage.inputTokens || 0,
471
+ candidatesTokenCount: bedrockResponse.usage.outputTokens || 0,
472
+ totalTokenCount: bedrockResponse.usage.totalTokens || 0,
473
+ }
474
+ : undefined;
475
+ return response;
476
+ }
477
+ /**
478
+ * Convert Bedrock StopReason to Gemini FinishReason.
479
+ */
480
+ convertStopReason(stopReason) {
481
+ switch (stopReason) {
482
+ case 'end_turn':
483
+ return FinishReason.STOP;
484
+ case 'max_tokens':
485
+ return FinishReason.MAX_TOKENS;
486
+ case 'stop_sequence':
487
+ return FinishReason.STOP;
488
+ case 'tool_use':
489
+ return FinishReason.STOP;
490
+ case 'content_filtered':
491
+ return FinishReason.SAFETY;
492
+ default:
493
+ return FinishReason.STOP;
494
+ }
495
+ }
496
+ /**
497
+ * Convert Gemini Tools to Bedrock ToolConfiguration format.
498
+ */
499
+ async convertToolsToBedrockFormat(geminiTools) {
500
+ const bedrockTools = [];
501
+ for (const tool of geminiTools) {
502
+ let actualTool;
503
+ // Handle CallableTool vs Tool
504
+ if ('tool' in tool) {
505
+ // This is a CallableTool - resolve it
506
+ actualTool = await tool.tool();
507
+ }
508
+ else {
509
+ // This is already a Tool
510
+ actualTool = tool;
511
+ }
512
+ // Convert each function declaration to Bedrock tool format
513
+ if (actualTool.functionDeclarations) {
514
+ for (const func of actualTool.functionDeclarations) {
515
+ if (func.name && func.description) {
516
+ bedrockTools.push({
517
+ toolSpec: {
518
+ name: func.name,
519
+ description: func.description,
520
+ inputSchema: {
521
+ json: this.sanitizeJsonSchema(func.parameters || {}),
522
+ },
523
+ },
524
+ });
525
+ }
526
+ }
527
+ }
528
+ }
529
+ debugLogger.log(`[Bedrock] Converted ${bedrockTools.length} tools for Bedrock`);
530
+ return {
531
+ tools: bedrockTools,
532
+ };
533
+ }
534
+ /**
535
+ * Sanitize JSON schema for Bedrock compatibility.
536
+ * Bedrock has stricter requirements than Gemini:
537
+ * - Root level must have type: "object"
538
+ * - No nullable types (type: ["string", "null"])
539
+ * - No additionalProperties
540
+ */
541
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
542
+ sanitizeJsonSchema(schema) {
543
+ const sanitized = JSON.parse(JSON.stringify(schema));
544
+ // Ensure root level has type: "object" (Bedrock requirement)
545
+ if (!sanitized.type) {
546
+ sanitized.type = 'object';
547
+ }
548
+ else if (sanitized.type !== 'object') {
549
+ // If root type is not object, wrap the schema
550
+ debugLogger.warn(`[Bedrock] Schema root type is "${sanitized.type}", wrapping in object`);
551
+ return {
552
+ type: 'object',
553
+ properties: {
554
+ value: sanitized,
555
+ },
556
+ required: ['value'],
557
+ };
558
+ }
559
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
560
+ function traverse(obj) {
561
+ if (typeof obj !== 'object' || obj === null)
562
+ return;
563
+ // Convert type: ["string", "null"] to type: "string"
564
+ if (Array.isArray(obj.type)) {
565
+ obj.type = obj.type.find((t) => t !== 'null') || 'string';
566
+ }
567
+ // Remove additionalProperties
568
+ if ('additionalProperties' in obj) {
569
+ delete obj.additionalProperties;
570
+ }
571
+ // Recursively process nested objects
572
+ for (const key in obj) {
573
+ if (typeof obj[key] === 'object') {
574
+ traverse(obj[key]);
575
+ }
576
+ }
577
+ }
578
+ traverse(sanitized);
579
+ return sanitized;
580
+ }
581
+ /**
582
+ * Enhance error with user-friendly messages.
583
+ */
584
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
585
+ enhanceError(error) {
586
+ const errorName = error.name || '';
587
+ const errorMessage = error.message || String(error);
588
+ // Permission errors
589
+ if (errorName === 'AccessDeniedException') {
590
+ return new Error('Insufficient IAM permissions for Bedrock.\n' +
591
+ 'Required permissions:\n' +
592
+ ' - bedrock:InvokeModel\n' +
593
+ ' - bedrock:InvokeModelWithResponseStream\n\n' +
594
+ 'See: https://docs.aws.amazon.com/bedrock/latest/userguide/security-iam.html');
595
+ }
596
+ // Model not found
597
+ if (errorName === 'ResourceNotFoundException' ||
598
+ errorName === 'ModelNotFoundException') {
599
+ return new Error(`Model ${this.model} not available in region ${this.region}.\n\n` +
600
+ `List available models:\n` +
601
+ ` aws bedrock list-foundation-models --region ${this.region} --by-provider Anthropic\n\n` +
602
+ `Or use a different region:\n` +
603
+ ` export AWS_REGION="us-east-1"\n` +
604
+ ` npm run start`);
605
+ }
606
+ // Validation errors
607
+ if (errorName === 'ValidationException') {
608
+ return new Error(`Bedrock validation error: ${errorMessage}\n` +
609
+ 'This usually indicates incompatible parameters or schema issues.');
610
+ }
611
+ // Throttling
612
+ if (errorName === 'ThrottlingException') {
613
+ return new Error('AWS Bedrock rate limit exceeded.\n' +
614
+ 'Solutions:\n' +
615
+ ' 1. Wait and retry\n' +
616
+ ' 2. Request quota increase: https://console.aws.amazon.com/servicequotas/\n' +
617
+ ' 3. Use a different region');
618
+ }
619
+ // Quota exceeded
620
+ if (errorName === 'ServiceQuotaExceededException') {
621
+ return new Error('AWS service quota exceeded.\n' +
622
+ `Request quota increase: https://console.aws.amazon.com/servicequotas/home/services/bedrock/quotas`);
623
+ }
624
+ // Return original error if not recognized
625
+ return error;
626
+ }
627
+ }
628
+ //# sourceMappingURL=bedrockContentGenerator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bedrockContentGenerator.js","sourceRoot":"","sources":["../../../src/core/bedrockContentGenerator.ts"],"names":[],"mappings":"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"}