@kolbo/mcp 1.82.2 → 1.82.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.
package/package.json
CHANGED
|
@@ -280,8 +280,12 @@ function renderChips(sc) {
|
|
|
280
280
|
var s = sc.settings || {};
|
|
281
281
|
var kind = displayKind(sc);
|
|
282
282
|
if (kind) h += chip(iconFor(kind) + ' ' + kind);
|
|
283
|
-
|
|
284
|
-
|
|
283
|
+
// Shot count when we know it, otherwise just say multishot is on — the
|
|
284
|
+
// provider picks the count in that case, and showing nothing made an
|
|
285
|
+
// enabled toggle look like it had not applied.
|
|
286
|
+
var shotLabel = s.shots > 1 ? (s.shots + ' shots') : (s.multi_shot ? 'multishot' : '');
|
|
287
|
+
if (s.duration) h += chip(ICONS.clock + ' ' + fmtDur(s.duration) + (shotLabel ? ' · ' + shotLabel : ''));
|
|
288
|
+
else if (shotLabel) h += chip(shotLabel);
|
|
285
289
|
if (s.resolution) h += chip(esc(s.resolution));
|
|
286
290
|
if (s.aspect_ratio) h += chip(esc(s.aspect_ratio));
|
|
287
291
|
if (s.quality) h += chip(esc(s.quality) + ' quality');
|
package/src/tools/generate.js
CHANGED
|
@@ -186,6 +186,9 @@ const videoSettings = (a = {}) => ({
|
|
|
186
186
|
// echoed back on start, then to per-shot × shots.
|
|
187
187
|
duration: a.duration ?? a.reported_duration ?? (a.shot_duration && a.shots ? a.shot_duration * a.shots : undefined),
|
|
188
188
|
...(a.shots > 1 ? { shots: a.shots } : {}),
|
|
189
|
+
// Multishot with no explicit count: the provider decides how many, so there
|
|
190
|
+
// is no number to show — but the card still has to say the toggle applied.
|
|
191
|
+
...(a.multi_shot ? { multi_shot: true } : {}),
|
|
189
192
|
resolution: a.resolution,
|
|
190
193
|
aspect_ratio: a.aspect_ratio,
|
|
191
194
|
...(a.mode ? { mode: a.mode } : {}),
|
|
@@ -1374,7 +1377,14 @@ function registerGenerateTools(server, client, options = {}) {
|
|
|
1374
1377
|
settings: videoSettings({
|
|
1375
1378
|
duration,
|
|
1376
1379
|
reported_duration: startResponse?.duration ?? startResponse?.result?.duration,
|
|
1377
|
-
|
|
1380
|
+
// `multi_shots` is a boolean (z.boolean()); the old
|
|
1381
|
+
// `Array.isArray(multi_shots) ? multi_shots.length : undefined`
|
|
1382
|
+
// branch could never be true, so enabling multishot WITHOUT an
|
|
1383
|
+
// explicit count left shots undefined and the card silently showed
|
|
1384
|
+
// no multishot indicator at all. Carry the flag so the chip can
|
|
1385
|
+
// render even when the shot count is the provider's to decide.
|
|
1386
|
+
shots: multi_shot_count,
|
|
1387
|
+
multi_shot: multi_shots === true || undefined,
|
|
1378
1388
|
resolution, aspect_ratio, enhance_prompt, visual_dna_ids, preset_id,
|
|
1379
1389
|
}),
|
|
1380
1390
|
// Already bucketed and deduped above, so a URL handed to `files`
|
|
@@ -1396,7 +1406,14 @@ function registerGenerateTools(server, client, options = {}) {
|
|
|
1396
1406
|
settings: videoSettings({
|
|
1397
1407
|
duration,
|
|
1398
1408
|
reported_duration: result.result?.duration,
|
|
1399
|
-
|
|
1409
|
+
// `multi_shots` is a boolean (z.boolean()); the old
|
|
1410
|
+
// `Array.isArray(multi_shots) ? multi_shots.length : undefined`
|
|
1411
|
+
// branch could never be true, so enabling multishot WITHOUT an
|
|
1412
|
+
// explicit count left shots undefined and the card silently showed
|
|
1413
|
+
// no multishot indicator at all. Carry the flag so the chip can
|
|
1414
|
+
// render even when the shot count is the provider's to decide.
|
|
1415
|
+
shots: multi_shot_count,
|
|
1416
|
+
multi_shot: multi_shots === true || undefined,
|
|
1400
1417
|
resolution, aspect_ratio, enhance_prompt, visual_dna_ids, preset_id,
|
|
1401
1418
|
}),
|
|
1402
1419
|
reference_images: [...urlsOf('image'), ...(keyframes || []).map((keyframe) => keyframe.image_url)],
|
package/src/tools/visual_dna.js
CHANGED
|
@@ -102,7 +102,7 @@ function registerVisualDnaTools(server, client, options = {}) {
|
|
|
102
102
|
{
|
|
103
103
|
scope: z.enum(['all', 'personal', 'global', 'organization']).optional().describe('Default: "personal" — the user\'s own DNAs (plus a shared project\'s when project_id is set). "global" = the ~1000 system cast/preset DNAs, for browsing when the user needs a character and has none of their own. "organization" = org-shared. "all" = everything, rarely wanted.'),
|
|
104
104
|
search: z.string().optional().describe('Search by name, tags, or description (case-insensitive). Matches at WORD STARTS, so "man" finds "Man"/"Manager" but not "woman" or "romantic". Name matches are ranked first.'),
|
|
105
|
-
collection: z.string().optional().describe('Filter global presets by collection: cast, influencers, props, locations, styles,
|
|
105
|
+
collection: z.string().optional().describe('Filter global presets by collection: cast, influencers, props, locations, styles, street'),
|
|
106
106
|
tags: z.string().optional().describe('Comma-separated tags to filter by (OR logic)'),
|
|
107
107
|
page: z.number().optional().describe('Page number, 1-indexed. Default: 1. Needed to reach the global cast beyond the first page.'),
|
|
108
108
|
limit: z.number().optional().describe('Results per page, max 100. Default: 50'),
|