@kolbo/mcp 1.75.6 → 1.75.8
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/package.json +65 -65
- package/src/apps/widgets/generation.js +12 -3
- package/src/apps/widgets/upload.js +28 -0
package/package.json
CHANGED
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@kolbo/mcp",
|
|
3
|
-
"version": "1.75.
|
|
4
|
-
"description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
|
|
5
|
-
"main": "src/index.js",
|
|
6
|
-
"bin": {
|
|
7
|
-
"kolbo-mcp": "./bin/kolbo-mcp.js"
|
|
8
|
-
},
|
|
9
|
-
"scripts": {
|
|
10
|
-
"start": "node src/index.js",
|
|
11
|
-
"smoke": "node scripts/smoke.js",
|
|
12
|
-
"check-skill-bundle": "node scripts/check-skill-bundle.js",
|
|
13
|
-
"check-parity": "node scripts/check-parity.js",
|
|
14
|
-
"prepublishOnly": "node scripts/smoke.js && node scripts/check-skill-bundle.js && node scripts/check-parity.js && node scripts/check-widget-fields.js && node scripts/check-widget-render.js && node scripts/check-model-catalog.js && node scripts/check-skill-tools.js && node scripts/check-submission-contract.js && node scripts/check-install.js",
|
|
15
|
-
"check-model-catalog": "node scripts/check-model-catalog.js",
|
|
16
|
-
"check-widget-fields": "node scripts/check-widget-fields.js",
|
|
17
|
-
"check-widget-render": "node scripts/check-widget-render.js",
|
|
18
|
-
"check-skill-tools": "node scripts/check-skill-tools.js",
|
|
19
|
-
"check-submission-contract": "node scripts/check-submission-contract.js",
|
|
20
|
-
"generate-chatgpt-submission": "node scripts/generate-chatgpt-submission.js",
|
|
21
|
-
"check-install": "node scripts/check-install.js"
|
|
22
|
-
},
|
|
23
|
-
"keywords": [
|
|
24
|
-
"kolbo",
|
|
25
|
-
"mcp",
|
|
26
|
-
"ai",
|
|
27
|
-
"image-generation",
|
|
28
|
-
"video-generation",
|
|
29
|
-
"music-generation",
|
|
30
|
-
"text-to-speech",
|
|
31
|
-
"claude-code",
|
|
32
|
-
"claude-desktop",
|
|
33
|
-
"model-context-protocol"
|
|
34
|
-
],
|
|
35
|
-
"license": "MIT",
|
|
36
|
-
"repository": {
|
|
37
|
-
"type": "git",
|
|
38
|
-
"url": "https://github.com/Zoharvan12/kolbo-mcp"
|
|
39
|
-
},
|
|
40
|
-
"homepage": "https://docs.kolbo.ai/developer-api/claude-code-skill",
|
|
41
|
-
"author": "Kolbo AI <support@kolbo.ai>",
|
|
42
|
-
"publishConfig": {
|
|
43
|
-
"access": "public"
|
|
44
|
-
},
|
|
45
|
-
"files": [
|
|
46
|
-
"src/",
|
|
47
|
-
"bin/",
|
|
48
|
-
"skill/",
|
|
49
|
-
"README.md"
|
|
50
|
-
],
|
|
51
|
-
"dependencies": {
|
|
52
|
-
"@modelcontextprotocol/ext-apps": "^1.7.4",
|
|
53
|
-
"@modelcontextprotocol/sdk": "1.29.0",
|
|
54
|
-
"form-data": "^4.0.6",
|
|
55
|
-
"zod": "^3.25.0"
|
|
56
|
-
},
|
|
57
|
-
"overrides": {
|
|
58
|
-
"hono": "^4.12.12",
|
|
59
|
-
"@hono/node-server": "^1.19.13",
|
|
60
|
-
"path-to-regexp": "^8.4.2"
|
|
61
|
-
},
|
|
62
|
-
"engines": {
|
|
63
|
-
"node": ">=18.0.0"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@kolbo/mcp",
|
|
3
|
+
"version": "1.75.8",
|
|
4
|
+
"description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
|
|
5
|
+
"main": "src/index.js",
|
|
6
|
+
"bin": {
|
|
7
|
+
"kolbo-mcp": "./bin/kolbo-mcp.js"
|
|
8
|
+
},
|
|
9
|
+
"scripts": {
|
|
10
|
+
"start": "node src/index.js",
|
|
11
|
+
"smoke": "node scripts/smoke.js",
|
|
12
|
+
"check-skill-bundle": "node scripts/check-skill-bundle.js",
|
|
13
|
+
"check-parity": "node scripts/check-parity.js",
|
|
14
|
+
"prepublishOnly": "node scripts/smoke.js && node scripts/check-skill-bundle.js && node scripts/check-parity.js && node scripts/check-widget-fields.js && node scripts/check-widget-render.js && node scripts/check-model-catalog.js && node scripts/check-skill-tools.js && node scripts/check-submission-contract.js && node scripts/check-install.js",
|
|
15
|
+
"check-model-catalog": "node scripts/check-model-catalog.js",
|
|
16
|
+
"check-widget-fields": "node scripts/check-widget-fields.js",
|
|
17
|
+
"check-widget-render": "node scripts/check-widget-render.js",
|
|
18
|
+
"check-skill-tools": "node scripts/check-skill-tools.js",
|
|
19
|
+
"check-submission-contract": "node scripts/check-submission-contract.js",
|
|
20
|
+
"generate-chatgpt-submission": "node scripts/generate-chatgpt-submission.js",
|
|
21
|
+
"check-install": "node scripts/check-install.js"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"kolbo",
|
|
25
|
+
"mcp",
|
|
26
|
+
"ai",
|
|
27
|
+
"image-generation",
|
|
28
|
+
"video-generation",
|
|
29
|
+
"music-generation",
|
|
30
|
+
"text-to-speech",
|
|
31
|
+
"claude-code",
|
|
32
|
+
"claude-desktop",
|
|
33
|
+
"model-context-protocol"
|
|
34
|
+
],
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "https://github.com/Zoharvan12/kolbo-mcp"
|
|
39
|
+
},
|
|
40
|
+
"homepage": "https://docs.kolbo.ai/developer-api/claude-code-skill",
|
|
41
|
+
"author": "Kolbo AI <support@kolbo.ai>",
|
|
42
|
+
"publishConfig": {
|
|
43
|
+
"access": "public"
|
|
44
|
+
},
|
|
45
|
+
"files": [
|
|
46
|
+
"src/",
|
|
47
|
+
"bin/",
|
|
48
|
+
"skill/",
|
|
49
|
+
"README.md"
|
|
50
|
+
],
|
|
51
|
+
"dependencies": {
|
|
52
|
+
"@modelcontextprotocol/ext-apps": "^1.7.4",
|
|
53
|
+
"@modelcontextprotocol/sdk": "1.29.0",
|
|
54
|
+
"form-data": "^4.0.6",
|
|
55
|
+
"zod": "^3.25.0"
|
|
56
|
+
},
|
|
57
|
+
"overrides": {
|
|
58
|
+
"hono": "^4.12.12",
|
|
59
|
+
"@hono/node-server": "^1.19.13",
|
|
60
|
+
"path-to-regexp": "^8.4.2"
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=18.0.0"
|
|
64
|
+
}
|
|
65
|
+
}
|
|
@@ -133,9 +133,18 @@ function boot(sc) {
|
|
|
133
133
|
makeExpandable(el('prompt'));
|
|
134
134
|
renderChips(sc);
|
|
135
135
|
el('credits').textContent = sc.credits_used != null ? fmtCredits(sc.credits_used) : '';
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
136
|
+
// Every legitimate completed payload sets phase:'completed' explicitly
|
|
137
|
+
// (uiCompleted, completedFromPlain, the visual_dna character-sheet path) —
|
|
138
|
+
// there is no real case where "no media yet" should render as a result.
|
|
139
|
+
// A host that sends some OTHER phase string here (e.g. a host-side
|
|
140
|
+
// pre-flight envelope built before the tool call even ran) used to fall
|
|
141
|
+
// through straight to renderResult with no urls/scenes, rendering as a
|
|
142
|
+
// broken/empty "completed" card — indistinguishable from a real failure —
|
|
143
|
+
// for however long that phase lingered. Default anything unrecognized to
|
|
144
|
+
// "still working" instead of assuming it's done.
|
|
145
|
+
if (sc.phase === 'failed') renderError(sc.error || 'Generation failed');
|
|
146
|
+
else if (sc.phase === 'completed') renderResult(sc);
|
|
147
|
+
else renderGenerating(sc);
|
|
139
148
|
window.kolbo.notifySize();
|
|
140
149
|
}
|
|
141
150
|
|
|
@@ -295,10 +295,37 @@ function upload(it) {
|
|
|
295
295
|
var xhr = new XMLHttpRequest();
|
|
296
296
|
xhr.open('POST', state.upload_url, true);
|
|
297
297
|
xhr.setRequestHeader('Authorization', 'Bearer ' + state.token);
|
|
298
|
+
// A stalled upload used to sit at N% forever: there was no timeout and no
|
|
299
|
+
// ontimeout/onabort handler, only onload/onerror. A file above the CDN body
|
|
300
|
+
// cap in front of the API dies exactly this way — the edge sees Content-Length,
|
|
301
|
+
// kills the connection a few percent in, and the browser never reports it, so
|
|
302
|
+
// the row froze at 1% with no error and no retry. Watch PROGRESS rather than
|
|
303
|
+
// total elapsed time, so a genuinely slow large upload is never punished.
|
|
304
|
+
var STALL_MS = 90000;
|
|
305
|
+
var lastTick = Date.now();
|
|
306
|
+
var stalled = false;
|
|
307
|
+
var watchdog = setInterval(function () {
|
|
308
|
+
if (Date.now() - lastTick < STALL_MS) return;
|
|
309
|
+
stalled = true;
|
|
310
|
+
clearInterval(watchdog);
|
|
311
|
+
try { xhr.abort(); } catch (e) {}
|
|
312
|
+
}, 5000);
|
|
313
|
+
function settle() { clearInterval(watchdog); }
|
|
298
314
|
xhr.upload.onprogress = function (e) {
|
|
315
|
+
lastTick = Date.now();
|
|
299
316
|
if (e.lengthComputable) { it.pct = Math.round((e.loaded / e.total) * 100); renderRow(it); }
|
|
300
317
|
};
|
|
318
|
+
xhr.onabort = function () {
|
|
319
|
+
settle();
|
|
320
|
+
if (!stalled) return;
|
|
321
|
+
active--;
|
|
322
|
+
it.status = 'error';
|
|
323
|
+
it.err = 'Upload stalled — the file may be too large for this connection';
|
|
324
|
+
render();
|
|
325
|
+
pump();
|
|
326
|
+
};
|
|
301
327
|
xhr.onload = function () {
|
|
328
|
+
settle();
|
|
302
329
|
active--;
|
|
303
330
|
var res = null;
|
|
304
331
|
try { res = JSON.parse(xhr.responseText); } catch (e) {}
|
|
@@ -317,6 +344,7 @@ function upload(it) {
|
|
|
317
344
|
pump();
|
|
318
345
|
};
|
|
319
346
|
xhr.onerror = function () {
|
|
347
|
+
settle();
|
|
320
348
|
active--;
|
|
321
349
|
it.status = 'error';
|
|
322
350
|
it.err = 'Network error — try the full-screen uploader';
|