@kolbo/mcp 1.91.1 → 1.91.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/README.md CHANGED
@@ -270,10 +270,10 @@ Requires the Kolbo Studio panel open in Premiere Pro or After Effects with **AI
270
270
  |------|-------------|
271
271
  | `adobe_list_sessions` | List the caller's Premiere Pro / After Effects windows connected through the Kolbo panel |
272
272
  | `adobe_get_project` | Queue a read-only project inspection (no approval) |
273
- | `adobe_get_timeline` | Queue a read-only inspection of the active sequence or composition, bounded by `max_clips` |
274
- | `adobe_import_media` | Import one Kolbo media id or Kolbo-owned HTTPS URL into the project bin |
273
+ | `adobe_get_timeline` | Queue a read-only inspection of the active sequence (tracks, clips with start/end, playhead) or composition (layers), bounded by `max_clips` |
274
+ | `adobe_import_media` | Import one Kolbo media id or Kolbo-owned HTTPS URL into the Kolbo.AI / My Media bin for its type |
275
275
  | `adobe_place_on_timeline` | Import and place one Kolbo media item at the playhead of the work sequence / active comp (no time or track control in v1) |
276
- | `adobe_create_sequence` | Create and open a Premiere Pro sequence (Premiere only) |
276
+ | `adobe_create_sequence` | Create and open a Premiere Pro sequence matching the open sequence's settings, no dialog (Premiere only) |
277
277
  | `adobe_import_captions` | Import a Kolbo-hosted SRT onto the active Premiere sequence (Premiere only) |
278
278
  | `adobe_get_command_status` | Read command status/result/error; `awaiting_approval` means stop and wait for the editor |
279
279
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@kolbo/mcp",
3
- "version": "1.91.1",
3
+ "version": "1.91.3",
4
4
  "description": "Kolbo AI MCP Server - Generate images, videos, music, speech, and sound effects from Claude Code",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -1,6 +1,6 @@
1
1
  # AUTO-GENERATED — do not edit
2
2
 
