@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 CHANGED
@@ -1,65 +1,65 @@
1
- {
2
- "name": "@kolbo/mcp",
3
- "version": "1.75.6",
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
- if (sc.phase === 'generating') renderGenerating(sc);
137
- else if (sc.phase === 'failed') renderError(sc.error || 'Generation failed');
138
- else renderResult(sc);
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';