@synthetic-ai/premiere-mcp 2.0.0
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/CHANGELOG.md +73 -0
- package/LICENSE +21 -0
- package/README.md +242 -0
- package/cep-plugin/.debug +8 -0
- package/cep-plugin/CSInterface.js +70 -0
- package/cep-plugin/CSXS/manifest.xml +49 -0
- package/cep-plugin/host.jsx +7 -0
- package/cep-plugin/index.html +419 -0
- package/cep-plugin/main.js +327 -0
- package/cep-plugin/premiere.jsx +24947 -0
- package/cep-plugin/synthetic-logo.png +0 -0
- package/dist/bridge/file-bridge.d.ts +29 -0
- package/dist/bridge/file-bridge.js +145 -0
- package/dist/bridge/script-builder.d.ts +19 -0
- package/dist/bridge/script-builder.js +408 -0
- package/dist/http-server.d.ts +21 -0
- package/dist/http-server.js +140 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +70 -0
- package/dist/resources/extendscript-reference.d.ts +2 -0
- package/dist/resources/extendscript-reference.js +219 -0
- package/dist/server.d.ts +4 -0
- package/dist/server.js +276 -0
- package/dist/tools/advanced.d.ts +530 -0
- package/dist/tools/advanced.js +923 -0
- package/dist/tools/audio-advanced.d.ts +847 -0
- package/dist/tools/audio-advanced.js +1653 -0
- package/dist/tools/audio.d.ts +84 -0
- package/dist/tools/audio.js +123 -0
- package/dist/tools/captions.d.ts +30 -0
- package/dist/tools/captions.js +73 -0
- package/dist/tools/clipboard.d.ts +153 -0
- package/dist/tools/clipboard.js +381 -0
- package/dist/tools/color-advanced.d.ts +821 -0
- package/dist/tools/color-advanced.js +772 -0
- package/dist/tools/discovery.d.ts +128 -0
- package/dist/tools/discovery.js +445 -0
- package/dist/tools/effects.d.ts +211 -0
- package/dist/tools/effects.js +554 -0
- package/dist/tools/export-presets.d.ts +333 -0
- package/dist/tools/export-presets.js +490 -0
- package/dist/tools/export.d.ts +320 -0
- package/dist/tools/export.js +618 -0
- package/dist/tools/health.d.ts +9 -0
- package/dist/tools/health.js +25 -0
- package/dist/tools/inspection.d.ts +179 -0
- package/dist/tools/inspection.js +1089 -0
- package/dist/tools/keyframes.d.ts +253 -0
- package/dist/tools/keyframes.js +611 -0
- package/dist/tools/markers.d.ts +117 -0
- package/dist/tools/markers.js +206 -0
- package/dist/tools/media.d.ts +297 -0
- package/dist/tools/media.js +493 -0
- package/dist/tools/metadata.d.ts +178 -0
- package/dist/tools/metadata.js +278 -0
- package/dist/tools/multicam.d.ts +199 -0
- package/dist/tools/multicam.js +212 -0
- package/dist/tools/playback.d.ts +34 -0
- package/dist/tools/playback.js +63 -0
- package/dist/tools/playhead.d.ts +77 -0
- package/dist/tools/playhead.js +185 -0
- package/dist/tools/project-manager.d.ts +65 -0
- package/dist/tools/project-manager.js +81 -0
- package/dist/tools/project.d.ts +390 -0
- package/dist/tools/project.js +596 -0
- package/dist/tools/scripting.d.ts +98 -0
- package/dist/tools/scripting.js +434 -0
- package/dist/tools/selection.d.ts +120 -0
- package/dist/tools/selection.js +334 -0
- package/dist/tools/sequence-advanced.d.ts +84 -0
- package/dist/tools/sequence-advanced.js +471 -0
- package/dist/tools/sequence-settings.d.ts +397 -0
- package/dist/tools/sequence-settings.js +967 -0
- package/dist/tools/sequence.d.ts +211 -0
- package/dist/tools/sequence.js +378 -0
- package/dist/tools/source-monitor.d.ts +95 -0
- package/dist/tools/source-monitor.js +180 -0
- package/dist/tools/text.d.ts +97 -0
- package/dist/tools/text.js +159 -0
- package/dist/tools/timeline.d.ts +265 -0
- package/dist/tools/timeline.js +575 -0
- package/dist/tools/track-management.d.ts +482 -0
- package/dist/tools/track-management.js +787 -0
- package/dist/tools/track-targeting.d.ts +666 -0
- package/dist/tools/track-targeting.js +1318 -0
- package/dist/tools/tracks.d.ts +90 -0
- package/dist/tools/tracks.js +183 -0
- package/dist/tools/transitions-motion.d.ts +788 -0
- package/dist/tools/transitions-motion.js +680 -0
- package/dist/tools/transitions.d.ts +124 -0
- package/dist/tools/transitions.js +267 -0
- package/dist/tools/utility.d.ts +469 -0
- package/dist/tools/utility.js +1118 -0
- package/dist/tools/workspace.d.ts +25 -0
- package/dist/tools/workspace.js +61 -0
- package/package.json +66 -0
- package/scripts/build-chat-dmg.sh +210 -0
- package/scripts/build-chat-zip.sh +291 -0
- package/scripts/install-cep-windows.ps1 +99 -0
- package/scripts/install-cep.sh +66 -0
- package/scripts/install-chat-plugin.bat +67 -0
- package/scripts/install-chat-plugin.sh +85 -0
- package/scripts/install-windows.bat +95 -0
- package/scripts/package.mjs +218 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { BridgeOptions } from "../bridge/file-bridge.js";
|
|
2
|
+
export declare function getTransitionsTools(bridgeOptions: BridgeOptions): {
|
|
3
|
+
add_transition: {
|
|
4
|
+
description: string;
|
|
5
|
+
parameters: {
|
|
6
|
+
type: "object";
|
|
7
|
+
properties: {
|
|
8
|
+
transition_name: {
|
|
9
|
+
type: string;
|
|
10
|
+
description: string;
|
|
11
|
+
};
|
|
12
|
+
track_index: {
|
|
13
|
+
type: string;
|
|
14
|
+
description: string;
|
|
15
|
+
};
|
|
16
|
+
cut_point_seconds: {
|
|
17
|
+
type: string;
|
|
18
|
+
description: string;
|
|
19
|
+
};
|
|
20
|
+
duration_seconds: {
|
|
21
|
+
type: string;
|
|
22
|
+
description: string;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
25
|
+
required: string[];
|
|
26
|
+
};
|
|
27
|
+
handler: (args: {
|
|
28
|
+
transition_name: string;
|
|
29
|
+
track_index: number;
|
|
30
|
+
cut_point_seconds: number;
|
|
31
|
+
duration_seconds?: number;
|
|
32
|
+
}) => Promise<import("../bridge/file-bridge.js").CommandResult>;
|
|
33
|
+
};
|
|
34
|
+
add_transition_to_clip: {
|
|
35
|
+
description: string;
|
|
36
|
+
parameters: {
|
|
37
|
+
type: "object";
|
|
38
|
+
properties: {
|
|
39
|
+
node_id: {
|
|
40
|
+
type: string;
|
|
41
|
+
description: string;
|
|
42
|
+
};
|
|
43
|
+
transition_name: {
|
|
44
|
+
type: string;
|
|
45
|
+
description: string;
|
|
46
|
+
};
|
|
47
|
+
position: {
|
|
48
|
+
type: string;
|
|
49
|
+
enum: string[];
|
|
50
|
+
description: string;
|
|
51
|
+
};
|
|
52
|
+
duration_seconds: {
|
|
53
|
+
type: string;
|
|
54
|
+
description: string;
|
|
55
|
+
};
|
|
56
|
+
};
|
|
57
|
+
required: string[];
|
|
58
|
+
};
|
|
59
|
+
handler: (args: {
|
|
60
|
+
node_id: string;
|
|
61
|
+
transition_name: string;
|
|
62
|
+
position?: string;
|
|
63
|
+
duration_seconds?: number;
|
|
64
|
+
}) => Promise<import("../bridge/file-bridge.js").CommandResult>;
|
|
65
|
+
};
|
|
66
|
+
batch_add_transitions: {
|
|
67
|
+
description: string;
|
|
68
|
+
parameters: {
|
|
69
|
+
type: "object";
|
|
70
|
+
properties: {
|
|
71
|
+
transition_name: {
|
|
72
|
+
type: string;
|
|
73
|
+
description: string;
|
|
74
|
+
};
|
|
75
|
+
track_index: {
|
|
76
|
+
type: string;
|
|
77
|
+
description: string;
|
|
78
|
+
};
|
|
79
|
+
duration_seconds: {
|
|
80
|
+
type: string;
|
|
81
|
+
description: string;
|
|
82
|
+
};
|
|
83
|
+
};
|
|
84
|
+
required: string[];
|
|
85
|
+
};
|
|
86
|
+
handler: (args: {
|
|
87
|
+
transition_name: string;
|
|
88
|
+
track_index?: number;
|
|
89
|
+
duration_seconds?: number;
|
|
90
|
+
}) => Promise<import("../bridge/file-bridge.js").CommandResult>;
|
|
91
|
+
};
|
|
92
|
+
list_available_transitions: {
|
|
93
|
+
description: string;
|
|
94
|
+
parameters: {};
|
|
95
|
+
handler: () => Promise<{
|
|
96
|
+
success: boolean;
|
|
97
|
+
data: {
|
|
98
|
+
transitions: {
|
|
99
|
+
name: string;
|
|
100
|
+
category: string;
|
|
101
|
+
}[];
|
|
102
|
+
count: number;
|
|
103
|
+
note: string;
|
|
104
|
+
};
|
|
105
|
+
}>;
|
|
106
|
+
};
|
|
107
|
+
list_available_audio_transitions: {
|
|
108
|
+
description: string;
|
|
109
|
+
parameters: {};
|
|
110
|
+
handler: () => Promise<{
|
|
111
|
+
success: boolean;
|
|
112
|
+
data: {
|
|
113
|
+
transitions: {
|
|
114
|
+
name: string;
|
|
115
|
+
category: string;
|
|
116
|
+
description: string;
|
|
117
|
+
}[];
|
|
118
|
+
count: number;
|
|
119
|
+
note: string;
|
|
120
|
+
};
|
|
121
|
+
}>;
|
|
122
|
+
};
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=transitions.d.ts.map
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { buildToolScript, escapeForExtendScript } from "../bridge/script-builder.js";
|
|
2
|
+
import { sendCommand } from "../bridge/file-bridge.js";
|
|
3
|
+
export function getTransitionsTools(bridgeOptions) {
|
|
4
|
+
return {
|
|
5
|
+
add_transition: {
|
|
6
|
+
description: "Add a video transition between two clips at a cut point. Uses QE DOM.",
|
|
7
|
+
parameters: {
|
|
8
|
+
type: "object",
|
|
9
|
+
properties: {
|
|
10
|
+
transition_name: {
|
|
11
|
+
type: "string",
|
|
12
|
+
description: "Name of the transition (e.g., 'Cross Dissolve', 'Dip to Black')",
|
|
13
|
+
},
|
|
14
|
+
track_index: {
|
|
15
|
+
type: "number",
|
|
16
|
+
description: "Video track index (0-based)",
|
|
17
|
+
},
|
|
18
|
+
cut_point_seconds: {
|
|
19
|
+
type: "number",
|
|
20
|
+
description: "Time position in seconds of the cut point where the transition should be placed",
|
|
21
|
+
},
|
|
22
|
+
duration_seconds: {
|
|
23
|
+
type: "number",
|
|
24
|
+
description: "Duration of the transition in seconds (default: 1.0)",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
required: ["transition_name", "track_index", "cut_point_seconds"],
|
|
28
|
+
},
|
|
29
|
+
handler: async (args) => {
|
|
30
|
+
const duration = args.duration_seconds ?? 1.0;
|
|
31
|
+
const script = buildToolScript(`
|
|
32
|
+
app.enableQE();
|
|
33
|
+
var qeSeq = qe.project.getActiveSequence();
|
|
34
|
+
if (!qeSeq) return __error("No active sequence (QE)");
|
|
35
|
+
|
|
36
|
+
var qeTrack = qeSeq.getVideoTrackAt(${args.track_index});
|
|
37
|
+
if (!qeTrack) return __error("Track not found");
|
|
38
|
+
|
|
39
|
+
var transitionName = "${escapeForExtendScript(args.transition_name)}";
|
|
40
|
+
var transitionQE = __findTransition(transitionName, "video");
|
|
41
|
+
if (!transitionQE) return __error("Transition not found: " + transitionName + " (tried English name and localized aliases)");
|
|
42
|
+
|
|
43
|
+
// Resolve the cut point to a clip index on the DOM track. addTransition is a
|
|
44
|
+
// method of the QE CLIP (getItemAt), NOT the QE track. The clip determines the
|
|
45
|
+
// position, so there is no cut-position argument; duration is a SECONDS string.
|
|
46
|
+
var domSeq = app.project.activeSequence;
|
|
47
|
+
if (!domSeq) return __error("No active sequence");
|
|
48
|
+
var domTrack = domSeq.videoTracks[${args.track_index}];
|
|
49
|
+
if (!domTrack) return __error("DOM video track not found at index ${args.track_index}");
|
|
50
|
+
var cutSec = ${args.cut_point_seconds};
|
|
51
|
+
var clipIdx = -1;
|
|
52
|
+
var bestDiff = null;
|
|
53
|
+
for (var c = 0; c < domTrack.clips.numItems; c++) {
|
|
54
|
+
var endSec = __ticksToSeconds(domTrack.clips[c].end.ticks);
|
|
55
|
+
var startSec = __ticksToSeconds(domTrack.clips[c].start.ticks);
|
|
56
|
+
var d = Math.min(Math.abs(endSec - cutSec), Math.abs(startSec - cutSec));
|
|
57
|
+
if (bestDiff === null || d < bestDiff) { bestDiff = d; clipIdx = c; }
|
|
58
|
+
}
|
|
59
|
+
if (clipIdx < 0) return __error("No clip found near cut point " + cutSec + "s");
|
|
60
|
+
|
|
61
|
+
var qeClip = qeTrack.getItemAt(clipIdx);
|
|
62
|
+
if (!qeClip) return __error("QE clip not found at index " + clipIdx);
|
|
63
|
+
qeClip.addTransition(transitionQE, true, String(${duration}));
|
|
64
|
+
|
|
65
|
+
return __result({
|
|
66
|
+
added: true,
|
|
67
|
+
transition: transitionName,
|
|
68
|
+
trackIndex: ${args.track_index},
|
|
69
|
+
clipIndex: clipIdx,
|
|
70
|
+
atSeconds: ${args.cut_point_seconds},
|
|
71
|
+
durationSeconds: ${duration}
|
|
72
|
+
});
|
|
73
|
+
`);
|
|
74
|
+
return sendCommand(script, bridgeOptions);
|
|
75
|
+
},
|
|
76
|
+
},
|
|
77
|
+
add_transition_to_clip: {
|
|
78
|
+
description: "Add a transition to a specific clip's start or end",
|
|
79
|
+
parameters: {
|
|
80
|
+
type: "object",
|
|
81
|
+
properties: {
|
|
82
|
+
node_id: {
|
|
83
|
+
type: "string",
|
|
84
|
+
description: "Node ID of the clip",
|
|
85
|
+
},
|
|
86
|
+
transition_name: {
|
|
87
|
+
type: "string",
|
|
88
|
+
description: "Name of the transition",
|
|
89
|
+
},
|
|
90
|
+
position: {
|
|
91
|
+
type: "string",
|
|
92
|
+
enum: ["start", "end", "both"],
|
|
93
|
+
description: "Where to apply the transition (default: end)",
|
|
94
|
+
},
|
|
95
|
+
duration_seconds: {
|
|
96
|
+
type: "number",
|
|
97
|
+
description: "Duration of the transition in seconds (default: 1.0)",
|
|
98
|
+
},
|
|
99
|
+
},
|
|
100
|
+
required: ["node_id", "transition_name"],
|
|
101
|
+
},
|
|
102
|
+
handler: async (args) => {
|
|
103
|
+
const position = args.position || "end";
|
|
104
|
+
const duration = args.duration_seconds ?? 1.0;
|
|
105
|
+
const script = buildToolScript(`
|
|
106
|
+
app.enableQE();
|
|
107
|
+
var qeSeq = qe.project.getActiveSequence();
|
|
108
|
+
if (!qeSeq) return __error("No active sequence (QE)");
|
|
109
|
+
|
|
110
|
+
var result = __findClip("${escapeForExtendScript(args.node_id)}");
|
|
111
|
+
if (!result) return __error("Clip not found");
|
|
112
|
+
|
|
113
|
+
var transitionName = "${escapeForExtendScript(args.transition_name)}";
|
|
114
|
+
var transitionQE = __findTransition(transitionName, "video");
|
|
115
|
+
if (!transitionQE) return __error("Transition not found: " + transitionName + " (tried English name and localized aliases)");
|
|
116
|
+
|
|
117
|
+
var qeTrack = qeSeq.getVideoTrackAt(result.trackIndex);
|
|
118
|
+
var clip = result.clip;
|
|
119
|
+
var transitionPosition = "${position}";
|
|
120
|
+
|
|
121
|
+
// addTransition is a QE CLIP method. forceSingle/applyToEnd boolean selects
|
|
122
|
+
// head (false) vs tail (true); duration is a SECONDS string. No position arg.
|
|
123
|
+
var qeClip = qeTrack.getItemAt(result.clipIndex);
|
|
124
|
+
if (!qeClip) return __error("QE clip not found at index " + result.clipIndex);
|
|
125
|
+
|
|
126
|
+
if (transitionPosition === "start" || transitionPosition === "both") {
|
|
127
|
+
qeClip.addTransition(transitionQE, false, String(${duration}));
|
|
128
|
+
}
|
|
129
|
+
if (transitionPosition === "end" || transitionPosition === "both") {
|
|
130
|
+
qeClip.addTransition(transitionQE, true, String(${duration}));
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
return __result({
|
|
134
|
+
added: true,
|
|
135
|
+
transition: transitionName,
|
|
136
|
+
clipName: clip.name,
|
|
137
|
+
position: transitionPosition,
|
|
138
|
+
durationSeconds: ${duration}
|
|
139
|
+
});
|
|
140
|
+
`);
|
|
141
|
+
return sendCommand(script, bridgeOptions);
|
|
142
|
+
},
|
|
143
|
+
},
|
|
144
|
+
batch_add_transitions: {
|
|
145
|
+
description: "Add the same transition to all cut points on a track",
|
|
146
|
+
parameters: {
|
|
147
|
+
type: "object",
|
|
148
|
+
properties: {
|
|
149
|
+
transition_name: {
|
|
150
|
+
type: "string",
|
|
151
|
+
description: "Name of the transition (e.g., 'Cross Dissolve')",
|
|
152
|
+
},
|
|
153
|
+
track_index: {
|
|
154
|
+
type: "number",
|
|
155
|
+
description: "Video track index (0-based, default: 0)",
|
|
156
|
+
},
|
|
157
|
+
duration_seconds: {
|
|
158
|
+
type: "number",
|
|
159
|
+
description: "Duration of each transition in seconds (default: 1.0)",
|
|
160
|
+
},
|
|
161
|
+
},
|
|
162
|
+
required: ["transition_name"],
|
|
163
|
+
},
|
|
164
|
+
handler: async (args) => {
|
|
165
|
+
const trackIndex = args.track_index ?? 0;
|
|
166
|
+
const duration = args.duration_seconds ?? 1.0;
|
|
167
|
+
const script = buildToolScript(`
|
|
168
|
+
app.enableQE();
|
|
169
|
+
var qeSeq = qe.project.getActiveSequence();
|
|
170
|
+
if (!qeSeq) return __error("No active sequence (QE)");
|
|
171
|
+
|
|
172
|
+
var seq = app.project.activeSequence;
|
|
173
|
+
if (!seq) return __error("No active sequence");
|
|
174
|
+
|
|
175
|
+
var transitionName = "${escapeForExtendScript(args.transition_name)}";
|
|
176
|
+
var transitionQE = __findTransition(transitionName, "video");
|
|
177
|
+
if (!transitionQE) return __error("Transition not found: " + transitionName + " (tried English name and localized aliases)");
|
|
178
|
+
|
|
179
|
+
var track = seq.videoTracks[${trackIndex}];
|
|
180
|
+
var qeTrack = qeSeq.getVideoTrackAt(${trackIndex});
|
|
181
|
+
var count = 0;
|
|
182
|
+
|
|
183
|
+
// addTransition is a QE CLIP method (getItemAt), not a track method. Apply to
|
|
184
|
+
// the tail of each clip except the last; duration is a SECONDS string.
|
|
185
|
+
for (var c = 0; c < track.clips.numItems - 1; c++) {
|
|
186
|
+
try {
|
|
187
|
+
var qeClip = qeTrack.getItemAt(c);
|
|
188
|
+
if (qeClip) {
|
|
189
|
+
qeClip.addTransition(transitionQE, true, String(${duration}));
|
|
190
|
+
count++;
|
|
191
|
+
}
|
|
192
|
+
} catch(e) {}
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
return __result({
|
|
196
|
+
added: count,
|
|
197
|
+
transition: transitionName,
|
|
198
|
+
trackIndex: ${trackIndex},
|
|
199
|
+
durationSeconds: ${duration}
|
|
200
|
+
});
|
|
201
|
+
`);
|
|
202
|
+
return sendCommand(script, bridgeOptions);
|
|
203
|
+
},
|
|
204
|
+
},
|
|
205
|
+
list_available_transitions: {
|
|
206
|
+
description: "List all available video transitions in Premiere Pro.",
|
|
207
|
+
parameters: {},
|
|
208
|
+
handler: async () => {
|
|
209
|
+
const transitions = [
|
|
210
|
+
// Dissolve
|
|
211
|
+
{ name: "Cross Dissolve", category: "Dissolve" },
|
|
212
|
+
{ name: "Dip to Black", category: "Dissolve" },
|
|
213
|
+
{ name: "Dip to White", category: "Dissolve" },
|
|
214
|
+
{ name: "Film Dissolve", category: "Dissolve" },
|
|
215
|
+
{ name: "Additive Dissolve", category: "Dissolve" },
|
|
216
|
+
{ name: "Non-Additive Dissolve", category: "Dissolve" },
|
|
217
|
+
{ name: "Morph Cut", category: "Dissolve" },
|
|
218
|
+
// Wipe
|
|
219
|
+
{ name: "Clock Wipe", category: "Wipe" },
|
|
220
|
+
{ name: "Inset", category: "Wipe" },
|
|
221
|
+
{ name: "Paint Splatter", category: "Wipe" },
|
|
222
|
+
{ name: "Pinwheel", category: "Wipe" },
|
|
223
|
+
{ name: "Radial Wipe", category: "Wipe" },
|
|
224
|
+
{ name: "Spiral Boxes", category: "Wipe" },
|
|
225
|
+
{ name: "Venetian Blinds", category: "Wipe" },
|
|
226
|
+
{ name: "Wedge Wipe", category: "Wipe" },
|
|
227
|
+
{ name: "Wipe", category: "Wipe" },
|
|
228
|
+
{ name: "Zig-Zag Blocks", category: "Wipe" },
|
|
229
|
+
// Slide
|
|
230
|
+
{ name: "Center Split", category: "Slide" },
|
|
231
|
+
{ name: "Multi-Spin", category: "Slide" },
|
|
232
|
+
{ name: "Push", category: "Slide" },
|
|
233
|
+
{ name: "Slide", category: "Slide" },
|
|
234
|
+
{ name: "Split", category: "Slide" },
|
|
235
|
+
{ name: "Swap", category: "Slide" },
|
|
236
|
+
// Zoom
|
|
237
|
+
{ name: "Cross Zoom", category: "Zoom" },
|
|
238
|
+
// 3D Motion
|
|
239
|
+
{ name: "Cube Spin", category: "3D Motion" },
|
|
240
|
+
{ name: "Curtain", category: "3D Motion" },
|
|
241
|
+
{ name: "Doors", category: "3D Motion" },
|
|
242
|
+
{ name: "Flip Over", category: "3D Motion" },
|
|
243
|
+
{ name: "Fold Up", category: "3D Motion" },
|
|
244
|
+
{ name: "Spin", category: "3D Motion" },
|
|
245
|
+
{ name: "Spin Away", category: "3D Motion" },
|
|
246
|
+
{ name: "Swing In", category: "3D Motion" },
|
|
247
|
+
{ name: "Swing Out", category: "3D Motion" },
|
|
248
|
+
{ name: "Tumble Away", category: "3D Motion" },
|
|
249
|
+
];
|
|
250
|
+
return { success: true, data: { transitions, count: transitions.length, note: "Static list of common Premiere Pro video transitions. Use add_transition with these exact names." } };
|
|
251
|
+
},
|
|
252
|
+
},
|
|
253
|
+
list_available_audio_transitions: {
|
|
254
|
+
description: "List all available audio transitions in Premiere Pro.",
|
|
255
|
+
parameters: {},
|
|
256
|
+
handler: async () => {
|
|
257
|
+
const transitions = [
|
|
258
|
+
{ name: "Constant Gain", category: "Crossfade", description: "Crossfade using constant gain curve" },
|
|
259
|
+
{ name: "Constant Power", category: "Crossfade", description: "Crossfade using constant power (equal loudness) - default" },
|
|
260
|
+
{ name: "Exponential Fade", category: "Crossfade", description: "Exponential fade curve" },
|
|
261
|
+
];
|
|
262
|
+
return { success: true, data: { transitions, count: transitions.length, note: "Premiere Pro has 3 audio transitions. 'Constant Power' is the recommended default for music crossfades." } };
|
|
263
|
+
},
|
|
264
|
+
},
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
//# sourceMappingURL=transitions.js.map
|