@elizaos/plugin-openrouter 2.0.0-alpha.8 → 2.0.0-alpha.9

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.
@@ -2,27 +2,37 @@ var __defProp = Object.defineProperty;
2
2
  var __getOwnPropNames = Object.getOwnPropertyNames;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __moduleCache = /* @__PURE__ */ new WeakMap;
5
+ function __accessProp(key) {
6
+ return this[key];
7
+ }
6
8
  var __toCommonJS = (from) => {
7
- var entry = __moduleCache.get(from), desc;
9
+ var entry = (__moduleCache ??= new WeakMap).get(from), desc;
8
10
  if (entry)
9
11
  return entry;
10
12
  entry = __defProp({}, "__esModule", { value: true });
11
- if (from && typeof from === "object" || typeof from === "function")
12
- __getOwnPropNames(from).map((key) => !__hasOwnProp.call(entry, key) && __defProp(entry, key, {
13
- get: () => from[key],
14
- enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
15
- }));
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (var key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(entry, key))
16
+ __defProp(entry, key, {
17
+ get: __accessProp.bind(from, key),
18
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
19
+ });
20
+ }
16
21
  __moduleCache.set(from, entry);
17
22
  return entry;
18
23
  };
24
+ var __moduleCache;
25
+ var __returnValue = (v) => v;
26
+ function __exportSetter(name, newValue) {
27
+ this[name] = __returnValue.bind(null, newValue);
28
+ }
19
29
  var __export = (target, all) => {
20
30
  for (var name in all)
21
31
  __defProp(target, name, {
22
32
  get: all[name],
23
33
  enumerable: true,
24
34
  configurable: true,
25
- set: (newValue) => all[name] = () => newValue
35
+ set: __exportSetter.bind(all, name)
26
36
  });
27
37
  };
28
38
 
