@mcp-use/client 2.2.3 → 2.2.4

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.
Files changed (135) hide show
  1. package/README.md +2 -2
  2. package/package.json +1 -1
  3. package/dist/.tsbuildinfo +0 -1
  4. package/dist/auth/browser.d.ts +0 -218
  5. package/dist/auth/browser.d.ts.map +0 -1
  6. package/dist/auth/callback.d.ts +0 -9
  7. package/dist/auth/callback.d.ts.map +0 -1
  8. package/dist/auth/flow.d.ts +0 -32
  9. package/dist/auth/flow.d.ts.map +0 -1
  10. package/dist/auth/node.d.ts +0 -212
  11. package/dist/auth/node.d.ts.map +0 -1
  12. package/dist/auth/popup.d.ts +0 -67
  13. package/dist/auth/popup.d.ts.map +0 -1
  14. package/dist/auth/session-store.d.ts +0 -125
  15. package/dist/auth/session-store.d.ts.map +0 -1
  16. package/dist/auth/storage-file.d.ts +0 -18
  17. package/dist/auth/storage-file.d.ts.map +0 -1
  18. package/dist/auth/storage.d.ts +0 -34
  19. package/dist/auth/storage.d.ts.map +0 -1
  20. package/dist/auth/url.d.ts +0 -17
  21. package/dist/auth/url.d.ts.map +0 -1
  22. package/dist/code-mode/connector.d.ts +0 -27
  23. package/dist/code-mode/connector.d.ts.map +0 -1
  24. package/dist/code-mode/executor-e2b.d.ts +0 -46
  25. package/dist/code-mode/executor-e2b.d.ts.map +0 -1
  26. package/dist/code-mode/executor-vm.d.ts +0 -39
  27. package/dist/code-mode/executor-vm.d.ts.map +0 -1
  28. package/dist/code-mode/executor.d.ts +0 -81
  29. package/dist/code-mode/executor.d.ts.map +0 -1
  30. package/dist/core/base.d.ts +0 -423
  31. package/dist/core/base.d.ts.map +0 -1
  32. package/dist/core/browser.d.ts +0 -32
  33. package/dist/core/browser.d.ts.map +0 -1
  34. package/dist/core/config.d.ts +0 -225
  35. package/dist/core/config.d.ts.map +0 -1
  36. package/dist/core/node.d.ts +0 -437
  37. package/dist/core/node.d.ts.map +0 -1
  38. package/dist/core/session.d.ts +0 -792
  39. package/dist/core/session.d.ts.map +0 -1
  40. package/dist/core/skills.d.ts +0 -47
  41. package/dist/core/skills.d.ts.map +0 -1
  42. package/dist/index-browser.d.ts +0 -26
  43. package/dist/index-browser.d.ts.map +0 -1
  44. package/dist/index-browser.js +0 -4767
  45. package/dist/index-browser.js.map +0 -1
  46. package/dist/index.d.ts +0 -23
  47. package/dist/index.d.ts.map +0 -1
  48. package/dist/index.js +0 -6105
  49. package/dist/index.js.map +0 -1
  50. package/dist/react/McpClientProvider.d.ts +0 -254
  51. package/dist/react/McpClientProvider.d.ts.map +0 -1
  52. package/dist/react/index.d.ts +0 -39
  53. package/dist/react/index.d.ts.map +0 -1
  54. package/dist/react/index.js +0 -9444
  55. package/dist/react/index.js.map +0 -1
  56. package/dist/react/rpc-logger.d.ts +0 -47
  57. package/dist/react/rpc-logger.d.ts.map +0 -1
  58. package/dist/react/storage.d.ts +0 -98
  59. package/dist/react/storage.d.ts.map +0 -1
  60. package/dist/react/token-expiry.d.ts +0 -9
  61. package/dist/react/token-expiry.d.ts.map +0 -1
  62. package/dist/react/types.d.ts +0 -727
  63. package/dist/react/types.d.ts.map +0 -1
  64. package/dist/react/useMcp-helpers.d.ts +0 -99
  65. package/dist/react/useMcp-helpers.d.ts.map +0 -1
  66. package/dist/react/useMcp-operations.d.ts +0 -180
  67. package/dist/react/useMcp-operations.d.ts.map +0 -1
  68. package/dist/react/useMcp.d.ts +0 -48
  69. package/dist/react/useMcp.d.ts.map +0 -1
  70. package/dist/react/useMcpServerQueues.d.ts +0 -403
  71. package/dist/react/useMcpServerQueues.d.ts.map +0 -1
  72. package/dist/react/view/ViewRenderer.d.ts +0 -20
  73. package/dist/react/view/ViewRenderer.d.ts.map +0 -1
  74. package/dist/react/view/ext-apps-bridge.d.ts +0 -3
  75. package/dist/react/view/ext-apps-bridge.d.ts.map +0 -1
  76. package/dist/react/view/initialized-sync.d.ts +0 -13
  77. package/dist/react/view/initialized-sync.d.ts.map +0 -1
  78. package/dist/react/view/inject-openai-file-apis.d.ts +0 -9
  79. package/dist/react/view/inject-openai-file-apis.d.ts.map +0 -1
  80. package/dist/react/view/parse-custom-props.d.ts +0 -10
  81. package/dist/react/view/parse-custom-props.d.ts.map +0 -1
  82. package/dist/react/view/resolve-view-resource.d.ts +0 -22
  83. package/dist/react/view/resolve-view-resource.d.ts.map +0 -1
  84. package/dist/react/view/sandbox-blob-url.d.ts +0 -27
  85. package/dist/react/view/sandbox-blob-url.d.ts.map +0 -1
  86. package/dist/react/view/types.d.ts +0 -220
  87. package/dist/react/view/types.d.ts.map +0 -1
  88. package/dist/react/view/use-display-mode.d.ts +0 -19
  89. package/dist/react/view/use-display-mode.d.ts.map +0 -1
  90. package/dist/react/view/view-detection.d.ts +0 -22
  91. package/dist/react/view/view-detection.d.ts.map +0 -1
  92. package/dist/react/view/view-host-policy.d.ts +0 -61
  93. package/dist/react/view/view-host-policy.d.ts.map +0 -1
  94. package/dist/sandbox.d.ts +0 -2
  95. package/dist/sandbox.d.ts.map +0 -1
  96. package/dist/sandbox.js +0 -288
  97. package/dist/sandbox.js.map +0 -1
  98. package/dist/telemetry/client-telemetry.d.ts +0 -13
  99. package/dist/telemetry/client-telemetry.d.ts.map +0 -1
  100. package/dist/telemetry/configure-browser.d.ts +0 -2
  101. package/dist/telemetry/configure-browser.d.ts.map +0 -1
  102. package/dist/telemetry/configure-node.d.ts +0 -2
  103. package/dist/telemetry/configure-node.d.ts.map +0 -1
  104. package/dist/telemetry/connector-telemetry.d.ts +0 -8
  105. package/dist/telemetry/connector-telemetry.d.ts.map +0 -1
  106. package/dist/telemetry/events.d.ts +0 -91
  107. package/dist/telemetry/events.d.ts.map +0 -1
  108. package/dist/telemetry/index.d.ts +0 -3
  109. package/dist/telemetry/index.d.ts.map +0 -1
  110. package/dist/telemetry/tel-fetch.d.ts +0 -19
  111. package/dist/telemetry/tel-fetch.d.ts.map +0 -1
  112. package/dist/telemetry/telemetry-browser.d.ts +0 -6
  113. package/dist/telemetry/telemetry-browser.d.ts.map +0 -1
  114. package/dist/telemetry/telemetry-node.d.ts +0 -8
  115. package/dist/telemetry/telemetry-node.d.ts.map +0 -1
  116. package/dist/telemetry/telemetry.d.ts +0 -75
  117. package/dist/telemetry/telemetry.d.ts.map +0 -1
  118. package/dist/transport/base.d.ts +0 -656
  119. package/dist/transport/base.d.ts.map +0 -1
  120. package/dist/transport/connection-manager.d.ts +0 -59
  121. package/dist/transport/connection-manager.d.ts.map +0 -1
  122. package/dist/transport/http.d.ts +0 -137
  123. package/dist/transport/http.d.ts.map +0 -1
  124. package/dist/transport/stdio.d.ts +0 -97
  125. package/dist/transport/stdio.d.ts.map +0 -1
  126. package/dist/utils/elicitation.d.ts +0 -54
  127. package/dist/utils/elicitation.d.ts.map +0 -1
  128. package/dist/utils/favicon.d.ts +0 -6
  129. package/dist/utils/favicon.d.ts.map +0 -1
  130. package/dist/utils/json-schema-validator.d.ts +0 -13
  131. package/dist/utils/json-schema-validator.d.ts.map +0 -1
  132. package/dist/utils/logging.d.ts +0 -33
  133. package/dist/utils/logging.d.ts.map +0 -1
  134. package/dist/utils/version.d.ts +0 -9
  135. package/dist/utils/version.d.ts.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react/view/sandbox-blob-url.ts"],"sourcesContent":["/**\n * MCP Apps sandbox-proxy HTML for ViewRenderer blob URLs.\n *\n * Browser-only — no Node/Hono imports. The host iframe loads this document\n * from a blob: URL; it proxies postMessage to the inner widget srcdoc iframe.\n */\n\nimport type {\n McpUiResourceCsp,\n McpUiResourcePermissions,\n} from \"./ext-apps-bridge.js\";\nimport type { ViewCspMode } from \"./types.js\";\n\ntype ViewSandboxBlobUrlOptions = {\n cspMode: ViewCspMode;\n permissions?: McpUiResourcePermissions;\n widgetCsp?: McpUiResourceCsp;\n};\n\n/** Build a configured HTTP(S) sandbox proxy URL. */\nexport function buildViewSandboxUrl(\n sandboxDocumentUrl: URL,\n options: ViewSandboxBlobUrlOptions\n): URL {\n const url = new URL(sandboxDocumentUrl.href);\n applySandboxSearchParams(url, options);\n return url;\n}\n\nfunction applySandboxSearchParams(\n url: URL,\n options: ViewSandboxBlobUrlOptions\n): void {\n const { cspMode, permissions, widgetCsp } = options;\n url.searchParams.set(\n \"v\",\n JSON.stringify({ cspMode, permissions, widgetCsp })\n );\n url.searchParams.set(\"csp_mode\", cspMode);\n if (permissions && Object.keys(permissions).length > 0) {\n url.searchParams.set(\"permissions\", JSON.stringify(permissions));\n }\n if (widgetCsp && Object.keys(widgetCsp).length > 0) {\n url.searchParams.set(\"widget_csp\", JSON.stringify(widgetCsp));\n }\n}\n\n/** Build a blob: sandbox iframe URL (no backend sandbox-proxy route). */\nexport function buildViewSandboxBlobUrl(\n options: ViewSandboxBlobUrlOptions\n): URL {\n const searchUrl = new URL(\"https://sandbox.invalid/\");\n applySandboxSearchParams(searchUrl, options);\n const html = buildSandboxProxyBlobHtml(searchUrl.search);\n return new URL(URL.createObjectURL(new Blob([html], { type: \"text/html\" })));\n}\n\n/**\n * Raw sandbox-proxy document (query config via location.search or __SANDBOX_SEARCH__).\n *\n * Inner guest iframe keeps `allow-same-origin` for srcdoc widget rendering;\n * browsers may warn that allow-scripts + allow-same-origin can escape sandboxing.\n */\nconst SANDBOX_PROXY_HTML: string =\n '<!doctype html>\\n<html>\\n <head>\\n <meta charset=\"utf-8\" />\\n <meta\\n http-equiv=\"Content-Security-Policy\"\\n content=\"default-src \\'self\\'; img-src * data: blob: \\'unsafe-inline\\'; media-src * blob: data:; font-src * blob: data:; script-src * \\'wasm-unsafe-eval\\' \\'unsafe-inline\\' \\'unsafe-eval\\' blob: data:; style-src * blob: data: \\'unsafe-inline\\'; connect-src * data: blob: about:; frame-src * blob: data: http://localhost:* https://localhost:* http://127.0.0.1:* https://127.0.0.1:*;\"\\n />\\n <title>MCP Apps Sandbox Proxy</title>\\n <style>\\n html, body { margin: 0; padding: 0; height: 100%; width: 100%; overflow: hidden; }\\n * { box-sizing: border-box; }\\n iframe { display: block; background-color: transparent; border: 0px none transparent; padding: 0px; width: 100%; height: 100%; }\\n </style>\\n </head>\\n <body>\\n <script>\\n function sanitizeDomain(domain) {\\n if (typeof domain !== \"string\") return \"\";\\n return domain.replace(/[\\'\"<>;]/g, \"\").trim();\\n }\\n\\n function buildAllowAttribute(permissions) {\\n if (!permissions) return \"\";\\n const allowList = [];\\n if (permissions.camera) allowList.push(\"camera *\");\\n if (permissions.microphone) allowList.push(\"microphone *\");\\n if (permissions.geolocation) allowList.push(\"geolocation *\");\\n if (permissions.clipboardWrite) allowList.push(\"clipboard-write *\");\\n return allowList.join(\"; \");\\n }\\n\\n function buildCSP(csp) {\\n if (!csp) {\\n return [\\n \"default-src \\'none\\'\",\\n \"script-src \\'unsafe-inline\\'\",\\n \"style-src \\'unsafe-inline\\'\",\\n \"img-src data:\",\\n \"font-src data:\",\\n \"media-src data:\",\\n \"connect-src \\'none\\'\",\\n \"frame-src \\'none\\'\",\\n \"object-src \\'none\\'\",\\n \"base-uri \\'none\\'\",\\n ].join(\"; \");\\n }\\n\\n const connectDomains = (csp.connectDomains || []).map(sanitizeDomain).filter(Boolean);\\n const resourceDomains = (csp.resourceDomains || []).map(sanitizeDomain).filter(Boolean);\\n const frameDomains = (csp.frameDomains || []).map(sanitizeDomain).filter(Boolean);\\n const baseUriDomains = (csp.baseUriDomains || []).map(sanitizeDomain).filter(Boolean);\\n const scriptDirectives = (csp.scriptDirectives || []).filter(function(d) { return typeof d === \"string\" && d.length > 0; });\\n\\n const connectSrc = connectDomains.length > 0 ? connectDomains.join(\" \") : \"\\'none\\'\";\\n const resourceSrc = resourceDomains.length > 0 ? [\"data:\", \"blob:\", ...resourceDomains].join(\" \") : \"data: blob:\";\\n const frameSrc = frameDomains.length > 0 ? frameDomains.join(\" \") : \"\\'none\\'\";\\n const baseUri = baseUriDomains.length > 0 ? baseUriDomains.join(\" \") : \"\\'none\\'\";\\n const scriptSrcParts = [\"\\'unsafe-inline\\'\", \"\\'unsafe-eval\\'\", resourceSrc];\\n if (scriptDirectives.length > 0) scriptSrcParts.push(scriptDirectives.join(\" \"));\\n\\n return [\\n \"default-src \\'none\\'\",\\n \"script-src \" + scriptSrcParts.join(\" \"),\\n \"style-src \\'unsafe-inline\\' \" + resourceSrc,\\n \"img-src \" + resourceSrc,\\n \"font-src \" + resourceSrc,\\n \"media-src \" + resourceSrc,\\n \"connect-src \" + connectSrc,\\n \"frame-src \" + frameSrc,\\n \"object-src \\'none\\'\",\\n \"base-uri \" + baseUri,\\n ].join(\"; \");\\n }\\n\\n function buildViolationListenerScript() {\\n return `<script>\\ndocument.addEventListener(\\'securitypolicyviolation\\', function(e) {\\n var violation = {\\n type: \\'mcp-apps:csp-violation\\',\\n directive: e.violatedDirective,\\n blockedUri: e.blockedURI,\\n sourceFile: e.sourceFile || null,\\n lineNumber: e.lineNumber || null,\\n columnNumber: e.columnNumber || null,\\n effectiveDirective: e.effectiveDirective,\\n originalPolicy: e.originalPolicy,\\n disposition: e.disposition,\\n timestamp: Date.now()\\n };\\n console.warn(\\'[MCP Apps CSP Violation]\\', violation.directive, \\':\\', violation.blockedUri);\\n window.parent.postMessage(violation, \\'*\\');\\n});\\n\\nfunction serializeConsoleArgs(args) {\\n try {\\n return Array.from(args || []).map(function(arg) {\\n if (arg instanceof Error) {\\n return {\\n type: \\'Error\\',\\n message: arg.message,\\n stack: arg.stack,\\n name: arg.name,\\n };\\n }\\n if (typeof arg === \\'object\\' && arg !== null) {\\n try {\\n return JSON.parse(JSON.stringify(arg));\\n } catch (e) {\\n return String(arg);\\n }\\n }\\n return arg;\\n });\\n } catch (e) {\\n return [String(args)];\\n }\\n}\\n\\nfunction sendConsoleToParent(level, args) {\\n try {\\n window.parent.postMessage({\\n type: \\'iframe-console-log\\',\\n level: level,\\n args: serializeConsoleArgs(args),\\n timestamp: new Date().toISOString(),\\n url: window.location.href,\\n }, \\'*\\');\\n } catch (e) {}\\n}\\n\\nvar originalConsoleError = console.error.bind(console);\\nconsole.error = function() {\\n var args = Array.from(arguments);\\n originalConsoleError.apply(console, args);\\n sendConsoleToParent(\\'error\\', args);\\n};\\n\\nwindow.addEventListener(\\'error\\', function(event) {\\n sendConsoleToParent(\\'error\\', [{\\n message: event.message,\\n filename: event.filename,\\n lineno: event.lineno,\\n colno: event.colno,\\n error: event.error ? {\\n message: event.error.message,\\n stack: event.error.stack,\\n name: event.error.name,\\n } : null,\\n }]);\\n});\\n\\nwindow.addEventListener(\\'unhandledrejection\\', function(event) {\\n sendConsoleToParent(\\'error\\', [{\\n message: \\'Unhandled Promise Rejection\\',\\n reason: event.reason ? String(event.reason) : \\'Unknown\\',\\n error: event.reason instanceof Error ? {\\n message: event.reason.message,\\n stack: event.reason.stack,\\n name: event.reason.name,\\n } : null,\\n }]);\\n});\\n</` + `script>`;\\n }\\n\\n function injectCSP(html, cspValue) {\\n const cspMeta = \\'<meta http-equiv=\"Content-Security-Policy\" content=\"\\' + cspValue + \\'\">\\';\\n const violationListener = buildViolationListenerScript();\\n const injection = cspMeta + violationListener;\\n\\n if (html.includes(\"<head>\")) {\\n return html.replace(\"<head>\", \"<head>\" + injection);\\n } else if (html.includes(\"<HEAD>\")) {\\n return html.replace(\"<HEAD>\", \"<HEAD>\" + injection);\\n } else if (html.includes(\"<html>\")) {\\n return html.replace(\"<html>\", \"<html><head>\" + injection + \"</head>\");\\n } else if (html.includes(\"<HTML>\")) {\\n return html.replace(\"<HTML>\", \"<HTML><head>\" + injection + \"</head>\");\\n } else if (html.includes(\"<!DOCTYPE\") || html.includes(\"<!doctype\")) {\\n return html.replace(/(<!DOCTYPE[^>]*>|<!doctype[^>]*>)/i, \"$1<head>\" + injection + \"</head>\");\\n } else {\\n return injection + html;\\n }\\n }\\n\\n // Query params from host (csp_mode, permissions, widget_csp). AppFrame only\\n // sends { html, csp } in sandbox-resource-ready; we carry the rest on the URL.\\n // Blob URLs cannot reliably carry search params, so the CDN shell injects\\n // window.__SANDBOX_SEARCH__ via buildSandboxProxyBlobHtml.\\n const query = new URLSearchParams(\\n typeof window.__SANDBOX_SEARCH__ === \"string\"\\n ? window.__SANDBOX_SEARCH__\\n : location.search\\n );\\n const queryCspMode = query.get(\"csp_mode\") || \"permissive\";\\n let queryPermissions = null;\\n let queryWidgetCsp = null;\\n try {\\n const rawPerm = query.get(\"permissions\");\\n if (rawPerm) queryPermissions = JSON.parse(rawPerm);\\n } catch (e) {}\\n try {\\n const rawCsp = query.get(\"widget_csp\");\\n if (rawCsp) queryWidgetCsp = JSON.parse(rawCsp);\\n } catch (e) {}\\n\\n const inner = document.createElement(\"iframe\");\\n inner.style = \"width:100%; height:100%; border:none;\";\\n inner.setAttribute(\"sandbox\", \"allow-scripts allow-same-origin allow-forms\");\\n document.body.appendChild(inner);\\n\\n window.addEventListener(\"message\", async (event) => {\\n if (event.source === window.parent) {\\n if (event.data && event.data.method === \"ui/notifications/sandbox-resource-ready\") {\\n const params = event.data.params || {};\\n const html = params.html;\\n const sandbox = params.sandbox;\\n // Prefer message csp when present; fall back to URL widget_csp\\n const csp = params.csp != null ? params.csp : queryWidgetCsp;\\n const permissions = params.permissions != null ? params.permissions : queryPermissions;\\n const permissive =\\n typeof params.permissive === \"boolean\"\\n ? params.permissive\\n : queryCspMode === \"permissive\";\\n if (typeof sandbox === \"string\") {\\n inner.setAttribute(\"sandbox\", sandbox);\\n }\\n const allowAttribute = buildAllowAttribute(permissions);\\n if (allowAttribute) {\\n inner.setAttribute(\"allow\", allowAttribute);\\n }\\n if (typeof html === \"string\") {\\n if (permissive) {\\n const permissiveCsp = [\\n \"default-src * \\'unsafe-inline\\' \\'unsafe-eval\\' data: blob: filesystem: about:\",\\n \"script-src * \\'unsafe-inline\\' \\'unsafe-eval\\' data: blob:\",\\n \"style-src * \\'unsafe-inline\\' data: blob:\",\\n \"img-src * data: blob: https: http:\",\\n \"media-src * data: blob: https: http:\",\\n \"font-src * data: blob: https: http:\",\\n \"connect-src * data: blob: https: http: ws: wss: about:\",\\n \"frame-src * data: blob: https: http: about:\",\\n \"object-src * data: blob:\",\\n \"base-uri *\",\\n \"form-action *\",\\n ].join(\"; \");\\n const processedHtml = injectCSP(html, permissiveCsp);\\n inner.srcdoc = processedHtml;\\n } else {\\n const cspValue = buildCSP(csp);\\n const processedHtml = injectCSP(html, cspValue);\\n inner.srcdoc = processedHtml;\\n }\\n }\\n } else {\\n if (inner && inner.contentWindow) {\\n inner.contentWindow.postMessage(event.data, \"*\");\\n }\\n }\\n } else if (event.source === inner.contentWindow) {\\n window.parent.postMessage(event.data, \"*\");\\n }\\n });\\n\\n window.parent.postMessage({\\n jsonrpc: \"2.0\",\\n method: \"ui/notifications/sandbox-proxy-ready\",\\n params: {},\\n }, \"*\");\\n </script>\\n </body>\\n</html>';\n\n/**\n * Build sandbox-proxy HTML for a Blob URL, injecting search params that Blob\n * URLs cannot carry reliably.\n *\n * JSON-escapes the search string (incl. `<` → `\\\\u003c`) so it cannot break\n * out of the inline script tag.\n */\nexport function buildSandboxProxyBlobHtml(search: string): string {\n const escaped = JSON.stringify(search).replace(/</g, \"\\\\u003c\");\n const inject =\n \"<script>window.__SANDBOX_SEARCH__ = \" + escaped + \";</script>\";\n return SANDBOX_PROXY_HTML.replace(\n ` const scriptSrcParts = [\"'unsafe-inline'\", \"'unsafe-eval'\", resourceSrc];\\n`,\n ` const scriptSrcParts = [\"'unsafe-inline'\", resourceSrc];\\n`\n ).replace(\"<body>\", \"<body>\" + inject);\n}\n"],"mappings":";AA+DA,IAAM,qBACJ;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AASK,SAAS,0BAA0B,QAAwB;AAChE,QAAM,UAAU,KAAK,UAAU,MAAM,EAAE,QAAQ,MAAM,SAAS;AAC9D,QAAM,SACJ,yCAAyC,UAAU;AACrD,SAAO,mBAAmB;AAAA,IACxB;AAAA;AAAA,IACA;AAAA;AAAA,EACF,EAAE,QAAQ,UAAU,WAAW,MAAM;AACvC;","names":[]}
@@ -1,13 +0,0 @@
1
- import type { ServerConfig } from "../core/config.js";
2
- interface ClientTelemetryTracker {
3
- addServer(name: string, config: ServerConfig): Promise<void> | void;
4
- removeServer(name: string): Promise<void> | void;
5
- }
6
- /** @internal Configures the runtime-specific client telemetry sink. */
7
- export declare function setClientTelemetryTracker(nextTracker: ClientTelemetryTracker | undefined): void;
8
- /** @internal Records that a configured server was added. */
9
- export declare function trackClientAddServer(name: string, config: ServerConfig): void;
10
- /** @internal Records that a configured server was removed. */
11
- export declare function trackClientRemoveServer(name: string): void;
12
- export {};
13
- //# sourceMappingURL=client-telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client-telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/client-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,UAAU,sBAAsB;IAC9B,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IACpE,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAClD;AAID,uEAAuE;AACvE,wBAAgB,yBAAyB,CACvC,WAAW,EAAE,sBAAsB,GAAG,SAAS,GAC9C,IAAI,CAEN;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,GAAG,IAAI,CAE7E;AAED,8DAA8D;AAC9D,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAE1D"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=configure-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configure-browser.d.ts","sourceRoot":"","sources":["../../src/telemetry/configure-browser.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=configure-node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"configure-node.d.ts","sourceRoot":"","sources":["../../src/telemetry/configure-node.ts"],"names":[],"mappings":""}
@@ -1,8 +0,0 @@
1
- import type { ConnectorInitEventData } from "./events.js";
2
- type ConnectorTracker = (data: ConnectorInitEventData) => Promise<void> | void;
3
- /** @internal Configures the runtime-specific connector telemetry sink. */
4
- export declare function setConnectorTelemetryTracker(nextTracker: ConnectorTracker | undefined): void;
5
- /** @internal Sends connector telemetry when the active runtime configured it. */
6
- export declare function trackConnectorTelemetry(data: ConnectorInitEventData): void;
7
- export {};
8
- //# sourceMappingURL=connector-telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"connector-telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/connector-telemetry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAE1D,KAAK,gBAAgB,GAAG,CAAC,IAAI,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AAI/E,0EAA0E;AAC1E,wBAAgB,4BAA4B,CAC1C,WAAW,EAAE,gBAAgB,GAAG,SAAS,GACxC,IAAI,CAEN;AAED,iFAAiF;AACjF,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,sBAAsB,GAAG,IAAI,CAE1E"}
@@ -1,91 +0,0 @@
1
- export declare abstract class BaseTelemetryEvent {
2
- abstract get name(): string;
3
- abstract get properties(): Record<string, any>;
4
- }
5
- export interface MCPAgentExecutionEventData {
6
- executionMethod: string;
7
- query: string;
8
- success: boolean;
9
- modelProvider: string;
10
- modelName: string;
11
- serverCount: number;
12
- serverIdentifiers: Array<Record<string, string>>;
13
- totalToolsAvailable: number;
14
- toolsAvailableNames: string[];
15
- maxStepsConfigured: number;
16
- memoryEnabled: boolean;
17
- useServerManager: boolean;
18
- maxStepsUsed: number | null;
19
- manageConnector: boolean;
20
- externalHistoryUsed: boolean;
21
- stepsTaken?: number | null;
22
- toolsUsedCount?: number | null;
23
- toolsUsedNames?: string[] | null;
24
- response?: string | null;
25
- executionTimeMs?: number | null;
26
- errorType?: string | null;
27
- conversationHistoryLength?: number | null;
28
- }
29
- export declare class MCPAgentExecutionEvent extends BaseTelemetryEvent {
30
- private data;
31
- constructor(data: MCPAgentExecutionEventData);
32
- get name(): string;
33
- get properties(): Record<string, any>;
34
- }
35
- export interface MCPClientInitEventData {
36
- codeMode: boolean;
37
- sandbox: boolean;
38
- allCallbacks: boolean;
39
- verify: boolean;
40
- servers: string[];
41
- numServers: number;
42
- isBrowser: boolean;
43
- }
44
- export declare class MCPClientInitEvent extends BaseTelemetryEvent {
45
- private data;
46
- constructor(data: MCPClientInitEventData);
47
- get name(): string;
48
- get properties(): Record<string, any>;
49
- }
50
- export interface ConnectorInitEventData {
51
- connectorType: string;
52
- serverCommand?: string | null;
53
- serverArgs?: string[] | null;
54
- serverUrl?: string | null;
55
- publicIdentifier?: string | null;
56
- }
57
- export declare class ConnectorInitEvent extends BaseTelemetryEvent {
58
- private data;
59
- constructor(data: ConnectorInitEventData);
60
- get name(): string;
61
- get properties(): Record<string, any>;
62
- }
63
- /**
64
- * Raw input data for tracking server addition.
65
- * The event class will extract the necessary properties.
66
- */
67
- interface ClientAddServerEventInput {
68
- serverName: string;
69
- serverConfig: Record<string, any>;
70
- }
71
- export declare class ClientAddServerEvent extends BaseTelemetryEvent {
72
- private data;
73
- constructor(data: ClientAddServerEventInput);
74
- get name(): string;
75
- get properties(): Record<string, any>;
76
- private _extractHostname;
77
- }
78
- /**
79
- * Raw input data for tracking server removal.
80
- */
81
- interface ClientRemoveServerEventInput {
82
- serverName: string;
83
- }
84
- export declare class ClientRemoveServerEvent extends BaseTelemetryEvent {
85
- private data;
86
- constructor(data: ClientRemoveServerEventInput);
87
- get name(): string;
88
- get properties(): Record<string, any>;
89
- }
90
- export {};
91
- //# sourceMappingURL=events.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/telemetry/events.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- export { Telemetry, Tel, setTelemetrySource, setProductVersion, } from "./telemetry-node.js";
2
- export { telFetch, capturePostHog, POSTHOG_HOST, POSTHOG_API_KEY, } from "./tel-fetch.js";
3
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/telemetry/index.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,QAAQ,EACR,cAAc,EACd,YAAY,EACZ,eAAe,GAChB,MAAM,gBAAgB,CAAC"}
@@ -1,19 +0,0 @@
1
- /**
2
- * Fire-and-forget telemetry HTTP request. Never surfaces network/HTTP failures
3
- * to the host app — telemetry must not log or throw into user code.
4
- */
5
- export declare function telFetch(url: string, init?: RequestInit): Promise<void>;
6
- export declare const POSTHOG_HOST = "https://eu.i.posthog.com";
7
- export declare const POSTHOG_API_KEY = "phc_lyTtbYwvkdSbrcMQNPiKiiRWrrM1seyKIMjycSvItEI";
8
- /**
9
- * Send a single event to PostHog's public capture endpoint using `fetch` only
10
- * (no `posthog-js` / `posthog-node` SDK dependency). Errors are swallowed.
11
- */
12
- export declare function capturePostHog(params: {
13
- host?: string;
14
- apiKey?: string;
15
- event: string;
16
- distinctId: string;
17
- properties: Record<string, unknown>;
18
- }): Promise<void>;
19
- //# sourceMappingURL=tel-fetch.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tel-fetch.d.ts","sourceRoot":"","sources":["../../src/telemetry/tel-fetch.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAsB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E;AAED,eAAO,MAAM,YAAY,6BAA6B,CAAC;AACvD,eAAO,MAAM,eAAe,oDACuB,CAAC;AAwEpD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE;IAC3C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACrC,GAAG,OAAO,CAAC,IAAI,CAAC,CAoBhB"}
@@ -1,6 +0,0 @@
1
- /**
2
- * Browser entry for telemetry: re-exports the shared Telemetry singleton
3
- * (localStorage when available; no `node:fs`).
4
- */
5
- export { Telemetry, Tel, setTelemetrySource, setProductVersion, } from "./telemetry.js";
6
- //# sourceMappingURL=telemetry-browser.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-browser.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry-browser.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,SAAS,EACT,GAAG,EACH,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,gBAAgB,CAAC"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Node entry for telemetry: installs filesystem persistence, then re-exports
3
- * the shared Telemetry singleton. `node:fs` stays here so it never enters
4
- * browser bundles.
5
- */
6
- import { Tel, Telemetry, setProductVersion, setTelemetrySource } from "./telemetry.js";
7
- export { Telemetry, Tel, setTelemetrySource, setProductVersion };
8
- //# sourceMappingURL=telemetry-node.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry-node.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry-node.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAEL,GAAG,EACH,SAAS,EACT,iBAAiB,EACjB,kBAAkB,EAEnB,MAAM,gBAAgB,CAAC;AA+DxB,OAAO,EAAE,SAAS,EAAE,GAAG,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -1,75 +0,0 @@
1
- import type { BaseTelemetryEvent, ConnectorInitEventData, MCPAgentExecutionEventData, MCPClientInitEventData } from "./events.js";
2
- export type TelemetryStorage = {
3
- getUserId(): string | null;
4
- setUserId(id: string): void;
5
- };
6
- type RuntimeEnvironment = "browser" | "node" | "cloudflare-workers" | "edge" | "deno" | "bun" | "unknown";
7
- type StorageCapability = "persistent" | "session-only";
8
- export declare function configureTelemetryStorage(storage: TelemetryStorage): void;
9
- /**
10
- * Shared telemetry singleton for node and browser.
11
- *
12
- * Usage: `Tel.getInstance().trackMCPClientInit(...)`
13
- */
14
- export declare class Telemetry {
15
- private static instance;
16
- private readonly UNKNOWN_USER_ID;
17
- private _currUserId;
18
- private _telemetryEnabled;
19
- private _pending;
20
- private _runtimeEnvironment;
21
- private _storageCapability;
22
- private _storage;
23
- private _source;
24
- private _productVersion?;
25
- private constructor();
26
- get runtimeEnvironment(): RuntimeEnvironment;
27
- get storageCapability(): StorageCapability;
28
- static getInstance(): Telemetry;
29
- setSource(source: string): void;
30
- getSource(): string;
31
- setProductVersion(version: string): void;
32
- get isEnabled(): boolean;
33
- get userId(): string;
34
- capture(event: BaseTelemetryEvent): Promise<void>;
35
- trackAgentExecution(data: MCPAgentExecutionEventData): Promise<void>;
36
- trackMCPClientInit(data: MCPClientInitEventData): Promise<void>;
37
- trackConnectorInit(data: ConnectorInitEventData): Promise<void>;
38
- trackClientAddServer(serverName: string, serverConfig: Record<string, any>): Promise<void>;
39
- trackClientRemoveServer(serverName: string): Promise<void>;
40
- trackUseMcpConnection(data: {
41
- url: string;
42
- transportType: string;
43
- success: boolean;
44
- errorType?: string | null;
45
- connectionTimeMs?: number | null;
46
- hasOAuth: boolean;
47
- hasSampling: boolean;
48
- hasElicitation: boolean;
49
- }): Promise<void>;
50
- trackUseMcpToolCall(data: {
51
- toolName: string;
52
- success: boolean;
53
- errorType?: string | null;
54
- executionTimeMs?: number | null;
55
- }): Promise<void>;
56
- trackUseMcpResourceRead(data: {
57
- resourceUri: string;
58
- success: boolean;
59
- errorType?: string | null;
60
- }): Promise<void>;
61
- identify(userId: string, properties?: Record<string, unknown>): void;
62
- reset(): void;
63
- flush(): void;
64
- shutdown(): Promise<void>;
65
- }
66
- /**
67
- * Backward-compatible name for {@link Telemetry}.
68
- *
69
- * @alias
70
- */
71
- export declare const Tel: typeof Telemetry;
72
- export declare function setTelemetrySource(source: string): void;
73
- export declare function setProductVersion(version: string): void;
74
- export {};
75
- //# sourceMappingURL=telemetry.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"telemetry.d.ts","sourceRoot":"","sources":["../../src/telemetry/telemetry.ts"],"names":[],"mappings":"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"}