@agent-inspect/openai-agents 6.31.34 → 6.31.36

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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-inspect/openai-agents",
3
- "version": "6.31.34",
3
+ "version": "6.31.36",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "description": "OpenAI Agents JS processor integration for AgentInspect local traces and TraceContract checks",
@@ -38,7 +38,7 @@
38
38
  "@openai/agents": "^0.12.0"
39
39
  },
40
40
  "dependencies": {
41
- "agent-inspect": "6.31.34"
41
+ "agent-inspect": "6.31.36"
42
42
  },
43
43
  "publishConfig": {
44
44
  "access": "public"
package/dist/index.cjs DELETED
@@ -1,668 +0,0 @@
1
- 'use strict';
2
-
3
- var advanced = require('agent-inspect/advanced');
4
- var writers = require('agent-inspect/writers');
5
-
6
- // packages/openai-agents/src/index.ts
7
- var OPENAI_AGENTS_SOURCE = {
8
- type: "adapter",
9
- name: "@agent-inspect/openai-agents",
10
- version: "experimental"
11
- };
12
- function nowIso() {
13
- return (/* @__PURE__ */ new Date()).toISOString();
14
- }
15
- function normalizeError(error) {
16
- if (error instanceof Error && error.message.trim() !== "") {
17
- return error.message;
18
- }
19
- if (typeof error === "string" && error.trim() !== "") {
20
- return error;
21
- }
22
- return "Unknown OpenAI Agents processor error";
23
- }
24
- function durationMs(startedAt, endedAt) {
25
- const started = Date.parse(startedAt);
26
- const ended = Date.parse(endedAt);
27
- if (!Number.isFinite(started) || !Number.isFinite(ended)) return void 0;
28
- return Math.max(0, ended - started);
29
- }
30
- function countRecordKeys(value) {
31
- if (typeof value !== "object" || value === null || Array.isArray(value)) {
32
- return void 0;
33
- }
34
- return Object.keys(value).length;
35
- }
36
- function normalizeMaxPreviewChars(value) {
37
- if (typeof value !== "number" || !Number.isFinite(value) || value < 0) {
38
- return void 0;
39
- }
40
- return Math.floor(value);
41
- }
42
- function summarizeUnknown(value) {
43
- if (value === null) return { type: "null" };
44
- if (Array.isArray(value)) return { type: "array", itemCount: value.length };
45
- if (typeof value === "object") {
46
- return { type: "object", keyCount: countRecordKeys(value) ?? 0 };
47
- }
48
- if (typeof value === "string") {
49
- return { type: "string", length: value.length };
50
- }
51
- const valueType = typeof value;
52
- if (valueType === "number" || valueType === "boolean" || valueType === "bigint") {
53
- return { type: valueType };
54
- }
55
- if (valueType === "undefined") return { type: "undefined" };
56
- return { type: "unknown" };
57
- }
58
- function summarizeOptionalUnknown(value) {
59
- return value === void 0 ? void 0 : summarizeUnknown(value);
60
- }
61
- function summarizeError(error) {
62
- if (!error?.message) return void 0;
63
- return { message: error.message };
64
- }
65
- function readFiniteNonNegative(value) {
66
- return typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : void 0;
67
- }
68
- function applyCachedAndReasoningFromDetails(tokenUsage, detailRecord) {
69
- if (tokenUsage.cached === void 0) {
70
- const cached = readFiniteNonNegative(
71
- detailRecord.cached_tokens ?? detailRecord.cached_input_tokens
72
- );
73
- if (cached !== void 0) {
74
- tokenUsage.cached = cached;
75
- }
76
- }
77
- if (tokenUsage.cacheWrite === void 0) {
78
- const cacheWrite = readFiniteNonNegative(
79
- detailRecord.cache_creation_tokens ?? detailRecord.cached_creation_tokens ?? detailRecord.cache_write_tokens
80
- );
81
- if (cacheWrite !== void 0) {
82
- tokenUsage.cacheWrite = cacheWrite;
83
- }
84
- }
85
- if (tokenUsage.reasoning !== void 0) {
86
- return;
87
- }
88
- const reasoning = detailRecord.reasoning_tokens ?? detailRecord.output_tokens_details;
89
- const asNumber = readFiniteNonNegative(reasoning);
90
- if (asNumber !== void 0) {
91
- tokenUsage.reasoning = asNumber;
92
- return;
93
- }
94
- if (typeof reasoning === "object" && reasoning !== null && !Array.isArray(reasoning)) {
95
- const nested = readFiniteNonNegative(
96
- reasoning.reasoning_tokens
97
- );
98
- if (nested !== void 0) {
99
- tokenUsage.reasoning = nested;
100
- }
101
- }
102
- }
103
- function summarizeUsage(usage) {
104
- if (typeof usage !== "object" || usage === null || Array.isArray(usage)) {
105
- return void 0;
106
- }
107
- const record = usage;
108
- const tokenUsage = {};
109
- if (typeof record.input_tokens === "number" && Number.isFinite(record.input_tokens)) {
110
- tokenUsage.input = record.input_tokens;
111
- }
112
- if (typeof record.output_tokens === "number" && Number.isFinite(record.output_tokens)) {
113
- tokenUsage.output = record.output_tokens;
114
- }
115
- if (tokenUsage.input !== void 0 || tokenUsage.output !== void 0) {
116
- tokenUsage.total = (tokenUsage.input ?? 0) + (tokenUsage.output ?? 0);
117
- }
118
- const inputDetails = record.input_tokens_details;
119
- if (typeof inputDetails === "object" && inputDetails !== null && !Array.isArray(inputDetails)) {
120
- applyCachedAndReasoningFromDetails(
121
- tokenUsage,
122
- inputDetails
123
- );
124
- }
125
- const details = record.details;
126
- if (typeof details === "object" && details !== null && !Array.isArray(details)) {
127
- applyCachedAndReasoningFromDetails(tokenUsage, details);
128
- }
129
- const outputDetails = record.output_tokens_details;
130
- if (typeof outputDetails === "object" && outputDetails !== null && !Array.isArray(outputDetails)) {
131
- const nested = readFiniteNonNegative(
132
- outputDetails.reasoning_tokens
133
- );
134
- if (nested !== void 0 && tokenUsage.reasoning === void 0) {
135
- tokenUsage.reasoning = nested;
136
- }
137
- }
138
- return Object.keys(tokenUsage).length > 0 ? tokenUsage : void 0;
139
- }
140
- function spanKind(type) {
141
- switch (type) {
142
- case "agent":
143
- return "AGENT";
144
- case "generation":
145
- case "response":
146
- case "transcription":
147
- case "speech":
148
- return "LLM";
149
- case "function":
150
- case "mcp_tools":
151
- return "TOOL";
152
- case "handoff":
153
- case "guardrail":
154
- return "DECISION";
155
- case "custom":
156
- case "speech_group":
157
- return "LOGIC";
158
- default:
159
- return "LOGIC";
160
- }
161
- }
162
- function spanName(data) {
163
- switch (data.type) {
164
- case "agent":
165
- case "function":
166
- case "custom":
167
- case "guardrail":
168
- return data.name;
169
- case "generation":
170
- return data.model ? `generation:${data.model}` : "generation";
171
- case "response":
172
- return data.response_id ? `response:${data.response_id}` : "response";
173
- case "handoff":
174
- return data.to_agent ? `handoff:${data.to_agent}` : "handoff";
175
- case "mcp_tools":
176
- return data.server ? `mcp-tools:${data.server}` : "mcp-tools";
177
- case "transcription":
178
- return data.model ? `transcription:${data.model}` : "transcription";
179
- case "speech":
180
- return data.model ? `speech:${data.model}` : "speech";
181
- case "speech_group":
182
- return "speech-group";
183
- default:
184
- return "openai-agents-span";
185
- }
186
- }
187
- function commonSpanAttributes(span) {
188
- return {
189
- legacyEvent: "step_started",
190
- stepId: span.spanId,
191
- stepType: mapSpanTypeToStepType(span.spanData.type),
192
- spanType: span.spanData.type,
193
- traceId: span.traceId,
194
- spanId: span.spanId,
195
- parentSpanId: span.parentId ?? void 0,
196
- traceMetadataKeyCount: countRecordKeys(span.traceMetadata)
197
- };
198
- }
199
- function specificSpanAttributes(data) {
200
- switch (data.type) {
201
- case "agent":
202
- return {
203
- agentName: data.name,
204
- handoffCount: data.handoffs?.length ?? 0,
205
- handoffNames: data.handoffs,
206
- toolCount: data.tools?.length ?? 0,
207
- toolNames: data.tools,
208
- outputType: data.output_type
209
- };
210
- case "function":
211
- return {
212
- toolName: data.name,
213
- hasInput: data.input !== void 0,
214
- hasOutput: data.output !== void 0,
215
- inputSummary: summarizeUnknown(data.input),
216
- outputSummary: summarizeUnknown(data.output),
217
- mcpDataSummary: summarizeOptionalUnknown(data.mcp_data)
218
- };
219
- case "generation":
220
- return {
221
- model: data.model,
222
- modelConfigKeyCount: countRecordKeys(data.model_config),
223
- inputSummary: summarizeOptionalUnknown(data.input),
224
- outputSummary: summarizeOptionalUnknown(data.output),
225
- usageDetailsKeyCount: countRecordKeys(data.usage?.details)
226
- };
227
- case "response":
228
- return {
229
- responseId: data.response_id,
230
- inputSummary: summarizeOptionalUnknown(data._input),
231
- responseSummary: summarizeOptionalUnknown(data._response)
232
- };
233
- case "handoff":
234
- return {
235
- fromAgent: data.from_agent,
236
- toAgent: data.to_agent
237
- };
238
- case "custom":
239
- return {
240
- customName: data.name,
241
- dataSummary: summarizeUnknown(data.data)
242
- };
243
- case "guardrail":
244
- return {
245
- guardrailName: data.name,
246
- triggered: data.triggered
247
- };
248
- case "mcp_tools":
249
- return {
250
- server: data.server,
251
- toolCount: data.result?.length ?? 0,
252
- toolNames: data.result
253
- };
254
- case "transcription":
255
- return {
256
- model: data.model,
257
- inputFormat: data.input.format,
258
- inputSummary: summarizeUnknown(data.input.data),
259
- outputSummary: summarizeOptionalUnknown(data.output),
260
- modelConfigKeyCount: countRecordKeys(data.model_config)
261
- };
262
- case "speech":
263
- return {
264
- model: data.model,
265
- inputSummary: summarizeOptionalUnknown(data.input),
266
- outputFormat: data.output.format,
267
- outputSummary: summarizeUnknown(data.output.data),
268
- modelConfigKeyCount: countRecordKeys(data.model_config)
269
- };
270
- case "speech_group":
271
- return {
272
- inputSummary: summarizeOptionalUnknown(data.input)
273
- };
274
- default:
275
- return {};
276
- }
277
- }
278
- function mapSpanTypeToStepType(type) {
279
- switch (type) {
280
- case "generation":
281
- case "response":
282
- case "transcription":
283
- case "speech":
284
- return "llm";
285
- case "function":
286
- case "mcp_tools":
287
- return "tool";
288
- case "handoff":
289
- case "guardrail":
290
- return "decision";
291
- case "agent":
292
- return "logic";
293
- case "custom":
294
- case "speech_group":
295
- return "custom";
296
- default:
297
- return "logic";
298
- }
299
- }
300
- function spanInputSummary(data) {
301
- switch (data.type) {
302
- case "generation":
303
- return summarizeOptionalUnknown(data.input);
304
- case "function":
305
- return summarizeUnknown(data.input);
306
- case "response":
307
- return summarizeOptionalUnknown(data._input);
308
- case "custom":
309
- return summarizeUnknown(data.data);
310
- case "transcription":
311
- return { format: data.input.format, ...summarizeUnknown(data.input.data) };
312
- case "speech":
313
- case "speech_group":
314
- return summarizeOptionalUnknown(data.input);
315
- default:
316
- return void 0;
317
- }
318
- }
319
- function spanOutputSummary(data) {
320
- switch (data.type) {
321
- case "generation":
322
- return summarizeOptionalUnknown(data.output);
323
- case "function":
324
- return summarizeUnknown(data.output);
325
- case "response":
326
- return summarizeOptionalUnknown(data._response);
327
- case "guardrail":
328
- return { triggered: data.triggered };
329
- case "mcp_tools":
330
- return { toolCount: data.result?.length ?? 0 };
331
- case "transcription":
332
- return summarizeOptionalUnknown(data.output);
333
- case "speech":
334
- return { format: data.output.format, ...summarizeUnknown(data.output.data) };
335
- default:
336
- return void 0;
337
- }
338
- }
339
- function spanPreviewSources(data, phase) {
340
- const withPhase = (input, output) => phase === "start" ? { input } : { input, output };
341
- switch (data.type) {
342
- case "generation":
343
- return withPhase(data.input, data.output);
344
- case "function":
345
- return withPhase(data.input, data.output);
346
- case "response":
347
- return withPhase(data._input, data._response);
348
- case "transcription":
349
- return withPhase(data.input.data, data.output);
350
- case "speech":
351
- return withPhase(data.input, data.output.data);
352
- case "custom":
353
- return { input: data.data };
354
- case "speech_group":
355
- return { input: data.input };
356
- default:
357
- return {};
358
- }
359
- }
360
- function traceEventId(traceId) {
361
- return `openai_agents_trace:${traceId}`;
362
- }
363
- function spanEventId(spanId) {
364
- return `openai_agents_span:${spanId}`;
365
- }
366
- var AgentInspectOpenAiAgentsTracingProcessor = class {
367
- constructor(options) {
368
- this.options = options;
369
- this.requestedCapture = options.capture ?? "metadata-only";
370
- this.preview = advanced.createAdapterPreviewCapture({
371
- capture: this.requestedCapture,
372
- redactionProfile: options.redactionProfile,
373
- maxPreviewChars: options.maxPreviewChars,
374
- onDiagnostic: options.onDiagnostic
375
- });
376
- this.effectiveCapture = this.preview.capture;
377
- this.writer = options.writer ?? (options.traceDir ? writers.fileWriter({ dir: options.traceDir }) : void 0);
378
- for (const key of [
379
- "options",
380
- "writer",
381
- "requestedCapture",
382
- "preview",
383
- "effectiveCapture",
384
- "diagnostics",
385
- "activeTraces",
386
- "activeSpans",
387
- "closed"
388
- ]) {
389
- Object.defineProperty(this, key, { enumerable: false });
390
- }
391
- this.recordCaptureOptionWarnings();
392
- }
393
- options;
394
- installMode = "setTraceProcessors";
395
- localOnly = true;
396
- writer;
397
- requestedCapture;
398
- preview;
399
- effectiveCapture;
400
- diagnostics = {
401
- writeFailures: 0,
402
- lifecycleWarnings: 0,
403
- flushFailures: 0,
404
- shutdownFailures: 0,
405
- runtimeMappingImplemented: true
406
- };
407
- activeTraces = /* @__PURE__ */ new Map();
408
- activeSpans = /* @__PURE__ */ new Map();
409
- closed = false;
410
- start() {
411
- }
412
- async onTraceStart(trace) {
413
- await this.handleLifecycle("onTraceStart", async () => {
414
- if (this.closed) {
415
- this.recordLifecycleWarning("onTraceStart ignored because processor is shut down.");
416
- return;
417
- }
418
- const startedAt = nowIso();
419
- const name = this.options.workflowName ?? trace.name ?? "openai-agents-run";
420
- const eventId = traceEventId(trace.traceId);
421
- this.activeTraces.set(trace.traceId, { eventId, startedAt, name });
422
- await this.write({
423
- schemaVersion: "0.2",
424
- eventId,
425
- runId: trace.traceId,
426
- kind: "RUN",
427
- name,
428
- status: "running",
429
- timestamp: startedAt,
430
- startedAt,
431
- confidence: "explicit",
432
- source: OPENAI_AGENTS_SOURCE,
433
- attributes: {
434
- legacyEvent: "run_started",
435
- installMode: this.installMode,
436
- capture: this.effectiveCapture,
437
- requestedCapture: this.requestedCapture === this.effectiveCapture ? void 0 : this.requestedCapture,
438
- previewCaptureSupported: true,
439
- // Preview rows report the effective bound/profile, which the
440
- // `share` and `strict` profiles can lower below the request.
441
- redactionProfile: this.preview.previewEnabled ? this.preview.redactionProfile : this.options.redactionProfile,
442
- maxPreviewChars: this.preview.previewEnabled ? this.preview.maxPreviewChars : normalizeMaxPreviewChars(this.options.maxPreviewChars),
443
- groupId: trace.groupId ?? void 0,
444
- metadataKeyCount: countRecordKeys(trace.metadata)
445
- },
446
- trace: {
447
- traceId: trace.traceId
448
- }
449
- });
450
- });
451
- }
452
- async onTraceEnd(trace) {
453
- await this.handleLifecycle("onTraceEnd", async () => {
454
- if (this.closed) {
455
- this.recordLifecycleWarning("onTraceEnd ignored because processor is shut down.");
456
- return;
457
- }
458
- const active = this.activeTraces.get(trace.traceId);
459
- if (!active) {
460
- this.recordLifecycleWarning(
461
- `onTraceEnd ignored because trace ${trace.traceId} has no matching start callback.`
462
- );
463
- return;
464
- }
465
- const endedAt = nowIso();
466
- await this.write({
467
- schemaVersion: "0.2",
468
- eventId: active.eventId,
469
- runId: trace.traceId,
470
- kind: "RUN",
471
- name: active.name,
472
- status: "ok",
473
- timestamp: endedAt,
474
- startedAt: active.startedAt,
475
- endedAt,
476
- durationMs: durationMs(active.startedAt, endedAt),
477
- confidence: "explicit",
478
- source: OPENAI_AGENTS_SOURCE,
479
- attributes: {
480
- legacyEvent: "run_completed",
481
- installMode: this.installMode,
482
- groupId: trace.groupId ?? void 0,
483
- metadataKeyCount: countRecordKeys(trace.metadata)
484
- },
485
- trace: {
486
- traceId: trace.traceId
487
- }
488
- });
489
- this.activeTraces.delete(trace.traceId);
490
- });
491
- }
492
- async onSpanStart(span) {
493
- await this.handleLifecycle("onSpanStart", async () => {
494
- if (this.closed) {
495
- this.recordLifecycleWarning("onSpanStart ignored because processor is shut down.");
496
- return;
497
- }
498
- const startedAt = span.startedAt ?? nowIso();
499
- const eventId = spanEventId(span.spanId);
500
- const parentId = this.resolveParentEventId(span);
501
- const kind = spanKind(span.spanData.type);
502
- const name = spanName(span.spanData);
503
- this.activeSpans.set(span.spanId, {
504
- eventId,
505
- runId: span.traceId,
506
- parentId,
507
- startedAt,
508
- name,
509
- kind
510
- });
511
- await this.write({
512
- schemaVersion: "0.2",
513
- eventId,
514
- runId: span.traceId,
515
- parentId,
516
- kind,
517
- name,
518
- status: "running",
519
- timestamp: startedAt,
520
- startedAt,
521
- confidence: "explicit",
522
- source: OPENAI_AGENTS_SOURCE,
523
- attributes: {
524
- ...commonSpanAttributes(span),
525
- ...specificSpanAttributes(span.spanData),
526
- ...this.previewAttributes(span, "start")
527
- },
528
- inputSummary: spanInputSummary(span.spanData),
529
- tokenUsage: summarizeUsage(
530
- span.spanData.type === "generation" ? span.spanData.usage : void 0
531
- ),
532
- trace: {
533
- traceId: span.traceId,
534
- spanId: span.spanId,
535
- parentSpanId: span.parentId ?? void 0
536
- }
537
- });
538
- });
539
- }
540
- async onSpanEnd(span) {
541
- await this.handleLifecycle("onSpanEnd", async () => {
542
- if (this.closed) {
543
- this.recordLifecycleWarning("onSpanEnd ignored because processor is shut down.");
544
- return;
545
- }
546
- const active = this.activeSpans.get(span.spanId);
547
- if (!active) {
548
- this.recordLifecycleWarning(
549
- `onSpanEnd ignored because span ${span.spanId} has no matching start callback.`
550
- );
551
- return;
552
- }
553
- const endedAt = span.endedAt ?? nowIso();
554
- const error = summarizeError(span.error);
555
- await this.write({
556
- schemaVersion: "0.2",
557
- eventId: active.eventId,
558
- runId: active.runId,
559
- parentId: active.parentId,
560
- kind: active.kind,
561
- name: active.name,
562
- status: error ? "error" : "ok",
563
- timestamp: endedAt,
564
- startedAt: active.startedAt,
565
- endedAt,
566
- durationMs: durationMs(active.startedAt, endedAt),
567
- confidence: "explicit",
568
- source: OPENAI_AGENTS_SOURCE,
569
- attributes: {
570
- ...commonSpanAttributes(span),
571
- ...specificSpanAttributes(span.spanData),
572
- legacyEvent: "step_completed",
573
- errorDataSummary: summarizeOptionalUnknown(span.error?.data),
574
- ...this.previewAttributes(span, "end")
575
- },
576
- inputSummary: spanInputSummary(span.spanData),
577
- outputSummary: spanOutputSummary(span.spanData),
578
- error,
579
- tokenUsage: summarizeUsage(
580
- span.spanData.type === "generation" ? span.spanData.usage : void 0
581
- ),
582
- trace: {
583
- traceId: span.traceId,
584
- spanId: span.spanId,
585
- parentSpanId: span.parentId ?? void 0
586
- }
587
- });
588
- this.activeSpans.delete(span.spanId);
589
- });
590
- }
591
- async forceFlush() {
592
- try {
593
- await this.writer?.flush?.();
594
- } catch (error) {
595
- this.diagnostics.flushFailures += 1;
596
- this.diagnostics.lastError = normalizeError(error);
597
- }
598
- }
599
- async shutdown(_timeout) {
600
- if (this.closed) return;
601
- try {
602
- await this.writer?.close?.();
603
- } catch (error) {
604
- this.diagnostics.shutdownFailures += 1;
605
- this.diagnostics.lastError = normalizeError(error);
606
- } finally {
607
- this.closed = true;
608
- this.activeTraces.clear();
609
- this.activeSpans.clear();
610
- }
611
- }
612
- getDiagnostics() {
613
- return { ...this.diagnostics, capture: this.preview.getDiagnostics() };
614
- }
615
- /** Bounded preview attributes for one span phase (empty unless enabled). */
616
- previewAttributes(span, phase) {
617
- if (!this.preview.previewEnabled) return {};
618
- return this.preview.applyPreviewFields(
619
- {},
620
- spanPreviewSources(span.spanData, phase)
621
- );
622
- }
623
- getWriterStats() {
624
- return this.writer?.getStats?.();
625
- }
626
- resolveParentEventId(span) {
627
- if (span.parentId) return spanEventId(span.parentId);
628
- return this.activeTraces.get(span.traceId)?.eventId;
629
- }
630
- async handleLifecycle(callbackName, run) {
631
- try {
632
- await run();
633
- } catch (error) {
634
- this.recordLifecycleWarning(`${callbackName}: ${normalizeError(error)}`);
635
- }
636
- }
637
- recordLifecycleWarning(message) {
638
- this.diagnostics.lifecycleWarnings += 1;
639
- this.diagnostics.lastWarning = message;
640
- }
641
- recordCaptureOptionWarnings() {
642
- if (this.effectiveCapture === "preview") return;
643
- const previewOnlyOptions = [];
644
- if (this.options.redactionProfile !== void 0) previewOnlyOptions.push("redactionProfile");
645
- if (this.options.maxPreviewChars !== void 0) previewOnlyOptions.push("maxPreviewChars");
646
- if (previewOnlyOptions.length > 0) {
647
- this.recordLifecycleWarning(
648
- `OpenAI Agents preview-only options have no effect in metadata-only capture: ${previewOnlyOptions.join(", ")}.`
649
- );
650
- }
651
- }
652
- async write(event) {
653
- if (!this.writer) return;
654
- try {
655
- await this.writer.write(event);
656
- } catch (error) {
657
- this.diagnostics.writeFailures += 1;
658
- this.diagnostics.lastError = normalizeError(error);
659
- }
660
- }
661
- };
662
- function agentInspectProcessor(options = {}) {
663
- return new AgentInspectOpenAiAgentsTracingProcessor(options);
664
- }
665
-
666
- exports.agentInspectProcessor = agentInspectProcessor;
667
- //# sourceMappingURL=index.cjs.map
668
- //# sourceMappingURL=index.cjs.map