@kolbo/mcp 1.81.9 → 1.81.11
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 +3 -2
- package/skill/VERSION +1 -1
- package/src/apps/html.js +26 -0
- package/src/apps/theme.js +4 -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@c3b231a, 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.11
|
|
3
3
|
name: kolbo
|
|
4
4
|
description: |
|
|
5
5
|
Generate, edit, analyze, and direct creative media through Kolbo AI: images,
|
|
@@ -57,6 +57,7 @@ Then generate **only** with the confirmed parameters. If the user changes an opt
|
|
|
57
57
|
- **Batch totalling 100+ credits**: run `check_credits` first.
|
|
58
58
|
- **Quote real cost**: after firing, log `credits_used` (from the tool result) to `.kolbo/production.md` — never `base × count`.
|
|
59
59
|
- **Never state "credits remaining" from arithmetic** (opening balance − generation costs). Coding/chat usage deducts credits too, so the math is always wrong. Report cost only; if the user asks for their balance, call `check_credits` fresh at that moment.
|
|
60
|
+
- **Out of credits → `show_plans`.** A generation refused for credits already returns the upgrade card automatically — do NOT retry it, and do not re-run the tool "to be sure". Call `show_plans` yourself when the user asks about pricing, plans, upgrading, or how to get more credits. Prices are live and promo-adjusted; never quote them from memory. The user completes any purchase themselves on app.kolbo.ai/pricing — you cannot buy for them.
|
|
60
61
|
|
|
61
62
|
For multi-scene / batch work this pairs with `generate_creative_director` (see below) — still confirm the brief first.
|
|
62
63
|
|
|
@@ -122,7 +123,7 @@ Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/sr
|
|
|
122
123
|
### Discovery, Library, Visual DNA, Moodboards, Chat, Publishing
|
|
123
124
|
| Tool | Purpose |
|
|
124
125
|
|------|---------|
|
|
125
|
-
| `list_models` / `list_voices` / `check_credits` / `get_generation_status` / `cancel_generation` / `get_session_usage` | Discovery + status. `list_models` with no args returns the recommended shortlist out of ~428 — pass `type` for a full category with per-model caps. `cancel_generation` stops an in-flight job and refunds what it can: use it when the user changes their mind mid-generation instead of letting it run. |
|
|
126
|
+
| `list_models` / `list_voices` / `check_credits` / `show_plans` / `get_generation_status` / `cancel_generation` / `get_session_usage` | Discovery + status. `list_models` with no args returns the recommended shortlist out of ~428 — pass `type` for a full category with per-model caps. `cancel_generation` stops an in-flight job and refunds what it can: use it when the user changes their mind mid-generation instead of letting it run. `show_plans` renders the balance + upgrade card for pricing/plan/upgrade questions. |
|
|
126
127
|
| `upload_media` / `create_upload_ticket` / `list_media` / `get_media` / `get_media_stats` / `favorite_media` / `unfavorite_media` / `delete_media` / `restore_media` / `permanently_delete_media` / `move_media` / `bulk_*_media` / `*_media_folder` | Media library — see `workflows/media-library.md`. Getting a LOCAL file in depends on where the server runs: `upload_media` with a path only works on a local (stdio) install; over a remote connector use `create_upload_ticket` and POST the file yourself. |
|
|
127
128
|
| `create_visual_dna` / `update_visual_dna` / `generate_character_sheet` / `list_visual_dnas` / `get_visual_dna` / `delete_visual_dna` / `*_visual_dna_folder` (5 folder tools) | Visual DNA (+ character sheet, character folders) — see `workflows/visual-dna.md`. Edit with `update_visual_dna`; never delete+recreate. |
|
|
128
129
|
| `list_moodboards` / `get_moodboard` / `list_presets` | Style overlays + sheet presets — see **Preset contract** in Core Workflow. Never omit `preset_id` after claiming a preset was used. |
|
package/skill/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
0.9.
|
|
1
|
+
0.9.11
|
package/src/apps/html.js
CHANGED
|
@@ -173,6 +173,9 @@ function bindPeekHits(root) {
|
|
|
173
173
|
};
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
|
+
// Whether THIS peek took the iframe fullscreen (vs. opening inside a card the
|
|
177
|
+
// user had already fullscreened) — only then does closing it hand the mode back.
|
|
178
|
+
var peekWentFullscreen = false;
|
|
176
179
|
function openPeek(url, kind, cap) {
|
|
177
180
|
if (!url) return;
|
|
178
181
|
var box = ensurePeek();
|
|
@@ -184,6 +187,23 @@ function openPeek(url, kind, cap) {
|
|
|
184
187
|
el('peek-cap').textContent = cap || '';
|
|
185
188
|
box.hidden = false;
|
|
186
189
|
if (window.kolbo && window.kolbo.notifySize) window.kolbo.notifySize();
|
|
190
|
+
// Go big when the host allows it: the overlay is ALREADY visible inside the
|
|
191
|
+
// card, so a host that refuses fullscreen (or never answers the request)
|
|
192
|
+
// still shows the preview — the failure mode is "smaller", never "nothing".
|
|
193
|
+
// Skip the request when the card itself is fullscreen; the overlay covers it.
|
|
194
|
+
if (!window.kolbo || !window.kolbo.requestDisplayMode) return;
|
|
195
|
+
if (document.documentElement.classList.contains('k-fullscreen')) return;
|
|
196
|
+
try {
|
|
197
|
+
window.kolbo.requestDisplayMode('fullscreen').then(function (res) {
|
|
198
|
+
// The user may have closed the peek before the host answered — hand the
|
|
199
|
+
// grant straight back instead of fullscreening an empty card.
|
|
200
|
+
if (!(res && res.mode === 'fullscreen')) return;
|
|
201
|
+
if (box.hidden) { window.kolbo.requestDisplayMode('inline').catch(function () {}); return; }
|
|
202
|
+
peekWentFullscreen = true;
|
|
203
|
+
document.documentElement.classList.add('k-peek-fs');
|
|
204
|
+
if (window.kolbo.setFullscreen) window.kolbo.setFullscreen(true);
|
|
205
|
+
}).catch(function () {});
|
|
206
|
+
} catch (e) {}
|
|
187
207
|
}
|
|
188
208
|
function closePeek() {
|
|
189
209
|
var box = el('peek');
|
|
@@ -192,6 +212,12 @@ function closePeek() {
|
|
|
192
212
|
el('peek-img').removeAttribute('src');
|
|
193
213
|
var vid = el('peek-video');
|
|
194
214
|
if (vid) { try { vid.pause(); } catch (e) {} vid.removeAttribute('src'); }
|
|
215
|
+
if (peekWentFullscreen) {
|
|
216
|
+
peekWentFullscreen = false;
|
|
217
|
+
document.documentElement.classList.remove('k-peek-fs');
|
|
218
|
+
try { window.kolbo.requestDisplayMode('inline').catch(function () {}); } catch (e) {}
|
|
219
|
+
if (window.kolbo.setFullscreen) window.kolbo.setFullscreen(false);
|
|
220
|
+
}
|
|
195
221
|
if (window.kolbo && window.kolbo.notifySize) window.kolbo.notifySize();
|
|
196
222
|
}
|
|
197
223
|
document.addEventListener('keydown', function (e) { if (e.key === 'Escape') closePeek(); });
|
package/src/apps/theme.js
CHANGED
|
@@ -155,6 +155,10 @@ body {
|
|
|
155
155
|
display: inline-flex; align-items: center; justify-content: center;
|
|
156
156
|
}
|
|
157
157
|
.k-peek-cap { font-size: 12px; color: var(--text-muted); text-align: center; max-width: 100%; word-break: break-word; }
|
|
158
|
+
/* Peek granted host fullscreen: the overlay owns the whole viewport, not the card. */
|
|
159
|
+
html.k-peek-fs, html.k-peek-fs body { height: 100%; overflow: hidden; }
|
|
160
|
+
html.k-peek-fs .k-peek { position: fixed; inset: 0; z-index: 50; }
|
|
161
|
+
html.k-peek-fs .k-peek img, html.k-peek-fs .k-peek video { max-height: calc(100vh - 72px); }
|
|
158
162
|
/* Visual DNA chips: the character's face, so you can see WHICH DNA is locked in. */
|
|
159
163
|
.k-dna-face { width: 18px; height: 18px; border-radius: 999px; object-fit: cover; margin-left: -3px; background: var(--border-strong); }
|
|
160
164
|
.k-dna-stack .k-dna-stack-item { display: inline-flex; }
|