@agent-inspect/mcp-server 6.31.21 → 6.31.22

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.
@@ -4082,6 +4082,168 @@ function runTraceChecks(input, options = {}) {
4082
4082
  };
4083
4083
  }
4084
4084
 
4085
+ // packages/core/src/checks/canonical-equality.ts
4086
+ var DEFAULT_MAX_DEPTH = 8;
4087
+ var DEFAULT_MAX_BYTES = 16384;
4088
+ function sortKeysDeep(input, depth, maxDepth) {
4089
+ if (depth > maxDepth) {
4090
+ throw new Error("AI_CHECK_CANONICAL_DEPTH_EXCEEDED");
4091
+ }
4092
+ if (input === null || typeof input !== "object") return input;
4093
+ if (Array.isArray(input)) {
4094
+ return input.map((item) => sortKeysDeep(item, depth + 1, maxDepth));
4095
+ }
4096
+ const record = input;
4097
+ const out = {};
4098
+ for (const key of Object.keys(record).sort()) {
4099
+ out[key] = sortKeysDeep(record[key], depth + 1, maxDepth);
4100
+ }
4101
+ return out;
4102
+ }
4103
+ function encodeCanonicalStructured(value, limits) {
4104
+ const maxDepth = DEFAULT_MAX_DEPTH;
4105
+ const maxBytes = DEFAULT_MAX_BYTES;
4106
+ try {
4107
+ const sorted = sortKeysDeep(value, 0, maxDepth);
4108
+ const encoded = JSON.stringify(sorted);
4109
+ if (encoded === void 0) {
4110
+ return {
4111
+ ok: false,
4112
+ reason: "Value is not JSON-serializable for canonical comparison.",
4113
+ code: "AI_CHECK_CANONICAL_UNSERIALIZABLE"
4114
+ };
4115
+ }
4116
+ if (Buffer.byteLength(encoded, "utf8") > maxBytes) {
4117
+ return {
4118
+ ok: false,
4119
+ reason: "Canonical structured value exceeds bounded size limit.",
4120
+ code: "AI_CHECK_CANONICAL_SIZE_EXCEEDED"
4121
+ };
4122
+ }
4123
+ return { ok: true, value: encoded };
4124
+ } catch (error) {
4125
+ const message = error instanceof Error ? error.message : String(error);
4126
+ if (message === "AI_CHECK_CANONICAL_DEPTH_EXCEEDED") {
4127
+ return {
4128
+ ok: false,
4129
+ reason: "Canonical structured value exceeds bounded depth limit.",
4130
+ code: "AI_CHECK_CANONICAL_DEPTH_EXCEEDED"
4131
+ };
4132
+ }
4133
+ return {
4134
+ ok: false,
4135
+ reason: "Canonical structured encoding failed.",
4136
+ code: "AI_CHECK_CANONICAL_UNSERIALIZABLE"
4137
+ };
4138
+ }
4139
+ }
4140
+
4141
+ // packages/core/src/persisted/delivery-identity.ts
4142
+ var DELIVERY_CONFLICT_ATTR = "agent_inspect.delivery_conflict";
4143
+ var IDENTITY_CONFLICT_ATTR = {
4144
+ operationId: "agent_inspect.identity_conflict.operation_id",
4145
+ attemptId: "agent_inspect.identity_conflict.attempt_id",
4146
+ retryOf: "agent_inspect.identity_conflict.retry_of",
4147
+ attemptNumber: "agent_inspect.identity_conflict.attempt_number"
4148
+ };
4149
+ var SYNTHETIC_DELIVERY_ID = /^(?:manual|inspect):[A-Za-z0-9_-]+:[A-Za-z0-9_-]+:[A-Za-z0-9_-]+:\d+$/;
4150
+ function stripReaderDeliveryDiscriminator(eventId) {
4151
+ if (!SYNTHETIC_DELIVERY_ID.test(eventId)) return eventId;
4152
+ return eventId.replace(/:\d+$/, "");
4153
+ }
4154
+ function canonicalDigest(value) {
4155
+ if (value === void 0) return null;
4156
+ const encoded = encodeCanonicalStructured(value);
4157
+ return encoded.ok ? encoded.value : `unencodable:${encoded.code}`;
4158
+ }
4159
+ function capturedContentDigest(attributes) {
4160
+ if (!attributes || typeof attributes !== "object") {
4161
+ return { args: null, result: null };
4162
+ }
4163
+ const nested = attributes.metadata && typeof attributes.metadata === "object" ? attributes.metadata : void 0;
4164
+ const args = attributes.arguments ?? attributes.args ?? attributes.input ?? nested?.arguments ?? nested?.args ?? nested?.input;
4165
+ const result = attributes.result ?? attributes.output ?? attributes.response ?? nested?.result ?? nested?.output ?? nested?.response;
4166
+ return {
4167
+ args: args === void 0 ? null : canonicalDigest(args),
4168
+ result: result === void 0 ? null : canonicalDigest(result)
4169
+ };
4170
+ }
4171
+ function timeKey(fields) {
4172
+ if (typeof fields.startedAt === "string" && fields.startedAt.trim() !== "") {
4173
+ return fields.startedAt;
4174
+ }
4175
+ if (typeof fields.timestamp === "string" && fields.timestamp.trim() !== "") {
4176
+ return fields.timestamp;
4177
+ }
4178
+ if (typeof fields.timestamp === "number" && Number.isFinite(fields.timestamp)) {
4179
+ return String(fields.timestamp);
4180
+ }
4181
+ return null;
4182
+ }
4183
+ function deliverySemanticFingerprint(fields) {
4184
+ const content = capturedContentDigest(fields.attributes);
4185
+ return JSON.stringify({
4186
+ stableEventId: stripReaderDeliveryDiscriminator(fields.eventId),
4187
+ runId: fields.runId,
4188
+ kind: fields.kind,
4189
+ name: fields.name,
4190
+ status: fields.status ?? null,
4191
+ parentId: fields.parentId ?? null,
4192
+ sourceType: fields.sourceType ?? null,
4193
+ time: timeKey(fields),
4194
+ operationId: fields.operationId ?? null,
4195
+ attemptId: fields.attemptId ?? null,
4196
+ attemptNumber: fields.attemptNumber ?? null,
4197
+ retryOf: fields.retryOf ?? null,
4198
+ argsDigest: content.args,
4199
+ resultDigest: content.result
4200
+ });
4201
+ }
4202
+ function identityFieldsFromAttributes(attributes) {
4203
+ if (!attributes || typeof attributes !== "object") {
4204
+ return {
4205
+ operationId: null,
4206
+ attemptId: null,
4207
+ attemptNumber: null,
4208
+ retryOf: null
4209
+ };
4210
+ }
4211
+ const nested = attributes.metadata && typeof attributes.metadata === "object" && !Array.isArray(attributes.metadata) ? attributes.metadata : void 0;
4212
+ const pickString3 = (key) => {
4213
+ const direct = attributes[key];
4214
+ if (typeof direct === "string" && direct.trim() !== "") return direct.trim();
4215
+ const nestedValue = nested?.[key];
4216
+ if (typeof nestedValue === "string" && nestedValue.trim() !== "") {
4217
+ return nestedValue.trim();
4218
+ }
4219
+ return null;
4220
+ };
4221
+ const pickNumber2 = () => {
4222
+ const direct = attributes.attemptNumber ?? attributes.attempt;
4223
+ if (typeof direct === "number" && Number.isFinite(direct)) return direct;
4224
+ const nestedValue = nested?.attemptNumber ?? nested?.attempt;
4225
+ if (typeof nestedValue === "number" && Number.isFinite(nestedValue)) {
4226
+ return nestedValue;
4227
+ }
4228
+ return null;
4229
+ };
4230
+ return {
4231
+ operationId: pickString3("operationId"),
4232
+ attemptId: pickString3("attemptId"),
4233
+ retryOf: pickString3("retryOf"),
4234
+ attemptNumber: pickNumber2()
4235
+ };
4236
+ }
4237
+ function stampDeliveryConflict(event) {
4238
+ return {
4239
+ ...event,
4240
+ attributes: {
4241
+ ...event.attributes ?? {},
4242
+ [DELIVERY_CONFLICT_ATTR]: true
4243
+ }
4244
+ };
4245
+ }
4246
+
4085
4247
  // packages/core/src/checks/contract.ts
