@agent-inspect/mcp-server 6.31.5 → 6.31.7

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.
@@ -208,7 +208,7 @@ var Redactor = class {
208
208
  };
209
209
 
210
210
  // packages/core/src/safety/credential-value-patterns.ts
211
- var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i;
211
+ var KEY_VALUE_SECRET_PATTERN = /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i;
212
212
  var HIGH_CONFIDENCE_CREDENTIAL_PATTERNS = [
213
213
  /^(?:basic|bearer|digest|apikey)\s+[a-z0-9._~+/=-]+$/i,
214
214
  /\bbearer\s+[a-z0-9._~+/=-]{12,}\b/i,
@@ -1488,6 +1488,8 @@ function filterTraces(traces, options) {
1488
1488
  }
1489
1489
 
1490
1490
  // packages/core/src/timeline.ts
1491
+ var ROOT_TIMELINE_DEPTH = 0;
1492
+ var MAX_TIMELINE_DEPTH = 1e3;
1491
1493
  function finite(n) {
1492
1494
  return typeof n === "number" && Number.isFinite(n);
1493
1495
  }
@@ -1558,16 +1560,51 @@ function buildRunTimeline(events, options = {}) {
1558
1560
  const computeDepth = (stepId) => {
1559
1561
  const cached = depthCache.get(stepId);
1560
1562
  if (cached !== void 0) return cached;
1561
- const node = steps.get(stepId);
1562
- if (!node) return 0;
1563
- const parent = node.parentId;
1564
- if (typeof parent !== "string" || parent.trim() === "" || !steps.has(parent)) {
1565
- depthCache.set(stepId, 0);
1566
- return 0;
1563
+ const ancestry = [];
1564
+ const ancestryIndexes = /* @__PURE__ */ new Map();
1565
+ let currentStepId = stepId;
1566
+ let resolvedDepth;
1567
+ while (resolvedDepth === void 0) {
1568
+ const cachedDepth = depthCache.get(currentStepId);
1569
+ if (cachedDepth !== void 0) {
1570
+ resolvedDepth = cachedDepth;
1571
+ continue;
1572
+ }
1573
+ const cycleStart = ancestryIndexes.get(currentStepId);
1574
+ if (cycleStart !== void 0) {
1575
+ const cycleStepIds = ancestry.splice(cycleStart);
1576
+ for (const cycleStepId of cycleStepIds) {
1577
+ depthCache.set(cycleStepId, ROOT_TIMELINE_DEPTH);
1578
+ }
1579
+ resolvedDepth = ROOT_TIMELINE_DEPTH;
1580
+ continue;
1581
+ }
1582
+ const currentStep = steps.get(currentStepId);
1583
+ if (!currentStep) {
1584
+ resolvedDepth = ROOT_TIMELINE_DEPTH;
1585
+ continue;
1586
+ }
1587
+ ancestryIndexes.set(currentStepId, ancestry.length);
1588
+ ancestry.push(currentStepId);
1589
+ const parentId = currentStep.parentId;
1590
+ if (typeof parentId !== "string" || parentId.trim() === "" || !steps.has(parentId)) {
1591
+ ancestry.pop();
1592
+ depthCache.set(currentStepId, ROOT_TIMELINE_DEPTH);
1593
+ resolvedDepth = ROOT_TIMELINE_DEPTH;
1594
+ continue;
1595
+ }
1596
+ currentStepId = parentId;
1567
1597
  }
1568
- const d = Math.min(1e3, computeDepth(parent) + 1);
1569
- depthCache.set(stepId, d);
1570
- return d;
1598
+ ancestry.reverse();
1599
+ for (const ancestorStepId of ancestry) {
1600
+ resolvedDepth = Math.min(MAX_TIMELINE_DEPTH, resolvedDepth + 1);
1601
+ depthCache.set(ancestorStepId, resolvedDepth);
1602
+ }
1603
+ const resolvedStepDepth = depthCache.get(stepId);
1604
+ if (resolvedStepDepth === void 0) {
1605
+ throw new Error(`Failed to resolve timeline depth for step "${stepId}"`);
1606
+ }
1607
+ return resolvedStepDepth;
1571
1608
  };
1572
1609
  const entries = [];
1573
1610
  for (const [stepId, s] of steps.entries()) {
@@ -3351,7 +3388,7 @@ var DEFAULT_SECRET_PATTERNS = [
3351
3388
  // Keep in sync with packages/redact/src/key-value-secret.ts (KEY_VALUE_SECRET_PATTERN_SOURCE).
3352
3389
  {
3353
3390
  id: "key-value-secret",
3354
- pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})/i
3391
+ pattern: /\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})/i
3355
3392
  }
3356
3393
  ];
