vibo-mcp 1.5.1 → 1.5.3

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 Vibo (vibodj.com) — plan & manage event music, song requests, ideas, guests, and playlists via natural language",
10
- "version": "1.5.1"
10
+ "version": "1.5.3"
11
11
  },
12
12
  "plugins": [
13
13
  {
@@ -15,7 +15,7 @@
15
15
  "displayName": "Vibo",
16
16
  "source": "./",
17
17
  "description": "MCP server for Vibo — browse & manage events, timeline, songs, the DJ song ideas/questions, guests, and exports to Spotify/Apple Music",
18
- "version": "1.5.1",
18
+ "version": "1.5.3",
19
19
  "author": {
20
20
  "name": "Chris Hall"
21
21
  },
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "vibo-mcp",
3
3
  "displayName": "Vibo",
4
- "version": "1.5.1",
4
+ "version": "1.5.3",
5
5
  "description": "MCP server for Vibo (vibodj.com) — plan & manage event music, song requests, ideas, guests, and playlists via natural language",
6
6
  "author": {
7
7
  "name": "Chris Hall",
package/dist/bundle.js CHANGED
@@ -3644,7 +3644,12 @@ var require_fast_uri = __commonJS({
3644
3644
  }
3645
3645
  function resolve(baseURI, relativeURI, options) {
3646
3646
  const schemelessOptions = options ? Object.assign({ scheme: "null" }, options) : { scheme: "null" };
3647
- const resolved = resolveComponent(parse3(baseURI, schemelessOptions), parse3(relativeURI, schemelessOptions), schemelessOptions, true);
3647
+ const { parsed: baseParsed, malformedAuthorityOrPort: baseMalformed } = parseWithStatus(baseURI, schemelessOptions);
3648
+ const { parsed: relativeParsed, malformedAuthorityOrPort: relativeMalformed } = parseWithStatus(relativeURI, schemelessOptions);
3649
+ if (baseMalformed || relativeMalformed) {
3650
+ throw new Error(baseParsed.error || relativeParsed.error || "URI is malformed.");
3651
+ }
3652
+ const resolved = resolveComponent(baseParsed, relativeParsed, schemelessOptions, true);
3648
3653
  schemelessOptions.skipEscape = true;
3649
3654
  return serialize(resolved, schemelessOptions);
3650
3655
  }
@@ -3770,6 +3775,7 @@ var require_fast_uri = __commonJS({
3770
3775
  }
3771
3776
  var URI_PARSE = /^(?:([^#/:?]+):)?(?:\/\/((?:([^#/?@]*)@)?(\[[^#/?\]]+\]|[^#/:?]*)(?::(\d*))?))?([^#?]*)(?:\?([^#]*))?(?:#((?:.|[\n\r])*))?/u;
3772
3777
  var AUTHORITY_PREFIX = /^(?:[^#/:?]+:)?\/\/([^/?#]*)/;
3778
+ var AUTHORITY_INTRODUCER_REGION = /^(?:[^#/:?]+:)?([/\\\t\n\r]*)/;
3773
3779
  function getParseError(parsed, matches) {
3774
3780
  if (matches[2] !== void 0 && parsed.path && parsed.path[0] !== "/") {
3775
3781
  return 'URI path must start with "/" when authority is present.';
@@ -3804,6 +3810,20 @@ var require_fast_uri = __commonJS({
3804
3810
  parsed.error = "URI authority must not contain a literal backslash.";
3805
3811
  malformedAuthorityOrPort = true;
3806
3812
  }
3813
+ const introducerMatch = uri.match(AUTHORITY_INTRODUCER_REGION);
3814
+ if (introducerMatch !== null) {
3815
+ const region = introducerMatch[1];
3816
+ const normalizedRegion = region.replace(/[\t\n\r]/g, "");
3817
+ if (normalizedRegion.length >= 2) {
3818
+ if (normalizedRegion.slice(0, 2) !== "//") {
3819
+ parsed.error = parsed.error || "URI authority must not contain a literal backslash.";
3820
+ malformedAuthorityOrPort = true;
3821
+ } else if (region.length !== normalizedRegion.length) {
3822
+ parsed.error = parsed.error || "URI authority introducer must not contain whitespace.";
3823
+ malformedAuthorityOrPort = true;
3824
+ }
3825
+ }
3826
+ }
3807
3827
  const matches = uri.match(URI_PARSE);
3808
3828
  if (matches) {
3809
3829
  parsed.scheme = matches[1];
@@ -23048,17 +23068,33 @@ function normalizeObjectSchema(schema) {
23048
23068
  }
23049
23069
  return void 0;
23050
23070
  }
23071
+ function getDotPath(path) {
23072
+ if (path.length === 0) {
23073
+ return "object root";
23074
+ }
23075
+ return path.reduce((acc, seg, index) => {
23076
+ if (index === 0) {
23077
+ return String(seg);
23078
+ }
23079
+ if (typeof seg === "number") {
23080
+ return `${acc}[${seg}]`;
23081
+ }
23082
+ return `${acc}.${seg}`;
23083
+ }, "");
23084
+ }
23051
23085
  function getParseErrorMessage(error51) {
23052
23086
  if (error51 && typeof error51 === "object") {
23087
+ if ("issues" in error51 && Array.isArray(error51.issues) && error51.issues.length > 0) {
23088
+ return error51.issues.map((i) => {
23089
+ if (!i.path?.length) {
23090
+ return i.message;
23091
+ }
23092
+ return `${i.message} at ${getDotPath(i.path)}`;
23093
+ }).join("\n");
23094
+ }
23053
23095
  if ("message" in error51 && typeof error51.message === "string") {
23054
23096
  return error51.message;
23055
23097
  }
23056
- if ("issues" in error51 && Array.isArray(error51.issues) && error51.issues.length > 0) {
23057
- const firstIssue = error51.issues[0];
23058
- if (firstIssue && typeof firstIssue === "object" && "message" in firstIssue) {
23059
- return String(firstIssue.message);
23060
- }
23061
- }
23062
23098
  try {
23063
23099
  return JSON.stringify(error51);
23064
23100
  } catch {
@@ -29673,16 +29709,7 @@ var Server = class extends Protocol {
29673
29709
  if (!methodSchema) {
29674
29710
  throw new Error("Schema is missing a method literal");
29675
29711
  }
29676
- let methodValue;
29677
- if (isZ4Schema(methodSchema)) {
29678
- const v4Schema = methodSchema;
29679
- const v4Def = v4Schema._zod?.def;
29680
- methodValue = v4Def?.value ?? v4Schema.value;
29681
- } else {
29682
- const v3Schema = methodSchema;
29683
- const legacyDef = v3Schema._def;
29684
- methodValue = legacyDef?.value ?? v3Schema.value;
29685
- }
29712
+ const methodValue = getLiteralValue(methodSchema);
29686
29713
  if (typeof methodValue !== "string") {
29687
29714
  throw new Error("Schema method literal must be a string");
29688
29715
  }
@@ -30870,8 +30897,17 @@ var EMPTY_COMPLETION_RESULT = {
30870
30897
  import process3 from "node:process";
30871
30898
 
30872
30899
  // node_modules/@modelcontextprotocol/sdk/dist/esm/shared/stdio.js
30900
+ var STDIO_DEFAULT_MAX_BUFFER_SIZE = 10 * 1024 * 1024;
30873
30901
  var ReadBuffer = class {
30902
+ constructor(options) {
30903
+ this._maxBufferSize = options?.maxBufferSize ?? STDIO_DEFAULT_MAX_BUFFER_SIZE;
30904
+ }
30874
30905
  append(chunk) {
30906
+ const newSize = (this._buffer?.length ?? 0) + chunk.length;
30907
+ if (newSize > this._maxBufferSize) {
30908
+ this.clear();
30909
+ throw new Error(`ReadBuffer exceeded maximum size of ${this._maxBufferSize} bytes`);
30910
+ }
30875
30911
  this._buffer = this._buffer ? Buffer.concat([this._buffer, chunk]) : chunk;
30876
30912
  }
30877
30913
  readMessage() {
@@ -30899,18 +30935,24 @@ function serializeMessage(message) {
30899
30935
 
30900
30936
  // node_modules/@modelcontextprotocol/sdk/dist/esm/server/stdio.js
30901
30937
  var StdioServerTransport = class {
30902
- constructor(_stdin = process3.stdin, _stdout = process3.stdout) {
30938
+ constructor(_stdin = process3.stdin, _stdout = process3.stdout, options) {
30903
30939
  this._stdin = _stdin;
30904
30940
  this._stdout = _stdout;
30905
- this._readBuffer = new ReadBuffer();
30906
30941
  this._started = false;
30907
30942
  this._ondata = (chunk) => {
30908
- this._readBuffer.append(chunk);
30909
- this.processReadBuffer();
30943
+ try {
30944
+ this._readBuffer.append(chunk);
30945
+ this.processReadBuffer();
30946
+ } catch (error51) {
30947
+ this.onerror?.(error51);
30948
+ this.close().catch(() => {
30949
+ });
30950
+ }
30910
30951
  };
30911
30952
  this._onerror = (error51) => {
30912
30953
  this.onerror?.(error51);
30913
30954
  };
30955
+ this._readBuffer = new ReadBuffer({ maxBufferSize: options?.maxBufferSize });
30914
30956
  }
30915
30957
  /**
30916
30958
  * Starts listening for messages on stdin.
@@ -31126,7 +31168,7 @@ function toolAnnotations(opts = {}) {
31126
31168
  }
31127
31169
 
31128
31170
  // src/version.ts
31129
- var VERSION = "1.5.1";
31171
+ var VERSION = "1.5.3";
31130
31172
 
31131
31173
  // src/client.ts
31132
31174
  import { dirname as dirname2, join as join2 } from "path";
package/dist/version.js CHANGED
@@ -2,4 +2,4 @@
2
2
  // literal on the line carrying the release marker; every manifest and the MCP
3
3
  // server banner import VERSION from here, so there is exactly one place to keep
4
4
  // in sync (and one release-please extra-files entry).
5
- export const VERSION = '1.5.1'; // x-release-please-version
5
+ export const VERSION = '1.5.3'; // x-release-please-version
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibo-mcp",
3
- "version": "1.5.1",
3
+ "version": "1.5.3",
4
4
  "mcpName": "io.github.chrischall/vibo-mcp",
5
5
  "description": "Vibo (vibodj.com) MCP server for Claude — host/couple event music planning & management. Developed and maintained by AI (Claude Code).",
6
6
  "author": "Claude Code (AI) <https://www.anthropic.com/claude>",
@@ -44,18 +44,19 @@
44
44
  "test:coverage": "vitest run --coverage",
45
45
  "worker:dev": "wrangler dev",
46
46
  "worker:deploy": "wrangler deploy",
47
+ "worker:typecheck": "tsc --noEmit -p tsconfig.worker.json",
47
48
  "worker:test": "vitest run --config vitest.workers.config.ts"
48
49
  },
49
50
  "dependencies": {
50
- "@chrischall/mcp-utils": "^0.13.1",
51
- "@fetchproxy/bootstrap": "^1.3.4",
51
+ "@chrischall/mcp-utils": "^0.14.0",
52
+ "@fetchproxy/bootstrap": "^2.0.0",
52
53
  "@modelcontextprotocol/sdk": "^1.29.0",
53
54
  "dotenv": "^17.4.0",
54
55
  "zod": "^4.4.2"
55
56
  },
56
57
  "devDependencies": {
57
58
  "@chrischall/mcp-connector": "^1.0.0",
58
- "@cloudflare/vitest-pool-workers": "^0.18.4",
59
+ "@cloudflare/vitest-pool-workers": "^0.20.1",
59
60
  "@cloudflare/workers-oauth-provider": "^0.8.1",
60
61
  "@cloudflare/workers-types": "^5.20260708.1",
61
62
  "@types/node": "^26.0.0",
package/server.json CHANGED
@@ -6,12 +6,12 @@
6
6
  "url": "https://github.com/chrischall/vibo-mcp",
7
7
  "source": "github"
8
8
  },
9
- "version": "1.5.1",
9
+ "version": "1.5.3",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "vibo-mcp",
14
- "version": "1.5.1",
14
+ "version": "1.5.3",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },