@kolbo/mcp 1.88.2 → 1.88.4
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 +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +6 -4
- package/skill/VERSION +1 -1
- package/skill/references/models/gpt-image.md +4 -3
- package/skill/references/workflows/cost-and-validation.md +4 -0
- package/skill/references/workflows/media-library.md +4 -0
- package/src/apps/widgets/generation.js +59 -0
package/package.json
CHANGED
package/skill/GENERATED.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# AUTO-GENERATED — do not edit
|
|
2
2
|
|
|
3
|
-
This tree is mirrored from kolbo-code@
|
|
3
|
+
This tree is mirrored from kolbo-code@1dc58c1, the single source of truth.
|
|
4
4
|
Canonical source: packages/opencode/skills/kolbo/
|
|
5
5
|
Distribution: .github/workflows/sync-skill-to-plugin.yml
|
|
6
6
|
|
package/skill/SKILL.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
version: 0.9.
|
|
2
|
+
version: 0.9.16
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, analyze, and direct creative media through Kolbo AI: images,
|
|
@@ -72,7 +72,8 @@ For multi-scene / batch work this pairs with `generate_creative_director` (see b
|
|
|
72
72
|
| Build, inspect, animate, light, render, or edit a **Blender scene through Kolbo Blender MCP** | `references/workflows/blender-mcp.md` |
|
|
73
73
|
| Generate a **Seedance 2.5** video | `skill` `elements-prompting` + `references/models/seedance25.md` + Locked Intro in `references/models/seedance.md`. For narrative/continuity also load `references/workflows/filmmaking.md` — but compile the prompt as Locked Intro, NOT the SCENE CONTEXT / OPTICS / ACTION pack |
|
|
74
74
|
| Generate a **Seedance 2 / WAN / MiniMax H3 / Gemini / Elements** video (`generate_elements` or Visual DNA) | `skill` `elements-prompting` + `references/models/seedance.md` — same Locked Intro. Elements is NOT a different prompt language |
|
|
75
|
-
| Generate a **GPT Image 2** image | `references/models/gpt-image.md` |
|
|
75
|
+
| Generate a **GPT Image 2 / 2.5** image | `references/models/gpt-image.md` |
|
|
76
|
+
| **No background / transparent PNG / cutout** on any image | `references/models/gpt-image.md` |
|
|
76
77
|
| Generate a **Nano Banana / Gemini** image | `references/models/nano-banana.md` |
|
|
77
78
|
| Generate a **Veo 3 / 3.1** video | `references/models/veo.md` |
|
|
78
79
|
| Build a **multi-scene set** (Creative Director, storyboard, campaign batch, 4+ angles) | `references/models/creative-director.md` |
|
|
@@ -113,8 +114,8 @@ Font tools (when exposed by the installed MCP): `list_fonts`, `get_font`, `uploa
|
|
|
113
114
|
### Generation
|
|
114
115
|
| Tool | Description |
|
|
115
116
|
|------|-------------|
|
|
116
|
-
| `generate_image` | Single image from a text prompt. Supports Visual DNA, moodboards, image presets (custom instructions live here), reference images, web-search grounding. Named sheets/styles: `list_presets({ type: "image", search: "headless" })` then `preset_id`. |
|
|
117
|
-
| `generate_image_edit` | Edit/transform an existing image. Pass `source_images` + edit prompt. Image-editing presets are supported through `preset_id` from `list_presets({ type: "image_edit" })`. |
|
|
117
|
+
| `generate_image` | Single image from a text prompt. Supports Visual DNA, moodboards, image presets (custom instructions live here), reference images, web-search grounding. Named sheets/styles: `list_presets({ type: "image", search: "headless" })` then `preset_id`. NO BACKGROUND: require `supports_transparent_background: true` from `list_models`, then pass `background: "transparent"` with PNG/WebP — Kolbo appends the phrase `no background` once; prompt wording alone does not replace the setting. |
|
|
118
|
+
| `generate_image_edit` | Edit/transform an existing image. Pass `source_images` + edit prompt. Image-editing presets are supported through `preset_id` from `list_presets({ type: "image_edit" })`. Native no-background output uses the same capability gate and `background: "transparent"` contract as `generate_image`. |
|
|
118
119
|
| `generate_creative_director` | **2–8 related images or videos as one coherent set.** Use INSTEAD of multiple `generate_image` calls for any related multi-output. |
|
|
119
120
|
| `generate_video` | Text-to-video. Accepts `visual_dna_ids` and `sound_enabled`; `generate_elements` is still the primary reference-driven route for a DNA-anchored film. |
|
|
120
121
|
| `generate_video_from_image` | Animate a still. Prompt describes motion, not subject. |
|
|
@@ -274,6 +275,7 @@ A user-named tool — in any language — overrides every other rule. Recognized
|
|
|
274
275
|
| "Modify THIS one image" — change bg, remove object, recolor | `generate_image_edit` | ❌ Not for multi-output |
|
|
275
276
|
| "4 angles / poses / views of this character" / "variations of this character" | `generate_creative_director` with `visual_dna_ids` | ❌ Don't loop `generate_image_edit` |
|
|
276
277
|
| "4 variations of THIS exact image" (same prompt, different seeds) | `generate_image` with `num_images=4` | ❌ Not `generate_image_edit` |
|
|
278
|
+
| "No background" / transparent PNG / cutout, **בלי רקע** / **רקע שקוף** — new image or existing one | `generate_image` / `generate_image_edit` with `background: "transparent"` on a GPT Image 2 / 2.5 model (gate on `supports_transparent_background: true`) | ❌ Prompt wording alone — it returns an opaque image. ❌ `edit_image` `removebg` unless they want a purely mechanical cutout of an existing photo |
|
|
277
279
|
|
|
278
280
|
## Core Workflow
|
|
279
281
|
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.16
|
|
@@ -2,16 +2,17 @@
|
|
|
2
2
|
kolbo-api/src/config/systemPrompt.js (lines ~858–965).
|
|
3
3
|
When that function changes, update this file in the same session. -->
|
|
4
4
|
|
|
5
|
-
# GPT Image 2 — Prompt Rules
|
|
5
|
+
# GPT Image 2 / 2.5 — Prompt Rules
|
|
6
6
|
|
|
7
|
-
Load this file when the user wants a **GPT Image 2
|
|
7
|
+
Load this file when the user wants a **GPT Image 2 or GPT Image 2.5** image (OpenAI). The live family is `gpt-image-2`, `gpt-image-2.5-sunburst` and `gpt-image-2.5-flare` — all three are the ONLY Kolbo image models that can output a native transparent background. (`gpt-image/1.5-text-to-image` is the older row and cannot.) For other image models see `models/nano-banana.md`, `models/creative-director.md`, or `models/prompt-copilot.md`.
|
|
8
8
|
|
|
9
|
-
**Kolbo MCP routing:** call `generate_image` (text-to-image) or `generate_image_edit` (edits with `source_images`). Pass `
|
|
9
|
+
**Kolbo MCP routing:** call `generate_image` (text-to-image) or `generate_image_edit` (edits with `source_images`). Pass the exact identifier the user named (`gpt-image-2`, `gpt-image-2.5-sunburst`, `gpt-image-2.5-flare`); otherwise consult `list_models({ type: "text_to_img" })`. On `generate_image_edit` the same families appear as their `/edit` rows under `list_models({ type: "image_editing" })`.
|
|
10
10
|
|
|
11
11
|
## CRITICAL Kolbo Platform Rules
|
|
12
12
|
|
|
13
13
|
- **Resolution and aspect ratio are MCP-tool params** (`aspect_ratio`, `resolution`) — NEVER include `size=`, `1024x1536`, aspect-ratio tags, or any resolution syntax inside the `prompt` field.
|
|
14
14
|
- Pass aspect / resolution as separate tool parameters. Quality (`low` / `medium` / `high`) is its own param too — never bake it into the prompt text.
|
|
15
|
+
- **No background uses both a tool parameter and a prompt cue.** If the user asks for no background / a transparent cutout, call `list_models` for the chosen image type and require `supports_transparent_background: true`. Then pass `background: "transparent"` and `output_format: "png"` (or `"webp"`). Kolbo appends the exact phrase `no background` once to the effective prompt automatically. The phrase alone is not sufficient; if the model does not advertise the capability, choose a supported model with the user.
|
|
15
16
|
- Do not write Python, `client.images.generate`, OpenAI SDK code, or `size=` keyword arguments. The user is generating through Kolbo's MCP tools.
|
|
16
17
|
|
|
17
18
|
## Universal Prompting Rules (apply to EVERY prompt)
|
|
@@ -119,3 +119,7 @@ Normal cost formula: `final_cost = credit × output_seconds × resolution_multip
|
|
|
119
119
|
## Log Approved Resolution / Duration / Sound Choices
|
|
120
120
|
|
|
121
121
|
After the user approves the actual result, log its `credits_used`, resolution, duration, and sound state. Pending and rejected outputs stay out; use the format in `production-log.md`.
|
|
122
|
+
|
|
123
|
+
## Reference evidence in generation status
|
|
124
|
+
|
|
125
|
+
For a reference audit, inspect the persisted status result's `visual_dna` and reference image fields. The widget's `visual_dnas` is display metadata, not the original submitted request. Missing widget metadata means unknown, not that no reference was used. Server-side @mention resolution can attach references beyond the caller’s explicit fields. Keep submitted inputs, persisted references, and observed visual fidelity distinct; attaching a DNA does not prove identity fidelity.
|
|
@@ -4,6 +4,10 @@ Load this file when the user wants to browse, list, organize, delete, restore, m
|
|
|
4
4
|
|
|
5
5
|
The library covers both **uploaded files** and **AI-generated outputs the user has saved**. Tools fall into five groups: ingest, browse, lifecycle (delete/restore/move), folders, and favorites.
|
|
6
6
|
|
|
7
|
+
`list_media` returns the complete requested page in both text and widget results. Follow `pagination.has_next` using the returned page size; use smaller pages (for example 20) when reviewing detailed assets to keep context manageable. `project_id` restricts SDK results to that project's recorded membership, not the project-looking segment in a CDN URL (files can be moved). A folder filter takes precedence over the project filter.
|
|
8
|
+
|
|
9
|
+
For production research, `get_visual_dna` provides the full stored description and references; list descriptions are compact previews. Internal extraction system prompts are intentionally private. `get_project_profile` reads the stored synthesized brief; it is not a substitute for the original project documents or session history.
|
|
10
|
+
|
|
7
11
|
## ⚠️ Already-hosted URLs — never re-upload
|
|
8
12
|
|
|
9
13
|
`generate_*` / `list_media` / `get_media` / a prior `upload_media` already return a Kolbo CDN URL (`media.kolbo.ai`, `*.kolbo.ai`, Spaces). Pass that exact URL into the next generation tool. Calling `upload_media` on it duplicates the file.
|
|
@@ -1330,6 +1330,64 @@ function openPromptRow(placeholder, onSend) {
|
|
|
1330
1330
|
The host mounts this iframe as soon as the tool is CALLED; the result can
|
|
1331
1331
|
take many seconds (model resolution, file upload, submit). Show a live
|
|
1332
1332
|
shell immediately instead of a blank card. */
|
|
1333
|
+
// Which tool args carry a reference the browser can actually load. The kind
|
|
1334
|
+
// here is only a FALLBACK: refKind() still lets the file extension win, exactly
|
|
1335
|
+
// like the result path, so a .mp4 handed to the files arg renders as video.
|
|
1336
|
+
var PRE_IMAGE_KEYS = ['source_images', 'reference_images', 'image_url', 'mask_image_url',
|
|
1337
|
+
'additional_images', 'first_frame', 'last_frame', 'seed_reference_image_url',
|
|
1338
|
+
'elements', 'files', 'keyframes', 'source'];
|
|
1339
|
+
var PRE_VIDEO_KEYS = ['source_video', 'reference_videos'];
|
|
1340
|
+
var PRE_AUDIO_KEYS = ['audio', 'audio_url', 'reference_audio_urls', 'seed_reference_audio_urls'];
|
|
1341
|
+
|
|
1342
|
+
// The card mounts the moment the tool is CALLED, so the only thing it knows is
|
|
1343
|
+
// the raw tool input - and for an edit/elements call the submit that follows is
|
|
1344
|
+
// the LONGEST wait on the card (local files are re-hosted first). Map the input
|
|
1345
|
+
// onto the same shape renderChips already reads for a server payload so the
|
|
1346
|
+
// references, DNA count and settings are on screen immediately instead of after
|
|
1347
|
+
// a minute of blank skeleton.
|
|
1348
|
+
// Deliberately NOT shown here: model, voice, DNA and moodboard NAMES. Those are
|
|
1349
|
+
// resolved server-side and arrive with the result (which overwrites all of
|
|
1350
|
+
// this) - rendering the raw identifier the caller passed would put an id on the
|
|
1351
|
+
// card, which is never allowed.
|
|
1352
|
+
function preRefSc(toolName, a) {
|
|
1353
|
+
var img = [], vid = [], aud = [];
|
|
1354
|
+
var take = function (v, bucket) {
|
|
1355
|
+
if (typeof v === 'string') {
|
|
1356
|
+
// http(s) only - an absolute local path is not loadable from the iframe.
|
|
1357
|
+
if (/^https?:/i.test(v) && bucket.indexOf(v) < 0) bucket.push(v);
|
|
1358
|
+
return;
|
|
1359
|
+
}
|
|
1360
|
+
if (Array.isArray(v)) {
|
|
1361
|
+
v.forEach(function (item) {
|
|
1362
|
+
take(typeof item === 'string' ? item : (item && (item.image_url || item.url)), bucket);
|
|
1363
|
+
});
|
|
1364
|
+
}
|
|
1365
|
+
};
|
|
1366
|
+
PRE_IMAGE_KEYS.forEach(function (k) { take(a[k], img); });
|
|
1367
|
+
PRE_VIDEO_KEYS.forEach(function (k) { take(a[k], vid); });
|
|
1368
|
+
PRE_AUDIO_KEYS.forEach(function (k) { take(a[k], aud); });
|
|
1369
|
+
return {
|
|
1370
|
+
tool: toolName,
|
|
1371
|
+
kind: kindFromTool(toolName, null),
|
|
1372
|
+
count: a.num_images || (Array.isArray(a.prompts) ? a.prompts.length : 1),
|
|
1373
|
+
reference_images: img,
|
|
1374
|
+
reference_videos: vid,
|
|
1375
|
+
reference_audio: aud,
|
|
1376
|
+
settings: {
|
|
1377
|
+
duration: a.duration,
|
|
1378
|
+
resolution: a.resolution,
|
|
1379
|
+
aspect_ratio: a.aspect_ratio,
|
|
1380
|
+
quality: a.quality,
|
|
1381
|
+
mode: a.mode,
|
|
1382
|
+
cinematic: a.cinematic,
|
|
1383
|
+
visual_dna_ids: a.visual_dna_ids,
|
|
1384
|
+
moodboard_ids: a.moodboard_ids,
|
|
1385
|
+
moodboard_id: a.moodboard_id,
|
|
1386
|
+
preset_id: a.preset_id
|
|
1387
|
+
}
|
|
1388
|
+
};
|
|
1389
|
+
}
|
|
1390
|
+
|
|
1333
1391
|
function bootPre(toolName, args) {
|
|
1334
1392
|
if (toolName) originTool = toolName;
|
|
1335
1393
|
if (args) originArgs = args;
|
|
@@ -1347,6 +1405,7 @@ function bootPre(toolName, args) {
|
|
|
1347
1405
|
setPrompt(promptHTML(raw), raw);
|
|
1348
1406
|
}
|
|
1349
1407
|
setPhaseChip('Preparing', true);
|
|
1408
|
+
renderChips(preRefSc(toolName, args || {}));
|
|
1350
1409
|
if (!el('stage').innerHTML) {
|
|
1351
1410
|
el('stage').innerHTML = '<div class="k-gen-grid n1"><div class="k-skel video" style="min-height:100px;max-height:140px"></div></div>';
|
|
1352
1411
|
}
|