4086
4248
  new Set(OBSERVED_OUTCOME_METHODS);
4087
4249
 
@@ -4119,18 +4281,18 @@ function escapeMarkdown(value) {
4119
4281
  function escapeHtml(value) {
4120
4282
  return value.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#39;");
4121
4283
  }
4122
- function sortKeysDeep(input) {
4284
+ function sortKeysDeep2(input) {
4123
4285
  if (input === null || typeof input !== "object") return input;
4124
- if (Array.isArray(input)) return input.map(sortKeysDeep);
4286
+ if (Array.isArray(input)) return input.map(sortKeysDeep2);
4125
4287
  const o = input;
4126
4288
  const out = {};
4127
4289
  for (const k of Object.keys(o).sort()) {
4128
- out[k] = sortKeysDeep(o[k]);
4290
+ out[k] = sortKeysDeep2(o[k]);
4129
4291
  }
4130
4292
  return out;
4131
4293
  }
4132
4294
  function stableJson(value, pretty) {
4133
- const sorted = sortKeysDeep(value);
4295
+ const sorted = sortKeysDeep2(value);
4134
4296
  return pretty === true ? JSON.stringify(sorted, null, 2) : JSON.stringify(sorted);
4135
4297
  }
4136
4298
  function compactAttributes(attrs2, options) {
@@ -4955,7 +5117,47 @@ var TreeBuilder = class {
4955
5117
  const sorted = [...runEvents].sort((a, b) => a.timestamp - b.timestamp);
4956
5118
  const nodes = /* @__PURE__ */ new Map();
4957
5119
  for (const e of sorted) {
4958
- nodes.set(e.eventId, { event: e, children: [], depth: 0 });
5120
+ const existing = nodes.get(e.eventId);
5121
+ if (!existing) {
5122
+ nodes.set(e.eventId, { event: e, children: [], depth: 0 });
5123
+ continue;
5124
+ }
5125
+ const existingAttrs = existing.event.attributes && typeof existing.event.attributes === "object" ? existing.event.attributes : void 0;
5126
+ const nextAttrs = e.attributes && typeof e.attributes === "object" ? e.attributes : void 0;
5127
+ const existingIdentity = identityFieldsFromAttributes(existingAttrs);
5128
+ const nextIdentity = identityFieldsFromAttributes(nextAttrs);
5129
+ const existingFp = deliverySemanticFingerprint({
5130
+ eventId: existing.event.eventId,
5131
+ runId: existing.event.runId,
5132
+ kind: existing.event.kind,
5133
+ name: existing.event.name,
5134
+ status: existing.event.status,
5135
+ parentId: existing.event.parentId,
5136
+ timestamp: existing.event.timestamp,
5137
+ sourceType: existing.event.source?.type,
5138
+ attributes: existingAttrs,
5139
+ ...existingIdentity
5140
+ });
5141
+ const nextFp = deliverySemanticFingerprint({
5142
+ eventId: e.eventId,
5143
+ runId: e.runId,
5144
+ kind: e.kind,
5145
+ name: e.name,
5146
+ status: e.status,
5147
+ parentId: e.parentId,
5148
+ timestamp: e.timestamp,
5149
+ sourceType: e.source?.type,
5150
+ attributes: nextAttrs,
5151
+ ...nextIdentity
5152
+ });
5153
+ if (existingFp === nextFp) {
5154
+ continue;
5155
+ }
5156
+ nodes.set(e.eventId, {
5157
+ event: stampDeliveryConflict(e),
5158
+ children: [],
5159
+ depth: 0
5160
+ });
4959
5161
  }
4960
5162
  const { roots, summary } = linkNodesVisibilityFirst(nodes);
4961
5163
  const confidenceBreakdown = {
@@ -6420,6 +6622,12 @@ function promoteAgentInspectWorkflowIdentity(attributes, pathPrefix) {
6420
6622
  ["agent_inspect.retry_of", "retryOf", "string"],
6421
6623
  ["agent_inspect.attempt_number", "attemptNumber", "int"]
6422
6624
  ];
6625
+ const conflictMapping = [
6626
+ ["agent_inspect.identity_conflict.operation_id", "operationId", "string"],
6627
+ ["agent_inspect.identity_conflict.attempt_id", "attemptId", "string"],
6628
+ ["agent_inspect.identity_conflict.retry_of", "retryOf", "string"],
6629
+ ["agent_inspect.identity_conflict.attempt_number", "attemptNumber", "int"]
6630
+ ];
6423
6631
  const metadata = attributes.metadata && typeof attributes.metadata === "object" && !Array.isArray(attributes.metadata) ? { ...attributes.metadata } : {};
6424
6632
  for (const [dotted, camel, kind] of mapping) {
6425
6633
  const raw = attributes[dotted];
@@ -6471,6 +6679,46 @@ function promoteAgentInspectWorkflowIdentity(attributes, pathPrefix) {
6471
6679
  if (direct === void 0) attributes[camel] = promoted;
6472
6680
  if (nested === void 0) metadata[camel] = promoted;
6473
6681
  }
6682
+ for (const [dotted, camel, kind] of conflictMapping) {
6683
+ const raw = attributes[dotted];
6684
+ if (raw === void 0 || raw === null) continue;
6685
+ let alternate;
6686
+ if (kind === "int") {
6687
+ const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
6688
+ if (!Number.isFinite(n) || n < 1) {
6689
+ warnings.push({
6690
+ code: "otlp_identity_invalid",
6691
+ message: `Ignoring invalid ${dotted} identity conflict value.`,
6692
+ severity: "warning",
6693
+ field: `${pathPrefix}.${dotted}`
6694
+ });
6695
+ continue;
6696
+ }
6697
+ alternate = Math.trunc(n);
6698
+ } else if (typeof raw === "string" && raw.trim() !== "") {
6699
+ alternate = raw.trim();
6700
+ } else {
6701
+ warnings.push({
6702
+ code: "otlp_identity_invalid",
6703
+ message: `Ignoring non-string ${dotted} identity conflict value.`,
6704
+ severity: "warning",
6705
+ field: `${pathPrefix}.${dotted}`
6706
+ });
6707
+ continue;
6708
+ }
6709
+ const preferred = attributes[camel];
6710
+ if (preferred !== void 0 && preferred !== alternate) {
6711
+ metadata[camel] = alternate;
6712
+ warnings.push({
6713
+ code: "otlp_identity_conflict",
6714
+ message: `Conflicting ${camel}: attributes.${camel} vs nested alternate from ${dotted}; retaining both.`,
6715
+ severity: "warning",
6716
+ field: `${pathPrefix}.${dotted}`
6717
+ });
6718
+ } else if (preferred === void 0) {
6719
+ metadata[camel] = alternate;
6720
+ }
6721
+ }
6474
6722
  if (Object.keys(metadata).length > 0) {
6475
6723
  attributes.metadata = metadata;
6476
6724
  }
@@ -7657,43 +7905,81 @@ var STRUCTURAL_IDENTITY_KEYS = [
7657
7905
  "attemptNumber",
7658
7906
  "attempt"
7659
7907
  ];
7660
- function pickBoundedIdentityString(bag, key, maxLen) {
7908
+ function nestedBag(bag) {
7661
7909
  if (!bag || typeof bag !== "object") return void 0;
7662
- const direct = bag[key];
7663
- if (typeof direct === "string" && direct.trim() !== "") {
7664
- return direct.trim().slice(0, maxLen);
7665
- }
7666
- const nested = bag.metadata && typeof bag.metadata === "object" ? bag.metadata[key] : void 0;
7667
- if (typeof nested === "string" && nested.trim() !== "") {
7668
- return nested.trim().slice(0, maxLen);
7669
- }
7670
- return void 0;
7910
+ const nested = bag.metadata;
7911
+ if (!nested || typeof nested !== "object" || Array.isArray(nested)) return void 0;
7912
+ return nested;
7913
+ }
7914
+ function pickBoundedIdentityString(bag, key, maxLen) {
7915
+ if (!bag || typeof bag !== "object") return {};
7916
+ const directRaw = bag[key];
7917
+ const nestedRaw = nestedBag(bag)?.[key];
7918
+ const direct = typeof directRaw === "string" && directRaw.trim() !== "" ? directRaw.trim().slice(0, maxLen) : void 0;
7919
+ const nested = typeof nestedRaw === "string" && nestedRaw.trim() !== "" ? nestedRaw.trim().slice(0, maxLen) : void 0;
7920
+ if (direct !== void 0 && nested !== void 0 && direct !== nested) {
7921
+ return { value: direct, conflictAlternate: nested };
7922
+ }
7923
+ if (direct !== void 0) return { value: direct };
7924
+ if (nested !== void 0) return { value: nested };
7925
+ return {};
7671
7926
  }
7672
7927
  function pickBoundedIdentityNumber(bag, key) {
7673
- if (!bag || typeof bag !== "object") return void 0;
7674
- const direct = bag[key];
7675
- if (typeof direct === "number" && Number.isFinite(direct)) return direct;
7676
- const nested = bag.metadata && typeof bag.metadata === "object" ? bag.metadata[key] : void 0;
7677
- if (typeof nested === "number" && Number.isFinite(nested)) return nested;
7678
- return void 0;
7928
+ if (!bag || typeof bag !== "object") return {};
7929
+ const directRaw = bag[key];
7930
+ const nestedRaw = nestedBag(bag)?.[key];
7931
+ const direct = typeof directRaw === "number" && Number.isFinite(directRaw) ? directRaw : void 0;
7932
+ const nested = typeof nestedRaw === "number" && Number.isFinite(nestedRaw) ? nestedRaw : void 0;
7933
+ if (direct !== void 0 && nested !== void 0 && direct !== nested) {
7934
+ return { value: direct, conflictAlternate: nested };
7935
+ }
7936
+ if (direct !== void 0) return { value: direct };
7937
+ if (nested !== void 0) return { value: nested };
7938
+ return {};
7679
7939
  }
7680
7940
  function appendStructuralIdentityAttrs(attrs2, meta, maxLen) {
7941
+ const conflicts = [];
7681
7942
  const operationId = pickBoundedIdentityString(meta, "operationId", maxLen);
7682
- if (operationId !== void 0) {
7683
- attrs2.push(stringAttr2("agent_inspect.operation_id", operationId));
7943
+ if (operationId.value !== void 0) {
7944
+ attrs2.push(stringAttr2("agent_inspect.operation_id", operationId.value));
7945
+ }
7946
+ if (operationId.conflictAlternate !== void 0) {
7947
+ attrs2.push(
7948
+ stringAttr2(IDENTITY_CONFLICT_ATTR.operationId, operationId.conflictAlternate)
7949
+ );
7950
+ conflicts.push("operationId");
7684
7951
  }
7685
7952
  const attemptId = pickBoundedIdentityString(meta, "attemptId", maxLen);
7686
- if (attemptId !== void 0) {
7687
- attrs2.push(stringAttr2("agent_inspect.attempt_id", attemptId));
7953
+ if (attemptId.value !== void 0) {
7954
+ attrs2.push(stringAttr2("agent_inspect.attempt_id", attemptId.value));
7955
+ }
7956
+ if (attemptId.conflictAlternate !== void 0) {
7957
+ attrs2.push(stringAttr2(IDENTITY_CONFLICT_ATTR.attemptId, attemptId.conflictAlternate));
7958
+ conflicts.push("attemptId");
7688
7959
  }
7689
7960
  const retryOf = pickBoundedIdentityString(meta, "retryOf", maxLen);
7690
- if (retryOf !== void 0) {
7691
- attrs2.push(stringAttr2("agent_inspect.retry_of", retryOf));
7961
+ if (retryOf.value !== void 0) {
7962
+ attrs2.push(stringAttr2("agent_inspect.retry_of", retryOf.value));
7692
7963
  }
7693
- const attemptNumber = pickBoundedIdentityNumber(meta, "attemptNumber") ?? pickBoundedIdentityNumber(meta, "attempt");
7694
- if (attemptNumber !== void 0) {
7695
- attrs2.push(intAttr("agent_inspect.attempt_number", attemptNumber));
7964
+ if (retryOf.conflictAlternate !== void 0) {
7965
+ attrs2.push(stringAttr2(IDENTITY_CONFLICT_ATTR.retryOf, retryOf.conflictAlternate));
7966
+ conflicts.push("retryOf");
7967
+ }
7968
+ const attemptNumberPrimary = pickBoundedIdentityNumber(meta, "attemptNumber");
7969
+ const attemptNumber = attemptNumberPrimary.value !== void 0 || attemptNumberPrimary.conflictAlternate !== void 0 ? attemptNumberPrimary : pickBoundedIdentityNumber(meta, "attempt");
7970
+ if (attemptNumber.value !== void 0) {
7971
+ attrs2.push(intAttr("agent_inspect.attempt_number", attemptNumber.value));
7696
7972
  }
7973
+ if (attemptNumber.conflictAlternate !== void 0) {
7974
+ attrs2.push(
7975
+ intAttr(IDENTITY_CONFLICT_ATTR.attemptNumber, attemptNumber.conflictAlternate)
7976
+ );
7977
+ conflicts.push("attemptNumber");
7978
+ }
7979
+ if (meta?.[DELIVERY_CONFLICT_ATTR] === true) {
7980
+ attrs2.push(boolAttr(DELIVERY_CONFLICT_ATTR, true));
7981
+ }
7982
+ return conflicts;
7697
7983
  }
7698
7984
  function resolveSpanTimes(ev) {
7699
7985
  const startedAtMs = typeof ev.attributes?.startedAtMs === "number" && Number.isFinite(ev.attributes.startedAtMs) ? ev.attributes.startedAtMs : void 0;
@@ -7716,7 +8002,8 @@ function exportOtlpJson(tree, options) {
7716
8002
  "OTLP JSON export uses OTel GenAI-aligned attributes where applicable; experimental until verified against specific collectors.",
7717
8003
  "Not OTLP gRPC/protobuf \u2014 JSON mapping only. Generated locally; no network upload.",
7718
8004
  "Status and span kind use OTLP numeric enums (StatusCode 0/1/2, SpanKind INTERNAL=1).",
7719
- "When present on source events, operationId/attemptId/retryOf/attemptNumber are emitted as bounded agent_inspect.* identity attributes (not a broad attribute dump)."
8005
+ "When present on source events, operationId/attemptId/retryOf/attemptNumber are emitted as bounded agent_inspect.* identity attributes (not a broad attribute dump).",
8006
+ "When direct and nested identity disagree, export prefers direct for non-strict consumers and emits agent_inspect.identity_conflict.* for the nested alternate; this does not certify conflicting identity."
7720
8007
  ];
7721
8008
  const traceId = hexFrom2(`trace:${tree.runId}`, 16);
7722
8009
  const includeAttributes = options?.includeAttributes ?? false;
@@ -7764,11 +8051,16 @@ function exportOtlpJson(tree, options) {
7764
8051
  if (typeof inp === "number") attrs2.push(intAttr("gen_ai.usage.input_tokens", inp));
7765
8052
  if (typeof outp === "number") attrs2.push(intAttr("gen_ai.usage.output_tokens", outp));
7766
8053
  }
7767
- appendStructuralIdentityAttrs(
8054
+ const identityConflicts = appendStructuralIdentityAttrs(
7768
8055
  attrs2,
7769
8056
  meta && typeof meta === "object" ? meta : void 0,
7770
8057
  maxLen
7771
8058
  );
8059
+ if (identityConflicts.length > 0) {
8060
+ warnings.push(
8061
+ `Identity representation conflict on event ${ev.eventId}: ${identityConflicts.join(", ")} (direct preferred; nested retained on agent_inspect.identity_conflict.*).`
8062
+ );
8063
+ }
7772
8064
  if (includeAttributes && meta && typeof meta === "object") {
7773
8065
  const skipKeys = /* @__PURE__ */ new Set([
7774
8066
  "tokens",
@@ -9480,5 +9772,5 @@ async function runReadOnlyMcpServer(options = {}) {
9480
9772
  }
9481
9773
 
9482
9774
  export { MCP_MAX_REQUEST_BYTES, MCP_PROTOCOL_VERSION, MCP_SERVER_INSTRUCTIONS, READ_ONLY_TOOLS, TRACE_DATA_UNTRUSTED_WARNING, callReadOnlyTool, createMcpServerContext, handleMcpProtocolLine, runReadOnlyMcpServer };
9483
- //# sourceMappingURL=chunk-L5YP42Q6.mjs.map
9484
- //# sourceMappingURL=chunk-L5YP42Q6.mjs.map
9775
+ //# sourceMappingURL=chunk-VNZYYTP5.mjs.map
9776
+ //# sourceMappingURL=chunk-VNZYYTP5.mjs.map