@chrischall/myatriumhealth-mcp 1.3.6 → 1.3.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@
7
7
  },
8
8
  "metadata": {
9
9
  "description": "MCP server for MyAtriumHealth (Atrium Health's Epic MyChart patient portal) — test results, medications, allergies, immunizations, health issues, visits and messages. Requests relay through the user's own signed-in browser tab via the ContextMint Bridge extension, reusing their existing session.",
10
- "version": "1.3.6"
10
+ "version": "1.3.7"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "MyAtriumHealth",
16
16
  "source": "./",
17
17
  "description": "Read MyAtriumHealth (Epic MyChart) records — test results, medications, allergies, immunizations, health issues, visits — by relaying requests through the user's signed-in browser tab via the ContextMint Bridge extension.",
18
- "version": "1.3.6",
18
+ "version": "1.3.7",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "myatriumhealth-mcp",
3
3
  "displayName": "MyAtriumHealth",
4
- "version": "1.3.6",
4
+ "version": "1.3.7",
5
5
  "description": "MyAtriumHealth (Epic MyChart) access for Claude — test results, medications, allergies, immunizations, visits",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/bundle.js CHANGED
@@ -91,6 +91,7 @@ var require_util = __commonJS({
91
91
  exports.explicitlyAborted = explicitlyAborted2;
92
92
  exports.prefixIssues = prefixIssues2;
93
93
  exports.unwrapMessage = unwrapMessage2;
94
+ exports.sizeCaps = sizeCaps2;
94
95
  exports.attachSchema = attachSchema2;
95
96
  exports.finalizeIssue = finalizeIssue2;
96
97
  exports.getSizableOrigin = getSizableOrigin2;
@@ -625,6 +626,18 @@ var require_util = __commonJS({
625
626
  function unwrapMessage2(message) {
626
627
  return typeof message === "string" ? message : message?.message;
627
628
  }
629
+ function sizeCaps2(defChecks) {
630
+ const caps = [];
631
+ for (const ch of defChecks ?? []) {
632
+ const d = ch._zod.def;
633
+ if (!/_(length|size)$|_equals$/.test(d.check))
634
+ break;
635
+ const max = d.maximum ?? d.length ?? d.size;
636
+ if (max >= 0)
637
+ caps.push([max, ch]);
638
+ }
639
+ return caps;
640
+ }
628
641
  function attachSchema2(issues, start, inst) {
629
642
  var _a3;
630
643
  for (let i = start; i < issues.length; i++) {
@@ -2289,7 +2302,7 @@ var require_versions = __commonJS({
2289
2302
  exports.version = {
2290
2303
  major: 4,
2291
2304
  minor: 6,
2292
- patch: 5
2305
+ patch: 6
2293
2306
  };
2294
2307
  (function() {
2295
2308
  var keys = Object.getOwnPropertyNames(exports);
@@ -3123,6 +3136,31 @@ var require_schemas = __commonJS({
3123
3136
  return payload;
3124
3137
  };
3125
3138
  });
3139
+ function capSize2(inst, size) {
3140
+ const caps = util.sizeCaps(inst._zod.def.checks);
3141
+ if (!caps.length)
3142
+ return;
3143
+ const cap = Math.min(...caps.map((c) => c[0]));
3144
+ const parse4 = inst._zod.parse;
3145
+ inst._zod.parse = (payload, ctx) => {
3146
+ const n = size(payload.value);
3147
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
3148
+ for (const [max, ch] of util.sizeCaps(inst._zod.def.checks)) {
3149
+ if (n > max && ch._zod.def.when(payload)) {
3150
+ const start = payload.issues.length;
3151
+ ch._zod.check(payload);
3152
+ payload.issues[start].continue = false;
3153
+ util.attachSchema(payload.issues, start, inst);
3154
+ return payload;
3155
+ }
3156
+ }
3157
+ }
3158
+ return parse4(payload, ctx);
3159
+ };
3160
+ }
3161
+ var arraySize2 = (input2) => Array.isArray(input2) ? input2.length : -1;
3162
+ var mapSize2 = (input2) => input2 instanceof Map ? input2.size : -1;
3163
+ var setSize2 = (input2) => input2 instanceof Set ? input2.size : -1;
3126
3164
  function handleArrayResult2(result, final, index) {
3127
3165
  if (result.issues.length) {
3128
3166
  final.issues.push(...util.prefixIssues(index, result.issues));
@@ -3166,6 +3204,7 @@ var require_schemas = __commonJS({
3166
3204
  }
3167
3205
  return payload;
3168
3206
  };
3207
+ capSize2(inst, arraySize2);
3169
3208
  });
3170
3209
  function handlePropertyResult2(result, final, key, input2, optin, optout) {
3171
3210
  const isPresent = key in input2;
@@ -4122,6 +4161,7 @@ var require_schemas = __commonJS({
4122
4161
  return Promise.all(proms).then(() => payload);
4123
4162
  return payload;
4124
4163
  };
4164
+ capSize2(inst, mapSize2);
4125
4165
  });
4126
4166
  function handleMapResult2(keyResult, valueResult, final, key, input2, inst, ctx) {
4127
4167
  if (keyResult.issues.length) {
@@ -4188,6 +4228,7 @@ var require_schemas = __commonJS({
4188
4228
  return Promise.all(proms).then(() => payload);
4189
4229
  return payload;
4190
4230
  };
4231
+ capSize2(inst, setSize2);
4191
4232
  });
4192
4233
  function handleSetResult2(result, final) {
4193
4234
  if (result.issues.length) {
@@ -16292,9 +16333,15 @@ ${code2}
16292
16333
  doc.write(`}`);
16293
16334
  return outputVar;
16294
16335
  }
16336
+ function generateSizeGate2(doc, schema, size) {
16337
+ for (const [max, check2] of util.sizeCaps(schema._zod.def.checks)) {
16338
+ doc.write(`if (${size} > ${numericOperand2(max, check2._zod.def.check)}) return INVALID;`);
16339
+ }
16340
+ }
16295
16341
  function generateArrayCheck2(doc, ctx, schema, accessor, buildsValue = true) {
16296
16342
  const def = schema._zod.def;
16297
16343
  doc.write(`if (!Array.isArray(${accessor})) return INVALID;`);
16344
+ generateSizeGate2(doc, schema, `${accessor}.length`);
16298
16345
  const outputVar = buildsValue ? newVar2(ctx) : null;
16299
16346
  const iVar = newVar2(ctx);
16300
16347
  const elemVar = newVar2(ctx);
@@ -16694,6 +16741,7 @@ ${code2}
16694
16741
  function generateMapCheck2(doc, ctx, schema, accessor) {
16695
16742
  const def = schema._zod.def;
16696
16743
  doc.write(`if (!(${accessor} instanceof Map)) return INVALID;`);
16744
+ generateSizeGate2(doc, schema, `${accessor}.size`);
16697
16745
  const outputVar = newVar2(ctx);
16698
16746
  const kVar = newVar2(ctx);
16699
16747
  const valVar = newVar2(ctx);
@@ -16710,6 +16758,7 @@ ${code2}
16710
16758
  function generateSetCheck2(doc, ctx, schema, accessor) {
16711
16759
  const def = schema._zod.def;
16712
16760
  doc.write(`if (!(${accessor} instanceof Set)) return INVALID;`);
16761
+ generateSizeGate2(doc, schema, `${accessor}.size`);
16713
16762
  const outputVar = newVar2(ctx);
16714
16763
  const valVar = newVar2(ctx);
16715
16764
  doc.write(`const ${outputVar} = new Set();`);
@@ -23312,149 +23361,151 @@ var require_v4 = __commonJS({
23312
23361
  // node_modules/dotenv/dist/index.cjs
23313
23362
  var require_dist2 = __commonJS({
23314
23363
  "node_modules/dotenv/dist/index.cjs"(exports, module) {
23315
- var I = (e, o) => () => {
23364
+ var k = (e, n) => () => {
23316
23365
  try {
23317
- return o || e((o = { exports: {} }).exports, o), o.exports;
23366
+ return n || e((n = { exports: {} }).exports, n), n.exports;
23318
23367
  } catch (t) {
23319
- throw o = 0, t;
23368
+ throw n = 0, t;
23320
23369
  }
23321
23370
  };
23322
- var S = I((xe, U) => {
23371
+ var I = k((xe, U) => {
23323
23372
  function G(e) {
23324
23373
  return typeof e == "string" ? !["false", "0", "no", "off", ""].includes(e.toLowerCase()) : !!e;
23325
23374
  }
23326
- function X(e = process.env) {
23327
- let o = {};
23375
+ function Y(e = process.env) {
23376
+ let n = {};
23328
23377
  for (let t of ["ENCODING", "PATH", "QUIET", "DEBUG", "OVERRIDE", "FAST"]) {
23329
- let n = e[`DOTENV_${t}`] != null ? e[`DOTENV_${t}`] : e[`DOTENV_CONFIG_${t}`];
23330
- n != null && (o[t.toLowerCase()] = t === "ENCODING" || t === "PATH" ? n : G(n));
23378
+ let o = e[`DOTENV_${t}`] != null ? e[`DOTENV_${t}`] : e[`DOTENV_CONFIG_${t}`];
23379
+ o != null && (n[t.toLowerCase()] = t === "ENCODING" || t === "PATH" ? o : G(o));
23331
23380
  }
23332
- return o;
23381
+ return n;
23333
23382
  }
23334
- U.exports = { parseBoolean: G, optionsFromEnv: X };
23383
+ U.exports = { parseBoolean: G, optionsFromEnv: Y };
23335
23384
  });
23336
- var N = I((ye, x) => {
23337
- var Y = __require("fs"), j = __require("path"), z4 = __require("os"), { URL: Z, fileURLToPath: ee } = __require("url"), { parseBoolean: k, optionsFromEnv: B } = S(), te = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg, b = new Uint8Array(256);
23385
+ var N = k((ye, x) => {
23386
+ var z4 = __require("fs"), S = __require("path"), Z = __require("os"), { URL: ee, fileURLToPath: te } = __require("url"), { parseBoolean: $, optionsFromEnv: B } = I(), re = /(?:^|^)\s*(?:export\s+)?([\w.-]+)(?:\s*=\s*?|:\s+?)(\s*'(?:\\'|[^'])*'|\s*"(?:\\"|[^"])*"|\s*`(?:\\`|[^`])*`|[^#\r\n]+)?\s*(?:#.*)?(?:$|$)/mg, b = new Uint8Array(256);
23338
23387
  for (let e = 48; e <= 57; e++) b[e] = 1;
23339
23388
  for (let e = 65; e <= 90; e++) b[e] = 1;
23340
23389
  for (let e = 97; e <= 122; e++) b[e] = 1;
23341
23390
  b[45] = 1;
23342
23391
  b[46] = 1;
23343
23392
  b[95] = 1;
23344
- function re(e) {
23345
- let o = {}, t = e.toString();
23393
+ function ne(e) {
23394
+ let n = {}, t = e.toString();
23346
23395
  t = t.replace(/\r\n?/mg, `
23347
23396
  `);
23348
- let n;
23349
- for (; (n = te.exec(t)) != null; ) {
23350
- let r = n[1], s = n[2] || "";
23397
+ let o;
23398
+ for (; (o = re.exec(t)) != null; ) {
23399
+ let r = o[1], s = o[2] || "";
23351
23400
  s = s.trim();
23352
23401
  let i = s[0];
23353
23402
  s = s.replace(/^(['"`])([\s\S]*)\1$/mg, "$2"), i === '"' && (s = s.replace(/\\n/g, `
23354
- `), s = s.replace(/\\r/g, "\r")), o[r] = s;
23403
+ `), s = s.replace(/\\r/g, "\r")), n[r] = s;
23355
23404
  }
23356
- return o;
23405
+ return n;
23357
23406
  }
23358
23407
  function w(e) {
23359
23408
  return e <= 32 ? e === 32 || e >= 9 && e <= 13 : e >= 160 && (e === 160 || e === 5760 || e >= 8192 && e <= 8202 || e === 8232 || e === 8233 || e === 8239 || e === 8287 || e === 12288 || e === 65279);
23360
23409
  }
23361
- function O(e) {
23410
+ function q(e) {
23362
23411
  return e === 10 || e === 8232 || e === 8233;
23363
23412
  }
23364
23413
  function oe(e) {
23365
- let o = {}, t = typeof e == "string" ? e : e.toString();
23414
+ let n = {}, t = typeof e == "string" ? e : e.toString();
23366
23415
  t.indexOf("\r") !== -1 && (t = t.replace(/\r\n?/g, `
23367
23416
  `));
23368
- let n = t.length, r = 0;
23369
- for (; r < n; ) {
23417
+ let o = t.length, r = 0;
23418
+ for (; r < o; ) {
23370
23419
  let s = t.charCodeAt(r);
23371
- for (; r < n && w(s); ) r++, s = t.charCodeAt(r);
23372
- if (r >= n) break;
23420
+ for (; r < o && w(s); ) r++, s = t.charCodeAt(r);
23421
+ if (r >= o) break;
23373
23422
  if (s === 35) {
23374
- for (; r < n && !O(t.charCodeAt(r)); ) r++;
23423
+ for (; r < o && !q(t.charCodeAt(r)); ) r++;
23375
23424
  continue;
23376
23425
  }
23377
23426
  let i = -1;
23378
- if (s === 101 && r + 6 < n && t.charCodeAt(r + 1) === 120 && t.charCodeAt(r + 2) === 112 && t.charCodeAt(r + 3) === 111 && t.charCodeAt(r + 4) === 114 && t.charCodeAt(r + 5) === 116) {
23427
+ if (s === 101 && r + 6 < o && t.charCodeAt(r + 1) === 120 && t.charCodeAt(r + 2) === 112 && t.charCodeAt(r + 3) === 111 && t.charCodeAt(r + 4) === 114 && t.charCodeAt(r + 5) === 116) {
23379
23428
  let v = t.charCodeAt(r + 6);
23380
23429
  if (w(v)) {
23381
23430
  let u = r + 7;
23382
- for (; u < n && w(t.charCodeAt(u)); ) u++;
23431
+ for (; u < o && w(t.charCodeAt(u)); ) u++;
23383
23432
  b[t.charCodeAt(u)] && (i = r + 6, r = u);
23384
23433
  } else s = t.charCodeAt(r);
23385
23434
  }
23386
23435
  let l = r, d = 0;
23387
- for (; r < n && (d = t.charCodeAt(r), b[d]); ) r++;
23436
+ for (; r < o && (d = t.charCodeAt(r), b[d]); ) r++;
23388
23437
  if (r === l) {
23389
- for (; r < n && !O(t.charCodeAt(r)); ) r++;
23438
+ for (; r < o && !q(t.charCodeAt(r)); ) r++;
23390
23439
  continue;
23391
23440
  }
23392
23441
  let p = t.slice(l, r), f = r;
23393
- if (r >= n && (d = 0), w(d)) do
23394
- r++, d = r < n ? t.charCodeAt(r) : 0;
23442
+ if (r >= o && (d = 0), w(d)) do
23443
+ r++, d = r < o ? t.charCodeAt(r) : 0;
23395
23444
  while (w(d));
23396
23445
  if (d === 61) r++;
23397
- else if (d === 58 && r === f && r + 1 < n && w(t.charCodeAt(r + 1))) r += 2;
23446
+ else if (d === 58 && r === f && r + 1 < o && w(t.charCodeAt(r + 1))) r += 2;
23398
23447
  else {
23399
- for (r = i === -1 ? f : i; r < n && !O(t.charCodeAt(r)); ) r++;
23448
+ for (r = i === -1 ? f : i; r < o && !q(t.charCodeAt(r)); ) r++;
23400
23449
  continue;
23401
23450
  }
23402
23451
  let c = r, a = r;
23403
- for (; a < n && w(t.charCodeAt(a)); ) a++;
23404
- let g = t.charCodeAt(a), h, y = false;
23405
- if (g === 39 || g === 34 || g === 96) {
23452
+ for (; a < o && w(t.charCodeAt(a)); ) a++;
23453
+ let h = t.charCodeAt(a), g, y = false;
23454
+ if (h === 39 || h === 34 || h === 96) {
23406
23455
  let v = t[a], u = t.indexOf(v, a + 1), m = -1, C = -1;
23407
23456
  for (; u !== -1; ) {
23408
- let q = t.charCodeAt(u - 1) === 92, E = u + 1;
23409
- for (; E < n && !O(t.charCodeAt(E)) && w(t.charCodeAt(E)); ) E++;
23410
- if ((E === n || O(t.charCodeAt(E)) || t.charCodeAt(E) === 35) && (m = u, C = E), !q) break;
23457
+ let O = t.charCodeAt(u - 1) === 92, E = u + 1;
23458
+ for (; E < o && !q(t.charCodeAt(E)) && w(t.charCodeAt(E)); ) E++;
23459
+ if ((E === o || q(t.charCodeAt(E)) || t.charCodeAt(E) === 35) && (m = u, C = E), !O) break;
23411
23460
  u = t.indexOf(v, u + 1);
23412
23461
  }
23413
23462
  if (m !== -1) {
23414
- if (h = t.slice(a + 1, m), r = C, t.charCodeAt(r) === 35) for (; r < n && !O(t.charCodeAt(r)); ) r++;
23463
+ if (g = t.slice(a + 1, m), r = C, t.charCodeAt(r) === 35) for (; r < o && !q(t.charCodeAt(r)); ) r++;
23415
23464
  y = true;
23416
23465
  }
23417
23466
  }
23418
23467
  if (!y) {
23419
23468
  let v = t.indexOf(`
23420
23469
  `, c);
23421
- v === -1 && (v = n);
23470
+ v === -1 && (v = o);
23422
23471
  let u;
23423
- if (n < 4096) u = t.indexOf("#", c), (u === -1 || u > v) && (u = v);
23472
+ if (o < 4096) u = t.indexOf("#", c), (u === -1 || u > v) && (u = v);
23424
23473
  else for (u = c; u < v && t.charCodeAt(u) !== 35; ) u++;
23425
23474
  let m = c, C = u;
23426
23475
  for (; m < C && w(t.charCodeAt(m)); ) m++;
23427
23476
  for (; C > m && w(t.charCodeAt(C - 1)); ) C--;
23428
- let q = t.charCodeAt(m);
23429
- if (C - m >= 2 && (q === 39 || q === 34 || q === 96) && t.charCodeAt(C - 1) === q ? h = t.slice(m + 1, C - 1) : h = t.slice(m, C), r = u, u < v) for (; r < n && !O(t.charCodeAt(r)); ) r++;
23477
+ let O = t.charCodeAt(m);
23478
+ if (C - m >= 2 && (O === 39 || O === 34 || O === 96) && t.charCodeAt(C - 1) === O ? g = t.slice(m + 1, C - 1) : g = t.slice(m, C), r = u, u < v) for (; r < o && !q(t.charCodeAt(r)); ) r++;
23430
23479
  }
23431
- g === 34 && (y || a < r) && h.indexOf("\\") !== -1 && (h = h.replace(/\\n/g, `
23432
- `).replace(/\\r/g, "\r")), o[p] = h;
23480
+ h === 34 && (y || a < r) && g.indexOf("\\") !== -1 && (g = g.replace(/\\n/g, `
23481
+ `).replace(/\\r/g, "\r")), n[p] = g;
23433
23482
  }
23434
- return o;
23483
+ return n;
23435
23484
  }
23436
- function ne(e, o) {
23437
- return o && k(o.fast) ? oe(e) : re(e);
23485
+ function se(e, n) {
23486
+ return n && $(n.fast) ? oe(e) : ne(e);
23438
23487
  }
23439
23488
  function T(e) {
23440
23489
  console.log(`\u2506 ${e}`);
23441
23490
  }
23442
- function se(e) {
23491
+ function ie(e) {
23443
23492
  console.error(`\u25C7 ${e}`);
23444
23493
  }
23445
23494
  function V(e) {
23446
- return e[0] === "~" ? j.join(z4.homedir(), e.slice(1)) : e;
23495
+ return e[0] === "~" ? S.join(Z.homedir(), e.slice(1)) : e;
23447
23496
  }
23448
- function ie(e = {}) {
23449
- return { ...B(), ...e };
23497
+ function ce(e = {}) {
23498
+ let n = { ...e };
23499
+ for (let t of Object.keys(n)) n[t] === void 0 && delete n[t];
23500
+ return { ...B(), ...n };
23450
23501
  }
23451
- function ce(e) {
23452
- e = ie(e);
23453
- let o = j.resolve(process.cwd(), ".env"), t = "utf8", n = process.env;
23454
- e && e.processEnv != null && (n = e.processEnv);
23455
- let r = k(e && e.debug);
23502
+ function ae(e) {
23503
+ e = ce(e);
23504
+ let n = S.resolve(process.cwd(), ".env"), t = "utf8", o = process.env;
23505
+ e && e.processEnv != null && (o = e.processEnv);
23506
+ let r = $(e && e.debug);
23456
23507
  e && e.encoding ? t = e.encoding : r && T("no encoding is specified (UTF-8 is used by default)");
23457
- let s = [o];
23508
+ let s = [n];
23458
23509
  if (e && e.path) if (!Array.isArray(e.path)) s = [V(e.path)];
23459
23510
  else {
23460
23511
  s = [];
@@ -23462,100 +23513,100 @@ var require_dist2 = __commonJS({
23462
23513
  }
23463
23514
  let i, l = {}, d = { fast: e.fast };
23464
23515
  for (let c of s) try {
23465
- let a = A.parse(Y.readFileSync(c, { encoding: t }), d);
23516
+ let a = A.parse(z4.readFileSync(c, { encoding: t }), d);
23466
23517
  A.populate(l, a, e);
23467
23518
  } catch (a) {
23468
23519
  r && T(`failed to load ${c} ${a.message}`), i = a;
23469
23520
  }
23470
- let p = A.populate(n, l, e), f = k(Object.prototype.hasOwnProperty.call(e, "quiet") ? e.quiet : B(n).quiet);
23521
+ let p = A.populate(o, l, e), f = $(Object.prototype.hasOwnProperty.call(e, "quiet") ? e.quiet : B(o).quiet);
23471
23522
  if (r || !f) {
23472
23523
  let c = Object.keys(p).length, a = [];
23473
- for (let g of s) try {
23474
- let h = j.relative(process.cwd(), g instanceof Z ? ee(g) : g);
23475
- a.push(h);
23476
- } catch (h) {
23477
- r && T(`failed to load ${g} ${h.message}`), i = h;
23524
+ for (let h of s) try {
23525
+ let g = S.relative(process.cwd(), h instanceof ee ? te(h) : h);
23526
+ a.push(g);
23527
+ } catch (g) {
23528
+ r && T(`failed to load ${h} ${g.message}`), i = g;
23478
23529
  }
23479
- se(`injected env (${c}) from ${a.join(",")}`);
23530
+ ie(`injected env (${c}) from ${a.join(",")}`);
23480
23531
  }
23481
23532
  return i ? { parsed: l, error: i } : { parsed: l };
23482
23533
  }
23483
- function ae(e) {
23534
+ function le(e) {
23484
23535
  return A.configDotenv(e);
23485
23536
  }
23486
- function le(e, o, t = {}) {
23487
- let n = !!(t && t.debug), r = !!(t && t.override), s = {};
23488
- if (e === null || typeof e != "object" || o === null || typeof o != "object") {
23537
+ function fe(e, n, t = {}) {
23538
+ let o = $(t && t.debug), r = $(t && t.override), s = {};
23539
+ if (e === null || typeof e != "object" || n === null || typeof n != "object") {
23489
23540
  let i = new Error("OBJECT_REQUIRED: Please check the processEnv argument being passed to populate");
23490
23541
  throw i.code = "OBJECT_REQUIRED", i;
23491
23542
  }
23492
- for (let i of Object.keys(o)) Object.prototype.hasOwnProperty.call(e, i) ? (r === true && (e[i] = o[i], s[i] = o[i]), n && T(r === true ? `"${i}" is already defined and WAS overwritten` : `"${i}" is already defined and was NOT overwritten`)) : (e[i] = o[i], s[i] = o[i]);
23543
+ for (let i of Object.keys(n)) Object.prototype.hasOwnProperty.call(e, i) ? (r === true && (e[i] = n[i], s[i] = n[i]), o && T(r === true ? `"${i}" is already defined and WAS overwritten` : `"${i}" is already defined and was NOT overwritten`)) : (e[i] = n[i], s[i] = n[i]);
23493
23544
  return s;
23494
23545
  }
23495
- var A = { configDotenv: ce, config: ae, parse: ne, populate: le };
23546
+ var A = { configDotenv: ae, config: le, parse: se, populate: fe };
23496
23547
  x.exports.configDotenv = A.configDotenv;
23497
23548
  x.exports.config = A.config;
23498
23549
  x.exports.parse = A.parse;
23499
23550
  x.exports.populate = A.populate;
23500
23551
  x.exports = A;
23501
23552
  });
23502
- var M = I((Te, W) => {
23503
- var _ = __require("child_process"), fe = __require("fs"), L = __require("path");
23504
- function ue(e) {
23505
- let o = ['"'], t = 0;
23506
- for (let n of e) {
23507
- if (n === "\\") {
23553
+ var M = k((Te, W) => {
23554
+ var _ = __require("child_process"), ue = __require("fs"), L = __require("path");
23555
+ function de(e) {
23556
+ let n = ['"'], t = 0;
23557
+ for (let o of e) {
23558
+ if (o === "\\") {
23508
23559
  t++;
23509
23560
  continue;
23510
23561
  }
23511
- n === '"' ? o.push("\\".repeat(t * 2 + 1), '"') : o.push("\\".repeat(t), n), t = 0;
23562
+ o === '"' ? n.push("\\".repeat(t * 2 + 1), '"') : n.push("\\".repeat(t), o), t = 0;
23512
23563
  }
23513
- return o.push("\\".repeat(t * 2), '"'), o.join("");
23564
+ return n.push("\\".repeat(t * 2), '"'), n.join("");
23514
23565
  }
23515
- function H(e, o = 1) {
23516
- for (let t = 0; t < o; t++) {
23517
- let n = [];
23566
+ function H(e, n = 1) {
23567
+ for (let t = 0; t < n; t++) {
23568
+ let o = [];
23518
23569
  for (let r of e) {
23519
23570
  let s = r.charCodeAt(0), i = s >= 48 && s <= 57 || s >= 65 && s <= 90 || s >= 97 && s <= 122, l = "\\/:._-".includes(r);
23520
- !i && !l && s < 128 && n.push("^"), n.push(r);
23571
+ !i && !l && s < 128 && o.push("^"), o.push(r);
23521
23572
  }
23522
- e = n.join("");
23573
+ e = o.join("");
23523
23574
  }
23524
23575
  return e;
23525
23576
  }
23526
- function P(e, o) {
23527
- let t = Object.keys(e).reverse().find((n) => n.toUpperCase() === o);
23577
+ function P(e, n) {
23578
+ let t = Object.keys(e).reverse().find((o) => o.toUpperCase() === n);
23528
23579
  return t === void 0 ? void 0 : e[t];
23529
23580
  }
23530
- function de(e, o, t) {
23531
- let n = (P(o, "PATHEXT") || ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean), s = n.some((l) => e.toLowerCase().endsWith(l.toLowerCase())) ? ["", ...n] : [...n, ""], i = /[\\/]/.test(e) ? [t] : [t, ...(P(o, "PATH") || "").split(";")];
23581
+ function pe(e, n, t) {
23582
+ let o = (P(n, "PATHEXT") || ".COM;.EXE;.BAT;.CMD").split(";").filter(Boolean), s = o.some((l) => e.toLowerCase().endsWith(l.toLowerCase())) ? ["", ...o] : [...o, ""], i = /[\\/]/.test(e) ? [t] : [t, ...(P(n, "PATH") || "").split(";")];
23532
23583
  for (let l of i) for (let d of s) {
23533
23584
  let p = L.resolve(t, l.replace(/^"|"$/g, ""), e + d);
23534
23585
  try {
23535
- if (fe.statSync(p).isFile()) return p;
23586
+ if (ue.statSync(p).isFile()) return p;
23536
23587
  } catch {
23537
23588
  }
23538
23589
  }
23539
23590
  }
23540
- function pe(e, o, t) {
23541
- if (process.platform !== "win32") return _.spawn(e, o, t);
23542
- let n = t.env || process.env, r = de(e, n, t.cwd || process.cwd());
23543
- if (r && /\.(?:exe|com)$/i.test(r)) return _.spawn(r, o, t);
23591
+ function he(e, n, t) {
23592
+ if (process.platform !== "win32") return _.spawn(e, n, t);
23593
+ let o = t.env || process.env, r = pe(e, o, t.cwd || process.cwd());
23594
+ if (r && /\.(?:exe|com)$/i.test(r)) return _.spawn(r, n, t);
23544
23595
  let s = /\.(?:bat|cmd)$/i.test(r || e), i = [H(L.normalize(r || e))];
23545
- for (let d of o) i.push(H(ue(d), s ? 2 : 1));
23596
+ for (let d of n) i.push(H(de(d), s ? 2 : 1));
23546
23597
  let l = i.join(" ");
23547
- return _.spawn(P(n, "COMSPEC") || "cmd.exe", ["/d", "/v:off", "/s", "/c", `"${l}"`], { ...t, windowsVerbatimArguments: true });
23598
+ return _.spawn(P(o, "COMSPEC") || "cmd.exe", ["/d", "/v:off", "/s", "/c", `"${l}"`], { ...t, windowsVerbatimArguments: true });
23548
23599
  }
23549
- W.exports = pe;
23600
+ W.exports = he;
23550
23601
  });
23551
- var K = I(($e, F) => {
23552
- var he = __require("fs"), ge = __require("os"), Q = __require("path"), me = __require("child_process"), ve = M(), R = N(), { optionsFromEnv: Ce } = S();
23553
- function $() {
23602
+ var X = k(($e, F) => {
23603
+ var ge = __require("fs"), me = __require("os"), Q = __require("path"), ve = __require("child_process"), Ce = M(), R = N(), { optionsFromEnv: J } = I();
23604
+ function D() {
23554
23605
  console.log(["Usage: dotenv run [--help] [-q|--quiet] [--debug] [--override] [--fast] [-f|--file <paths>] [--] <command> [args...]", "", "Run a command with environment variables from a .env file.", "Place dotenv options before the command; all following arguments go to the command.", "", "Options:", " -f, --file <paths> .env paths, comma-separated or repeated (default: .env)", " -q, --quiet suppress the injected env message", " --debug enable debug logging", " --override override existing environment variables", " --fast use the faster character-scanner parser", "", "Environment variables (DOTENV_CONFIG_* names remain as fallbacks):", " DOTENV_PATH, DOTENV_ENCODING, DOTENV_QUIET,", " DOTENV_DEBUG, DOTENV_OVERRIDE,", " DOTENV_FAST"].join(`
23555
23606
  `));
23556
23607
  }
23557
23608
  function we(e) {
23558
- let o = [], t = false, n, r, s, i, l = -1;
23609
+ let n = [], t = false, o, r, s, i, l = -1;
23559
23610
  for (let p = 0; p < e.length; p++) {
23560
23611
  let f = e[p];
23561
23612
  if (f === "--") {
@@ -23564,7 +23615,7 @@ var require_dist2 = __commonJS({
23564
23615
  }
23565
23616
  if (f === "--help" || f === "-h") return { help: true };
23566
23617
  if (f === "--quiet" || f === "-q") {
23567
- n = true;
23618
+ o = true;
23568
23619
  continue;
23569
23620
  }
23570
23621
  if (f === "--debug") {
@@ -23580,11 +23631,11 @@ var require_dist2 = __commonJS({
23580
23631
  continue;
23581
23632
  }
23582
23633
  if (f === "-f" || f === "--file" || f.startsWith("-f=") || f.startsWith("--file=")) {
23583
- let c = f.indexOf("="), a = c === -1 ? f : f.slice(0, c), g = c === -1 ? e[++p] : f.slice(c + 1);
23584
- if (!g || g === "--") return { error: `${a} requires a path` };
23585
- let h = g.split(",").map((y) => y.trim()).filter(Boolean);
23586
- if (h.length === 0) return { error: `${a} requires a path` };
23587
- o.push(...h), t = true;
23634
+ let c = f.indexOf("="), a = c === -1 ? f : f.slice(0, c), h = c === -1 ? e[++p] : f.slice(c + 1);
23635
+ if (!h || h === "--") return { error: `${a} requires a path` };
23636
+ let g = h.split(",").map((y) => y.trim()).filter(Boolean);
23637
+ if (g.length === 0) return { error: `${a} requires a path` };
23638
+ n.push(...g), t = true;
23588
23639
  continue;
23589
23640
  }
23590
23641
  if (f.startsWith("-")) return { error: `unknown option: ${f}` };
@@ -23592,67 +23643,67 @@ var require_dist2 = __commonJS({
23592
23643
  break;
23593
23644
  }
23594
23645
  let d = l === -1 ? [] : e.slice(l);
23595
- return { paths: o, pathSet: t, quiet: n, debug: r, override: s, fast: i, command: d };
23646
+ return { paths: n, pathSet: t, quiet: o, debug: r, override: s, fast: i, command: d };
23596
23647
  }
23597
23648
  function Ae(e) {
23598
- return e[0] === "~" ? Q.join(ge.homedir(), e.slice(1)) : e;
23649
+ return e[0] === "~" ? Q.join(me.homedir(), e.slice(1)) : e;
23599
23650
  }
23600
23651
  function Ee(e) {
23601
- let o = Ce(), t = { encoding: o.encoding || "utf8", quiet: o.quiet === true, debug: o.debug === true, override: o.override === true, fast: o.fast === true, paths: [".env"], defaultPath: true };
23602
- return o.path != null && (t.paths = [o.path], t.defaultPath = false), e.pathSet && (t.paths = e.paths, t.defaultPath = false), e.quiet != null && (t.quiet = e.quiet), e.debug != null && (t.debug = e.debug), e.override != null && (t.override = e.override), e.fast != null && (t.fast = e.fast), t;
23652
+ let n = J(), t = { encoding: n.encoding || "utf8", quiet: n.quiet, debug: n.debug === true, override: n.override === true, fast: n.fast === true, paths: [".env"], defaultPath: true };
23653
+ return n.path != null && (t.paths = [n.path], t.defaultPath = false), e.pathSet && (t.paths = e.paths, t.defaultPath = false), e.quiet != null && (t.quiet = e.quiet), e.debug != null && (t.debug = e.debug), e.override != null && (t.override = e.override), e.fast != null && (t.fast = e.fast), t;
23603
23654
  }
23604
23655
  function be(e) {
23605
- let o = {}, t = [], n = { override: e.override, debug: e.debug };
23656
+ let n = {}, t = [], o = { override: e.override, debug: e.debug };
23606
23657
  for (let s of e.paths) {
23607
23658
  let i = Q.resolve(process.cwd(), Ae(s));
23608
23659
  try {
23609
- let l = R.parse(he.readFileSync(i, { encoding: e.encoding }), { fast: e.fast });
23610
- R.populate(o, l, n), t.push(s);
23660
+ let l = R.parse(ge.readFileSync(i, { encoding: e.encoding }), { fast: e.fast });
23661
+ R.populate(n, l, o), t.push(s);
23611
23662
  } catch (l) {
23612
23663
  if (e.debug && console.log(`\u2506 failed to load ${s} ${l.message}`), !(e.defaultPath && l.code === "ENOENT")) throw l;
23613
23664
  }
23614
23665
  }
23615
- return { injected: R.populate(process.env, o, n), loadedPaths: t };
23666
+ return { injected: R.populate(process.env, n, o), loadedPaths: t };
23616
23667
  }
23617
- function J(e) {
23618
- let o = e[0];
23619
- if (o === "--help" || o === "-h") {
23620
- $();
23668
+ function K(e) {
23669
+ let n = e[0];
23670
+ if (n === "--help" || n === "-h") {
23671
+ D();
23621
23672
  return;
23622
23673
  }
23623
- if (o !== "run") {
23624
- $(), process.exitCode = 1;
23674
+ if (n !== "run") {
23675
+ D(), process.exitCode = 1;
23625
23676
  return;
23626
23677
  }
23627
23678
  let t = we(e.slice(1));
23628
23679
  if (t.help) {
23629
- $();
23680
+ D();
23630
23681
  return;
23631
23682
  }
23632
23683
  if (t.error) {
23633
- console.error(`dotenv: ${t.error}`), $(), process.exitCode = 1;
23684
+ console.error(`dotenv: ${t.error}`), D(), process.exitCode = 1;
23634
23685
  return;
23635
23686
  }
23636
23687
  if (t.command.length === 0) {
23637
- $(), process.exitCode = 1;
23688
+ D(), process.exitCode = 1;
23638
23689
  return;
23639
23690
  }
23640
- let n = Ee(t);
23691
+ let o = Ee(t);
23641
23692
  try {
23642
- let c = be(n);
23643
- if (!n.quiet) {
23644
- let a = `\u25C7 injected env (${Object.keys(c.injected).length})`;
23645
- c.loadedPaths.length > 0 && (a += ` from ${c.loadedPaths.join(", ")}`), console.error(a);
23693
+ let c = be(o);
23694
+ if (!(o.quiet == null ? J().quiet : o.quiet)) {
23695
+ let h = `\u25C7 injected env (${Object.keys(c.injected).length})`;
23696
+ c.loadedPaths.length > 0 && (h += ` from ${c.loadedPaths.join(", ")}`), console.error(h);
23646
23697
  }
23647
23698
  } catch (c) {
23648
23699
  console.error(`dotenv: ${c.message}`), process.exitCode = 1;
23649
23700
  return;
23650
23701
  }
23651
- let r = !!process.stdin.isTTY, s = process.platform !== "win32" && !r, i = ve(t.command[0], t.command.slice(1), { stdio: "inherit", detached: s }), l = /* @__PURE__ */ new Map(), d = 0;
23702
+ let r = !!process.stdin.isTTY, s = process.platform !== "win32" && !r, i = Ce(t.command[0], t.command.slice(1), { stdio: "inherit", detached: s }), l = /* @__PURE__ */ new Map(), d = 0;
23652
23703
  function p(c) {
23653
23704
  if (!(!i.pid || i.exitCode !== null || i.signalCode !== null)) {
23654
23705
  if (process.platform === "win32") {
23655
- me.spawnSync("taskkill", ["/pid", String(i.pid), "/T", "/F"], { stdio: "ignore" });
23706
+ ve.spawnSync("taskkill", ["/pid", String(i.pid), "/T", "/F"], { stdio: "ignore" });
23656
23707
  return;
23657
23708
  }
23658
23709
  try {
@@ -23685,17 +23736,17 @@ var require_dist2 = __commonJS({
23685
23736
  }, 1e3), process.kill(process.pid, a));
23686
23737
  });
23687
23738
  }
23688
- F.exports = J;
23689
- __require.main === F && J(process.argv.slice(2));
23739
+ F.exports = K;
23740
+ __require.main === F && K(process.argv.slice(2));
23690
23741
  });
23691
- var D = N();
23692
- var Oe = K();
23693
- module.exports = D;
23694
- module.exports.config = D.config;
23695
- module.exports.configDotenv = D.configDotenv;
23696
- module.exports.parse = D.parse;
23697
- module.exports.populate = D.populate;
23698
- __require.main === module && Oe(process.argv.slice(2));
23742
+ var j = N();
23743
+ var qe = X();
23744
+ module.exports = j;
23745
+ module.exports.config = j.config;
23746
+ module.exports.configDotenv = j.configDotenv;
23747
+ module.exports.parse = j.parse;
23748
+ module.exports.populate = j.populate;
23749
+ __require.main === module && qe(process.argv.slice(2));
23699
23750
  }
23700
23751
  });
23701
23752
 
@@ -27480,7 +27531,7 @@ function declaredDialect(schema, remedy) {
27480
27531
  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}`);
27481
27532
  }
27482
27533
 
27483
- // node_modules/@modelcontextprotocol/core/dist/auth-BNDyLTqp.mjs
27534
+ // node_modules/@modelcontextprotocol/server/node_modules/@modelcontextprotocol/core/dist/auth-BNDyLTqp.mjs
27484
27535
  var z = __toESM(require_v4(), 1);
27485
27536
  var LATEST_PROTOCOL_VERSION = "2025-11-25";
27486
27537
  var SUPPORTED_PROTOCOL_VERSIONS = [
@@ -43012,6 +43063,7 @@ __export(util_exports, {
43012
43063
  required: () => required,
43013
43064
  safeExtend: () => safeExtend,
43014
43065
  shallowClone: () => shallowClone,
43066
+ sizeCaps: () => sizeCaps,
43015
43067
  slugify: () => slugify,
43016
43068
  stringifyPrimitive: () => stringifyPrimitive,
43017
43069
  toZod: () => toZod,
@@ -43531,6 +43583,18 @@ function prefixIssues(path, issues) {
43531
43583
  function unwrapMessage(message) {
43532
43584
  return typeof message === "string" ? message : message?.message;
43533
43585
  }
43586
+ function sizeCaps(defChecks) {
43587
+ const caps = [];
43588
+ for (const ch of defChecks ?? []) {
43589
+ const d = ch._zod.def;
43590
+ if (!/_(length|size)$|_equals$/.test(d.check))
43591
+ break;
43592
+ const max = d.maximum ?? d.length ?? d.size;
43593
+ if (max >= 0)
43594
+ caps.push([max, ch]);
43595
+ }
43596
+ return caps;
43597
+ }
43534
43598
  function attachSchema(issues, start, inst) {
43535
43599
  var _a3;
43536
43600
  for (let i = start; i < issues.length; i++) {
@@ -44951,7 +45015,7 @@ ${content.join("\n")}
44951
45015
  var version = {
44952
45016
  major: 4,
44953
45017
  minor: 6,
44954
- patch: 5
45018
+ patch: 6
44955
45019
  };
44956
45020
 
44957
45021
  // node_modules/zod/v4/core/schemas.js
@@ -45707,6 +45771,31 @@ var $ZodDate = /* @__PURE__ */ $constructor("$ZodDate", (inst, def) => {
45707
45771
  return payload;
45708
45772
  };
45709
45773
  });
45774
+ function capSize(inst, size) {
45775
+ const caps = sizeCaps(inst._zod.def.checks);
45776
+ if (!caps.length)
45777
+ return;
45778
+ const cap = Math.min(...caps.map((c) => c[0]));
45779
+ const parse4 = inst._zod.parse;
45780
+ inst._zod.parse = (payload, ctx) => {
45781
+ const n = size(payload.value);
45782
+ if (n > cap && !ctx?.skipChecks && ctx?.direction !== "backward") {
45783
+ for (const [max, ch] of sizeCaps(inst._zod.def.checks)) {
45784
+ if (n > max && ch._zod.def.when(payload)) {
45785
+ const start = payload.issues.length;
45786
+ ch._zod.check(payload);
45787
+ payload.issues[start].continue = false;
45788
+ attachSchema(payload.issues, start, inst);
45789
+ return payload;
45790
+ }
45791
+ }
45792
+ }
45793
+ return parse4(payload, ctx);
45794
+ };
45795
+ }
45796
+ var arraySize = (input2) => Array.isArray(input2) ? input2.length : -1;
45797
+ var mapSize = (input2) => input2 instanceof Map ? input2.size : -1;
45798
+ var setSize = (input2) => input2 instanceof Set ? input2.size : -1;
45710
45799
  function handleArrayResult(result, final, index) {
45711
45800
  if (result.issues.length) {
45712
45801
  final.issues.push(...prefixIssues(index, result.issues));
@@ -45750,6 +45839,7 @@ var $ZodArray = /* @__PURE__ */ $constructor("$ZodArray", (inst, def) => {
45750
45839
  }
45751
45840
  return payload;
45752
45841
  };
45842
+ capSize(inst, arraySize);
45753
45843
  });
45754
45844
  function handlePropertyResult(result, final, key, input2, optin, optout) {
45755
45845
  const isPresent = key in input2;
@@ -46706,6 +46796,7 @@ var $ZodMap = /* @__PURE__ */ $constructor("$ZodMap", (inst, def) => {
46706
46796
  return Promise.all(proms).then(() => payload);
46707
46797
  return payload;
46708
46798
  };
46799
+ capSize(inst, mapSize);
46709
46800
  });
46710
46801
  function handleMapResult(keyResult, valueResult, final, key, input2, inst, ctx) {
46711
46802
  if (keyResult.issues.length) {
@@ -46772,6 +46863,7 @@ var $ZodSet = /* @__PURE__ */ $constructor("$ZodSet", (inst, def) => {
46772
46863
  return Promise.all(proms).then(() => payload);
46773
46864
  return payload;
46774
46865
  };
46866
+ capSize(inst, setSize);
46775
46867
  });
46776
46868
  function handleSetResult(result, final) {
46777
46869
  if (result.issues.length) {
@@ -56302,9 +56394,15 @@ function generateNullableCheck(doc, ctx, schema, accessor, buildsValue = true) {
56302
56394
  doc.write(`}`);
56303
56395
  return outputVar;
56304
56396
  }
56397
+ function generateSizeGate(doc, schema, size) {
56398
+ for (const [max, check2] of sizeCaps(schema._zod.def.checks)) {
56399
+ doc.write(`if (${size} > ${numericOperand(max, check2._zod.def.check)}) return INVALID;`);
56400
+ }
56401
+ }
56305
56402
  function generateArrayCheck(doc, ctx, schema, accessor, buildsValue = true) {
56306
56403
  const def = schema._zod.def;
56307
56404
  doc.write(`if (!Array.isArray(${accessor})) return INVALID;`);
56405
+ generateSizeGate(doc, schema, `${accessor}.length`);
56308
56406
  const outputVar = buildsValue ? newVar(ctx) : null;
56309
56407
  const iVar = newVar(ctx);
56310
56408
  const elemVar = newVar(ctx);
@@ -56704,6 +56802,7 @@ function literalPropertyKey(ctx, key) {
56704
56802
  function generateMapCheck(doc, ctx, schema, accessor) {
56705
56803
  const def = schema._zod.def;
56706
56804
  doc.write(`if (!(${accessor} instanceof Map)) return INVALID;`);
56805
+ generateSizeGate(doc, schema, `${accessor}.size`);
56707
56806
  const outputVar = newVar(ctx);
56708
56807
  const kVar = newVar(ctx);
56709
56808
  const valVar = newVar(ctx);
@@ -56720,6 +56819,7 @@ function generateMapCheck(doc, ctx, schema, accessor) {
56720
56819
  function generateSetCheck(doc, ctx, schema, accessor) {
56721
56820
  const def = schema._zod.def;
56722
56821
  doc.write(`if (!(${accessor} instanceof Set)) return INVALID;`);
56822
+ generateSizeGate(doc, schema, `${accessor}.size`);
56723
56823
  const outputVar = newVar(ctx);
56724
56824
  const valVar = newVar(ctx);
56725
56825
  doc.write(`const ${outputVar} = new Set();`);
@@ -76298,7 +76398,7 @@ function registerVisitTools(server, client2, patients2) {
76298
76398
  }
76299
76399
 
76300
76400
  // src/version.ts
76301
- var VERSION = "1.3.6";
76401
+ var VERSION = "1.3.7";
76302
76402
 
76303
76403
  // src/index.ts
76304
76404
  var dotenvCandidates = [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@chrischall/myatriumhealth-mcp",
3
- "version": "1.3.6",
3
+ "version": "1.3.7",
4
4
  "description": "MCP server for MyAtriumHealth (Atrium Health's Epic MyChart patient portal) via the fetchproxy browser bridge.",
5
5
  "type": "module",
6
6
  "bin": {
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/chrischall/myatriumhealth-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.3.6",
9
+ "version": "1.3.7",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "@chrischall/myatriumhealth-mcp",
14
- "version": "1.3.6",
14
+ "version": "1.3.7",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },