vibo-mcp 1.5.0 → 1.5.1

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.0"
10
+ "version": "1.5.1"
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.0",
18
+ "version": "1.5.1",
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.0",
4
+ "version": "1.5.1",
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
@@ -31126,7 +31126,7 @@ function toolAnnotations(opts = {}) {
31126
31126
  }
31127
31127
 
31128
31128
  // src/version.ts
31129
- var VERSION = "1.5.0";
31129
+ var VERSION = "1.5.1";
31130
31130
 
31131
31131
  // src/client.ts
31132
31132
  import { dirname as dirname2, join as join2 } from "path";
@@ -32136,12 +32136,11 @@ function streamingLinkCount(links) {
32136
32136
  (l) => typeof l === "string" && l.length > 0
32137
32137
  ).length;
32138
32138
  }
32139
- function soundcloudHandleMatchesArtist(url2, artist) {
32139
+ function soundcloudHandleIsConsistentWith(url2, artist) {
32140
32140
  const path = url2.replace(/^https?:\/\/(www\.)?soundcloud\.com\//i, "").split("/")[0] ?? "";
32141
32141
  const handle = normalizeName(path).split(" ").join("");
32142
- if (!handle) return false;
32143
32142
  const tokens = normalizeName(artist).split(" ").filter((t) => t.length >= 4);
32144
- if (!tokens.length) return false;
32143
+ if (!handle || !tokens.length) return true;
32145
32144
  return tokens.some((t) => handle.includes(t));
32146
32145
  }
32147
32146
  function assessSong(song, intended) {
@@ -32187,7 +32186,7 @@ function assessSong(song, intended) {
32187
32186
  }
32188
32187
  const soundcloud = song.links?.soundcloud;
32189
32188
  const artistForHandle = isJunkArtist ? intended?.artist : artist || intended?.artist;
32190
- if (soundcloud && artistForHandle && !soundcloudHandleMatchesArtist(soundcloud, artistForHandle)) {
32189
+ if (soundcloud && artistForHandle && !soundcloudHandleIsConsistentWith(soundcloud, artistForHandle)) {
32191
32190
  warnings.push(`SoundCloud handle does not obviously belong to "${artistForHandle}".`);
32192
32191
  }
32193
32192
  const confidence = hard ? "likely-not-original" : warnings.length ? "uncertain" : "likely-original";
@@ -127,21 +127,24 @@ function streamingLinkCount(links) {
127
127
  return [links.spotify, links.appleMusic, links.tidal, links.deezer, links.soundcloud].filter((l) => typeof l === 'string' && l.length > 0).length;
128
128
  }
129
129
  /**
130
- * True when a SoundCloud URL's handle plausibly belongs to `artist` — i.e. the
131
- * handle contains one of the artist's substantial name tokens. Deliberately
132
- * loose: `soundcloud.com/elvissonymusic/...` counts for Elvis Presley (a label
133
- * account), while `soundcloud.com/jen-prince-602192391/...` does not.
130
+ * True when a SoundCloud URL's handle is consistent with `artist` — i.e. the
131
+ * handle contains one of the artist's substantial name tokens, *or* the check
132
+ * cannot be run at all. Deliberately loose: `soundcloud.com/elvissonymusic/...`
133
+ * counts for Elvis Presley (a label account), while
134
+ * `soundcloud.com/jen-prince-602192391/...` does not.
134
135
  */
135
- function soundcloudHandleMatchesArtist(url, artist) {
136
+ function soundcloudHandleIsConsistentWith(url, artist) {
136
137
  const path = url.replace(/^https?:\/\/(www\.)?soundcloud\.com\//i, '').split('/')[0] ?? '';
137
138
  const handle = normalizeName(path).split(' ').join('');
138
- if (!handle)
139
- return false;
140
139
  const tokens = normalizeName(artist)
141
140
  .split(' ')
142
141
  .filter((t) => t.length >= 4);
143
- if (!tokens.length)
144
- return false;
142
+ // Nothing to compare — an unparseable handle, or an artist whose every name
143
+ // token is too short to match on without hitting noise ("Sia", "SZA", "U2",
144
+ // "Nas"). Abstain rather than accuse: this is a soft signal, and a check that
145
+ // cannot run is not evidence against the result.
146
+ if (!handle || !tokens.length)
147
+ return true;
145
148
  return tokens.some((t) => handle.includes(t));
146
149
  }
147
150
  /**
@@ -197,7 +200,7 @@ export function assessSong(song, intended) {
197
200
  // Soft signal: only checkable when a SoundCloud link is present.
198
201
  const soundcloud = song.links?.soundcloud;
199
202
  const artistForHandle = isJunkArtist ? intended?.artist : artist || intended?.artist;
200
- if (soundcloud && artistForHandle && !soundcloudHandleMatchesArtist(soundcloud, artistForHandle)) {
203
+ if (soundcloud && artistForHandle && !soundcloudHandleIsConsistentWith(soundcloud, artistForHandle)) {
201
204
  warnings.push(`SoundCloud handle does not obviously belong to "${artistForHandle}".`);
202
205
  }
203
206
  const confidence = hard
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.0'; // x-release-please-version
5
+ export const VERSION = '1.5.1'; // x-release-please-version
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "vibo-mcp",
3
- "version": "1.5.0",
3
+ "version": "1.5.1",
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>",
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.0",
9
+ "version": "1.5.1",
10
10
  "packages": [
11
11
  {
12
12
  "registryType": "npm",
13
13
  "identifier": "vibo-mcp",
14
- "version": "1.5.0",
14
+ "version": "1.5.1",
15
15
  "transport": {
16
16
  "type": "stdio"
17
17
  },