@introspection-ai/recipes 0.27.4 → 0.29.0

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 (119) hide show
  1. package/dist/agents.d.ts +34 -0
  2. package/dist/agents.d.ts.map +1 -1
  3. package/dist/agents.js +87 -0
  4. package/dist/agents.js.map +1 -1
  5. package/dist/child/agent.d.ts +5 -0
  6. package/dist/child/agent.d.ts.map +1 -1
  7. package/dist/child/agent.js +19 -8
  8. package/dist/child/agent.js.map +1 -1
  9. package/dist/child/session.d.ts +31 -4
  10. package/dist/child/session.d.ts.map +1 -1
  11. package/dist/child/session.js +65 -3
  12. package/dist/child/session.js.map +1 -1
  13. package/dist/mcp-chunks/{auth-command-GQFV6QYP.js → auth-command-SDTBVC2R.js} +22 -21
  14. package/dist/mcp-chunks/call-arguments-ER7NWEPS.js +16 -0
  15. package/dist/mcp-chunks/{call-command-LMAREWKD.js → call-command-WOZT2DLX.js} +33 -32
  16. package/dist/mcp-chunks/{chunk-5B7GRMUK.js → chunk-27XDYSXJ.js} +1 -1
  17. package/dist/mcp-chunks/{chunk-FONFU4G5.js → chunk-2IO3FXZJ.js} +1 -1
  18. package/dist/mcp-chunks/{chunk-O4JIUOWF.js → chunk-35JUFDQI.js} +2 -2
  19. package/dist/mcp-chunks/{chunk-UYJZJXC2.js → chunk-43QNQO5C.js} +3 -3
  20. package/dist/mcp-chunks/{chunk-LIEFPSSB.js → chunk-4IXQQER3.js} +5 -5
  21. package/dist/mcp-chunks/{chunk-O2VOMKAS.js → chunk-6XBQDCGX.js} +10 -10
  22. package/dist/mcp-chunks/{chunk-S2YF442K.js → chunk-7CI6DKEP.js} +2 -2
  23. package/dist/mcp-chunks/{chunk-H7ARMBV7.js → chunk-7OQUF6V6.js} +26 -10
  24. package/dist/mcp-chunks/{chunk-S6GJ42I2.js → chunk-7X3JHUMH.js} +1 -1
  25. package/dist/mcp-chunks/{chunk-D6B2M5V7.js → chunk-7ZZZ7MR2.js} +1 -1
  26. package/dist/mcp-chunks/{chunk-WHJUDBPR.js → chunk-AHDUZPNI.js} +2 -1
  27. package/dist/mcp-chunks/{chunk-QALB3DRW.js → chunk-ALLS7CUV.js} +1 -1
  28. package/dist/mcp-chunks/{chunk-6RG6AD5X.js → chunk-ASFI5AJK.js} +17 -11
  29. package/dist/mcp-chunks/{chunk-LQIE4PKL.js → chunk-CMDB57MS.js} +2 -2
  30. package/dist/mcp-chunks/{chunk-HZ2SX5U6.js → chunk-CO4CYU5W.js} +11 -11
  31. package/dist/mcp-chunks/{chunk-TUQGOYK6.js → chunk-CRX2G22W.js} +1 -1
  32. package/dist/mcp-chunks/{chunk-UKM35J67.js → chunk-DUJ5WAHC.js} +2 -2
  33. package/dist/mcp-chunks/{chunk-RIHPVCGI.js → chunk-EIF7GALA.js} +1 -1
  34. package/dist/mcp-chunks/{chunk-QJNF3A3F.js → chunk-EIXFNLU6.js} +1 -1
  35. package/dist/mcp-chunks/{chunk-77BZYP72.js → chunk-FMYP6JXX.js} +1 -1
  36. package/dist/mcp-chunks/{chunk-LXHPDKEF.js → chunk-FQAJT6U2.js} +1 -1
  37. package/dist/mcp-chunks/{chunk-7WL4TMON.js → chunk-FUKRLUU7.js} +4 -4
  38. package/dist/mcp-chunks/{chunk-L6OOGZVA.js → chunk-FVZKQMZS.js} +21 -7
  39. package/dist/mcp-chunks/{chunk-RZIJUJGL.js → chunk-FWWPRZ37.js} +31 -40
  40. package/dist/mcp-chunks/{chunk-KQCLM7R7.js → chunk-GJ7DWMRT.js} +1 -1
  41. package/dist/mcp-chunks/{chunk-LCBDVFVA.js → chunk-HM26TIPK.js} +1 -1
  42. package/dist/mcp-chunks/{chunk-JVYCENPP.js → chunk-IJTZ2ZRM.js} +4 -4
  43. package/dist/mcp-chunks/{chunk-S5F3HEZZ.js → chunk-IR5SMKTP.js} +425 -445
  44. package/dist/mcp-chunks/{chunk-7PFJCLXL.js → chunk-IWXEOLJL.js} +20 -16
  45. package/dist/mcp-chunks/{chunk-D6SVCPN6.js → chunk-JQCSGX6E.js} +1 -1
  46. package/dist/mcp-chunks/{chunk-P463YBJM.js → chunk-JRU5LZJQ.js} +1 -1
  47. package/dist/mcp-chunks/{chunk-XNHGMWN2.js → chunk-M7VINGHY.js} +9 -7
  48. package/dist/mcp-chunks/{chunk-IF6LRV3J.js → chunk-OURSGEZX.js} +8 -8
  49. package/dist/mcp-chunks/{chunk-H4KL74PV.js → chunk-P3S4OJPI.js} +9 -9
  50. package/dist/mcp-chunks/{chunk-P3UVILEW.js → chunk-POYT6GCW.js} +29 -5
  51. package/dist/mcp-chunks/{chunk-5BMCVE2J.js → chunk-R636HUNL.js} +17 -13
  52. package/dist/mcp-chunks/{chunk-TYYSBILI.js → chunk-SONMFI3S.js} +70 -28
  53. package/dist/mcp-chunks/{chunk-I6UMKX5E.js → chunk-SVCKS5MW.js} +4 -4
  54. package/dist/mcp-chunks/{chunk-NQW3ES2G.js → chunk-TDBM2UIR.js} +1 -1
  55. package/dist/mcp-chunks/{chunk-VJIAHZZG.js → chunk-TKZA4MPW.js} +4 -4
  56. package/dist/mcp-chunks/{chunk-2P2HVZ3G.js → chunk-UHXTAPEC.js} +1 -1
  57. package/dist/mcp-chunks/{chunk-CLR6DJV3.js → chunk-UXI26V4F.js} +1 -1
  58. package/dist/mcp-chunks/{chunk-UIPG6W7N.js → chunk-UYG7PAN2.js} +2 -2
  59. package/dist/mcp-chunks/{chunk-2HOMVWSA.js → chunk-VCPUZFU7.js} +2 -2
  60. package/dist/mcp-chunks/{chunk-FBVRU4Y3.js → chunk-VRTH73R5.js} +40 -33
  61. package/dist/mcp-chunks/{chunk-KOWNVUL2.js → chunk-VWNF5PIF.js} +2 -2
  62. package/dist/mcp-chunks/{chunk-MJFZM5EV.js → chunk-WQBESOWG.js} +22 -5
  63. package/dist/mcp-chunks/chunk-XDARNDP3.js +25 -0
  64. package/dist/mcp-chunks/{chunk-OSYB5GNF.js → chunk-XUJQ6U6M.js} +3 -3
  65. package/dist/mcp-chunks/{chunk-PJCMJ65D.js → chunk-YGRORKGT.js} +226 -101
  66. package/dist/mcp-chunks/{chunk-C2VLY7ED.js → chunk-YM7ZVYI2.js} +4 -4
  67. package/dist/mcp-chunks/{chunk-6QZQZXDJ.js → chunk-YTO7DITJ.js} +3 -3
  68. package/dist/mcp-chunks/{chunk-UHO6KIUJ.js → chunk-ZLV5S5UP.js} +2 -2
  69. package/dist/mcp-chunks/{cli-JI7MEAAX.js → cli-67GWFF4R.js} +69 -68
  70. package/dist/mcp-chunks/client-MQMNAYYW.js +31 -0
  71. package/dist/mcp-chunks/{config-command-GRZLKD3R.js → config-command-3IKIRWMW.js} +41 -27
  72. package/dist/mcp-chunks/daemon-command-OMOZ5MP7.js +31 -0
  73. package/dist/mcp-chunks/{dist-USMCQ22V.js → dist-YL3LFKVP.js} +219 -202
  74. package/dist/mcp-chunks/{emit-ts-command-7VLESP7H.js → emit-ts-command-YWKROLL2.js} +84 -70
  75. package/dist/mcp-chunks/{generate-cli-runner-SSW2B72K.js → generate-cli-runner-CZEVY2Y7.js} +51 -48
  76. package/dist/mcp-chunks/generated-daemon-runtime-SRFULTIT.js +31 -0
  77. package/dist/mcp-chunks/{inspect-cli-command-NCGCMOIS.js → inspect-cli-command-5Y2LORK5.js} +9 -9
  78. package/dist/mcp-chunks/{launch-NBONSPNK.js → launch-43TA3HYF.js} +1 -1
  79. package/dist/mcp-chunks/{lifecycle-CXAKUCN4.js → lifecycle-BY2ILXTB.js} +1 -1
  80. package/dist/mcp-chunks/{list-command-5T4UF4PF.js → list-command-7RU7NNAV.js} +56 -43
  81. package/dist/mcp-chunks/{output-utils-YFTWQZ5V.js → output-utils-2R3SA6KR.js} +3 -3
  82. package/dist/mcp-chunks/{prompt-CH6TK0bC-6DI4RA4E.js → prompt-CH6TK0bC-GKQOEUY4.js} +1 -1
  83. package/dist/mcp-chunks/{record-command-TE5O7WBL.js → record-command-ROIRRNFS.js} +5 -5
  84. package/dist/mcp-chunks/{replay-command-QCUL5ASR.js → replay-command-Y2MYVQTL.js} +6 -6
  85. package/dist/mcp-chunks/{resource-command-XMGF7EAK.js → resource-command-VUV7AYYQ.js} +9 -9
  86. package/dist/mcp-chunks/{result-utils-HKB42M7Y.js → result-utils-5U7NVXDZ.js} +3 -3
  87. package/dist/mcp-chunks/runtime-Q4SCCOQE.js +38 -0
  88. package/dist/mcp-chunks/{runtime-wrapper-MI3HF45J.js → runtime-wrapper-3BVFTSWJ.js} +3 -3
  89. package/dist/mcp-chunks/{serve-command-5HV3ZE25.js → serve-command-BXLQWHFW.js} +8969 -1147
  90. package/dist/mcp-chunks/{timeouts-YBFBTLV2.js → timeouts-6GL2F44N.js} +3 -3
  91. package/dist/mcp-chunks/{vault-command-FC2PD5U6.js → vault-command-JCMW3DQA.js} +4 -4
  92. package/dist/mcp-chunks/{webapi-IFUPO72B.js → webapi-UMWFGMQV.js} +46 -46
  93. package/dist/mcp-daemon.js +27 -26
  94. package/dist/mcp-run-worker.js +27 -26
  95. package/dist/pi-extension.d.ts.map +1 -1
  96. package/dist/pi-extension.js +22 -19
  97. package/dist/pi-extension.js.map +1 -1
  98. package/dist/recipe/model.d.ts.map +1 -1
  99. package/dist/recipe/model.js +25 -1
  100. package/dist/recipe/model.js.map +1 -1
  101. package/dist/run-controller.d.ts +10 -3
  102. package/dist/run-controller.d.ts.map +1 -1
  103. package/dist/run-controller.js +23 -11
  104. package/dist/run-controller.js.map +1 -1
  105. package/dist/session.d.ts +13 -0
  106. package/dist/session.d.ts.map +1 -1
  107. package/dist/session.js +15 -9
  108. package/dist/session.js.map +1 -1
  109. package/docs/agent-composition.md +27 -6
  110. package/docs/host-api.md +32 -4
  111. package/docs/mcp-configuration.md +12 -3
  112. package/docs/pi-extension.md +7 -4
  113. package/docs/recipe-format.md +14 -5
  114. package/package.json +11 -11
  115. package/dist/mcp-chunks/call-arguments-VT7JLNJY.js +0 -16
  116. package/dist/mcp-chunks/client-QU7ABSNB.js +0 -30
  117. package/dist/mcp-chunks/daemon-command-3266CYHO.js +0 -30
  118. package/dist/mcp-chunks/generated-daemon-runtime-7CFVWLC7.js +0 -30
  119. package/dist/mcp-chunks/runtime-3X2XVS6X.js +0 -37
@@ -3,7 +3,7 @@ import {
3
3
  __export
4
4
  } from "./chunk-LRKZP7DJ.js";
5
5
 
6
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/chunk-Br0eD_fh.mjs
6
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/chunk-Br0eD_fh.mjs
7
7
  var __create = Object.create;
8
8
  var __defProp = Object.defineProperty;
9
9
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
@@ -43,7 +43,7 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
43
43
  enumerable: true
44
44
  }) : target, mod));
45
45
 
46
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/dialects-BOhdv1Fc.mjs
46
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/dialects-BOhdv1Fc.mjs
47
47
  var DRAFT_2020_12_URIS = /* @__PURE__ */ new Set(["https://json-schema.org/draft/2020-12/schema", "http://json-schema.org/draft/2020-12/schema"]);
48
48
  var DRAFT_2019_09_URIS = /* @__PURE__ */ new Set(["https://json-schema.org/draft/2019-09/schema", "http://json-schema.org/draft/2019-09/schema"]);
49
49
  var DRAFT_07_URIS = /* @__PURE__ */ new Set(["https://json-schema.org/draft-07/schema", "http://json-schema.org/draft-07/schema"]);
@@ -60,7 +60,7 @@ function declaredDialect(schema, remedy) {
60
60
  throw new Error(`JSON Schema declares an unsupported dialect ("$schema": "${schema.$schema.slice(0, 200)}"). The default validator supports JSON Schema 2020-12, 2019-09, draft-07, and draft-06; ${remedy}`);
61
61
  }
62
62
 
63
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/external.js
63
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/external.js
64
64
  var external_exports = {};
65
65
  __export(external_exports, {
66
66
  $brand: () => $brand,
@@ -323,7 +323,7 @@ __export(external_exports, {
323
323
  xor: () => xor
324
324
  });
325
325
 
326
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/index.js
326
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/index.js
327
327
  var core_exports2 = {};
328
328
  __export(core_exports2, {
329
329
  $ZodAny: () => $ZodAny,
@@ -640,7 +640,7 @@ __export(core_exports2, {
640
640
  withParser: () => withParser
641
641
  });
642
642
 
643
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/util.js
643
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/util.js
644
644
  var util_exports = {};
645
645
  __export(util_exports, {
646
646
  BIGINT_FORMAT_RANGES: () => BIGINT_FORMAT_RANGES,
@@ -1483,7 +1483,7 @@ function constantCatch(value) {
1483
1483
  return fn;
1484
1484
  }
1485
1485
 
1486
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/core.js
1486
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/core.js
1487
1487
  var _a;
1488
1488
  var NEVER = /* @__PURE__ */ Object.freeze({
1489
1489
  status: "aborted"
@@ -1605,7 +1605,7 @@ function config(newConfig) {
1605
1605
  return globalConfig;
1606
1606
  }
1607
1607
 
1608
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/errors.js
1608
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/errors.js
1609
1609
  function _getMessage() {
1610
1610
  const internals = this._zod;
1611
1611
  internals.message ?? (internals.message = JSON.stringify(internals.def, jsonStringifyReplacer, 2));
@@ -1797,7 +1797,7 @@ function prettifyError(error62) {
1797
1797
  return lines.join("\n");
1798
1798
  }
1799
1799
 
1800
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/parse.js
1800
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/parse.js
1801
1801
  function finalizeParams(callee, params) {
1802
1802
  return { callee: params?.callee ?? callee, Err: params?.Err };
1803
1803
  }
@@ -1957,7 +1957,7 @@ var _safeDecodeAsync = (_Err) => async (schema, value, _ctx) => {
1957
1957
  };
1958
1958
  var safeDecodeAsync = /* @__PURE__ */ _safeDecodeAsync($ZodRealError);
1959
1959
 
1960
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/regexes.js
1960
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/regexes.js
1961
1961
  var regexes_exports = {};
1962
1962
  __export(regexes_exports, {
1963
1963
  anyString: () => anyString,
@@ -2129,7 +2129,7 @@ var sha512_hex = /^[0-9a-fA-F]{128}$/;
2129
2129
  var sha512_base64 = /* @__PURE__ */ fixedBase64(86, "==");
2130
2130
  var sha512_base64url = /* @__PURE__ */ fixedBase64url(86);
2131
2131
 
2132
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/checks.js
2132
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/checks.js
2133
2133
  var $ZodCheck = /* @__PURE__ */ $constructor("$ZodCheck", (inst, def) => {
2134
2134
  var _a3;
2135
2135
  inst._zod ?? (inst._zod = {});
@@ -2605,7 +2605,7 @@ var $ZodCheckOverwrite = /* @__PURE__ */ $constructor("$ZodCheckOverwrite", (ins
2605
2605
  };
2606
2606
  });
2607
2607
 
2608
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/doc.js
2608
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/doc.js
2609
2609
  var Doc = class {
2610
2610
  constructor(args = [], closed = {}) {
2611
2611
  this.content = [];
@@ -2646,14 +2646,14 @@ ${content.join("\n")}
2646
2646
  }
2647
2647
  };
2648
2648
 
2649
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/versions.js
2649
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/versions.js
2650
2650
  var version = {
2651
2651
  major: 4,
2652
2652
  minor: 6,
2653
2653
  patch: 5
2654
2654
  };
2655
2655
 
2656
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/schemas.js
2656
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/schemas.js
2657
2657
  var $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
2658
2658
  var _a3;
2659
2659
  inst ?? (inst = {});
@@ -5067,7 +5067,7 @@ function handleRefineResult(result, payload, input2, inst) {
5067
5067
  }
5068
5068
  }
5069
5069
 
5070
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/memoizer.js
5070
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/memoizer.js
5071
5071
  var $ZodCyclicError = class extends Error {
5072
5072
  constructor() {
5073
5073
  super(`Cannot parse a reference cycle that closes through a transform`);
@@ -5344,7 +5344,7 @@ function isBackEdge(ctx, value) {
5344
5344
  return backEdges !== void 0 && isRef(value) && backEdges.has(value);
5345
5345
  }
5346
5346
 
5347
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/index.js
5347
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/index.js
5348
5348
  var locales_exports = {};
5349
5349
  __export(locales_exports, {
5350
5350
  ar: () => ar_default,
@@ -5412,7 +5412,7 @@ __export(locales_exports, {
5412
5412
  zhTW: () => zh_TW_default
5413
5413
  });
5414
5414
 
5415
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ar.js
5415
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ar.js
5416
5416
  var error = () => {
5417
5417
  const Sizable = {
5418
5418
  string: { unit: "\u062D\u0631\u0641", verb: "\u0623\u0646 \u064A\u062D\u0648\u064A" },
@@ -5524,7 +5524,7 @@ function ar_default() {
5524
5524
  };
5525
5525
  }
5526
5526
 
5527
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/az.js
5527
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/az.js
5528
5528
  var error2 = () => {
5529
5529
  const Sizable = {
5530
5530
  string: { unit: "simvol", verb: "olmal\u0131d\u0131r" },
@@ -5635,7 +5635,7 @@ function az_default() {
5635
5635
  };
5636
5636
  }
5637
5637
 
5638
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/be.js
5638
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/be.js
5639
5639
  function getBelarusianPlural(count, one, few, many) {
5640
5640
  const absCount = Math.abs(count);
5641
5641
  const lastDigit = absCount % 10;
@@ -5804,7 +5804,7 @@ function be_default() {
5804
5804
  };
5805
5805
  }
5806
5806
 
5807
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bg.js
5807
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/bg.js
5808
5808
  var error4 = () => {
5809
5809
  const Sizable = {
5810
5810
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0430", verb: "\u0434\u0430 \u0441\u044A\u0434\u044A\u0440\u0436\u0430" },
@@ -5930,7 +5930,7 @@ function bg_default() {
5930
5930
  };
5931
5931
  }
5932
5932
 
5933
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/bn.js
5933
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/bn.js
5934
5934
  var error5 = () => {
5935
5935
  const Sizable = {
5936
5936
  string: { unit: "\u0985\u0995\u09CD\u09B7\u09B0", verb: "\u09A5\u09BE\u0995\u09A4\u09C7 \u09B9\u09AC\u09C7" },
@@ -6044,7 +6044,7 @@ function bn_default() {
6044
6044
  };
6045
6045
  }
6046
6046
 
6047
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ca.js
6047
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ca.js
6048
6048
  var error6 = () => {
6049
6049
  const Sizable = {
6050
6050
  string: { unit: "car\xE0cters", verb: "contenir" },
@@ -6158,7 +6158,7 @@ function ca_default() {
6158
6158
  };
6159
6159
  }
6160
6160
 
6161
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ckb.js
6161
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ckb.js
6162
6162
  var error7 = () => {
6163
6163
  const Sizable = {
6164
6164
  string: { unit: "\u067E\u06CC\u062A", verb: "\u0628\u06CE\u062A" },
@@ -6291,7 +6291,7 @@ function ckb_default() {
6291
6291
  };
6292
6292
  }
6293
6293
 
6294
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/cs.js
6294
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/cs.js
6295
6295
  var error8 = () => {
6296
6296
  const Sizable = {
6297
6297
  string: { unit: "znak\u016F", verb: "m\xEDt" },
@@ -6408,7 +6408,7 @@ function cs_default() {
6408
6408
  };
6409
6409
  }
6410
6410
 
6411
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/da.js
6411
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/da.js
6412
6412
  var error9 = () => {
6413
6413
  const Sizable = {
6414
6414
  string: { unit: "tegn", verb: "havde" },
@@ -6529,7 +6529,7 @@ function da_default() {
6529
6529
  };
6530
6530
  }
6531
6531
 
6532
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/de.js
6532
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/de.js
6533
6533
  var error10 = () => {
6534
6534
  const Sizable = {
6535
6535
  string: { unit: "Zeichen", verb: "zu haben" },
@@ -6643,7 +6643,7 @@ function de_default() {
6643
6643
  };
6644
6644
  }
6645
6645
 
6646
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/el.js
6646
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/el.js
6647
6647
  var error11 = () => {
6648
6648
  const Sizable = {
6649
6649
  string: { unit: "\u03C7\u03B1\u03C1\u03B1\u03BA\u03C4\u03AE\u03C1\u03B5\u03C2", verb: "\u03BD\u03B1 \u03AD\u03C7\u03B5\u03B9" },
@@ -6756,7 +6756,7 @@ function el_default() {
6756
6756
  };
6757
6757
  }
6758
6758
 
6759
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/en.js
6759
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/en.js
6760
6760
  var error12 = () => {
6761
6761
  const Sizable = {
6762
6762
  string: { unit: "characters", verb: "to have" },
@@ -6881,7 +6881,7 @@ function en_default() {
6881
6881
  };
6882
6882
  }
6883
6883
 
6884
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/eo.js
6884
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/eo.js
6885
6885
  var error13 = () => {
6886
6886
  const Sizable = {
6887
6887
  string: { unit: "karaktrojn", verb: "havi" },
@@ -6996,7 +6996,7 @@ function eo_default() {
6996
6996
  };
6997
6997
  }
6998
6998
 
6999
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/es.js
6999
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/es.js
7000
7000
  var error14 = () => {
7001
7001
  const Sizable = {
7002
7002
  string: { unit: "caracteres", verb: "tener" },
@@ -7133,7 +7133,7 @@ function es_default() {
7133
7133
  };
7134
7134
  }
7135
7135
 
7136
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fa.js
7136
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/fa.js
7137
7137
  var error15 = () => {
7138
7138
  const Sizable = {
7139
7139
  string: { unit: "\u06A9\u0627\u0631\u0627\u06A9\u062A\u0631", verb: "\u062F\u0627\u0634\u062A\u0647 \u0628\u0627\u0634\u062F" },
@@ -7253,7 +7253,7 @@ function fa_default() {
7253
7253
  };
7254
7254
  }
7255
7255
 
7256
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fi.js
7256
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/fi.js
7257
7257
  var error16 = () => {
7258
7258
  const Sizable = {
7259
7259
  string: { unit: "merkki\xE4", subject: "merkkijonon" },
@@ -7371,7 +7371,7 @@ function fi_default() {
7371
7371
  };
7372
7372
  }
7373
7373
 
7374
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr.js
7374
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/fr.js
7375
7375
  var error17 = () => {
7376
7376
  const Sizable = {
7377
7377
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -7501,7 +7501,7 @@ function fr_default() {
7501
7501
  };
7502
7502
  }
7503
7503
 
7504
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/fr-CA.js
7504
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/fr-CA.js
7505
7505
  var error18 = () => {
7506
7506
  const Sizable = {
7507
7507
  string: { unit: "caract\xE8res", verb: "avoir" },
@@ -7614,7 +7614,7 @@ function fr_CA_default() {
7614
7614
  };
7615
7615
  }
7616
7616
 
7617
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/gu.js
7617
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/gu.js
7618
7618
  var error19 = () => {
7619
7619
  const Sizable = {
7620
7620
  string: { unit: "\u0A85\u0A95\u0ACD\u0AB7\u0AB0", verb: "\u0AB9\u0ACB\u0AB5\u0ABE \u0A9C\u0ACB\u0A88\u0A8F" },
@@ -7728,7 +7728,7 @@ function gu_default() {
7728
7728
  };
7729
7729
  }
7730
7730
 
7731
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/he.js
7731
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/he.js
7732
7732
  var error20 = () => {
7733
7733
  const TypeNames = {
7734
7734
  string: { label: "\u05DE\u05D7\u05E8\u05D5\u05D6\u05EA", gender: "f" },
@@ -7930,7 +7930,7 @@ function he_default() {
7930
7930
  };
7931
7931
  }
7932
7932
 
7933
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hi.js
7933
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/hi.js
7934
7934
  var error21 = () => {
7935
7935
  const Sizable = {
7936
7936
  string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0930\u0916\u0928\u0947 \u0915\u0947 \u0932\u093F\u090F" },
@@ -8042,7 +8042,7 @@ function hi_default() {
8042
8042
  };
8043
8043
  }
8044
8044
 
8045
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hr.js
8045
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/hr.js
8046
8046
  var error22 = () => {
8047
8047
  const Sizable = {
8048
8048
  string: { unit: "znakova", verb: "imati" },
@@ -8169,7 +8169,7 @@ function hr_default() {
8169
8169
  };
8170
8170
  }
8171
8171
 
8172
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hu.js
8172
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/hu.js
8173
8173
  var error23 = () => {
8174
8174
  const Sizable = {
8175
8175
  string: { unit: "karakter", verb: "legyen" },
@@ -8283,7 +8283,7 @@ function hu_default() {
8283
8283
  };
8284
8284
  }
8285
8285
 
8286
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/hy.js
8286
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/hy.js
8287
8287
  function getArmenianPlural(count, one, many) {
8288
8288
  return Math.abs(count) === 1 ? one : many;
8289
8289
  }
@@ -8442,7 +8442,7 @@ function hy_default() {
8442
8442
  };
8443
8443
  }
8444
8444
 
8445
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/id.js
8445
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/id.js
8446
8446
  var error25 = () => {
8447
8447
  const Sizable = {
8448
8448
  string: { unit: "karakter", verb: "memiliki" },
@@ -8554,7 +8554,7 @@ function id_default() {
8554
8554
  };
8555
8555
  }
8556
8556
 
8557
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/is.js
8557
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/is.js
8558
8558
  var error26 = () => {
8559
8559
  const Sizable = {
8560
8560
  string: { unit: "stafi", verb: "a\xF0 hafa" },
@@ -8669,7 +8669,7 @@ function is_default() {
8669
8669
  };
8670
8670
  }
8671
8671
 
8672
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/it.js
8672
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/it.js
8673
8673
  var error27 = () => {
8674
8674
  const Sizable = {
8675
8675
  string: { unit: "caratteri", verb: "avere" },
@@ -8783,7 +8783,7 @@ function it_default() {
8783
8783
  };
8784
8784
  }
8785
8785
 
8786
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ja.js
8786
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ja.js
8787
8787
  var error28 = () => {
8788
8788
  const Sizable = {
8789
8789
  string: { unit: "\u6587\u5B57", verb: "\u3067\u3042\u308B" },
@@ -8896,7 +8896,7 @@ function ja_default() {
8896
8896
  };
8897
8897
  }
8898
8898
 
8899
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ka.js
8899
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ka.js
8900
8900
  var error29 = () => {
8901
8901
  const Sizable = {
8902
8902
  string: { unit: "\u10E1\u10D8\u10DB\u10D1\u10DD\u10DA\u10DD", verb: "\u10E3\u10DC\u10D3\u10D0 \u10E8\u10D4\u10D8\u10EA\u10D0\u10D5\u10D3\u10D4\u10E1" },
@@ -9014,7 +9014,7 @@ function ka_default() {
9014
9014
  };
9015
9015
  }
9016
9016
 
9017
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/km.js
9017
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/km.js
9018
9018
  var error30 = () => {
9019
9019
  const Sizable = {
9020
9020
  string: { unit: "\u178F\u17BD\u17A2\u1780\u17D2\u179F\u179A", verb: "\u1782\u17BD\u179A\u1798\u17B6\u1793" },
@@ -9130,12 +9130,12 @@ function km_default() {
9130
9130
  };
9131
9131
  }
9132
9132
 
9133
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kh.js
9133
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/kh.js
9134
9134
  function kh_default() {
9135
9135
  return km_default();
9136
9136
  }
9137
9137
 
9138
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/kn.js
9138
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/kn.js
9139
9139
  var error31 = () => {
9140
9140
  const Sizable = {
9141
9141
  string: { unit: "\u0C85\u0C95\u0CCD\u0CB7\u0CB0\u0C97\u0CB3\u0CC1", verb: "\u0CB9\u0CCA\u0C82\u0CA6\u0CB2\u0CC1" },
@@ -9251,7 +9251,7 @@ function kn_default() {
9251
9251
  };
9252
9252
  }
9253
9253
 
9254
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ko.js
9254
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ko.js
9255
9255
  var error32 = () => {
9256
9256
  const Sizable = {
9257
9257
  string: { unit: "\uBB38\uC790", verb: "to have" },
@@ -9368,7 +9368,7 @@ function ko_default() {
9368
9368
  };
9369
9369
  }
9370
9370
 
9371
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/lt.js
9371
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/lt.js
9372
9372
  var capitalizeFirstCharacter = (text) => {
9373
9373
  return text.charAt(0).toUpperCase() + text.slice(1);
9374
9374
  };
@@ -9576,7 +9576,7 @@ function lt_default() {
9576
9576
  };
9577
9577
  }
9578
9578
 
9579
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/mk.js
9579
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/mk.js
9580
9580
  var error34 = () => {
9581
9581
  const Sizable = {
9582
9582
  string: { unit: "\u0437\u043D\u0430\u0446\u0438", verb: "\u0434\u0430 \u0438\u043C\u0430\u0430\u0442" },
@@ -9691,7 +9691,7 @@ function mk_default() {
9691
9691
  };
9692
9692
  }
9693
9693
 
9694
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ms.js
9694
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ms.js
9695
9695
  var error35 = () => {
9696
9696
  const Sizable = {
9697
9697
  string: { unit: "aksara", verb: "mempunyai" },
@@ -9804,7 +9804,7 @@ function ms_default() {
9804
9804
  };
9805
9805
  }
9806
9806
 
9807
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ne.js
9807
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ne.js
9808
9808
  var error36 = () => {
9809
9809
  const Sizable = {
9810
9810
  string: { unit: "\u0905\u0915\u094D\u0937\u0930", verb: "\u0939\u0941\u0928\u0941\u092A\u0930\u094D\u091B" },
@@ -9916,7 +9916,7 @@ function ne_default() {
9916
9916
  };
9917
9917
  }
9918
9918
 
9919
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nl.js
9919
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/nl.js
9920
9920
  var error37 = () => {
9921
9921
  const Sizable = {
9922
9922
  string: { unit: "tekens", verb: "heeft" },
@@ -10032,7 +10032,7 @@ function nl_default() {
10032
10032
  };
10033
10033
  }
10034
10034
 
10035
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/nn.js
10035
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/nn.js
10036
10036
  var error38 = () => {
10037
10037
  const Sizable = {
10038
10038
  string: { unit: "teikn", verb: "\xE5 ha" },
@@ -10146,7 +10146,7 @@ function nn_default() {
10146
10146
  };
10147
10147
  }
10148
10148
 
10149
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/no.js
10149
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/no.js
10150
10150
  var error39 = () => {
10151
10151
  const Sizable = {
10152
10152
  string: { unit: "tegn", verb: "\xE5 ha" },
@@ -10260,7 +10260,7 @@ function no_default() {
10260
10260
  };
10261
10261
  }
10262
10262
 
10263
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ota.js
10263
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ota.js
10264
10264
  var error40 = () => {
10265
10265
  const Sizable = {
10266
10266
  string: { unit: "harf", verb: "olmal\u0131d\u0131r" },
@@ -10375,7 +10375,7 @@ function ota_default() {
10375
10375
  };
10376
10376
  }
10377
10377
 
10378
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ps.js
10378
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ps.js
10379
10379
  var error41 = () => {
10380
10380
  const Sizable = {
10381
10381
  string: { unit: "\u062A\u0648\u06A9\u064A", verb: "\u0648\u0644\u0631\u064A" },
@@ -10495,7 +10495,7 @@ function ps_default() {
10495
10495
  };
10496
10496
  }
10497
10497
 
10498
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pl.js
10498
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/pl.js
10499
10499
  var error42 = () => {
10500
10500
  const Sizable = {
10501
10501
  string: { unit: "znak\xF3w", verb: "mie\u0107" },
@@ -10610,7 +10610,7 @@ function pl_default() {
10610
10610
  };
10611
10611
  }
10612
10612
 
10613
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt.js
10613
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/pt.js
10614
10614
  var error43 = () => {
10615
10615
  const Sizable = {
10616
10616
  string: { unit: "caracteres" },
@@ -10754,7 +10754,7 @@ function pt_default() {
10754
10754
  };
10755
10755
  }
10756
10756
 
10757
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/pt-BR.js
10757
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/pt-BR.js
10758
10758
  var error44 = () => {
10759
10759
  const Sizable = {
10760
10760
  string: { unit: "caracteres" },
@@ -10899,7 +10899,7 @@ function pt_BR_default() {
10899
10899
  };
10900
10900
  }
10901
10901
 
10902
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ro.js
10902
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ro.js
10903
10903
  var error45 = () => {
10904
10904
  const Sizable = {
10905
10905
  string: { unit: "caractere", verb: "s\u0103 aib\u0103" },
@@ -11022,7 +11022,7 @@ function ro_default() {
11022
11022
  };
11023
11023
  }
11024
11024
 
11025
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ru.js
11025
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ru.js
11026
11026
  function getRussianPlural(count, one, few, many) {
11027
11027
  const absCount = Math.abs(count);
11028
11028
  const lastDigit = absCount % 10;
@@ -11191,7 +11191,7 @@ function ru_default() {
11191
11191
  };
11192
11192
  }
11193
11193
 
11194
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sk.js
11194
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/sk.js
11195
11195
  var error47 = () => {
11196
11196
  const Sizable = {
11197
11197
  string: { unit: "znakov", verb: "ma\u0165" },
@@ -11308,7 +11308,7 @@ function sk_default() {
11308
11308
  };
11309
11309
  }
11310
11310
 
11311
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sl.js
11311
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/sl.js
11312
11312
  var error48 = () => {
11313
11313
  const Sizable = {
11314
11314
  string: { unit: "znakov", verb: "imeti" },
@@ -11423,7 +11423,7 @@ function sl_default() {
11423
11423
  };
11424
11424
  }
11425
11425
 
11426
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/sv.js
11426
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/sv.js
11427
11427
  var error49 = () => {
11428
11428
  const Sizable = {
11429
11429
  string: { unit: "tecken", verb: "att ha" },
@@ -11539,7 +11539,7 @@ function sv_default() {
11539
11539
  };
11540
11540
  }
11541
11541
 
11542
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ta.js
11542
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ta.js
11543
11543
  var error50 = () => {
11544
11544
  const Sizable = {
11545
11545
  string: { unit: "\u0B8E\u0BB4\u0BC1\u0BA4\u0BCD\u0BA4\u0BC1\u0B95\u0BCD\u0B95\u0BB3\u0BCD", verb: "\u0B95\u0BCA\u0BA3\u0BCD\u0B9F\u0BBF\u0BB0\u0BC1\u0B95\u0BCD\u0B95 \u0BB5\u0BC7\u0BA3\u0BCD\u0B9F\u0BC1\u0BAE\u0BCD" },
@@ -11655,7 +11655,7 @@ function ta_default() {
11655
11655
  };
11656
11656
  }
11657
11657
 
11658
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tg.js
11658
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/tg.js
11659
11659
  var error51 = () => {
11660
11660
  const Sizable = {
11661
11661
  string: { unit: "\u0430\u043B\u043E\u043C\u0430\u0442", verb: "\u0434\u043E\u0448\u0442\u0430 \u0431\u043E\u0448\u0430\u0434" },
@@ -11772,7 +11772,7 @@ function tg_default() {
11772
11772
  };
11773
11773
  }
11774
11774
 
11775
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/th.js
11775
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/th.js
11776
11776
  var error52 = () => {
11777
11777
  const Sizable = {
11778
11778
  string: { unit: "\u0E15\u0E31\u0E27\u0E2D\u0E31\u0E01\u0E29\u0E23", verb: "\u0E04\u0E27\u0E23\u0E21\u0E35" },
@@ -11888,7 +11888,7 @@ function th_default() {
11888
11888
  };
11889
11889
  }
11890
11890
 
11891
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tk.js
11891
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/tk.js
11892
11892
  var error53 = () => {
11893
11893
  const Sizable = {
11894
11894
  string: { unit: "simwol", verb: "bolmaly" },
@@ -11996,7 +11996,7 @@ function tk_default() {
11996
11996
  };
11997
11997
  }
11998
11998
 
11999
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/tr.js
11999
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/tr.js
12000
12000
  var error54 = () => {
12001
12001
  const Sizable = {
12002
12002
  string: { unit: "karakter", verb: "olmal\u0131" },
@@ -12107,7 +12107,7 @@ function tr_default() {
12107
12107
  };
12108
12108
  }
12109
12109
 
12110
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uk.js
12110
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/uk.js
12111
12111
  var error55 = () => {
12112
12112
  const Sizable = {
12113
12113
  string: { unit: "\u0441\u0438\u043C\u0432\u043E\u043B\u0456\u0432", verb: "\u043C\u0430\u0442\u0438\u043C\u0435" },
@@ -12221,12 +12221,12 @@ function uk_default() {
12221
12221
  };
12222
12222
  }
12223
12223
 
12224
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ua.js
12224
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ua.js
12225
12225
  function ua_default() {
12226
12226
  return uk_default();
12227
12227
  }
12228
12228
 
12229
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/ur.js
12229
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/ur.js
12230
12230
  var error56 = () => {
12231
12231
  const Sizable = {
12232
12232
  string: { unit: "\u062D\u0631\u0648\u0641", verb: "\u06C1\u0648\u0646\u0627" },
@@ -12342,7 +12342,7 @@ function ur_default() {
12342
12342
  };
12343
12343
  }
12344
12344
 
12345
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/uz.js
12345
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/uz.js
12346
12346
  var error57 = () => {
12347
12347
  const Sizable = {
12348
12348
  string: { unit: "belgi", verb: "bo\u2018lishi kerak" },
@@ -12456,7 +12456,7 @@ function uz_default() {
12456
12456
  };
12457
12457
  }
12458
12458
 
12459
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/vi.js
12459
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/vi.js
12460
12460
  var error58 = () => {
12461
12461
  const Sizable = {
12462
12462
  string: { unit: "k\xFD t\u1EF1", verb: "c\xF3" },
@@ -12570,7 +12570,7 @@ function vi_default() {
12570
12570
  };
12571
12571
  }
12572
12572
 
12573
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-CN.js
12573
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/zh-CN.js
12574
12574
  var error59 = () => {
12575
12575
  const Sizable = {
12576
12576
  string: { unit: "\u5B57\u7B26", verb: "\u5305\u542B" },
@@ -12685,7 +12685,7 @@ function zh_CN_default() {
12685
12685
  };
12686
12686
  }
12687
12687
 
12688
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/zh-TW.js
12688
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/zh-TW.js
12689
12689
  var error60 = () => {
12690
12690
  const Sizable = {
12691
12691
  string: { unit: "\u5B57\u5143", verb: "\u64C1\u6709" },
@@ -12798,7 +12798,7 @@ function zh_TW_default() {
12798
12798
  };
12799
12799
  }
12800
12800
 
12801
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/locales/yo.js
12801
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/locales/yo.js
12802
12802
  var error61 = () => {
12803
12803
  const Sizable = {
12804
12804
  string: { unit: "\xE0mi", verb: "n\xED" },
@@ -12911,7 +12911,7 @@ function yo_default() {
12911
12911
  };
12912
12912
  }
12913
12913
 
12914
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/registries.js
12914
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/registries.js
12915
12915
  var _a2;
12916
12916
  var $output = /* @__PURE__ */ Symbol("ZodOutput");
12917
12917
  var $input = /* @__PURE__ */ Symbol("ZodInput");
@@ -12961,7 +12961,7 @@ function registry() {
12961
12961
  (_a2 = globalThis).__zod_globalRegistry ?? (_a2.__zod_globalRegistry = registry());
12962
12962
  var globalRegistry = globalThis.__zod_globalRegistry;
12963
12963
 
12964
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/compile.js
12964
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/compile.js
12965
12965
  var INVALID = /* @__PURE__ */ Symbol.for("zod.compile.invalid");
12966
12966
  var FALLBACK_FLAG = /* @__PURE__ */ Symbol.for("zod.compile.fallback");
12967
12967
  var ZodCompileAsyncError = class extends Error {
@@ -14563,7 +14563,7 @@ function generateTransformCheck(doc, ctx, schema, accessor) {
14563
14563
  return accessor;
14564
14564
  }
14565
14565
 
14566
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/api.js
14566
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/api.js
14567
14567
  function snapshotChecks(def) {
14568
14568
  if (def.checks)
14569
14569
  def.checks = [...def.checks];
@@ -15622,7 +15622,7 @@ function _stringFormat(Class2, format, fnOrRegex, _params = {}) {
15622
15622
  return inst;
15623
15623
  }
15624
15624
 
15625
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/to-json-schema.js
15625
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/to-json-schema.js
15626
15626
  function assignProps(target, ...sources) {
15627
15627
  for (const source of sources) {
15628
15628
  for (const key of Reflect.ownKeys(source)) {
@@ -16152,7 +16152,7 @@ var createStandardJSONSchemaMethod = (schema, io, processors = {}) => (params) =
16152
16152
  return finalize(ctx, schema);
16153
16153
  };
16154
16154
 
16155
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-processors.js
16155
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/json-schema-processors.js
16156
16156
  var narrowMin = (agg, key, value) => {
16157
16157
  if (agg[key] === void 0 || value > agg[key])
16158
16158
  agg[key] = value;
@@ -16900,7 +16900,7 @@ function toJSONSchema(input2, params) {
16900
16900
  return finalize(ctx, input2);
16901
16901
  }
16902
16902
 
16903
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema-generator.js
16903
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/json-schema-generator.js
16904
16904
  var JSONSchemaGenerator = class {
16905
16905
  /** @deprecated Access via ctx instead */
16906
16906
  get metadataRegistry() {
@@ -16978,10 +16978,10 @@ var JSONSchemaGenerator = class {
16978
16978
  }
16979
16979
  };
16980
16980
 
16981
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/json-schema.js
16981
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/json-schema.js
16982
16982
  var json_schema_exports = {};
16983
16983
 
16984
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
16984
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/schemas.js
16985
16985
  var schemas_exports2 = {};
16986
16986
  __export(schemas_exports2, {
16987
16987
  ZodAny: () => ZodAny,
@@ -17162,7 +17162,7 @@ __export(schemas_exports2, {
17162
17162
  xor: () => xor
17163
17163
  });
17164
17164
 
17165
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/checks.js
17165
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/checks.js
17166
17166
  var checks_exports2 = {};
17167
17167
  __export(checks_exports2, {
17168
17168
  endsWith: () => _endsWith,
@@ -17197,7 +17197,7 @@ __export(checks_exports2, {
17197
17197
  uppercase: () => _uppercase
17198
17198
  });
17199
17199
 
17200
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/errors.js
17200
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/errors.js
17201
17201
  var _installedErrorProtos = /* @__PURE__ */ new WeakSet([Object.prototype, Error.prototype]);
17202
17202
  function _lazyMethod(proto, key, make) {
17203
17203
  Object.defineProperty(proto, key, {
@@ -17243,7 +17243,7 @@ var ZodRealError = /* @__PURE__ */ $constructor("ZodError", initializer2, void 0
17243
17243
  Parent: Error
17244
17244
  });
17245
17245
 
17246
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/parse.js
17246
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/parse.js
17247
17247
  var parse2 = /* @__PURE__ */ _parse(ZodRealError);
17248
17248
  var parseAsync2 = /* @__PURE__ */ _parseAsync(ZodRealError);
17249
17249
  var safeParse2 = /* @__PURE__ */ _safeParse(ZodRealError);
@@ -17257,7 +17257,7 @@ var safeDecode2 = /* @__PURE__ */ _safeDecode(ZodRealError);
17257
17257
  var safeEncodeAsync2 = /* @__PURE__ */ _safeEncodeAsync(ZodRealError);
17258
17258
  var safeDecodeAsync2 = /* @__PURE__ */ _safeDecodeAsync(ZodRealError);
17259
17259
 
17260
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/schemas.js
17260
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/schemas.js
17261
17261
  function _ensureDefaultLocale() {
17262
17262
  if (!globalConfig.localeError)
17263
17263
  config(en_default());
@@ -18722,7 +18722,7 @@ function preprocess(fn, schema) {
18722
18722
  });
18723
18723
  }
18724
18724
 
18725
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/compat.js
18725
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/compat.js
18726
18726
  var ZodIssueCode = {
18727
18727
  invalid_type: "invalid_type",
18728
18728
  too_big: "too_big",
@@ -18748,7 +18748,7 @@ var ZodFirstPartyTypeKind;
18748
18748
  /* @__PURE__ */ (function(ZodFirstPartyTypeKind2) {
18749
18749
  })(ZodFirstPartyTypeKind || (ZodFirstPartyTypeKind = {}));
18750
18750
 
18751
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/iso.js
18751
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/iso.js
18752
18752
  var iso_exports = {};
18753
18753
  __export(iso_exports, {
18754
18754
  ZodISODate: () => ZodISODate,
@@ -18773,7 +18773,7 @@ function duration2(params) {
18773
18773
  return _isoDuration(ZodISODuration, params);
18774
18774
  }
18775
18775
 
18776
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/from-json-schema.js
18776
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/from-json-schema.js
18777
18777
  var z = {
18778
18778
  ...schemas_exports2,
18779
18779
  ...checks_exports2,
@@ -19506,7 +19506,7 @@ function fromJSONSchema(schema, params) {
19506
19506
  return convertSchema(normalized, ctx);
19507
19507
  }
19508
19508
 
19509
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/core/visit.js
19509
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/core/visit.js
19510
19510
  var RESOLVING = /* @__PURE__ */ Symbol("z.visit/resolving");
19511
19511
  function visit(schema, fnOrHandlers) {
19512
19512
  const fn = typeof fnOrHandlers === "function" ? fnOrHandlers : (node2, rewritten) => {
@@ -19661,7 +19661,7 @@ function visit(schema, fnOrHandlers) {
19661
19661
  return run(schema);
19662
19662
  }
19663
19663
 
19664
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/deep-partial.js
19664
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/deep-partial.js
19665
19665
  function deepPartial(schema) {
19666
19666
  return visit(schema, {
19667
19667
  object: (s) => s.partial(),
@@ -19673,7 +19673,7 @@ function deepPartial(schema) {
19673
19673
  });
19674
19674
  }
19675
19675
 
19676
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/in-out.js
19676
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/in-out.js
19677
19677
  function withChecks(side, checks) {
19678
19678
  if (!checks?.length)
19679
19679
  return side;
@@ -19703,7 +19703,7 @@ function output(schema) {
19703
19703
  });
19704
19704
  }
19705
19705
 
19706
- // node_modules/.pnpm/zod@4.6.5/node_modules/zod/v4/classic/coerce.js
19706
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/zod/v4/classic/coerce.js
19707
19707
  var coerce_exports = {};
19708
19708
  __export(coerce_exports, {
19709
19709
  bigint: () => bigint3,
@@ -19728,9 +19728,8 @@ function date4(params) {
19728
19728
  return _coercedDate(ZodDate, params);
19729
19729
  }
19730
19730
 
19731
- // node_modules/.pnpm/@modelcontextprotocol+core@2.0.0/node_modules/@modelcontextprotocol/core/dist/auth-CUe6YdwF.mjs
19731
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/core/dist/auth-BNDyLTqp.mjs
19732
19732
  var LATEST_PROTOCOL_VERSION = "2025-11-25";
19733
- var DEFAULT_NEGOTIATED_PROTOCOL_VERSION = "2025-03-26";
19734
19733
  var SUPPORTED_PROTOCOL_VERSIONS = [
19735
19734
  LATEST_PROTOCOL_VERSION,
19736
19735
  "2025-06-18",
@@ -20566,7 +20565,8 @@ var OAuthMetadataSchema = looseObject({
20566
20565
  introspection_endpoint_auth_signing_alg_values_supported: array(string2()).optional(),
20567
20566
  code_challenge_methods_supported: array(string2()).optional(),
20568
20567
  client_id_metadata_document_supported: boolean2().optional(),
20569
- authorization_response_iss_parameter_supported: boolean2().optional().catch(void 0)
20568
+ authorization_response_iss_parameter_supported: boolean2().optional().catch(void 0),
20569
+ dpop_signing_alg_values_supported: array(string2()).optional()
20570
20570
  });
20571
20571
  var OpenIdProviderMetadataSchema = looseObject({
20572
20572
  issuer: string2(),
@@ -20617,7 +20617,8 @@ var OAuthTokensSchema = object({
20617
20617
  token_type: string2(),
20618
20618
  expires_in: coerce_exports.number().optional(),
20619
20619
  scope: string2().optional(),
20620
- refresh_token: string2().optional()
20620
+ refresh_token: string2().optional(),
20621
+ issuer: string2().optional().catch(void 0)
20621
20622
  }).strip();
20622
20623
  var IdJagTokenExchangeResponseSchema = object({
20623
20624
  issued_token_type: literal("urn:ietf:params:oauth:token-type:id-jag"),
@@ -20655,7 +20656,8 @@ var OAuthClientInformationSchema = object({
20655
20656
  client_id: string2(),
20656
20657
  client_secret: string2().optional(),
20657
20658
  client_id_issued_at: number2().optional(),
20658
- client_secret_expires_at: number2().optional()
20659
+ client_secret_expires_at: number2().optional(),
20660
+ issuer: string2().optional().catch(void 0)
20659
20661
  }).strip();
20660
20662
  var OAuthClientInformationFullSchema = OAuthClientMetadataSchema.merge(OAuthClientInformationSchema);
20661
20663
  var OAuthClientRegistrationErrorSchema = object({
@@ -20667,7 +20669,7 @@ var OAuthTokenRevocationRequestSchema = object({
20667
20669
  token_type_hint: string2().optional()
20668
20670
  }).strip();
20669
20671
 
20670
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/src-D_zzAWoS.mjs
20672
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/src-xKF0PJN-.mjs
20671
20673
  var BRANDS = /* @__PURE__ */ Symbol.for("mcp.sdk.errorBrands");
20672
20674
  function stampErrorBrands(instance, ctor) {
20673
20675
  const brands = /* @__PURE__ */ new Set();
@@ -20713,6 +20715,8 @@ var OAuthErrorCode = /* @__PURE__ */ (function(OAuthErrorCode$1) {
20713
20715
  OAuthErrorCode$1["InvalidRedirectUri"] = "invalid_redirect_uri";
20714
20716
  OAuthErrorCode$1["InsufficientScope"] = "insufficient_scope";
20715
20717
  OAuthErrorCode$1["InvalidTarget"] = "invalid_target";
20718
+ OAuthErrorCode$1["InvalidDpopProof"] = "invalid_dpop_proof";
20719
+ OAuthErrorCode$1["UseDpopNonce"] = "use_dpop_nonce";
20716
20720
  return OAuthErrorCode$1;
20717
20721
  })({});
20718
20722
  var OAuthError = class OAuthError2 extends Error {
@@ -20802,8 +20806,18 @@ var SdkError = class extends Error {
20802
20806
  if (typeof this !== "function") throw new TypeError("isInstance must be called on the class (e.g. `SdkError.isInstance(value)`); for callbacks use `v => SdkError.isInstance(v)`");
20803
20807
  return brandedHasInstance(this, value);
20804
20808
  }
20805
- constructor(code, message, data) {
20806
- super(message);
20809
+ /**
20810
+ * @param code - Stable string code identifying the failure ({@linkcode SdkErrorCode}).
20811
+ * @param message - Human-readable description.
20812
+ * @param data - Optional structured payload (for example the HTTP status carried by
20813
+ * {@linkcode SdkHttpError}). Opaque to the SDK: a `cause` key inside `data` is not
20814
+ * promoted to `Error.cause`.
20815
+ * @param options - Standard `ErrorOptions`, forwarded to `Error`. Pass the underlying
20816
+ * failure as `{ cause }` so it is reachable through the `Error.cause` chain that
20817
+ * loggers and error trackers walk.
20818
+ */
20819
+ constructor(code, message, data, options) {
20820
+ super(message, options);
20807
20821
  this.code = code;
20808
20822
  this.data = data;
20809
20823
  this.name = "SdkError";
@@ -20814,8 +20828,11 @@ var SdkHttpError = class extends SdkError {
20814
20828
  static {
20815
20829
  Object.defineProperty(this, "mcpBrand", { value: "mcp.SdkHttpError" });
20816
20830
  }
20817
- constructor(code, message, data) {
20818
- super(code, message, data);
20831
+ /**
20832
+ * @param options - Standard `ErrorOptions`, forwarded to `Error` (see {@linkcode SdkError}).
20833
+ */
20834
+ constructor(code, message, data, options) {
20835
+ super(code, message, data, options);
20819
20836
  this.name = "SdkHttpError";
20820
20837
  }
20821
20838
  get status() {
@@ -20830,6 +20847,12 @@ function resourceUrlFromServerUrl(url2) {
20830
20847
  resourceURL.hash = "";
20831
20848
  return resourceURL;
20832
20849
  }
20850
+ function withoutIssuer(body) {
20851
+ if (typeof body !== "object" || body === null || Array.isArray(body)) return body;
20852
+ const copy = { ...body };
20853
+ delete copy.issuer;
20854
+ return copy;
20855
+ }
20833
20856
  function checkResourceAllowed({ requestedResource, configuredResource }) {
20834
20857
  const requested = typeof requestedResource === "string" ? new URL(requestedResource) : new URL(requestedResource.href);
20835
20858
  const configured = typeof configuredResource === "string" ? new URL(configuredResource) : new URL(configuredResource.href);
@@ -21939,7 +21962,7 @@ function getNotificationSchema(method) {
21939
21962
  }
21940
21963
  var rev2025RequestMethods = Object.keys(requestMethodKeys$1);
21941
21964
  var rev2025NotificationMethods = Object.keys(notificationMethodKeys$1);
21942
- function isPlainObject$4(value) {
21965
+ function isPlainObject$5(value) {
21943
21966
  return value !== null && typeof value === "object" && !Array.isArray(value);
21944
21967
  }
21945
21968
  function triState$1(schema, raw) {
@@ -21962,7 +21985,7 @@ var NOT_IN_ERA$1 = {
21962
21985
  reason: "not-in-era"
21963
21986
  };
21964
21987
  function toolNeedsLegacyWrap(t) {
21965
- return isPlainObject$4(t) && isPlainObject$4(t["outputSchema"]) && isNonObjectJsonSchemaRoot(t["outputSchema"]);
21988
+ return isPlainObject$5(t) && isPlainObject$5(t["outputSchema"]) && isNonObjectJsonSchemaRoot(t["outputSchema"]);
21966
21989
  }
21967
21990
  function toNeutralResult(value) {
21968
21991
  return value;
@@ -21996,7 +22019,7 @@ var rev2025Codec = {
21996
22019
  };
21997
22020
  },
21998
22021
  decodeResult(_method, raw) {
21999
- if (isPlainObject$4(raw) && "resultType" in raw) {
22022
+ if (isPlainObject$5(raw) && "resultType" in raw) {
22000
22023
  const stripped = { ...raw };
22001
22024
  delete stripped["resultType"];
22002
22025
  return {
@@ -23075,7 +23098,7 @@ function fillCacheFields(method, result) {
23075
23098
  delete filled[RESULT_CACHE_HINT_FALLBACK];
23076
23099
  return filled;
23077
23100
  }
23078
- function isPlainObject$3(value) {
23101
+ function isPlainObject$4(value) {
23079
23102
  return value !== null && typeof value === "object" && !Array.isArray(value);
23080
23103
  }
23081
23104
  function stampServerInfoMeta(result, serverInfo) {
@@ -23085,7 +23108,7 @@ function stampServerInfoMeta(result, serverInfo) {
23085
23108
  ...result,
23086
23109
  _meta: { [SERVER_INFO_META_KEY]: serverInfo }
23087
23110
  };
23088
- if (!isPlainObject$3(meta3)) return result;
23111
+ if (!isPlainObject$4(meta3)) return result;
23089
23112
  if (meta3[SERVER_INFO_META_KEY] !== void 0) return result;
23090
23113
  return {
23091
23114
  ...result,
@@ -23189,7 +23212,7 @@ function getNotificationSchema2026(method) {
23189
23212
  }
23190
23213
  var rev2026RequestMethods = Object.keys(requestMethodKeys);
23191
23214
  var rev2026NotificationMethods = Object.keys(notificationMethodKeys);
23192
- function isPlainObject$2(value) {
23215
+ function isPlainObject$3(value) {
23193
23216
  return value !== null && typeof value === "object" && !Array.isArray(value);
23194
23217
  }
23195
23218
  function triState(schema, raw) {
@@ -23223,14 +23246,14 @@ function enforceDeletedFields(method, result) {
23223
23246
  return next;
23224
23247
  };
23225
23248
  const tools = result.tools;
23226
- if (method === "tools/list" && Array.isArray(tools) && tools.some((tool) => isPlainObject$2(tool) && "execution" in tool)) copy().tools = tools.map((tool) => {
23227
- if (!isPlainObject$2(tool) || !("execution" in tool)) return tool;
23249
+ if (method === "tools/list" && Array.isArray(tools) && tools.some((tool) => isPlainObject$3(tool) && "execution" in tool)) copy().tools = tools.map((tool) => {
23250
+ if (!isPlainObject$3(tool) || !("execution" in tool)) return tool;
23228
23251
  const rest = { ...tool };
23229
23252
  delete rest["execution"];
23230
23253
  return rest;
23231
23254
  });
23232
23255
  const capabilities = result.capabilities;
23233
- if (isPlainObject$2(capabilities) && "tasks" in capabilities) {
23256
+ if (isPlainObject$3(capabilities) && "tasks" in capabilities) {
23234
23257
  const rest = { ...capabilities };
23235
23258
  delete rest["tasks"];
23236
23259
  copy().capabilities = rest;
@@ -23277,7 +23300,7 @@ var rev2026Codec = {
23277
23300
  projectCallToolResult: (result) => appendTextFallbackForNonObject(result),
23278
23301
  inputRequestSchema: getInputRequestSchema2026,
23279
23302
  decodeResult(method, raw) {
23280
- if (!isPlainObject$2(raw)) return {
23303
+ if (!isPlainObject$3(raw)) return {
23281
23304
  kind: "invalid",
23282
23305
  error: new SdkError(SdkErrorCode.InvalidResult, `Invalid result for ${method}: not an object`, { method })
23283
23306
  };
@@ -23298,8 +23321,10 @@ var rev2026Codec = {
23298
23321
  };
23299
23322
  if (rawResultType === "input_required") {
23300
23323
  const rawInputRequests = raw["inputRequests"];
23301
- const inputRequests = isPlainObject$2(rawInputRequests) ? rawInputRequests : {};
23324
+ const inputRequests = isPlainObject$3(rawInputRequests) ? rawInputRequests : {};
23302
23325
  const requestState = raw["requestState"];
23326
+ const metaParse = raw["_meta"] === void 0 ? void 0 : buildSchemas2026().ResultMetaSchema.safeParse(raw["_meta"]);
23327
+ const meta3 = metaParse?.success ? metaParse.data : void 0;
23303
23328
  if (Object.keys(inputRequests).length === 0 && typeof requestState !== "string") return {
23304
23329
  kind: "invalid",
23305
23330
  error: new SdkError(SdkErrorCode.InvalidResult, `Invalid result for ${method}: input_required carries neither inputRequests nor requestState (every input_required result must include at least one of the two)`, {
@@ -23310,7 +23335,8 @@ var rev2026Codec = {
23310
23335
  return {
23311
23336
  kind: "input_required",
23312
23337
  inputRequests,
23313
- ...typeof requestState === "string" && { requestState }
23338
+ ...typeof requestState === "string" && { requestState },
23339
+ ...meta3 !== void 0 && { _meta: meta3 }
23314
23340
  };
23315
23341
  }
23316
23342
  if (rawResultType !== "complete") return {
@@ -23748,7 +23774,7 @@ var INBOUND_VALIDATION_LADDER = [
23748
23774
  evaluatedAt: "pre-dispatch",
23749
23775
  codes: [HEADER_MISMATCH_ERROR_CODE],
23750
23776
  conformance: ["http-header-validation"],
23751
- rationale: "SEP-2243 standard `Mcp-Method` / `Mcp-Name` headers \u2014 presence, sentinel decoding, and `Mcp-Name` \u2194 body cross-check \u2014 are validated by the HTTP entry on a modern-classified request after the supported-revision gate and before dispatch. The classifier\u2019s own header-mismatch cells (protocol-version, `Mcp-Method` mismatch) stay on the edge `era-classification` rung; this rung carries the entry-layer presence/`Mcp-Name` half. Evaluated before the capability gate, the factory call, and the `Mcp-Param-*` rung so a request that fails several rungs is answered by the standard-header rung first. The documented order (after method-registry 5 and request-params 6) is NOT the observed precedence: serveModern evaluates this rung immediately after the supported-revision gate, so a request that also fails a dispatch rung is answered here before the dispatch rungs (5\u20136) are consulted."
23777
+ rationale: "SEP-2243 standard `MCP-Protocol-Version` / `Mcp-Method` / `Mcp-Name` headers \u2014 presence, sentinel decoding, and `Mcp-Name` \u2194 body cross-check \u2014 are validated by the HTTP entry on a modern-classified request after the supported-revision gate and before dispatch. The spec requires `MCP-Protocol-Version` and `Mcp-Method` on every modern *request* POST (`Mcp-Name` only for the methods that mirror `params.name` / `params.uri` / `params.taskId`, see `MCP_NAME_HEADER_SOURCE`) and names them in that order, so a request missing several is answered by the earliest. Notification POSTs are exempt: the presence half runs on requests only, so a modern-enveloped notification is dispatched even with no standard headers at all. The classifier\u2019s own header-mismatch cells (protocol-version, `Mcp-Method` mismatch) stay on the edge `era-classification` rung; this rung carries the entry-layer presence/`Mcp-Name` half \u2014 including the missing `MCP-Protocol-Version` cell, which cannot live on the edge rung without breaking body-primary classification. Evaluated before the capability gate, the factory call, and the `Mcp-Param-*` rung so a request that fails several rungs is answered by the standard-header rung first. The documented order (after method-registry 5 and request-params 6) is NOT the observed precedence: serveModern evaluates this rung immediately after the supported-revision gate, so a request that also fails a dispatch rung is answered here before the dispatch rungs (5\u20136) are consulted."
23752
23778
  },
23753
23779
  {
23754
23780
  rung: "client-capabilities",
@@ -23775,6 +23801,26 @@ var LADDER_ERROR_HTTP_STATUS = {
23775
23801
  [ProtocolErrorCode.MissingRequiredClientCapability]: 400,
23776
23802
  [HEADER_MISMATCH_ERROR_CODE]: 400
23777
23803
  };
23804
+ var MCP_NAME_HEADER_SOURCE = {
23805
+ "tools/call": "name",
23806
+ "prompts/get": "name",
23807
+ "resources/read": "uri",
23808
+ "tasks/get": "taskId",
23809
+ "tasks/update": "taskId",
23810
+ "tasks/cancel": "taskId"
23811
+ };
23812
+ function mcpNameSource(method, params) {
23813
+ const field = Object.hasOwn(MCP_NAME_HEADER_SOURCE, method) ? MCP_NAME_HEADER_SOURCE[method] : void 0;
23814
+ if (field === void 0) return;
23815
+ const raw = isPlainObject$2(params) ? params[field] : void 0;
23816
+ return {
23817
+ field,
23818
+ value: typeof raw === "string" ? raw : void 0
23819
+ };
23820
+ }
23821
+ function isPlainObject$2(value) {
23822
+ return value !== null && typeof value === "object" && !Array.isArray(value);
23823
+ }
23778
23824
  function parseSchema(schema, data) {
23779
23825
  return safeParse2(schema, data);
23780
23826
  }
@@ -24531,7 +24577,7 @@ var Protocol = class {
24531
24577
  return this._requestHandlers.get(method);
24532
24578
  }
24533
24579
  async _oncancel(notification) {
24534
- if (!notification.params.requestId) return;
24580
+ if (notification.params.requestId === void 0) return;
24535
24581
  this._requestHandlerAbortControllers.get(notification.params.requestId)?.abort(notification.params.reason);
24536
24582
  }
24537
24583
  _setupTimeout(messageId, timeout, maxTotalTimeout, onTimeout, resetTimeoutOnProgress = false) {
@@ -24930,19 +24976,20 @@ var Protocol = class {
24930
24976
  const cancel = (reason) => {
24931
24977
  if (responseReceived) return;
24932
24978
  this._progressHandlers.delete(messageId);
24933
- if (requestAbort === void 0) this._transport?.send(this._envelopeOutbound({
24934
- jsonrpc: "2.0",
24935
- method: "notifications/cancelled",
24936
- params: {
24937
- requestId: messageId,
24938
- reason: String(reason)
24939
- }
24940
- }), {
24941
- relatedRequestId,
24942
- resumptionToken,
24943
- onresumptiontoken
24944
- }).catch((error62) => this._onerror(/* @__PURE__ */ new Error(`Failed to send cancellation: ${error62}`)));
24945
- else requestAbort.abort();
24979
+ if (requestAbort === void 0) {
24980
+ if (request.method !== "initialize") this._transport?.send(this._envelopeOutbound({
24981
+ jsonrpc: "2.0",
24982
+ method: "notifications/cancelled",
24983
+ params: {
24984
+ requestId: messageId,
24985
+ reason: String(reason)
24986
+ }
24987
+ }), {
24988
+ relatedRequestId,
24989
+ resumptionToken,
24990
+ onresumptiontoken
24991
+ }).catch((error62) => this._onerror(/* @__PURE__ */ new Error(`Failed to send cancellation: ${error62}`)));
24992
+ } else requestAbort.abort();
24946
24993
  reject(reason instanceof SdkError ? reason : new SdkError(SdkErrorCode.RequestTimeout, String(reason)));
24947
24994
  };
24948
24995
  this._responseHandlers.set(messageId, (response) => {
@@ -25004,7 +25051,7 @@ var Protocol = class {
25004
25051
  * Emits a notification, which is a one-way message that does not expect a response.
25005
25052
  */
25006
25053
  async notification(notification, options) {
25007
- return this._notificationViaCodec(this._resolveOutboundCodec(notification.method), notification, options);
25054
+ return await this._notificationViaCodec(this._resolveOutboundCodec(notification.method), notification, options);
25008
25055
  }
25009
25056
  /**
25010
25057
  * The notification funnel proper, keyed by the resolved era codec —
@@ -25022,7 +25069,7 @@ var Protocol = class {
25022
25069
  jsonrpc: "2.0",
25023
25070
  ...notification
25024
25071
  });
25025
- if ((this._options?.debouncedNotificationMethods ?? []).includes(notification.method) && !notification.params && !options?.relatedRequestId) {
25072
+ if ((this._options?.debouncedNotificationMethods ?? []).includes(notification.method) && !notification.params && options?.relatedRequestId === void 0) {
25026
25073
  if (this._pendingDebouncedNotifications.has(notification.method)) return;
25027
25074
  this._pendingDebouncedNotifications.add(notification.method);
25028
25075
  Promise.resolve().then(() => {
@@ -25234,7 +25281,8 @@ function manualInputRequiredValue(decoded) {
25234
25281
  return {
25235
25282
  resultType: "input_required",
25236
25283
  inputRequests: decoded.inputRequests,
25237
- ...decoded.requestState !== void 0 && { requestState: decoded.requestState }
25284
+ ...decoded.requestState !== void 0 && { requestState: decoded.requestState },
25285
+ ...decoded._meta !== void 0 && { _meta: decoded._meta }
25238
25286
  };
25239
25287
  }
25240
25288
  var require_content_type = /* @__PURE__ */ __commonJSMin(((exports) => {
@@ -25352,7 +25400,7 @@ function createFetchWithInit(baseFetch = fetch, baseInit) {
25352
25400
  };
25353
25401
  }
25354
25402
 
25355
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/ajvProvider-97rDpkRx.mjs
25403
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/ajvProvider-97rDpkRx.mjs
25356
25404
  var require_code$1 = /* @__PURE__ */ __commonJSMin(((exports) => {
25357
25405
  Object.defineProperty(exports, "__esModule", { value: true });
25358
25406
  exports.regexpCode = exports.getEsmExportName = exports.getProperty = exports.safeStringify = exports.stringify = exports.strConcat = exports.addCodeArg = exports.str = exports._ = exports.nil = exports._Code = exports.Name = exports.IDENTIFIER = exports._CodeOrName = void 0;
@@ -32362,10 +32410,10 @@ var AjvJsonSchemaValidator = class {
32362
32410
  };
32363
32411
  var Ajv = import_ajv.Ajv;
32364
32412
 
32365
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/shimsNode.mjs
32413
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/shimsNode.mjs
32366
32414
  var CORS_IS_POSSIBLE = false;
32367
32415
 
32368
- // node_modules/.pnpm/pkce-challenge@5.0.1/node_modules/pkce-challenge/dist/index.node.js
32416
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/pkce-challenge/dist/index.node.js
32369
32417
  var crypto;
32370
32418
  crypto = globalThis.crypto?.webcrypto ?? // Node.js [18-16] REPL
32371
32419
  globalThis.crypto ?? // Node.js >18
@@ -32408,7 +32456,7 @@ async function pkceChallenge(length) {
32408
32456
  };
32409
32457
  }
32410
32458
 
32411
- // node_modules/.pnpm/eventsource-parser@3.1.1/node_modules/eventsource-parser/dist/index.js
32459
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/eventsource-parser/dist/index.js
32412
32460
  var ParseError = class extends Error {
32413
32461
  constructor(message, options) {
32414
32462
  super(message), this.name = "ParseError", this.type = options.type, this.field = options.field, this.value = options.value, this.line = options.line;
@@ -32584,7 +32632,7 @@ function isEventPrefix(chunk, i, firstCharCode) {
32584
32632
  return firstCharCode === 101 && chunk.charCodeAt(i + 1) === 118 && chunk.charCodeAt(i + 2) === 101 && chunk.charCodeAt(i + 3) === 110 && chunk.charCodeAt(i + 4) === 116 && chunk.charCodeAt(i + 5) === 58;
32585
32633
  }
32586
32634
 
32587
- // node_modules/.pnpm/eventsource@3.0.7/node_modules/eventsource/dist/index.js
32635
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/eventsource/dist/index.js
32588
32636
  var ErrorEvent = class extends Event {
32589
32637
  /**
32590
32638
  * Constructs a new `ErrorEvent` instance. This is typically not called directly,
@@ -32881,7 +32929,7 @@ function getBaseURL() {
32881
32929
  return doc && typeof doc == "object" && "baseURI" in doc && typeof doc.baseURI == "string" ? doc.baseURI : void 0;
32882
32930
  }
32883
32931
 
32884
- // node_modules/.pnpm/eventsource-parser@3.1.1/node_modules/eventsource-parser/dist/stream.js
32932
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/eventsource-parser/dist/stream.js
32885
32933
  var EventSourceParserStream = class extends TransformStream {
32886
32934
  constructor({ onError, onRetry, onComment, maxBufferSize } = {}) {
32887
32935
  let parser;
@@ -32906,7 +32954,7 @@ var EventSourceParserStream = class extends TransformStream {
32906
32954
  }
32907
32955
  };
32908
32956
 
32909
- // node_modules/.pnpm/@modelcontextprotocol+client@2.0.0/node_modules/@modelcontextprotocol/client/dist/index.mjs
32957
+ // node_modules/.pnpm/mcporter@0.14.2/node_modules/mcporter/node_modules/@modelcontextprotocol/client/dist/index.mjs
32910
32958
  var OAuthClientFlowError = class extends Error {
32911
32959
  static {
32912
32960
  Object.defineProperty(this, "mcpBrand", { value: "mcp.OAuthClientFlowError" });
@@ -32974,7 +33022,7 @@ var InsecureTokenEndpointError = class extends OAuthClientFlowError {
32974
33022
  /** The token endpoint URL that was rejected. */
32975
33023
  tokenEndpoint;
32976
33024
  constructor(tokenEndpoint) {
32977
- super(`Refusing to send credentials to non-https token endpoint '${tokenEndpoint}'. OAuth token requests MUST use TLS (localhost / 127.0.0.1 / ::1 are exempt).`);
33025
+ super(`Refusing to send credentials to non-https token endpoint '${tokenEndpoint}'. OAuth token requests MUST use TLS (localhost / *.localhost / 127.0.0.1 / ::1 are exempt).`);
32978
33026
  this.tokenEndpoint = tokenEndpoint;
32979
33027
  }
32980
33028
  };
@@ -32983,7 +33031,7 @@ var AuthorizationServerMismatchError = class extends OAuthClientFlowError {
32983
33031
  Object.defineProperty(this, "mcpBrand", { value: "mcp.AuthorizationServerMismatchError" });
32984
33032
  }
32985
33033
  constructor(recordedIssuer, currentIssuer) {
32986
- super(`Authorization server changed between redirect and callback (redirected to ${JSON.stringify(recordedIssuer)}, callback resolved ${JSON.stringify(currentIssuer)}); refusing to send authorization_code/code_verifier to a different token endpoint`);
33034
+ super(`Authorization server mismatch: credentials are bound to ${JSON.stringify(recordedIssuer)} but this call resolved ${JSON.stringify(currentIssuer)}; refusing to present them to a different authorization server`);
32987
33035
  this.recordedIssuer = recordedIssuer;
32988
33036
  this.currentIssuer = currentIssuer;
32989
33037
  }
@@ -33006,10 +33054,13 @@ var InsufficientScopeError = class extends OAuthClientFlowError {
33006
33054
  }
33007
33055
  };
33008
33056
  function discardIfIssuerMismatch(stored, issuer, opts) {
33009
- if (stored === void 0) return void 0;
33010
- if (stored.issuer === void 0) {
33057
+ if (!stored) return void 0;
33058
+ if (typeof stored.issuer !== "string") {
33011
33059
  if (opts?.canPersistStamp !== false) console.warn("[mcp-sdk] SEP-2352: stored OAuth credential has no 'issuer' stamp (pre-upgrade storage or provider not round-tripping the value). SEP-2352 isolation is inactive for this read; ensure your provider round-trips the issuer field.");
33012
- return stored;
33060
+ return stored.issuer === void 0 ? stored : {
33061
+ ...stored,
33062
+ issuer: void 0
33063
+ };
33013
33064
  }
33014
33065
  return issuersMatch(stored.issuer, issuer) ? stored : void 0;
33015
33066
  }
@@ -33021,22 +33072,49 @@ function isOAuthClientProvider(provider) {
33021
33072
  const p = provider;
33022
33073
  return typeof p.tokens === "function" && typeof p.clientInformation === "function";
33023
33074
  }
33024
- async function handleOAuthUnauthorized(provider, ctx, extraAuthOptions) {
33075
+ async function handleOAuthUnauthorized(provider, ctx, extraAuthOptions, options) {
33025
33076
  const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(ctx.response);
33026
33077
  if (await auth(provider, {
33027
33078
  serverUrl: ctx.serverUrl,
33028
33079
  resourceMetadataUrl,
33029
33080
  scope,
33030
- fetchFn: ctx.fetchFn,
33081
+ fetchFn: options?.fetchFn ?? ctx.fetchFn,
33031
33082
  ...extraAuthOptions
33032
33083
  }) !== "AUTHORIZED") throw new UnauthorizedError();
33033
33084
  }
33085
+ function presentedBearerToken(headers) {
33086
+ const authorization = headers.get("authorization");
33087
+ const match = authorization?.match(/^Bearer\s+(.+)$/i);
33088
+ return match?.[1];
33089
+ }
33034
33090
  function adaptOAuthProvider(provider, extraAuthOptions) {
33091
+ const tokensByAccessToken = /* @__PURE__ */ new Map();
33035
33092
  return {
33036
33093
  token: async () => {
33037
- return (await provider.tokens())?.access_token;
33094
+ const tokens = await provider.tokens();
33095
+ if (tokens?.access_token) {
33096
+ if (!tokensByAccessToken.has(tokens.access_token) && tokensByAccessToken.size >= 8) {
33097
+ tokensByAccessToken.delete(tokensByAccessToken.keys().next().value);
33098
+ }
33099
+ tokensByAccessToken.set(tokens.access_token, tokens);
33100
+ }
33101
+ return tokens?.access_token;
33038
33102
  },
33039
- onUnauthorized: async (ctx) => handleOAuthUnauthorized(provider, ctx, extraAuthOptions)
33103
+ onUnauthorized: async (ctx) => {
33104
+ const presentedTokens = ctx.presentedToken ? tokensByAccessToken.get(ctx.presentedToken) : void 0;
33105
+ if (ctx.presentedToken) tokensByAccessToken.delete(ctx.presentedToken);
33106
+ const continueDefault = async (options) => handleOAuthUnauthorized(provider, ctx, extraAuthOptions, options);
33107
+ if (provider.onOAuthUnauthorized) {
33108
+ await provider.onOAuthUnauthorized({
33109
+ response: ctx.response,
33110
+ serverUrl: ctx.serverUrl,
33111
+ fetchFn: ctx.fetchFn,
33112
+ presentedTokens
33113
+ }, continueDefault);
33114
+ return;
33115
+ }
33116
+ await continueDefault();
33117
+ }
33040
33118
  };
33041
33119
  }
33042
33120
  var UnauthorizedError = class extends Error {
@@ -33164,7 +33242,7 @@ function applyPublicAuth(clientId, params) {
33164
33242
  params.set("client_id", clientId);
33165
33243
  }
33166
33244
  function isLoopbackHost(hostname3) {
33167
- return hostname3 === "localhost" || hostname3 === "127.0.0.1" || hostname3 === "[::1]" || hostname3 === "::1";
33245
+ return hostname3 === "localhost" || hostname3.endsWith(".localhost") || hostname3 === "127.0.0.1" || hostname3 === "[::1]" || hostname3 === "::1";
33168
33246
  }
33169
33247
  function assertSecureTokenEndpoint(tokenEndpoint) {
33170
33248
  const url2 = new URL(String(tokenEndpoint));
@@ -33203,16 +33281,22 @@ async function parseErrorResponse(input2) {
33203
33281
  return new OAuthError(OAuthErrorCode.ServerError, errorMessage);
33204
33282
  }
33205
33283
  }
33284
+ function warnCredentialInvalidation(provider, error62, invalidated) {
33285
+ const action = provider.invalidateCredentials === void 0 ? `retrying authorization without discarding the stored ${invalidated} (provider implements no invalidateCredentials())` : `invalidating the stored ${invalidated} and retrying authorization`;
33286
+ console.warn(`[mcp-sdk] OAuth ${JSON.stringify(error62.code)} \u2014 ${action}. Cause: ${JSON.stringify(error62.message)}`);
33287
+ }
33206
33288
  async function auth(provider, options) {
33207
33289
  try {
33208
33290
  return await authInternal(provider, options);
33209
33291
  } catch (error62) {
33210
33292
  if (error62 instanceof OAuthError) {
33211
33293
  if (error62.code === OAuthErrorCode.InvalidClient || error62.code === OAuthErrorCode.UnauthorizedClient) {
33294
+ warnCredentialInvalidation(provider, error62, "client credentials and tokens");
33212
33295
  await provider.invalidateCredentials?.("client");
33213
33296
  await provider.invalidateCredentials?.("tokens");
33214
33297
  return await authInternal(provider, options);
33215
- } else if (error62.code === OAuthErrorCode.InvalidGrant) {
33298
+ } else if (error62.code === OAuthErrorCode.InvalidGrant || error62.code === OAuthErrorCode.InvalidDpopProof) {
33299
+ warnCredentialInvalidation(provider, error62, "tokens");
33216
33300
  await provider.invalidateCredentials?.("tokens");
33217
33301
  return await authInternal(provider, options);
33218
33302
  }
@@ -33280,8 +33364,9 @@ async function authInternal(provider, { serverUrl, authorizationCode, iss, scope
33280
33364
  } else if (!issuersMatch(recordedIssuer, issuer)) throw new AuthorizationServerMismatchError(recordedIssuer, issuer);
33281
33365
  }
33282
33366
  if (freshDiscoveryState) await provider.saveDiscoveryState?.(freshDiscoveryState);
33283
- const resource = await selectResourceURL(serverUrl, provider, resourceMetadata);
33284
- if (resource) await provider.saveResourceUrl?.(String(resource));
33367
+ const selectedResource = await selectResourceURL(serverUrl, provider, resourceMetadata);
33368
+ const resource = selectedResource && resourceMetadata && !provider.validateResourceURL ? resourceMetadata.resource : selectedResource;
33369
+ if (resource) await provider.saveResourceUrl?.(resourceIndicatorToString(resource));
33285
33370
  const resolvedScope = determineScope({
33286
33371
  requestedScope: scope,
33287
33372
  resourceMetadata,
@@ -33352,24 +33437,30 @@ async function authInternal(provider, { serverUrl, authorizationCode, iss, scope
33352
33437
  };
33353
33438
  await provider.saveTokens(tokens, infoCtx);
33354
33439
  }
33355
- if (tokens?.refresh_token && !forceReauthorization) try {
33356
- const newTokens = await refreshAuthorization(authorizationServerUrl, {
33357
- metadata,
33358
- clientInformation,
33359
- refreshToken: tokens.refresh_token,
33360
- resource,
33361
- addClientAuthentication: provider.addClientAuthentication,
33362
- fetchFn
33363
- });
33364
- await provider.saveTokens({
33365
- ...newTokens,
33366
- issuer
33367
- }, infoCtx);
33368
- return "AUTHORIZED";
33369
- } catch (error62) {
33370
- if (error62 instanceof InsecureTokenEndpointError) throw error62;
33371
- if (!(error62 instanceof OAuthError) || error62.code === OAuthErrorCode.ServerError) {
33372
- } else throw error62;
33440
+ if (tokens?.refresh_token && !forceReauthorization) {
33441
+ let newTokens;
33442
+ try {
33443
+ newTokens = await refreshAuthorization(authorizationServerUrl, {
33444
+ metadata,
33445
+ clientInformation,
33446
+ refreshToken: tokens.refresh_token,
33447
+ resource,
33448
+ addClientAuthentication: provider.addClientAuthentication,
33449
+ dpop: await provider.dpop?.(),
33450
+ fetchFn
33451
+ });
33452
+ } catch (error62) {
33453
+ if (error62 instanceof InsecureTokenEndpointError) throw error62;
33454
+ if (!(error62 instanceof OAuthError) || error62.code === OAuthErrorCode.ServerError) console.warn(`[mcp-sdk] Could not refresh OAuth tokens; falling back to a new authorization request. Cause: ${JSON.stringify(error62 instanceof Error ? error62.message : String(error62))}`);
33455
+ else throw error62;
33456
+ }
33457
+ if (newTokens) {
33458
+ await provider.saveTokens({
33459
+ ...newTokens,
33460
+ issuer
33461
+ }, infoCtx);
33462
+ return "AUTHORIZED";
33463
+ }
33373
33464
  }
33374
33465
  const state = provider.state ? await provider.state() : void 0;
33375
33466
  const { authorizationUrl, codeVerifier } = await startAuthorization(authorizationServerUrl, {
@@ -33406,11 +33497,12 @@ async function selectResourceURL(serverUrl, provider, resourceMetadata) {
33406
33497
  })) throw new Error(`Protected resource ${resourceMetadata.resource} does not match expected ${defaultResource} (or origin)`);
33407
33498
  return new URL(resourceMetadata.resource);
33408
33499
  }
33500
+ var RECOGNIZED_CHALLENGE_SCHEMES = /* @__PURE__ */ new Set(["bearer", "dpop"]);
33409
33501
  function extractWWWAuthenticateParams(res) {
33410
33502
  const authenticateHeader = res.headers.get("WWW-Authenticate");
33411
33503
  if (!authenticateHeader) return {};
33412
33504
  const [type, scheme] = authenticateHeader.split(" ");
33413
- if (type?.toLowerCase() !== "bearer" || !scheme) return {};
33505
+ if (!type || !RECOGNIZED_CHALLENGE_SCHEMES.has(type.toLowerCase()) || !scheme) return {};
33414
33506
  const resourceMetadataMatch = extractFieldFromWwwAuth(res, "resource_metadata") || void 0;
33415
33507
  let resourceMetadataUrl;
33416
33508
  if (resourceMetadataMatch) try {
@@ -33567,6 +33659,9 @@ async function discoverOAuthServerInfo(serverUrl, opts) {
33567
33659
  resourceMetadata
33568
33660
  };
33569
33661
  }
33662
+ function resourceIndicatorToString(resource) {
33663
+ return typeof resource === "string" ? resource : resource.href;
33664
+ }
33570
33665
  async function startAuthorization(authorizationServerUrl, { metadata, clientInformation, redirectUrl, scope, state, resource }) {
33571
33666
  let authorizationUrl;
33572
33667
  if (metadata) {
@@ -33585,7 +33680,7 @@ async function startAuthorization(authorizationServerUrl, { metadata, clientInfo
33585
33680
  if (state) authorizationUrl.searchParams.set("state", state);
33586
33681
  if (scope) authorizationUrl.searchParams.set("scope", scope);
33587
33682
  if (scope?.split(" ").includes("offline_access")) authorizationUrl.searchParams.append("prompt", "consent");
33588
- if (resource) authorizationUrl.searchParams.set("resource", resource.href);
33683
+ if (resource) authorizationUrl.searchParams.set("resource", resourceIndicatorToString(resource));
33589
33684
  return {
33590
33685
  authorizationUrl,
33591
33686
  codeVerifier
@@ -33599,30 +33694,46 @@ function prepareAuthorizationCodeRequest(authorizationCode, codeVerifier, redire
33599
33694
  redirect_uri: String(redirectUri)
33600
33695
  });
33601
33696
  }
33602
- async function executeTokenRequest(authorizationServerUrl, { metadata, tokenRequestParams, clientInformation, addClientAuthentication, resource, fetchFn }) {
33697
+ async function executeTokenRequest(authorizationServerUrl, { metadata, tokenRequestParams, clientInformation, addClientAuthentication, resource, dpop, fetchFn }) {
33603
33698
  const tokenUrl = assertSecureTokenEndpoint(metadata?.token_endpoint ?? new URL("/token", authorizationServerUrl));
33604
33699
  const headers = new Headers({
33605
33700
  "Content-Type": "application/x-www-form-urlencoded",
33606
33701
  Accept: "application/json"
33607
33702
  });
33608
- if (resource) tokenRequestParams.set("resource", resource.href);
33609
- if (addClientAuthentication) await addClientAuthentication(headers, tokenRequestParams, tokenUrl, metadata);
33610
- else if (clientInformation) applyClientAuthentication(selectClientAuthMethod(clientInformation, metadata?.token_endpoint_auth_methods_supported ?? []), clientInformation, headers, tokenRequestParams);
33611
- const response = await (fetchFn ?? fetch)(tokenUrl, {
33612
- method: "POST",
33613
- headers,
33614
- body: tokenRequestParams
33615
- });
33703
+ if (resource) tokenRequestParams.set("resource", resourceIndicatorToString(resource));
33704
+ if (!addClientAuthentication && clientInformation) applyClientAuthentication(selectClientAuthMethod(clientInformation, metadata?.token_endpoint_auth_methods_supported ?? []), clientInformation, headers, tokenRequestParams);
33705
+ const requestOnce = async () => {
33706
+ const requestHeaders = new Headers(headers);
33707
+ if (addClientAuthentication) await addClientAuthentication(requestHeaders, tokenRequestParams, tokenUrl, metadata);
33708
+ if (dpop) requestHeaders.set("DPoP", await dpop.buildProof({
33709
+ htm: "POST",
33710
+ htu: tokenUrl
33711
+ }));
33712
+ return (fetchFn ?? fetch)(tokenUrl, {
33713
+ method: "POST",
33714
+ headers: requestHeaders,
33715
+ body: tokenRequestParams
33716
+ });
33717
+ };
33718
+ let response = await requestOnce();
33719
+ if (dpop && response.status === 400) {
33720
+ if ((await response.clone().json().catch(() => {
33721
+ }))?.error === OAuthErrorCode.UseDpopNonce) {
33722
+ dpop.observeNonce(response, tokenUrl);
33723
+ response = await requestOnce();
33724
+ }
33725
+ }
33726
+ dpop?.observeNonce(response, tokenUrl);
33616
33727
  if (!response.ok) throw await parseErrorResponse(response);
33617
33728
  const json2 = await response.json();
33618
33729
  try {
33619
- return OAuthTokensSchema.parse(json2);
33730
+ return OAuthTokensSchema.parse(withoutIssuer(json2));
33620
33731
  } catch (parseError) {
33621
33732
  if (typeof json2 === "object" && json2 !== null && "error" in json2) throw await parseErrorResponse(JSON.stringify(json2));
33622
33733
  throw parseError;
33623
33734
  }
33624
33735
  }
33625
- async function refreshAuthorization(authorizationServerUrl, { metadata, clientInformation, refreshToken, resource, addClientAuthentication, fetchFn }) {
33736
+ async function refreshAuthorization(authorizationServerUrl, { metadata, clientInformation, refreshToken, resource, addClientAuthentication, dpop, fetchFn }) {
33626
33737
  return {
33627
33738
  refresh_token: refreshToken,
33628
33739
  ...await executeTokenRequest(authorizationServerUrl, {
@@ -33634,6 +33745,7 @@ async function refreshAuthorization(authorizationServerUrl, { metadata, clientIn
33634
33745
  clientInformation,
33635
33746
  addClientAuthentication,
33636
33747
  resource,
33748
+ dpop,
33637
33749
  fetchFn
33638
33750
  })
33639
33751
  };
@@ -33644,6 +33756,14 @@ async function fetchToken(provider, authorizationServerUrl, { metadata, resource
33644
33756
  expectedIssuer: metadata?.issuer,
33645
33757
  issParameterSupported: isIssParameterSupported(metadata)
33646
33758
  });
33759
+ const issuer = metadata?.issuer ?? String(authorizationServerUrl);
33760
+ const readClientInformation = async () => {
33761
+ const rawClientInfo = await provider.clientInformation({ issuer });
33762
+ const checked = discardIfIssuerMismatch(rawClientInfo, issuer, { canPersistStamp: false });
33763
+ if (rawClientInfo && checked === void 0) throw new AuthorizationServerMismatchError(String(rawClientInfo.issuer), issuer);
33764
+ return checked;
33765
+ };
33766
+ let clientInformation = await readClientInformation();
33647
33767
  const effectiveScope = scope ?? provider.clientMetadata.scope;
33648
33768
  let tokenRequestParams;
33649
33769
  if (provider.prepareTokenRequest) tokenRequestParams = await provider.prepareTokenRequest(effectiveScope);
@@ -33652,13 +33772,14 @@ async function fetchToken(provider, authorizationServerUrl, { metadata, resource
33652
33772
  if (!provider.redirectUrl) throw new Error("redirectUrl is required for authorization_code flow");
33653
33773
  tokenRequestParams = prepareAuthorizationCodeRequest(authorizationCode, await provider.codeVerifier(), provider.redirectUrl);
33654
33774
  }
33655
- const clientInformation = await provider.clientInformation({ issuer: metadata?.issuer ?? String(authorizationServerUrl) });
33775
+ clientInformation ??= await readClientInformation();
33656
33776
  return executeTokenRequest(authorizationServerUrl, {
33657
33777
  metadata,
33658
33778
  tokenRequestParams,
33659
- clientInformation: clientInformation ?? void 0,
33779
+ clientInformation,
33660
33780
  addClientAuthentication: provider.addClientAuthentication,
33661
33781
  resource,
33782
+ dpop: await provider.dpop?.(),
33662
33783
  fetchFn
33663
33784
  });
33664
33785
  }
@@ -33682,7 +33803,7 @@ async function registerClient(authorizationServerUrl, { metadata, clientMetadata
33682
33803
  body: await response.text(),
33683
33804
  submittedMetadata
33684
33805
  });
33685
- return OAuthClientInformationFullSchema.parse(await response.json());
33806
+ return OAuthClientInformationFullSchema.parse(withoutIssuer(await response.json()));
33686
33807
  }
33687
33808
  var CAP_EXEMPT_METHODS = /* @__PURE__ */ new Set([
33688
33809
  "tools/list",
@@ -34268,7 +34389,7 @@ function classifyNetworkError(error62, context) {
34268
34389
  if (context.environment === "browser" && isOpaqueFetchTypeError(error62)) return { kind: "legacy" };
34269
34390
  return {
34270
34391
  kind: "error",
34271
- error: new SdkError(SdkErrorCode.EraNegotiationFailed, `Version negotiation probe failed: ${describeError(error62)}`, { cause: error62 })
34392
+ error: new SdkError(SdkErrorCode.EraNegotiationFailed, `Version negotiation probe failed: ${describeError(error62)}`, { cause: error62 }, { cause: error62 })
34272
34393
  };
34273
34394
  }
34274
34395
  function isOpaqueFetchTypeError(error62) {
@@ -35302,7 +35423,7 @@ var Client = class extends Protocol {
35302
35423
  }, options);
35303
35424
  const hit = await this._serveFromCache("prompts/list", void 0, options);
35304
35425
  if (hit !== void 0) return hit;
35305
- return this._listAllPages("prompts/list", params, options, (acc, page) => acc.prompts.push(...page.prompts));
35426
+ return this._listAllPages("prompts/list", params, options, (r) => r.prompts);
35306
35427
  }
35307
35428
  /**
35308
35429
  * Lists available resources.
@@ -35341,7 +35462,7 @@ var Client = class extends Protocol {
35341
35462
  }, options);
35342
35463
  const hit = await this._serveFromCache("resources/list", void 0, options);
35343
35464
  if (hit !== void 0) return hit;
35344
- return this._listAllPages("resources/list", params, options, (acc, page) => acc.resources.push(...page.resources));
35465
+ return this._listAllPages("resources/list", params, options, (r) => r.resources);
35345
35466
  }
35346
35467
  /**
35347
35468
  * Lists available resource URI templates for dynamic resources.
@@ -35366,7 +35487,7 @@ var Client = class extends Protocol {
35366
35487
  }, options);
35367
35488
  const hit = await this._serveFromCache("resources/templates/list", void 0, options);
35368
35489
  if (hit !== void 0) return hit;
35369
- return this._listAllPages("resources/templates/list", params, options, (acc, page) => acc.resourceTemplates.push(...page.resourceTemplates));
35490
+ return this._listAllPages("resources/templates/list", params, options, (r) => r.resourceTemplates);
35370
35491
  }
35371
35492
  /**
35372
35493
  * Walk every page of a paginated list verb, aggregate, and write ONE
@@ -35374,8 +35495,7 @@ var Client = class extends Protocol {
35374
35495
  * methods' no-`cursor` auto-aggregate path. Page 1's result object is
35375
35496
  * mutated in place (its items array is extended; `nextCursor` is
35376
35497
  * cleared); page-1 metadata (`ttlMs`, `cacheScope`, `_meta`) is preserved.
35377
- * A `nextCursor` that repeats stops the walk (defence against a
35378
- * non-converging server, mcp.d's `drainList` guard);
35498
+ * A page with the same items and `nextCursor` as the previous page ends the walk;
35379
35499
  * {@linkcode ClientOptions.listMaxPages} is a hard cap — hitting it
35380
35500
  * throws, so a partial aggregate is never cached. The
35381
35501
  * captured-generation guard skips the write when a `list_changed` landed
@@ -35390,7 +35510,7 @@ var Client = class extends Protocol {
35390
35510
  * trace context) supplied to the public `list*()` reaches every wire
35391
35511
  * request the walk issues.
35392
35512
  */
35393
- async _listAllPages(method, baseParams, options, append, finalize2) {
35513
+ async _listAllPages(method, baseParams, options, items, finalize2) {
35394
35514
  const bypass = options?.cacheMode === "bypass";
35395
35515
  const generation = this._cache.captureGeneration(method);
35396
35516
  const acc = await this.request({
@@ -35398,14 +35518,13 @@ var Client = class extends Protocol {
35398
35518
  ...baseParams && { params: { ...baseParams } }
35399
35519
  }, options);
35400
35520
  let cursor = acc.nextCursor;
35401
- const seen = /* @__PURE__ */ new Set();
35521
+ let previous = acc;
35402
35522
  let pages = 1;
35403
- while (cursor !== void 0 && !seen.has(cursor)) {
35523
+ while (cursor !== void 0) {
35404
35524
  if (this._listMaxPages !== 0 && pages >= this._listMaxPages) throw new SdkError(SdkErrorCode.ListPaginationExceeded, `${method}: exceeded listMaxPages (${this._listMaxPages}); server pagination did not terminate`, {
35405
35525
  method,
35406
35526
  listMaxPages: this._listMaxPages
35407
35527
  });
35408
- seen.add(cursor);
35409
35528
  const page = await this.request({
35410
35529
  method,
35411
35530
  params: {
@@ -35413,7 +35532,9 @@ var Client = class extends Protocol {
35413
35532
  cursor
35414
35533
  }
35415
35534
  }, options);
35416
- append(acc, page);
35535
+ if (page.nextCursor === cursor && JSON.stringify(items(page)) === JSON.stringify(items(previous))) break;
35536
+ items(acc).push(...items(page));
35537
+ previous = page;
35417
35538
  cursor = page.nextCursor;
35418
35539
  pages++;
35419
35540
  }
@@ -35677,19 +35798,22 @@ var Client = class extends Protocol {
35677
35798
  notifications: filter
35678
35799
  }
35679
35800
  };
35801
+ const routeSendFailure = (error62) => {
35802
+ settle2({
35803
+ cause: "remote",
35804
+ error: error62 instanceof Error ? error62 : new Error(String(error62))
35805
+ });
35806
+ };
35680
35807
  try {
35681
- await this.transport.send(jsonrpcRequest, {
35808
+ this.transport.send(jsonrpcRequest, {
35682
35809
  requestSignal: requestAbort.signal,
35683
35810
  onRequestStreamEnd: () => settle2({
35684
35811
  cause: "remote",
35685
35812
  error: /* @__PURE__ */ new Error("subscriptions/listen: stream ended")
35686
35813
  })
35687
- });
35814
+ }).catch(routeSendFailure);
35688
35815
  } catch (error62) {
35689
- settle2({
35690
- cause: "remote",
35691
- error: error62 instanceof Error ? error62 : new Error(String(error62))
35692
- });
35816
+ routeSendFailure(error62);
35693
35817
  }
35694
35818
  return {
35695
35819
  honoredFilter: await opening,
@@ -35941,7 +36065,7 @@ var Client = class extends Protocol {
35941
36065
  }
35942
36066
  const hit = await this._serveFromCache("tools/list", void 0, options);
35943
36067
  if (hit !== void 0) return hit;
35944
- return this._listAllPages("tools/list", params, options, (acc, page) => acc.tools.push(...page.tools), (acc) => this._excludeInvalidXMcpHeaderTools(acc));
36068
+ return this._listAllPages("tools/list", params, options, (r) => r.tools, (acc) => this._excludeInvalidXMcpHeaderTools(acc));
35945
36069
  }
35946
36070
  /**
35947
36071
  * SEP-2243 (protocol revision 2026-07-28): a Streamable HTTP client MUST
@@ -36012,6 +36136,63 @@ var Client = class extends Protocol {
36012
36136
  return this.notification({ method: "notifications/roots/list_changed" });
36013
36137
  }
36014
36138
  };
36139
+ function hasDpopChallenge(wwwAuthenticate) {
36140
+ return /(?:^|,)\s*dpop(?:\s|$|,)/i.test(wwwAuthenticate);
36141
+ }
36142
+ function isDpopNonceChallenge(response) {
36143
+ if (response.status !== 401) return false;
36144
+ const wwwAuthenticate = response.headers.get("www-authenticate") ?? "";
36145
+ return hasDpopChallenge(wwwAuthenticate) && /use_dpop_nonce/i.test(wwwAuthenticate);
36146
+ }
36147
+ var withDpop = (session, getToken) => (next) => {
36148
+ const resolveSession = typeof session === "function" ? session : () => session;
36149
+ return async (input2, init) => {
36150
+ const method = (init?.method ?? "GET").toUpperCase();
36151
+ const url2 = new URL(input2.toString());
36152
+ const activeSession = await resolveSession();
36153
+ if (!activeSession) return next(input2, init);
36154
+ const makeRequest = async () => {
36155
+ const accessToken = await getToken();
36156
+ if (!accessToken) return next(input2, init);
36157
+ const headers = new Headers(init?.headers);
36158
+ const proof = await activeSession.buildProof({
36159
+ htm: method,
36160
+ htu: url2,
36161
+ accessToken
36162
+ });
36163
+ headers.set("Authorization", `DPoP ${accessToken}`);
36164
+ headers.set("DPoP", proof);
36165
+ return next(input2, {
36166
+ ...init,
36167
+ headers
36168
+ });
36169
+ };
36170
+ let response = await makeRequest();
36171
+ if (isDpopNonceChallenge(response) && response.headers.has("dpop-nonce")) {
36172
+ activeSession.observeNonce(response, url2);
36173
+ await response.text?.().catch(() => {
36174
+ });
36175
+ response = await makeRequest();
36176
+ }
36177
+ activeSession.observeNonce(response, url2);
36178
+ return response;
36179
+ };
36180
+ };
36181
+ var withDpopFromProvider = (provider) => withDpop(async () => {
36182
+ try {
36183
+ return await provider.dpop?.();
36184
+ } catch (error62) {
36185
+ throw markAuthSeamEscape(error62);
36186
+ }
36187
+ }, async () => {
36188
+ let tokens;
36189
+ try {
36190
+ tokens = await provider.tokens();
36191
+ } catch (error62) {
36192
+ throw markAuthSeamEscape(error62);
36193
+ }
36194
+ return tokens?.token_type?.toLowerCase() === "dpop" ? tokens.access_token : void 0;
36195
+ });
36015
36196
  var SseError = class extends Error {
36016
36197
  static {
36017
36198
  Object.defineProperty(this, "mcpBrand", { value: "mcp.SseError" });
@@ -36053,6 +36234,7 @@ var SSEClientTransport = class {
36053
36234
  _skipIssuerMetadataValidation;
36054
36235
  _fetch;
36055
36236
  _fetchWithInit;
36237
+ _dpop;
36056
36238
  _protocolVersion;
36057
36239
  onclose;
36058
36240
  onerror;
@@ -36064,32 +36246,34 @@ var SSEClientTransport = class {
36064
36246
  this._eventSourceInit = opts?.eventSourceInit;
36065
36247
  this._requestInit = opts?.requestInit;
36066
36248
  this._skipIssuerMetadataValidation = opts?.skipIssuerMetadataValidation;
36249
+ this._fetch = opts?.fetch;
36067
36250
  if (isOAuthClientProvider(opts?.authProvider)) {
36068
36251
  this._oauthProvider = opts.authProvider;
36069
36252
  this._authProvider = adaptOAuthProvider(opts.authProvider, { skipIssuerMetadataValidation: opts.skipIssuerMetadataValidation });
36253
+ if (opts.authProvider.dpop) {
36254
+ this._dpop = withDpopFromProvider(opts.authProvider);
36255
+ this._fetch = this._dpop(opts.fetch ?? fetch);
36256
+ }
36070
36257
  } else this._authProvider = opts?.authProvider;
36071
- this._fetch = opts?.fetch;
36072
36258
  this._fetchWithInit = createFetchWithInit(opts?.fetch, opts?.requestInit);
36073
36259
  }
36074
36260
  _last401Response;
36261
+ _last401PresentedToken;
36075
36262
  async _commonHeaders() {
36076
- const headers = {};
36263
+ const headers = new Headers(this._requestInit?.headers || void 0);
36077
36264
  let token;
36078
36265
  try {
36079
36266
  token = await this._authProvider?.token();
36080
36267
  } catch (error62) {
36081
36268
  throw markAuthSeamEscape(error62);
36082
36269
  }
36083
- if (token) headers["Authorization"] = `Bearer ${token}`;
36084
- if (this._protocolVersion) headers["mcp-protocol-version"] = this._protocolVersion;
36085
- const extraHeaders = normalizeHeaders(this._requestInit?.headers);
36086
- return new Headers({
36087
- ...headers,
36088
- ...extraHeaders
36089
- });
36270
+ if (token) headers.set("Authorization", `Bearer ${token}`);
36271
+ if (this._protocolVersion) headers.set("mcp-protocol-version", this._protocolVersion);
36272
+ return headers;
36090
36273
  }
36091
36274
  _startOrAuth() {
36092
- const fetchImpl = this?._eventSourceInit?.fetch ?? this._fetch ?? fetch;
36275
+ const eventSourceFetch = this._eventSourceInit?.fetch;
36276
+ const fetchImpl = eventSourceFetch ? this._dpop?.(eventSourceFetch) ?? eventSourceFetch : this._fetch ?? fetch;
36093
36277
  return new Promise((resolve, reject) => {
36094
36278
  this._eventSource = new EventSource(this._url.href, {
36095
36279
  ...this._eventSourceInit,
@@ -36102,6 +36286,7 @@ var SSEClientTransport = class {
36102
36286
  });
36103
36287
  if (response.status === 401) {
36104
36288
  this._last401Response = response;
36289
+ this._last401PresentedToken = presentedBearerToken(headers);
36105
36290
  if (response.headers.has("www-authenticate")) {
36106
36291
  const { resourceMetadataUrl, scope } = extractWWWAuthenticateParams(response);
36107
36292
  this._resourceMetadataUrl = resourceMetadataUrl;
@@ -36116,12 +36301,15 @@ var SSEClientTransport = class {
36116
36301
  if (event.code === 401 && this._authProvider) {
36117
36302
  if (this._authProvider.onUnauthorized && this._last401Response) {
36118
36303
  const response = this._last401Response;
36304
+ const presentedToken = this._last401PresentedToken;
36119
36305
  this._last401Response = void 0;
36306
+ this._last401PresentedToken = void 0;
36120
36307
  this._eventSource?.close();
36121
36308
  this._authProvider.onUnauthorized({
36122
36309
  response,
36123
36310
  serverUrl: this._url,
36124
- fetchFn: this._fetchWithInit
36311
+ fetchFn: this._fetchWithInit,
36312
+ presentedToken
36125
36313
  }).then(() => this._startOrAuth().then(resolve, reject), (error$2) => {
36126
36314
  markAuthSeamEscape(error$2);
36127
36315
  this.onerror?.(error$2);
@@ -36219,7 +36407,8 @@ var SSEClientTransport = class {
36219
36407
  await this._authProvider.onUnauthorized({
36220
36408
  response,
36221
36409
  serverUrl: this._url,
36222
- fetchFn: this._fetchWithInit
36410
+ fetchFn: this._fetchWithInit,
36411
+ presentedToken: presentedBearerToken(headers)
36223
36412
  });
36224
36413
  } catch (error62) {
36225
36414
  throw markAuthSeamEscape(error62);
@@ -36259,6 +36448,7 @@ var DEFAULT_STREAMABLE_HTTP_RECONNECTION_OPTIONS = {
36259
36448
  };
36260
36449
  var RESERVED_REQUEST_HEADER_NAMES = /* @__PURE__ */ new Set([
36261
36450
  "authorization",
36451
+ "dpop",
36262
36452
  "content-type",
36263
36453
  "mcp-protocol-version",
36264
36454
  "mcp-method",
@@ -36321,11 +36511,12 @@ var StreamableHTTPClientTransport = class {
36321
36511
  this._scope = void 0;
36322
36512
  this._requestInit = opts?.requestInit;
36323
36513
  this._skipIssuerMetadataValidation = opts?.skipIssuerMetadataValidation;
36514
+ this._fetch = opts?.fetch;
36324
36515
  if (isOAuthClientProvider(opts?.authProvider)) {
36325
36516
  this._oauthProvider = opts.authProvider;
36326
36517
  this._authProvider = adaptOAuthProvider(opts.authProvider, { skipIssuerMetadataValidation: opts.skipIssuerMetadataValidation });
36518
+ if (opts.authProvider.dpop) this._fetch = withDpopFromProvider(opts.authProvider)(opts.fetch ?? fetch);
36327
36519
  } else this._authProvider = opts?.authProvider;
36328
- this._fetch = opts?.fetch;
36329
36520
  this._fetchWithInit = createFetchWithInit(opts?.fetch, opts?.requestInit);
36330
36521
  this._sessionId = opts?.sessionId;
36331
36522
  this._protocolVersion = opts?.protocolVersion;
@@ -36379,21 +36570,17 @@ var StreamableHTTPClientTransport = class {
36379
36570
  });
36380
36571
  }
36381
36572
  async _commonHeaders() {
36382
- const headers = {};
36573
+ const headers = new Headers(this._requestInit?.headers || void 0);
36383
36574
  let token;
36384
36575
  try {
36385
36576
  token = await this._authProvider?.token();
36386
36577
  } catch (error62) {
36387
36578
  throw markAuthSeamEscape(error62);
36388
36579
  }
36389
- if (token) headers["Authorization"] = `Bearer ${token}`;
36390
- if (this._sessionId) headers["mcp-session-id"] = this._sessionId;
36391
- if (this._protocolVersion) headers["mcp-protocol-version"] = this._protocolVersion;
36392
- const extraHeaders = normalizeHeaders(this._requestInit?.headers);
36393
- return new Headers({
36394
- ...headers,
36395
- ...extraHeaders
36396
- });
36580
+ if (token) headers.set("Authorization", `Bearer ${token}`);
36581
+ if (this._sessionId) headers.set("mcp-session-id", this._sessionId);
36582
+ if (this._protocolVersion) headers.set("mcp-protocol-version", this._protocolVersion);
36583
+ return headers;
36397
36584
  }
36398
36585
  /**
36399
36586
  * Body-derived per-request headers: when an outgoing request carries a
@@ -36409,9 +36596,8 @@ var StreamableHTTPClientTransport = class {
36409
36596
  if (typeof envelopeVersion !== "string") return;
36410
36597
  headers.set("mcp-protocol-version", envelopeVersion);
36411
36598
  headers.set("mcp-method", message.method);
36412
- const params = message.params;
36413
- const nameHeader = message.method === "resources/read" ? typeof params?.uri === "string" ? params.uri : void 0 : typeof params?.name === "string" ? params.name : void 0;
36414
- if (nameHeader !== void 0) headers.set("mcp-name", encodeMcpParamValue(nameHeader));
36599
+ const source = mcpNameSource(message.method, message.params);
36600
+ if (source?.value !== void 0) headers.set("mcp-name", encodeMcpParamValue(source.value));
36415
36601
  }
36416
36602
  /**
36417
36603
  * `true` when the outbound message is a single request carrying a
@@ -36452,7 +36638,8 @@ var StreamableHTTPClientTransport = class {
36452
36638
  await this._authProvider.onUnauthorized({
36453
36639
  response,
36454
36640
  serverUrl: this._url,
36455
- fetchFn: this._fetchWithInit
36641
+ fetchFn: this._fetchWithInit,
36642
+ presentedToken: presentedBearerToken(headers)
36456
36643
  });
36457
36644
  } catch (error62) {
36458
36645
  throw markAuthSeamEscape(error62);
@@ -36692,7 +36879,8 @@ var StreamableHTTPClientTransport = class {
36692
36879
  await this._authProvider.onUnauthorized({
36693
36880
  response,
36694
36881
  serverUrl: this._url,
36695
- fetchFn: this._fetchWithInit
36882
+ fetchFn: this._fetchWithInit,
36883
+ presentedToken: presentedBearerToken(headers)
36696
36884
  });
36697
36885
  } catch (error62) {
36698
36886
  throw markAuthSeamEscape(error62);
@@ -36827,216 +37015,7 @@ var StreamableHTTPClientTransport = class {
36827
37015
  };
36828
37016
 
36829
37017
  export {
36830
- toJSONSchema,
36831
- safeParse2 as safeParse,
36832
- string2 as string,
36833
- email2 as email,
36834
- url,
36835
- number2 as number,
36836
- boolean2 as boolean,
36837
- _null3 as _null,
36838
- unknown,
36839
- array,
36840
- object,
36841
- looseObject,
36842
- union,
36843
- discriminatedUnion,
36844
- intersection,
36845
- record,
36846
- _enum2 as _enum,
36847
- literal,
36848
- optional,
36849
- lazy,
36850
- preprocess,
36851
- iso_exports,
36852
37018
  external_exports,
36853
- LATEST_PROTOCOL_VERSION,
36854
- DEFAULT_NEGOTIATED_PROTOCOL_VERSION,
36855
- SUPPORTED_PROTOCOL_VERSIONS,
36856
- PROTOCOL_VERSION_META_KEY,
36857
- CLIENT_INFO_META_KEY,
36858
- SERVER_INFO_META_KEY,
36859
- CLIENT_CAPABILITIES_META_KEY,
36860
- SUBSCRIPTION_ID_META_KEY,
36861
- LOG_LEVEL_META_KEY,
36862
- JSONValueSchema,
36863
- JSONObjectSchema,
36864
- JSONArraySchema,
36865
- ProgressTokenSchema,
36866
- CursorSchema,
36867
- TaskMetadataSchema,
36868
- RelatedTaskMetadataSchema,
36869
- RequestMetaSchema,
36870
- BaseRequestParamsSchema,
36871
- TaskAugmentedRequestParamsSchema,
36872
- RequestSchema,
36873
- NotificationsParamsSchema,
36874
- NotificationSchema,
36875
- ResultMetaObjectSchema,
36876
- ResultSchema,
36877
- RequestIdSchema,
36878
- JSONRPCRequestSchema,
36879
- JSONRPCNotificationSchema,
36880
- JSONRPCResultResponseSchema,
36881
- JSONRPCErrorResponseSchema,
36882
- JSONRPCMessageSchema,
36883
- JSONRPCResponseSchema,
36884
- EmptyResultSchema,
36885
- CancelledNotificationParamsSchema,
36886
- CancelledNotificationSchema,
36887
- IconSchema,
36888
- IconsSchema,
36889
- BaseMetadataSchema,
36890
- ImplementationSchema,
36891
- ClientTasksCapabilitySchema,
36892
- ServerTasksCapabilitySchema,
36893
- ClientCapabilitiesSchema,
36894
- InitializeRequestParamsSchema,
36895
- InitializeRequestSchema,
36896
- ServerCapabilitiesSchema,
36897
- InitializeResultSchema,
36898
- InitializedNotificationSchema,
36899
- DiscoverRequestSchema,
36900
- DiscoverResultSchema,
36901
- PingRequestSchema,
36902
- ProgressSchema,
36903
- ProgressNotificationParamsSchema,
36904
- ProgressNotificationSchema,
36905
- PaginatedRequestParamsSchema,
36906
- PaginatedRequestSchema,
36907
- PaginatedResultSchema,
36908
- ResourceContentsSchema,
36909
- TextResourceContentsSchema,
36910
- BlobResourceContentsSchema,
36911
- RoleSchema,
36912
- AnnotationsSchema,
36913
- ResourceSchema,
36914
- ResourceTemplateSchema,
36915
- ListResourcesRequestSchema,
36916
- ListResourcesResultSchema,
36917
- ListResourceTemplatesRequestSchema,
36918
- ListResourceTemplatesResultSchema,
36919
- ResourceRequestParamsSchema,
36920
- ReadResourceRequestParamsSchema,
36921
- ReadResourceRequestSchema,
36922
- ReadResourceResultSchema,
36923
- ResourceListChangedNotificationSchema,
36924
- SubscribeRequestParamsSchema,
36925
- SubscribeRequestSchema,
36926
- UnsubscribeRequestParamsSchema,
36927
- UnsubscribeRequestSchema,
36928
- SubscriptionFilterSchema,
36929
- SubscriptionsListenRequestParamsSchema,
36930
- SubscriptionsListenRequestSchema,
36931
- SubscriptionsAcknowledgedNotificationParamsSchema,
36932
- SubscriptionsAcknowledgedNotificationSchema,
36933
- SubscriptionsListenResultMetaSchema,
36934
- SubscriptionsListenResultSchema,
36935
- ResourceUpdatedNotificationParamsSchema,
36936
- ResourceUpdatedNotificationSchema,
36937
- PromptArgumentSchema,
36938
- PromptSchema,
36939
- ListPromptsRequestSchema,
36940
- ListPromptsResultSchema,
36941
- GetPromptRequestParamsSchema,
36942
- GetPromptRequestSchema,
36943
- TextContentSchema,
36944
- ImageContentSchema,
36945
- AudioContentSchema,
36946
- ToolUseContentSchema,
36947
- EmbeddedResourceSchema,
36948
- ResourceLinkSchema,
36949
- ContentBlockSchema,
36950
- PromptMessageSchema,
36951
- GetPromptResultSchema,
36952
- PromptListChangedNotificationSchema,
36953
- ToolAnnotationsSchema,
36954
- ToolExecutionSchema,
36955
- ToolSchema,
36956
- ListToolsRequestSchema,
36957
- ListToolsResultSchema,
36958
- CallToolResultSchema,
36959
- CompatibilityCallToolResultSchema,
36960
- CallToolRequestParamsSchema,
36961
- CallToolRequestSchema,
36962
- ToolListChangedNotificationSchema,
36963
- ListChangedOptionsBaseSchema,
36964
- LoggingLevelSchema,
36965
- SetLevelRequestParamsSchema,
36966
- SetLevelRequestSchema,
36967
- LoggingMessageNotificationParamsSchema,
36968
- LoggingMessageNotificationSchema,
36969
- ModelHintSchema,
36970
- ModelPreferencesSchema,
36971
- ToolChoiceSchema,
36972
- ToolResultContentSchema,
36973
- SamplingContentSchema,
36974
- SamplingMessageContentBlockSchema,
36975
- SamplingMessageSchema,
36976
- CreateMessageRequestParamsSchema,
36977
- CreateMessageRequestSchema,
36978
- CreateMessageResultSchema,
36979
- CreateMessageResultWithToolsSchema,
36980
- BooleanSchemaSchema,
36981
- StringSchemaSchema,
36982
- NumberSchemaSchema,
36983
- UntitledSingleSelectEnumSchemaSchema,
36984
- TitledSingleSelectEnumSchemaSchema,
36985
- LegacyTitledEnumSchemaSchema,
36986
- SingleSelectEnumSchemaSchema,
36987
- UntitledMultiSelectEnumSchemaSchema,
36988
- TitledMultiSelectEnumSchemaSchema,
36989
- MultiSelectEnumSchemaSchema,
36990
- EnumSchemaSchema,
36991
- PrimitiveSchemaDefinitionSchema,
36992
- ElicitRequestFormParamsSchema,
36993
- ElicitRequestURLParamsSchema,
36994
- ElicitRequestParamsSchema,
36995
- ElicitRequestSchema,
36996
- ElicitationCompleteNotificationParamsSchema,
36997
- ElicitationCompleteNotificationSchema,
36998
- ElicitResultSchema,
36999
- ResourceTemplateReferenceSchema,
37000
- PromptReferenceSchema,
37001
- CompleteRequestParamsSchema,
37002
- CompleteRequestSchema,
37003
- CompleteResultSchema,
37004
- RootSchema,
37005
- ListRootsRequestSchema,
37006
- ListRootsResultSchema,
37007
- RootsListChangedNotificationSchema,
37008
- TaskCreationParamsSchema,
37009
- TaskStatusSchema,
37010
- TaskSchema,
37011
- CreateTaskResultSchema,
37012
- TaskStatusNotificationParamsSchema,
37013
- TaskStatusNotificationSchema,
37014
- GetTaskRequestSchema,
37015
- GetTaskResultSchema,
37016
- GetTaskPayloadRequestSchema,
37017
- GetTaskPayloadResultSchema,
37018
- ListTasksRequestSchema,
37019
- ListTasksResultSchema,
37020
- CancelTaskRequestSchema,
37021
- CancelTaskResultSchema,
37022
- ClientRequestSchema,
37023
- ClientNotificationSchema,
37024
- ClientResultSchema,
37025
- ServerRequestSchema,
37026
- ServerNotificationSchema,
37027
- ServerResultSchema,
37028
- OAuthProtectedResourceMetadataSchema,
37029
- OAuthMetadataSchema,
37030
- OpenIdProviderMetadataSchema,
37031
- OpenIdProviderDiscoveryMetadataSchema,
37032
- OAuthTokensSchema,
37033
- IdJagTokenExchangeResponseSchema,
37034
- OAuthErrorResponseSchema,
37035
- OAuthClientMetadataSchema,
37036
- OAuthClientInformationSchema,
37037
- OAuthClientInformationFullSchema,
37038
- OAuthClientRegistrationErrorSchema,
37039
- OAuthTokenRevocationRequestSchema,
37040
37019
  SdkErrorCode,
37041
37020
  SdkError,
37042
37021
  SdkHttpError,
@@ -37047,6 +37026,7 @@ export {
37047
37026
  DEFAULT_REQUEST_TIMEOUT_MSEC,
37048
37027
  ReadBuffer,
37049
37028
  serializeMessage,
37029
+ AjvJsonSchemaValidator,
37050
37030
  IssuerMismatchError,
37051
37031
  UnauthorizedError,
37052
37032
  auth,