vibo-mcp 2.0.0 → 2.2.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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/dist/bundle.js +32713 -55316
- package/dist/client.js +22 -3
- package/dist/version.js +1 -1
- package/package.json +3 -3
- package/server.json +2 -2
package/dist/client.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { dirname, join } from 'path';
|
|
2
2
|
import { fileURLToPath } from 'url';
|
|
3
|
-
import { loadDotenvSafely, readEnvVar, McpToolError, SessionNotAuthenticatedError, truncateErrorMessage, } from '@chrischall/mcp-utils';
|
|
3
|
+
import { loadDotenvSafely, readEnvVar, McpToolError, SessionNotAuthenticatedError, truncateErrorMessage, withAmbientCancellation, } from '@chrischall/mcp-utils';
|
|
4
4
|
import { loadSession, saveSession } from './session-store.js';
|
|
5
5
|
// Load .env for local dev; silently skip if dotenv is unavailable (e.g. the
|
|
6
6
|
// mcpb bundle, which externalizes dotenv). `override: false` means a
|
|
@@ -40,6 +40,25 @@ const REFRESH = `
|
|
|
40
40
|
// Error codes Vibo (and conventional GraphQL servers) use for an expired /
|
|
41
41
|
// missing session — these should trigger a token refresh + replay.
|
|
42
42
|
const AUTH_ERROR_CODES = new Set(['UNAUTHORIZED', 'UNAUTHENTICATED', 'FORBIDDEN']);
|
|
43
|
+
/**
|
|
44
|
+
* The signal every Vibo request is made with: our timeout, and the caller's
|
|
45
|
+
* cancellation if there is one (mcp-utils `cancel`).
|
|
46
|
+
*
|
|
47
|
+
* Until this, only the timeout could stop a request — a cancelled tool call
|
|
48
|
+
* held it open for the full budget while the child burned the CPU mcp-host
|
|
49
|
+
* meters it on. Measured on that fleet: claude.ai sent 101 cancellations in
|
|
50
|
+
* the week to 2026-09-20.
|
|
51
|
+
*
|
|
52
|
+
* ONE definition for both request paths, which is not tidiness: the two are
|
|
53
|
+
* the multipart upload and the plain query, they had the same seven lines
|
|
54
|
+
* copied between them, and the next person to add a third path is the one
|
|
55
|
+
* this saves. The `TimeoutError` checks at both call sites still name a real
|
|
56
|
+
* timeout — an abort from the caller arrives as `AbortError` and falls
|
|
57
|
+
* through to 'failed'.
|
|
58
|
+
*/
|
|
59
|
+
function requestSignal() {
|
|
60
|
+
return withAmbientCancellation(AbortSignal.timeout(REQUEST_TIMEOUT_MS));
|
|
61
|
+
}
|
|
43
62
|
export class ViboClient {
|
|
44
63
|
apiUrl;
|
|
45
64
|
email;
|
|
@@ -172,7 +191,7 @@ export class ViboClient {
|
|
|
172
191
|
method: 'POST',
|
|
173
192
|
headers, // NB: no content-type — fetch sets the multipart boundary
|
|
174
193
|
body: form,
|
|
175
|
-
signal:
|
|
194
|
+
signal: requestSignal(),
|
|
176
195
|
});
|
|
177
196
|
}
|
|
178
197
|
catch (err) {
|
|
@@ -265,7 +284,7 @@ export class ViboClient {
|
|
|
265
284
|
method: 'POST',
|
|
266
285
|
headers,
|
|
267
286
|
body: JSON.stringify({ query, variables }),
|
|
268
|
-
signal:
|
|
287
|
+
signal: requestSignal(),
|
|
269
288
|
});
|
|
270
289
|
}
|
|
271
290
|
catch (err) {
|
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 = '2.
|
|
5
|
+
export const VERSION = '2.2.0'; // x-release-please-version
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibo-mcp",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.2.0",
|
|
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>",
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
],
|
|
39
39
|
"scripts": {
|
|
40
40
|
"build": "tsc && npm run bundle",
|
|
41
|
-
"bundle": "esbuild src/index.ts --bundle --
|
|
41
|
+
"bundle": "esbuild src/index.ts --bundle --platform=node --format=esm --external:dotenv --external:@fetchproxy/bootstrap --outfile=dist/bundle.js",
|
|
42
42
|
"dev": "node dist/index.js",
|
|
43
43
|
"test": "npm run typecheck && vitest run",
|
|
44
44
|
"test:watch": "vitest",
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
47
47
|
},
|
|
48
48
|
"dependencies": {
|
|
49
|
-
"@chrischall/mcp-utils": "^0.
|
|
49
|
+
"@chrischall/mcp-utils": "^2.0.0",
|
|
50
50
|
"@fetchproxy/bootstrap": "^3.0.1",
|
|
51
51
|
"@modelcontextprotocol/server": "^2.0.0",
|
|
52
52
|
"dotenv": "^17.4.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": "2.
|
|
9
|
+
"version": "2.2.0",
|
|
10
10
|
"packages": [
|
|
11
11
|
{
|
|
12
12
|
"registryType": "npm",
|
|
13
13
|
"identifier": "vibo-mcp",
|
|
14
|
-
"version": "2.
|
|
14
|
+
"version": "2.2.0",
|
|
15
15
|
"transport": {
|
|
16
16
|
"type": "stdio"
|
|
17
17
|
},
|