@kolbo/mcp 1.98.0 → 1.99.1
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/README.md +2 -0
- package/package.json +1 -1
- package/skill/GENERATED.md +1 -1
- package/skill/SKILL.md +2 -1
- package/src/apps/widgets/generation.js +1 -1
- package/src/tools/generate.js +13 -5
package/README.md
CHANGED
|
@@ -364,3 +364,5 @@ Both are optional — the local install logs in via the browser on first use.
|
|
|
364
364
|
### URL downloads
|
|
365
365
|
|
|
366
366
|
`download_media_from_url` starts a server download for a public media page URL. Use `get_download_status` with the returned `job_id` (not `get_generation_status`) and wait for `completed` before using `resultUrl`. `cancel_download` cancels an active job. This produces a cloud file and saves it to the account library when library sync succeeds; it does not write to the caller's computer. Video returns a verified MP4, audio returns MP3; maximum 500 MB. Existing `upload_media` still handles local/direct-file uploads. SDK routes reuse the authenticated utility pipeline at `POST /v1/downloads`, `GET /v1/downloads/:jobId`, and `DELETE /v1/downloads/:jobId`.
|
|
367
|
+
|
|
368
|
+
Video-edit widgets keep source-video and mask-video previews, image references, and audio references through generation and completion. Click a video thumbnail to inspect the source. Local edit inputs preview through their uploaded CDN URLs.
|
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@e4764c5, 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
|
@@ -165,7 +165,8 @@ Font tools (when exposed by the installed MCP): `list_fonts`, `get_font`, `uploa
|
|
|
165
165
|
| `list_project_assets` / `link_project_asset` / `unlink_project_asset` / `update_project_asset` | Project CAST roster: the Visual DNAs and moodboards tagged onto a project (`@Name` / `#Name`). `update_project_asset` writes each tagged DNA's identity description and/or its project-scoped purpose note. Never unlink+relink to edit. |
|
|
166
166
|
| `create_moodboard` / `update_moodboard` / `delete_moodboard` | Moodboards from image URLs → AI master style prompt → pass `moodboard_id` to generation tools. Edit with `update_moodboard`; never delete+recreate. |
|
|
167
167
|
| `clone_voice` / `import_elevenlabs_voice` / `delete_voice` | Custom voices (clone CHARGES CREDITS — confirm first; new voices show in `list_voices`) |
|
|
168
|
-
| `trim_video` | Frame-accurate trim of a Kolbo-hosted video (tool waits and returns the URL). `edit_video` also gained `remove_background`. |
|
|
168
|
+
| `trim_video` | Frame-accurate trim of a Kolbo-hosted video (tool waits and returns the URL). `edit_video` also gained `remove_background`. |
|
|
169
|
+
| `edit_video` input previews | Edit widgets retain the source video, optional mask video, face image, and audio references through generation and completion. Local edit files use their uploaded CDN URLs for previews. Click a video thumbnail to inspect the source. |
|
|
169
170
|
| `create_doc` / `list_docs` / `get_doc` / `update_doc` / `share_doc` / `delete_doc` | AI Docs (Magic Pad): YOU author full HTML documents (plans, briefs, scripts, research) saved into the user's project, editable in the Kolbo app. `share_doc` returns a public link. `update_doc` content replaces the WHOLE doc — `get_doc` first. |
|
|
170
171
|
| `chat_send_message` / `chat_list_conversations` / `chat_get_messages` | Kolbo chat with optional `media_urls` (up to 10 per call) and `thinking_level` from `list_models` type `text` thinkingLevels; omitted/invalid levels use the resolved model default, safeguards and legacy `deep_think` take precedence |
|
|
171
172
|
| `create_review_asset` / `add_review_version` / `set_review_status` / `create_review_comment` / `reply_review_comment` / `resolve_review_comment` / `unresolve_review_comment` / `create_review_collection` / `create_review_share_link` / `revoke_review_share_link` / `get_review_storage_usage` (+ list/get/update/delete siblings) | **Kolbo Review** — Frame.io-style client review: asset = media + appended versions (new cut = `add_review_version`, never delete+recreate), timecoded comments per version, approve/request-changes status, guest share links (no Kolbo account; comment-only unless `canSetStatus`). 5GB review storage cap. See `workflows/review-collections.md`. |
|
|
@@ -1355,7 +1355,7 @@ function openPromptRow(placeholder, onSend) {
|
|
|
1355
1355
|
var PRE_IMAGE_KEYS = ['source_images', 'reference_images', 'image_url', 'mask_image_url',
|
|
1356
1356
|
'additional_images', 'first_frame', 'last_frame', 'seed_reference_image_url',
|
|
1357
1357
|
'elements', 'files', 'keyframes', 'source'];
|
|
1358
|
-
var PRE_VIDEO_KEYS = ['source_video', 'video_url', 'reference_videos'];
|
|
1358
|
+
var PRE_VIDEO_KEYS = ['source_video', 'video_url', 'mask_video_url', 'reference_videos'];
|
|
1359
1359
|
var PRE_AUDIO_KEYS = ['audio', 'audio_url', 'reference_audio_urls', 'seed_reference_audio_urls'];
|
|
1360
1360
|
|
|
1361
1361
|
// The card mounts the moment the tool is CALLED, so the only thing it knows is
|
package/src/tools/generate.js
CHANGED
|
@@ -10,7 +10,7 @@ const { resolveToBuffer, pollOrTimedOut, creditFields, projectIdField, sessionId
|
|
|
10
10
|
const { ownedUrl } = require('./owned-url');
|
|
11
11
|
const { UI, uiResult, canonicalModelId, assertModelSupportsType, modelInfo, voiceInfo, resolveCatalogAspectRatio } = require('../apps');
|
|
12
12
|
const { modelTypeForEditOperation, assertExecutableEditModel } = require('./editModelCatalog');
|
|
13
|
-
const { withLocalRehost } = require('./local-rehost');
|
|
13
|
+
const { withLocalRehost, rehostLocalPaths } = require('./local-rehost');
|
|
14
14
|
const { validateVideoPrompt } = require('./video-prompt');
|
|
15
15
|
|
|
16
16
|
// ─── Cinematic Dimensions schema (shared by generate_image + generate_image_edit) ───
|
|
@@ -2505,7 +2505,9 @@ function registerGenerateTools(server, client, options = {}) {
|
|
|
2505
2505
|
if (operation === 'lipsync' && !audio_url && !text_prompt) throw new Error('audio_url or text_prompt is required for lipsync');
|
|
2506
2506
|
if (operation === 'extend' && !duration) throw new Error('duration is required for extend');
|
|
2507
2507
|
|
|
2508
|
-
|
|
2508
|
+
// Keep the resolved inputs so the widget can load local-file references
|
|
2509
|
+
// from the same CDN URLs submitted to the API.
|
|
2510
|
+
const editBody = await rehostLocalPaths(client, {
|
|
2509
2511
|
video_url, operation, model, aspect_ratio, scale, prompt, enhancement_model,
|
|
2510
2512
|
image_url, audio_url, duration, mode,
|
|
2511
2513
|
target_fps, resolution,
|
|
@@ -2517,14 +2519,20 @@ function registerGenerateTools(server, client, options = {}) {
|
|
|
2517
2519
|
mask_video_url, object_prompt, video_strength,
|
|
2518
2520
|
start_time,
|
|
2519
2521
|
project_id, session_id
|
|
2520
|
-
});
|
|
2522
|
+
}, { allowLocalFiles: !options.remote });
|
|
2523
|
+
const gen = await client.post('/v1/edit/video', editBody);
|
|
2524
|
+
const editRefs = {
|
|
2525
|
+
reference_images: [editBody.image_url].filter(Boolean),
|
|
2526
|
+
reference_videos: [editBody.video_url, editBody.mask_video_url].filter(Boolean),
|
|
2527
|
+
reference_audio: [editBody.audio_url].filter(Boolean),
|
|
2528
|
+
};
|
|
2521
2529
|
|
|
2522
2530
|
if (operation === 'draft_quote') return { content: [{ type: 'text', text: JSON.stringify(gen, null, 2) }] };
|
|
2523
2531
|
if (returnsImmediately()) return submittedResult({
|
|
2524
2532
|
tool: 'edit_video', kind: 'video', gen, client, model,
|
|
2525
2533
|
prompt: prompt || operation,
|
|
2526
2534
|
settings: { mode: operation, duration, aspect_ratio, resolution },
|
|
2527
|
-
|
|
2535
|
+
...editRefs
|
|
2528
2536
|
});
|
|
2529
2537
|
|
|
2530
2538
|
const poll = await pollOrTimedOut(client, gen.generation_id, {
|
|
@@ -2538,7 +2546,7 @@ function registerGenerateTools(server, client, options = {}) {
|
|
|
2538
2546
|
tool: 'edit_video', kind: 'video', gen, client, model,
|
|
2539
2547
|
prompt: prompt || operation,
|
|
2540
2548
|
settings: { mode: operation, duration, aspect_ratio, resolution },
|
|
2541
|
-
|
|
2549
|
+
...editRefs,
|
|
2542
2550
|
urls: result.result?.urls || [],
|
|
2543
2551
|
duration: result.result?.duration || null,
|
|
2544
2552
|
credits_used: creditFields(result).credits_used,
|