@@ -30,7 +40,7 @@ var __export = (target, all) => {
30
40
  var exports_typescript = {};
31
41
  __export(exports_typescript, {
32
42
  shouldAutoCleanupImages: () => shouldAutoCleanupImages,
33
- openrouterPlugin: () => openrouterPlugin,
43
+ openrouterPlugin: () => import_plugin.openrouterPlugin,
34
44
  getSmallModel: () => getSmallModel,
35
45
  getSetting: () => getSetting,
36
46
  getLargeModel: () => getLargeModel,
@@ -40,7 +50,7 @@ __export(exports_typescript, {
40
50
  getEmbeddingDimensions: () => getEmbeddingDimensions,
41
51
  getBaseURL: () => getBaseURL,
42
52
  getApiKey: () => getApiKey,
43
- default: () => openrouterPlugin,
53
+ default: () => import_plugin.openrouterPlugin,
44
54
  DEFAULT_SMALL_MODEL: () => DEFAULT_SMALL_MODEL,
45
55
  DEFAULT_LARGE_MODEL: () => DEFAULT_LARGE_MODEL,
46
56
  DEFAULT_IMAGE_MODEL: () => DEFAULT_IMAGE_MODEL,
@@ -51,12 +61,6 @@ __export(exports_typescript, {
51
61
  });
52
62
  module.exports = __toCommonJS(exports_typescript);
53
63
 
54
- // plugin.ts
55
- var import_core8 = require("@elizaos/core");
56
-
57
- // init.ts
58
- var import_core = require("@elizaos/core");
59
-
60
64
  // utils/config.ts
61
65
  var DEFAULT_BASE_URL = "https://openrouter.ai/api/v1";
62
66
  var DEFAULT_SMALL_MODEL = "google/gemini-2.0-flash-001";
@@ -113,480 +117,5 @@ function shouldAutoCleanupImages(runtime) {
113
117
  return setting?.toLowerCase() === "true";
114
118
  }
115
119
 
116
- // init.ts
117
- globalThis.AI_SDK_LOG_WARNINGS ??= false;
118
- function initializeOpenRouter(_config, runtime) {
119
- (async () => {
120
- try {
121
- const isBrowser = typeof globalThis !== "undefined" && globalThis.document;
122
- if (isBrowser) {
123
- return;
124
- }
125
- if (!getApiKey(runtime)) {
126
- import_core.logger.warn("OPENROUTER_API_KEY is not set in environment - OpenRouter functionality will be limited");
127
- return;
128
- }
129
- const baseURL = getBaseURL(runtime);
130
- const response = await fetch(`${baseURL}/models`, {
131
- headers: { Authorization: `Bearer ${getApiKey(runtime)}` }
132
- });
133
- if (!response.ok) {
134
- import_core.logger.warn(`OpenRouter API key validation failed: ${response.statusText}`);
135
- } else {
136
- import_core.logger.log("OpenRouter API key validated successfully");
137
- }
138
- } catch (error) {
139
- const message = error instanceof Error ? error.message : String(error);
140
- import_core.logger.warn(`Error validating OpenRouter API key: ${message}`);
141
- }
142
- })();
143
- }
144
-
145
- // models/embedding.ts
146
- var import_core3 = require("@elizaos/core");
147
-
148
- // utils/events.ts
149
- var import_core2 = require("@elizaos/core");
150
- function emitModelUsageEvent(_runtime, modelType, prompt, usage) {
151
- const inputTokens = usage.inputTokens ?? usage.promptTokens ?? 0;
152
- const outputTokens = usage.outputTokens ?? usage.completionTokens ?? 0;
153
- const totalTokens = usage.totalTokens ?? inputTokens + outputTokens;
154
- import_core2.logger.debug({
155
- event: "model:usage",
156
- modelType,
157
- provider: "openrouter",
158
- prompt: prompt.substring(0, 100),
159
- usage: {
160
- promptTokens: inputTokens,
161
- completionTokens: outputTokens,
162
- totalTokens
163
- },
164
- timestamp: Date.now()
165
- });
166
- }
167
-
168
- // models/embedding.ts
169
- async function handleTextEmbedding(runtime, params) {
170
- const embeddingModelName = getEmbeddingModel(runtime);
171
- const embeddingDimension = Number.parseInt(getSetting(runtime, "OPENROUTER_EMBEDDING_DIMENSIONS") ?? getSetting(runtime, "EMBEDDING_DIMENSIONS") ?? "1536", 10);
172
- if (!Object.values(import_core3.VECTOR_DIMS).includes(embeddingDimension)) {
173
- const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(import_core3.VECTOR_DIMS).join(", ")}`;
174
- import_core3.logger.error(errorMsg);
175
- throw new Error(errorMsg);
176
- }
177
- if (params === null) {
178
- const testVector = Array(embeddingDimension).fill(0);
179
- testVector[0] = 0.1;
180
- return testVector;
181
- }
182
- let text;
183
- if (typeof params === "string") {
184
- text = params;
185
- } else if (typeof params === "object" && params.text) {
186
- text = params.text;
187
- } else {
188
- const errorMsg = "Invalid input format for embedding";
189
- import_core3.logger.warn(errorMsg);
190
- const fallbackVector = Array(embeddingDimension).fill(0);
191
- fallbackVector[0] = 0.2;
192
- return fallbackVector;
193
- }
194
- if (!text.trim()) {
195
- const errorMsg = "Empty text for embedding";
196
- import_core3.logger.warn(errorMsg);
197
- const fallbackVector = Array(embeddingDimension).fill(0);
198
- fallbackVector[0] = 0.3;
199
- return fallbackVector;
200
- }
201
- const maxChars = 8000 * 4;
202
- if (text.length > maxChars) {
203
- import_core3.logger.warn(`[OpenRouter] Embedding input too long (~${Math.ceil(text.length / 4)} tokens), truncating to ~8000 tokens`);
204
- text = text.slice(0, maxChars);
205
- }
206
- const apiKey = getApiKey(runtime);
207
- if (!apiKey) {
208
- const errorMsg = "OPENROUTER_API_KEY is not set";
209
- import_core3.logger.error(errorMsg);
210
- throw new Error(errorMsg);
211
- }
212
- const baseURL = getBaseURL(runtime);
213
- try {
214
- const response = await fetch(`${baseURL}/embeddings`, {
215
- method: "POST",
216
- headers: {
217
- Authorization: `Bearer ${apiKey}`,
218
- "Content-Type": "application/json",
219
- "HTTP-Referer": getSetting(runtime, "OPENROUTER_HTTP_REFERER") || "",
220
- "X-Title": getSetting(runtime, "OPENROUTER_X_TITLE") || "ElizaOS"
221
- },
222
- body: JSON.stringify({
223
- model: embeddingModelName,
224
- input: text
225
- })
226
- });
227
- if (!response.ok) {
228
- import_core3.logger.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);
229
- throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);
230
- }
231
- const data = await response.json();
232
- if (!data?.data?.[0]?.embedding) {
233
- import_core3.logger.error("API returned invalid structure");
234
- throw new Error("API returned invalid structure");
235
- }
236
- const embedding = data.data[0].embedding;
237
- if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {
238
- const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;
239
- import_core3.logger.error(errorMsg);
240
- const fallbackVector = Array(embeddingDimension).fill(0);
241
- fallbackVector[0] = 0.4;
242
- return fallbackVector;
243
- }
244
- if (data.usage) {
245
- const usage = {
246
- inputTokens: data.usage.prompt_tokens,
247
- outputTokens: 0,
248
- totalTokens: data.usage.total_tokens
249
- };
250
- emitModelUsageEvent(runtime, import_core3.ModelType.TEXT_EMBEDDING, text, usage);
251
- }
252
- return embedding;
253
- } catch (error) {
254
- const message = error instanceof Error ? error.message : String(error);
255
- import_core3.logger.error(`Error generating embedding: ${message}`);
256
- throw error instanceof Error ? error : new Error(message);
257
- }
258
- }
259
-
260
- // models/image.ts
261
- var import_core4 = require("@elizaos/core");
262
- var import_ai = require("ai");
263
-
264
- // providers/openrouter.ts
265
- var import_ai_sdk_provider = require("@openrouter/ai-sdk-provider");
266
- function createOpenRouterProvider(runtime) {
267
- const apiKey = getApiKey(runtime);
268
- const isBrowser = typeof globalThis !== "undefined" && globalThis.document;
269
- const baseURL = getBaseURL(runtime);
270
- return import_ai_sdk_provider.createOpenRouter({
271
- apiKey: isBrowser ? undefined : apiKey,
272
- baseURL
273
- });
274
- }
275
- // models/image.ts
276
- async function handleImageDescription(runtime, params) {
277
- const openrouter = createOpenRouterProvider(runtime);
278
- const modelName = getImageModel(runtime);
279
- const imageUrl = typeof params === "string" ? params : params.imageUrl;
280
- const prompt = typeof params === "string" ? "Describe this image" : params.prompt || "Describe this image";
281
- try {
282
- const generateParams = {
283
- model: openrouter.chat(modelName),
284
- messages: [
285
- {
286
- role: "user",
287
- content: [
288
- { type: "text", text: prompt },
289
- { type: "image", image: imageUrl }
290
- ]
291
- }
292
- ]
293
- };
294
- const response = await import_ai.generateText(generateParams);
295
- if (response.usage) {
296
- emitModelUsageEvent(runtime, import_core4.ModelType.IMAGE_DESCRIPTION, prompt, response.usage);
297
- }
298
- return response.text;
299
- } catch (error) {
300
- const message = error instanceof Error ? error.message : String(error);
301
- import_core4.logger.error(`Error describing image: ${message}`);
302
- throw error instanceof Error ? error : new Error(message);
303
- }
304
- }
305
- async function handleImageGeneration(runtime, params) {
306
- const openrouter = createOpenRouterProvider(runtime);
307
- const modelName = getImageGenerationModel(runtime);
308
- try {
309
- const generateParams = {
310
- model: openrouter.chat(modelName),
311
- prompt: `Generate an image: ${params.prompt}`
312
- };
313
- const response = await import_ai.generateText(generateParams);
314
- if (response.usage) {
315
- emitModelUsageEvent(runtime, import_core4.ModelType.IMAGE, params.prompt, response.usage);
316
- }
317
- return {
318
- imageUrl: response.text,
319
- caption: params.prompt
320
- };
321
- } catch (error) {
322
- const message = error instanceof Error ? error.message : String(error);
323
- import_core4.logger.error(`Error generating image: ${message}`);
324
- throw error instanceof Error ? error : new Error(message);
325
- }
326
- }
327
-
328
- // models/object.ts
329
- var import_core6 = require("@elizaos/core");
330
- var import_ai2 = require("ai");
331
-
332
- // utils/helpers.ts
333
- var import_core5 = require("@elizaos/core");
334
- function handleObjectGenerationError(error) {
335
- const message = error instanceof Error ? error.message : String(error);
336
- import_core5.logger.error(`Error generating object: ${message}`);
337
- return { error: message };
338
- }
339
-
340
- // models/object.ts
341
- async function generateObjectWithModel(runtime, modelType, params) {
342
- const openrouter = createOpenRouterProvider(runtime);
343
- const modelName = modelType === import_core6.ModelType.OBJECT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);
344
- const temperature = params.temperature ?? 0.7;
345
- try {
346
- const model = openrouter.chat(modelName);
347
- const { object, usage } = params.schema ? await import_ai2.generateObject({
348
- model,
349
- schema: import_ai2.jsonSchema(params.schema),
350
- output: "object",
351
- prompt: params.prompt,
352
- temperature
353
- }) : await import_ai2.generateObject({
354
- model,
355
- output: "no-schema",
356
- prompt: params.prompt,
357
- temperature
358
- });
359
- if (usage) {
360
- emitModelUsageEvent(runtime, modelType, params.prompt, usage);
361
- }
362
- return object;
363
- } catch (error) {
364
- return handleObjectGenerationError(error);
365
- }
366
- }
367
- async function handleObjectSmall(runtime, params) {
368
- return generateObjectWithModel(runtime, import_core6.ModelType.OBJECT_SMALL, params);
369
- }
370
- async function handleObjectLarge(runtime, params) {
371
- return generateObjectWithModel(runtime, import_core6.ModelType.OBJECT_LARGE, params);
372
- }
373
-
374
- // models/text.ts
375
- var import_core7 = require("@elizaos/core");
376
- var import_ai3 = require("ai");
377
- var RESPONSES_ROUTED_PREFIXES = ["openai/", "anthropic/"];
378
- var NO_SAMPLING_MODEL_PATTERNS = ["o1", "o3", "o4", "gpt-5", "gpt-5-mini"];
379
- function supportsSamplingParameters(modelName) {
380
- const lowerModelName = modelName.toLowerCase();
381
- if (RESPONSES_ROUTED_PREFIXES.some((prefix) => lowerModelName.startsWith(prefix))) {
382
- return false;
383
- }
384
- return !NO_SAMPLING_MODEL_PATTERNS.some((pattern) => lowerModelName.includes(pattern));
385
- }
386
- function buildGenerateParams(runtime, modelType, params) {
387
- const { prompt } = params;
388
- const paramsWithMax = params;
389
- const resolvedMaxOutput = paramsWithMax.maxOutputTokens ?? paramsWithMax.maxTokens ?? 8192;
390
- const openrouter = createOpenRouterProvider(runtime);
391
- const modelName = modelType === import_core7.ModelType.TEXT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);
392
- const modelLabel = modelType === import_core7.ModelType.TEXT_SMALL ? "TEXT_SMALL" : "TEXT_LARGE";
393
- const supportsSampling = supportsSamplingParameters(modelName);
394
- const stopSequences = Array.isArray(params.stopSequences) && params.stopSequences.length > 0 ? params.stopSequences : undefined;
395
- const temperature = params.temperature ?? 0.7;
396
- const frequencyPenalty = params.frequencyPenalty ?? 0.7;
397
- const presencePenalty = params.presencePenalty ?? 0.7;
398
- const generateParams = {
399
- model: openrouter.chat(modelName),
400
- prompt,
401
- system: runtime.character?.system ?? undefined,
402
- ...supportsSampling ? {
403
- temperature,
404
- frequencyPenalty,
405
- presencePenalty,
406
- ...stopSequences ? { stopSequences } : {}
407
- } : {},
408
- maxOutputTokens: resolvedMaxOutput
409
- };
410
- return { generateParams, modelName, modelLabel, prompt };
411
- }
412
- function handleStreamingGeneration(runtime, modelType, generateParams, prompt, _modelLabel) {
413
- const streamResult = import_ai3.streamText(generateParams);
414
- return {
415
- textStream: streamResult.textStream,
416
- text: Promise.resolve(streamResult.text),
417
- usage: Promise.resolve(streamResult.usage).then((usage) => {
418
- if (usage) {
419
- emitModelUsageEvent(runtime, modelType, prompt, usage);
420
- const inputTokens = usage.inputTokens ?? 0;
421
- const outputTokens = usage.outputTokens ?? 0;
422
- return {
423
- promptTokens: inputTokens,
424
- completionTokens: outputTokens,
425
- totalTokens: inputTokens + outputTokens
426
- };
427
- }
428
- return;
429
- }),
430
- finishReason: Promise.resolve(streamResult.finishReason)
431
- };
432
- }
433
- async function generateTextWithModel(runtime, modelType, params) {
434
- const {
435
- generateParams,
436
- modelName: _modelName,
437
- modelLabel,
438
- prompt
439
- } = buildGenerateParams(runtime, modelType, params);
440
- if (params.stream) {
441
- return handleStreamingGeneration(runtime, modelType, generateParams, prompt, modelLabel);
442
- }
443
- const response = await import_ai3.generateText(generateParams);
444
- if (response.usage) {
445
- emitModelUsageEvent(runtime, modelType, prompt, response.usage);
446
- }
447
- return response.text;
448
- }
449
- async function handleTextSmall(runtime, params) {
450
- return generateTextWithModel(runtime, import_core7.ModelType.TEXT_SMALL, params);
451
- }
452
- async function handleTextLarge(runtime, params) {
453
- return generateTextWithModel(runtime, import_core7.ModelType.TEXT_LARGE, params);
454
- }
455
-
456
- // plugin.ts
457
- function getProcessEnv() {
458
- if (typeof process === "undefined" || !process.env) {
459
- return {};
460
- }
461
- return process.env;
462
- }
463
- var env = getProcessEnv();
464
- var openrouterPlugin = {
465
- name: "openrouter",
466
- description: "OpenRouter multi-model AI gateway plugin",
467
- config: {
468
- OPENROUTER_API_KEY: env.OPENROUTER_API_KEY ?? null,
469
- OPENROUTER_BASE_URL: env.OPENROUTER_BASE_URL ?? null,
470
- OPENROUTER_SMALL_MODEL: env.OPENROUTER_SMALL_MODEL ?? null,
471
- OPENROUTER_LARGE_MODEL: env.OPENROUTER_LARGE_MODEL ?? null,
472
- OPENROUTER_IMAGE_MODEL: env.OPENROUTER_IMAGE_MODEL ?? null,
473
- OPENROUTER_IMAGE_GENERATION_MODEL: env.OPENROUTER_IMAGE_GENERATION_MODEL ?? null,
474
- OPENROUTER_EMBEDDING_MODEL: env.OPENROUTER_EMBEDDING_MODEL ?? null,
475
- OPENROUTER_EMBEDDING_DIMENSIONS: env.OPENROUTER_EMBEDDING_DIMENSIONS ?? null,
476
- OPENROUTER_AUTO_CLEANUP_IMAGES: env.OPENROUTER_AUTO_CLEANUP_IMAGES ?? null,
477
- SMALL_MODEL: env.SMALL_MODEL ?? null,
478
- LARGE_MODEL: env.LARGE_MODEL ?? null,
479
- IMAGE_MODEL: env.IMAGE_MODEL ?? null,
480
- IMAGE_GENERATION_MODEL: env.IMAGE_GENERATION_MODEL ?? null,
481
- EMBEDDING_MODEL: env.EMBEDDING_MODEL ?? null,
482
- EMBEDDING_DIMENSIONS: env.EMBEDDING_DIMENSIONS ?? null
483
- },
484
- async init(config, runtime) {
485
- initializeOpenRouter(config, runtime);
486
- },
487
- models: {
488
- [import_core8.ModelType.TEXT_SMALL]: async (runtime, params) => {
489
- return handleTextSmall(runtime, params);
490
- },
491
- [import_core8.ModelType.TEXT_LARGE]: async (runtime, params) => {
492
- return handleTextLarge(runtime, params);
493
- },
494
- [import_core8.ModelType.OBJECT_SMALL]: async (runtime, params) => {
495
- return handleObjectSmall(runtime, params);
496
- },
497
- [import_core8.ModelType.OBJECT_LARGE]: async (runtime, params) => {
498
- return handleObjectLarge(runtime, params);
499
- },
500
- [import_core8.ModelType.IMAGE_DESCRIPTION]: async (runtime, params) => {
501
- const description = await handleImageDescription(runtime, params);
502
- return { title: "", description };
503
- },
504
- [import_core8.ModelType.IMAGE]: async (runtime, params) => {
505
- const result = await handleImageGeneration(runtime, params);
506
- return [{ url: result.imageUrl }];
507
- },
508
- [import_core8.ModelType.TEXT_EMBEDDING]: async (runtime, params) => {
509
- return handleTextEmbedding(runtime, params);
510
- }
511
- },
512
- tests: [
513
- {
514
- name: "openrouter_plugin_tests",
515
- tests: [
516
- {
517
- name: "openrouter_test_text_small",
518
- fn: async (runtime) => {
519
- try {
520
- const text = await runtime.useModel(import_core8.ModelType.TEXT_SMALL, {
521
- prompt: "What is the nature of reality in 10 words?"
522
- });
523
- if (text.length === 0) {
524
- throw new Error("Failed to generate text");
525
- }
526
- import_core8.logger.log({ text }, "generated with test_text_small");
527
- } catch (error) {
528
- const message = error instanceof Error ? error.message : String(error);
529
- import_core8.logger.error(`Error in test_text_small: ${message}`);
530
- throw error;
531
- }
532
- }
533
- },
534
- {
535
- name: "openrouter_test_text_large",
536
- fn: async (runtime) => {
537
- try {
538
- const text = await runtime.useModel(import_core8.ModelType.TEXT_LARGE, {
539
- prompt: "What is the nature of reality in 10 words?"
540
- });
541
- if (text.length === 0) {
542
- throw new Error("Failed to generate text");
543
- }
544
- import_core8.logger.log({ text }, "generated with test_text_large");
545
- } catch (error) {
546
- const message = error instanceof Error ? error.message : String(error);
547
- import_core8.logger.error(`Error in test_text_large: ${message}`);
548
- throw error;
549
- }
550
- }
551
- },
552
- {
553
- name: "openrouter_test_object_small",
554
- fn: async (runtime) => {
555
- try {
556
- const result = await runtime.useModel(import_core8.ModelType.OBJECT_SMALL, {
557
- prompt: "Create a simple JSON object with a message field saying hello",
558
- schema: { type: "object" }
559
- });
560
- import_core8.logger.log({ result }, "Generated object with test_object_small");
561
- if (!result || typeof result === "object" && "error" in result) {
562
- throw new Error("Failed to generate object");
563
- }
564
- } catch (error) {
565
- const message = error instanceof Error ? error.message : String(error);
566
- import_core8.logger.error(`Error in test_object_small: ${message}`);
567
- throw error;
568
- }
569
- }
570
- },
571
- {
572
- name: "openrouter_test_text_embedding",
573
- fn: async (runtime) => {
574
- try {
575
- const embedding = await runtime.useModel(import_core8.ModelType.TEXT_EMBEDDING, {
576
- text: "Hello, world!"
577
- });
578
- import_core8.logger.log({ embedding }, "embedding");
579
- } catch (error) {
580
- const message = error instanceof Error ? error.message : String(error);
581
- import_core8.logger.error(`Error in test_text_embedding: ${message}`);
582
- throw error;
583
- }
584
- }
585
- }
586
- ]
587
- }
588
- ]
589
- };
590
-
591
- //# debugId=FFBB525AD797F5DB64756E2164756E21
120
+ //# debugId=8CB3E91DAB0E9DCD64756E2164756E21
592
121
  //# sourceMappingURL=index.node.cjs.map