3
- This tree is mirrored from kolbo-code@1f1e5bf, the single source of truth.
3
+ This tree is mirrored from kolbo-code@c1a6a60, 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
@@ -102,6 +102,7 @@ For multi-scene / batch work this pairs with `generate_creative_director` (see b
102
102
  | Confirm **cost** or validate **resolution / aspect / duration** against model caps | `references/workflows/cost-and-validation.md` |
103
103
  | Hit an **auth / MCP / 429** issue | `references/workflows/troubleshooting.md` |
104
104
  | Inspect or change a connected **Blender** scene, render, import Kolbo media, or run approved Blender Python | `references/workflows/blender.md` |
105
+ | Inspect or edit an open **Premiere Pro / After Effects** project — timeline, import Kolbo media, place clips, sequences, captions | `references/workflows/adobe.md` |
105
106
  | Create or edit a saved **Video Editor** timeline, clips, trims, speed or captions | `references/workflows/video-editor.md` |
106
107
 
107
108
  Each `references/models/*.md` mirrors the matching skill prompt in `kolbo-api/src/config/systemPrompt.js` — same battle-tuned rules that power Kolbo's web-app help widget. Keep parity (see `packages/opencode/CLAUDE.md` "MCP & Skill Sync Rule").
@@ -159,6 +160,7 @@ Font tools (when exposed by the installed MCP): `list_fonts`, `get_font`, `uploa
159
160
  | `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`. |
160
161
  | `publish_html_artifact` | Publish HTML / SVG / Mermaid to `sites.kolbo.ai`. Server dedupes by content hash. Strict CSP. |
161
162
  | `blender_list_sessions` / `blender_get_scene` / `blender_search_docs` / `blender_capture_viewport` / `blender_apply_operations` / `blender_import_media` / `blender_render` / `blender_undo` / `blender_file_operation` / `blender_execute_python` / `blender_get_command_status` | Connected Blender control through the Kolbo extension. Every tool crosses into an external desktop host; read `workflows/blender.md` before the first call. |
163
+ | `adobe_list_sessions` / `adobe_get_project` / `adobe_get_timeline` / `adobe_import_media` / `adobe_place_on_timeline` / `adobe_create_sequence` / `adobe_import_captions` / `adobe_get_command_status` | Connected Premiere Pro / After Effects control through the Kolbo panel. Every edit needs the editor's approval in the panel; read `workflows/adobe.md` before the first call. |
162
164
 
163
165
  ## ⚠️ Edit in place — never delete+recreate (HARD RULE — always on)
164
166
 
@@ -0,0 +1,41 @@
1
+ # Premiere Pro & After Effects Workflow
2
+
3
+ Use these rules whenever the user wants an agent to inspect or edit an open Premiere Pro or After Effects project through Kolbo. The Kolbo panel inside the Adobe app is a separate desktop authority boundary: a Kolbo account is necessary, but the editor's approval inside the panel is the final gate for every edit.
4
+
5
+ ## Connect and target safely
6
+
7
+ 1. Call `adobe_list_sessions` before the first Adobe action.
8
+ 2. If no session is listed, ask the user to open **Window → Extensions → Kolbo Studio** in Premiere Pro or After Effects, sign in, and click the **AI agents** (robot) button in the panel header until its dot turns green. Do not substitute any other Kolbo tool for the panel relay.
9
+ 3. If one session is active, `session_id` may be omitted. If several are active, show each session's `name` (Premiere Pro / After Effects), `adobe_version`, platform and id, and ask which to target. Never guess.
10
+ 4. Keep the chosen `session_id` on every later Adobe call in the task. Re-list after a disconnect or app restart; ids are process-scoped.
11
+
12
+ There is no MCP logout tool. The editor disconnects from the panel header button.
13
+
14
+ ## Inspect before changing
15
+
16
+ - Start with `adobe_get_project`, then `adobe_get_timeline` for the active Premiere sequence or After Effects composition. Both are read-only and run without approval.
17
+ - Timeline responses are bounded; pass `max_clips` when you only need the first clips.
18
+
19
+ ## Command lifecycle and approval
20
+
21
+ Every Adobe tool except `adobe_list_sessions` and `adobe_get_command_status` returns a **command record**, not the result. Poll `adobe_get_command_status` with its `command_id` until the status is terminal: `succeeded`, `failed`, `denied` or `canceled`.
22
+
23
+ - `awaiting_approval` is not a polling state. Stop and tell the user to approve or deny the request in the Kolbo panel, then check once more after they answer.
24
+ - `denied` is final. Do not retry the same edit with cosmetic changes; ask the user what they want instead.
25
+ - "Allow for this session" lives only in the panel's memory and ends when the editor disconnects. Never tell the user it persists, and never ask them to enable it for you.
26
+ - Pass a stable `idempotency_key` when a timeout may cause you to retry the same command. A new intent needs a new key.
27
+
28
+ ## Media, sequences and captions
29
+
30
+ - `adobe_import_media` and `adobe_place_on_timeline` accept exactly one Kolbo `media_id` (preferred) or a Kolbo-owned HTTPS `url`. Third-party hosts, HTTP, private network and guessed URLs are rejected; import third-party files into Kolbo first.
31
+ - To generate then edit: run the Kolbo generation tool, wait for its successful result, then pass the real media id. Never place a still-running generation.
32
+ - `adobe_place_on_timeline` drops the clip into a free track at the playhead of the Premiere work sequence, or into the active After Effects composition. There is no time, track, trim or transition control in v1; do not promise one. Ask the user to position the playhead first when placement matters.
33
+ - `adobe_create_sequence` and `adobe_import_captions` are Premiere Pro only. In After Effects they fail with `UNSUPPORTED_HOST`.
34
+ - For captions, create the SRT with `transcribe_audio`, then pass its Kolbo-hosted `.srt` URL to `adobe_import_captions`.
35
+ - There is no raw ExtendScript tool. If the user asks for an edit outside these commands, say it is not available through agents yet and suggest doing it in the panel or the app.
36
+
37
+ ## Completion proof
38
+
39
+ 1. Re-read with `adobe_get_timeline` or `adobe_get_project` after an edit.
40
+ 2. Report what changed, which session was targeted, and that the editor approved it.
41
+ 3. A command is complete only when `adobe_get_command_status` shows `succeeded`. An accepted enqueue is not proof the edit happened.
@@ -88,7 +88,7 @@ function registerAdobeTools(server, client) {
88
88
 
89
89
  server.tool(
90
90
  'adobe_get_timeline',
91
- 'Queue a read-only inspection of the active Premiere Pro sequence or After Effects composition. No approval is needed. Long clip lists are truncated to max_clips.',
91
+ 'Queue a read-only inspection of the active Premiere Pro sequence or After Effects composition. No approval is needed. Premiere returns size, duration, playhead_seconds, tracks and a clip list (track, name, start_seconds, end_seconds) sorted earliest first; After Effects returns the comp and its layers. The list is truncated to max_clips (default 200) with the full count in clips_total / layers_total.',
92
92
  {
93
93
  session_id: sessionId,
94
94
  max_clips: z.number().int().min(1).max(1000).optional(),
@@ -101,19 +101,19 @@ function registerAdobeTools(server, client) {
101
101
 
102
102
  server.tool(
103
103
  'adobe_import_media',
104
- 'Import one Kolbo media item into the open Premiere Pro or After Effects project bin. The editor must approve it in the Kolbo panel. Returns a command record; poll adobe_get_command_status.',
104
+ 'Import one Kolbo media item into the open Premiere Pro or After Effects project. It lands in the Kolbo.AI / My Media bin for its type (Videos, Images, Audio). The editor must approve it in the Kolbo panel. Returns a command record; poll adobe_get_command_status.',
105
105
  {
106
106
  session_id: sessionId,
107
107
  media_id: mediaId,
108
108
  url: mediaUrl,
109
109
  kind: mediaKind,
110
110
  name: noControls(128).optional().describe('Display/file name. Sanitized by the panel.'),
111
- bin: noControls(128).optional(),
111
+ // Kept for backward compatibility with cached clients (never remove an arg).
112
+ bin: noControls(128).optional().describe('Ignored. The panel always files imports under Kolbo.AI / My Media by media type.'),
112
113
  idempotency_key: idempotencyKey,
113
114
  },
114
115
  async (args) => command(client, 'media.import', args, {
115
116
  ...mediaSource(args, 'adobe_import_media'),
116
- ...(args.bin ? { bin: args.bin } : {}),
117
117
  })
118
118
  );
119
119
 
@@ -133,7 +133,7 @@ function registerAdobeTools(server, client) {
133
133
 
134
134
  server.tool(
135
135
  'adobe_create_sequence',
136
- 'Create and open a new Premiere Pro sequence using the project default preset. Premiere Pro only; After Effects sessions fail with UNSUPPORTED_HOST. The editor must approve it in the Kolbo panel.',
136
+ 'Create and open a new Premiere Pro sequence without any dialog. It copies the settings of the sequence open in the timeline (a 1080p 25 fps preset when none is open) and becomes the active sequence. Premiere Pro only; After Effects sessions fail with UNSUPPORTED_HOST. The editor must approve it in the Kolbo panel.',
137
137
  {
138
138
  session_id: sessionId,
139
139
  name: noControls(128),