3357
3394
  function compareStrings(a, b) {
@@ -3666,9 +3703,6 @@ function limitFindings(findings, maxFindings) {
3666
3703
  if (maxFindings === void 0 || findings.length <= maxFindings) return findings;
3667
3704
  return findings.slice(0, Math.max(0, maxFindings));
3668
3705
  }
3669
- function hasRedactionMarker(value, markers) {
3670
- return markers.some((marker) => value.includes(marker)) || /^\[HASH:[A-Za-z0-9_-]+\]$/.test(value);
3671
- }
3672
3706
  function isFullyRedactedValue(value, markers = ["[REDACTED]", "[REDACTED:"]) {
3673
3707
  if (typeof value !== "string") return false;
3674
3708
  const trimmed = value.trim();
@@ -3753,7 +3787,7 @@ function createSafetyRedactionRule(options = {}) {
3753
3787
  for (const event of context.events) {
3754
3788
  for (const entry of eventValueEntries(event, { includeSummaries: true, includeError: true })) {
3755
3789
  if (!isSensitiveKey(entry.key ?? lastPathSegment(entry.path), sensitiveKeys)) continue;
3756
- if (typeof entry.value === "string" && hasRedactionMarker(entry.value, markers)) continue;
3790
+ if (isFullyRedactedValue(entry.value, markers)) continue;
3757
3791
  findings.push(
3758
3792
  failFinding(
3759
3793
  "safety.redaction",
@@ -5045,6 +5079,23 @@ function persistedInspectEventToInspectEvent(event) {
5045
5079
  if (event.durationMs !== void 0 && Number.isFinite(event.durationMs) && event.durationMs >= 0) {
5046
5080
  out.durationMs = event.durationMs;
5047
5081
  }
5082
+ if (event.startedAt !== void 0) {
5083
+ const started = parseIsoToMs3(event.startedAt);
5084
+ if (!started.invalidTimestamp) {
5085
+ attrs2.startedAtMs = started.ms;
5086
+ out.timestamp = started.ms;
5087
+ }
5088
+ }
5089
+ if (event.endedAt !== void 0) {
5090
+ const ended = parseIsoToMs3(event.endedAt);
5091
+ if (!ended.invalidTimestamp) {
5092
+ attrs2.endedAtMs = ended.ms;
5093
+ if (out.durationMs === void 0 && typeof attrs2.startedAtMs === "number" && ended.ms >= attrs2.startedAtMs) {
5094
+ out.durationMs = ended.ms - attrs2.startedAtMs;
5095
+ }
5096
+ }
5097
+ }
5098
+ out.attributes = compactAttributes3(attrs2);
5048
5099
  return out;
5049
5100
  }
5050
5101
  function persistedInspectEventsToInspectEvents(events, options) {
@@ -6106,20 +6157,38 @@ function extractOtlpDocument(root) {
6106
6157
  function mapOtlpStatus(status) {
6107
6158
  if (!isRecord10(status)) return void 0;
6108
6159
  const rawCode = status.code;
6109
- if (typeof rawCode !== "string") return void 0;
6110
- switch (rawCode.toUpperCase()) {
6111
- case "STATUS_CODE_OK":
6112
- case "OK":
6113
- return "ok";
6114
- case "STATUS_CODE_ERROR":
6115
- case "ERROR":
6116
- return "error";
6117
- case "STATUS_CODE_UNSET":
6118
- case "UNSET":
6119
- return "unknown";
6120
- default:
6121
- return "unknown";
6160
+ if (typeof rawCode === "number" && Number.isFinite(rawCode)) {
6161
+ switch (rawCode) {
6162
+ case 0:
6163
+ return "unknown";
6164
+ case 1:
6165
+ return "ok";
6166
+ case 2:
6167
+ return "error";
6168
+ default:
6169
+ return "unknown";
6170
+ }
6171
+ }
6172
+ if (typeof rawCode === "string") {
6173
+ const trimmed = rawCode.trim();
6174
+ if (/^\d+$/.test(trimmed)) {
6175
+ return mapOtlpStatus({ code: Number(trimmed) });
6176
+ }
6177
+ switch (trimmed.toUpperCase()) {
6178
+ case "STATUS_CODE_OK":
6179
+ case "OK":
6180
+ return "ok";
6181
+ case "STATUS_CODE_ERROR":
6182
+ case "ERROR":
6183
+ return "error";
6184
+ case "STATUS_CODE_UNSET":
6185
+ case "UNSET":
6186
+ return "unknown";
6187
+ default:
6188
+ return "unknown";
6189
+ }
6122
6190
  }
6191
+ return void 0;
6123
6192
  }
6124
6193
  function readOtlpKind(attributes, pathPrefix) {
6125
6194
  const warnings = [];
@@ -6707,6 +6776,8 @@ var CONNECTION_PROTOCOLS = /* @__PURE__ */ new Set([
6707
6776
  "amqps:"
6708
6777
  ]);
6709
6778
  var CONNECTION_URI = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
6779
+ var CONNECTION_USERINFO = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
6780
+ var CONNECTION_HAS_USERINFO = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
6710
6781
  var UUID_SEGMENT = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
6711
6782
  var HEX_SEGMENT = /^[0-9a-f]{12,}$/i;
6712
6783
  var NUMERIC_SEGMENT = /^\d{5,}$/;
@@ -6730,6 +6801,28 @@ function parseRedactableUrl(value) {
6730
6801
  return void 0;
6731
6802
  }
6732
6803
  }
6804
+ function redactConnectionUserinfoFallback(value, replacement) {
6805
+ const trimmed = value.trim();
6806
+ const match = CONNECTION_USERINFO.exec(trimmed);
6807
+ if (match) {
6808
+ const [, scheme, , rest] = match;
6809
+ if (scheme && rest && rest.length > 0) {
6810
+ return {
6811
+ value: `${scheme}://${rest}`,
6812
+ credentialRedacted: true,
6813
+ identifiersMasked: false
6814
+ };
6815
+ }
6816
+ }
6817
+ if (looksLikeConnectionUri(trimmed) && CONNECTION_HAS_USERINFO.test(trimmed)) {
6818
+ return {
6819
+ value: replacement,
6820
+ credentialRedacted: true,
6821
+ identifiersMasked: false
6822
+ };
6823
+ }
6824
+ return void 0;
6825
+ }
6733
6826
  function isHttpProtocol(protocol) {
6734
6827
  return protocol === "http:" || protocol === "https:";
6735
6828
  }
@@ -6771,9 +6864,11 @@ function redactUrlString(value, options) {
6771
6864
  identifiersMasked: false
6772
6865
  };
6773
6866
  if (!looksLikeUrlForRedaction(value)) return unchanged;
6774
- const url = parseRedactableUrl(value);
6775
- if (!url) return unchanged;
6776
6867
  const replacement = options.replacement ?? "[REDACTED]";
6868
+ const url = parseRedactableUrl(value);
6869
+ if (!url) {
6870
+ return redactConnectionUserinfoFallback(value, replacement) ?? unchanged;
6871
+ }
6777
6872
  const idPlaceholder = options.idPlaceholder ?? "[id]";
6778
6873
  const http = isHttpProtocol(url.protocol);
6779
6874
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
@@ -7345,6 +7440,10 @@ function exportOpenInference(tree, options) {
7345
7440
  warnings
7346
7441
  };
7347
7442
  }
7443
+ var OTLP_STATUS_CODE_UNSET = 0;
7444
+ var OTLP_STATUS_CODE_OK = 1;
7445
+ var OTLP_STATUS_CODE_ERROR = 2;
7446
+ var OTLP_SPAN_KIND_INTERNAL = 1;
7348
7447
  function hexFrom2(seed, byteLen) {
7349
7448
  return crypto.createHash("sha256").update(seed, "utf8").digest("hex").slice(0, byteLen * 2);
7350
7449
  }
@@ -7357,7 +7456,19 @@ function stringAttr2(key, value) {
7357
7456
  return { key, value: { stringValue: value } };
7358
7457
  }
7359
7458
  function intAttr(key, value) {
7360
- return { key, value: { intValue: String(value) } };
7459
+ return { key, value: { intValue: String(Math.trunc(value)) } };
7460
+ }
7461
+ function doubleAttr(key, value) {
7462
+ return { key, value: { doubleValue: value } };
7463
+ }
7464
+ function boolAttr(key, value) {
7465
+ return { key, value: { boolValue: value } };
7466
+ }
7467
+ function numberAttr(key, value) {
7468
+ if (Number.isFinite(value) && !Number.isInteger(value)) {
7469
+ return doubleAttr(key, value);
7470
+ }
7471
+ return intAttr(key, value);
7361
7472
  }
7362
7473
  function genAiOperationName(kind) {
7363
7474
  switch (kind) {
@@ -7371,10 +7482,27 @@ function genAiOperationName(kind) {
7371
7482
  return void 0;
7372
7483
  }
7373
7484
  }
7485
+ function resolveSpanTimes(ev) {
7486
+ const startedAtMs = typeof ev.attributes?.startedAtMs === "number" && Number.isFinite(ev.attributes.startedAtMs) ? ev.attributes.startedAtMs : void 0;
7487
+ const endedAtMs = typeof ev.attributes?.endedAtMs === "number" && Number.isFinite(ev.attributes.endedAtMs) ? ev.attributes.endedAtMs : void 0;
7488
+ const startMs = startedAtMs ?? ev.timestamp;
7489
+ const startNs = String(unixNano2(startMs));
7490
+ if (endedAtMs !== void 0) {
7491
+ return { startNs, endNs: String(unixNano2(endedAtMs)) };
7492
+ }
7493
+ if (ev.durationMs !== void 0 && Number.isFinite(ev.durationMs)) {
7494
+ return {
7495
+ startNs,
7496
+ endNs: String(unixNano2(startMs) + unixNano2(ev.durationMs))
7497
+ };
7498
+ }
7499
+ return { startNs };
7500
+ }
7374
7501
  function exportOtlpJson(tree, options) {
7375
7502
  const warnings = [
7376
7503
  "OTLP JSON export uses OTel GenAI-aligned attributes where applicable; experimental until verified against specific collectors.",
7377
- "Not OTLP gRPC/protobuf \u2014 JSON mapping only. Generated locally; no network upload."
7504
+ "Not OTLP gRPC/protobuf \u2014 JSON mapping only. Generated locally; no network upload.",
7505
+ "Status and span kind use OTLP numeric enums (StatusCode 0/1/2, SpanKind INTERNAL=1)."
7378
7506
  ];
7379
7507
  const traceId = hexFrom2(`trace:${tree.runId}`, 16);
7380
7508
  const includeAttributes = options?.includeAttributes ?? false;
@@ -7386,11 +7514,7 @@ function exportOtlpJson(tree, options) {
7386
7514
  const ev = n.event;
7387
7515
  const spanId = hexFrom2(`${tree.runId}:${ev.eventId}`, 8);
7388
7516
  const parentSpanId = ev.parentId ? hexFrom2(`${tree.runId}:${ev.parentId}`, 8) : void 0;
7389
- const startNs = String(unixNano2(ev.timestamp));
7390
- let endNs;
7391
- if (ev.durationMs !== void 0 && Number.isFinite(ev.durationMs)) {
7392
- endNs = String(unixNano2(ev.timestamp) + unixNano2(ev.durationMs));
7393
- }
7517
+ const { startNs, endNs } = resolveSpanTimes(ev);
7394
7518
  const attrs2 = [
7395
7519
  stringAttr2("agent_inspect.kind", ev.kind),
7396
7520
  stringAttr2("agent_inspect.confidence", ev.confidence),
@@ -7420,29 +7544,28 @@ function exportOtlpJson(tree, options) {
7420
7544
  if (includeAttributes && meta && typeof meta === "object") {
7421
7545
  for (const [k, v] of Object.entries(meta)) {
7422
7546
  if (k === "tokens" || k === "model") continue;
7423
- if (typeof v === "string" || typeof v === "number" || typeof v === "boolean") {
7424
- attrs2.push(
7425
- stringAttr2(
7426
- `agent_inspect.preview.${k}`,
7427
- typeof v === "string" ? v.slice(0, maxLen) : String(v)
7428
- )
7429
- );
7547
+ if (typeof v === "string") {
7548
+ attrs2.push(stringAttr2(`agent_inspect.preview.${k}`, v.slice(0, maxLen)));
7549
+ } else if (typeof v === "number" && Number.isFinite(v)) {
7550
+ attrs2.push(numberAttr(`agent_inspect.preview.${k}`, v));
7551
+ } else if (typeof v === "boolean") {
7552
+ attrs2.push(boolAttr(`agent_inspect.preview.${k}`, v));
7430
7553
  }
7431
7554
  }
7432
7555
  }
7433
- let statusCode = "STATUS_CODE_UNSET";
7556
+ let statusCode = OTLP_STATUS_CODE_UNSET;
7434
7557
  let statusMessage;
7435
7558
  if (ev.status === "error") {
7436
- statusCode = "STATUS_CODE_ERROR";
7559
+ statusCode = OTLP_STATUS_CODE_ERROR;
7437
7560
  statusMessage = meta && typeof meta.error === "object" && meta.error !== null ? String(meta.error.message ?? "error").slice(0, maxLen) : "error";
7438
7561
  } else if (ev.status === "ok") {
7439
- statusCode = "STATUS_CODE_OK";
7562
+ statusCode = OTLP_STATUS_CODE_OK;
7440
7563
  }
7441
7564
  const spanJson = {
7442
7565
  traceId,
7443
7566
  spanId,
7444
7567
  name: ev.name,
7445
- kind: "SPAN_KIND_INTERNAL",
7568
+ kind: OTLP_SPAN_KIND_INTERNAL,
7446
7569
  startTimeUnixNano: startNs,
7447
7570
  attributes: attrs2,
7448
7571
  status: {
@@ -7565,7 +7688,7 @@ function isCredentialSensitiveKey2(key, sensitiveKeys) {
7565
7688
  }
7566
7689
 
7567
7690
  // packages/redact/src/key-value-secret.ts
7568
- var KEY_VALUE_SECRET_PATTERN_SOURCE = String.raw`\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?;/]))([^\s"'\\]{8,})`;
7691
+ var KEY_VALUE_SECRET_PATTERN_SOURCE = String.raw`\b(?:api[_-]?key|internal[_-]?token|access[_-]?token|auth[_-]?token|password|secret|token)=(?!\[(?:REDACTED(?::[^\]]*)?|HASH:[0-9a-f]{8})\](?![^\s"'\\&#?]))([^\s"'\\]{8,})`;
7569
7692
  var KEY_VALUE_SECRET_PATTERN2 = new RegExp(
7570
7693
  KEY_VALUE_SECRET_PATTERN_SOURCE,
7571
7694
  "i"
@@ -7590,6 +7713,8 @@ var CONNECTION_PROTOCOLS2 = /* @__PURE__ */ new Set([
7590
7713
  "amqps:"
7591
7714
  ]);
7592
7715
  var CONNECTION_URI2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^\s]+$/i;
7716
+ var CONNECTION_USERINFO2 = /^(postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/([^@/?#]+)@(.+)$/i;
7717
+ var CONNECTION_HAS_USERINFO2 = /^(?:postgres|postgresql|mysql|mariadb|mongodb(?:\+srv)?|rediss?|amqps?):\/\/[^@/?#]+@/i;
7593
7718
  var UUID_SEGMENT2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
7594
7719
  var HEX_SEGMENT2 = /^[0-9a-f]{12,}$/i;
7595
7720
  var NUMERIC_SEGMENT2 = /^\d{5,}$/;
@@ -7613,6 +7738,28 @@ function parseRedactableUrl2(value) {
7613
7738
  return void 0;
7614
7739
  }
7615
7740
  }
7741
+ function redactConnectionUserinfoFallback2(value, replacement) {
7742
+ const trimmed = value.trim();
7743
+ const match = CONNECTION_USERINFO2.exec(trimmed);
7744
+ if (match) {
7745
+ const [, scheme, , rest] = match;
7746
+ if (scheme && rest && rest.length > 0) {
7747
+ return {
7748
+ value: `${scheme}://${rest}`,
7749
+ credentialRedacted: true,
7750
+ identifiersMasked: false
7751
+ };
7752
+ }
7753
+ }
7754
+ if (looksLikeConnectionUri2(trimmed) && CONNECTION_HAS_USERINFO2.test(trimmed)) {
7755
+ return {
7756
+ value: replacement,
7757
+ credentialRedacted: true,
7758
+ identifiersMasked: false
7759
+ };
7760
+ }
7761
+ return void 0;
7762
+ }
7616
7763
  function isHttpProtocol2(protocol) {
7617
7764
  return protocol === "http:" || protocol === "https:";
7618
7765
  }
@@ -7654,9 +7801,11 @@ function redactUrlString2(value, options) {
7654
7801
  identifiersMasked: false
7655
7802
  };
7656
7803
  if (!looksLikeUrlForRedaction2(value)) return unchanged;
7657
- const url = parseRedactableUrl2(value);
7658
- if (!url) return unchanged;
7659
7804
  const replacement = options.replacement ?? "[REDACTED]";
7805
+ const url = parseRedactableUrl2(value);
7806
+ if (!url) {
7807
+ return redactConnectionUserinfoFallback2(value, replacement) ?? unchanged;
7808
+ }
7660
7809
  const idPlaceholder = options.idPlaceholder ?? "[id]";
7661
7810
  const http = isHttpProtocol2(url.protocol);
7662
7811
  let credentialRedacted = url.username.length > 0 || url.password.length > 0;
@@ -9081,5 +9230,5 @@ async function runReadOnlyMcpServer(options = {}) {
9081
9230
  }
9082
9231
 
9083
9232
  export { MCP_MAX_REQUEST_BYTES, MCP_PROTOCOL_VERSION, MCP_SERVER_INSTRUCTIONS, READ_ONLY_TOOLS, TRACE_DATA_UNTRUSTED_WARNING, callReadOnlyTool, createMcpServerContext, handleMcpProtocolLine, runReadOnlyMcpServer };
9084
- //# sourceMappingURL=chunk-FUNPQPC3.mjs.map
9085
- //# sourceMappingURL=chunk-FUNPQPC3.mjs.map
9233
+ //# sourceMappingURL=chunk-J2LULLKC.mjs.map
9234
+ //# sourceMappingURL=chunk-J2LULLKC.mjs.map