@synthetic-ai/premiere-mcp 2.1.0 → 2.3.0-dev.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.
Files changed (58) hide show
  1. package/CHANGELOG.md +135 -123
  2. package/LICENSE +21 -21
  3. package/README.md +242 -242
  4. package/cep-plugin/.debug +8 -8
  5. package/cep-plugin/CSInterface.js +92 -92
  6. package/cep-plugin/host.jsx +7 -7
  7. package/cep-plugin/index.html +472 -472
  8. package/cep-plugin/main.js +6 -0
  9. package/cep-plugin/premiere.jsx +24947 -24947
  10. package/dist/bridge/script-builder.js +378 -378
  11. package/dist/index.js +103 -4
  12. package/dist/license.js +38 -0
  13. package/dist/server.js +60 -60
  14. package/dist/tools/advanced.js +357 -357
  15. package/dist/tools/audio-advanced.js +1049 -1049
  16. package/dist/tools/audio.js +42 -42
  17. package/dist/tools/captions.js +27 -27
  18. package/dist/tools/clipboard.js +214 -214
  19. package/dist/tools/color-advanced.js +253 -253
  20. package/dist/tools/discovery.js +291 -291
  21. package/dist/tools/effects.js +285 -285
  22. package/dist/tools/export-presets.js +206 -206
  23. package/dist/tools/export.js +255 -255
  24. package/dist/tools/health.js +10 -10
  25. package/dist/tools/inspection.js +885 -885
  26. package/dist/tools/keyframes.js +369 -369
  27. package/dist/tools/markers.js +89 -89
  28. package/dist/tools/media.js +178 -178
  29. package/dist/tools/metadata.js +94 -94
  30. package/dist/tools/multicam.js +50 -50
  31. package/dist/tools/playback.js +15 -15
  32. package/dist/tools/playhead.js +95 -95
  33. package/dist/tools/project-manager.js +21 -21
  34. package/dist/tools/project.js +149 -149
  35. package/dist/tools/scripting.js +319 -319
  36. package/dist/tools/selection.js +202 -202
  37. package/dist/tools/sequence-advanced.js +379 -379
  38. package/dist/tools/sequence-settings.js +564 -564
  39. package/dist/tools/sequence.js +167 -167
  40. package/dist/tools/source-monitor.js +68 -68
  41. package/dist/tools/text.js +58 -58
  42. package/dist/tools/timeline.js +312 -312
  43. package/dist/tools/track-management.js +446 -446
  44. package/dist/tools/track-targeting.js +635 -635
  45. package/dist/tools/tracks.js +87 -87
  46. package/dist/tools/transitions-motion.js +174 -174
  47. package/dist/tools/transitions.js +111 -111
  48. package/dist/tools/utility.js +606 -606
  49. package/dist/tools/workspace.js +29 -29
  50. package/package.json +66 -66
  51. package/scripts/build-chat-dmg.sh +210 -210
  52. package/scripts/build-chat-zip.sh +291 -291
  53. package/scripts/install-cep-windows.ps1 +99 -99
  54. package/scripts/install-cep.sh +66 -66
  55. package/scripts/install-chat-plugin.bat +67 -67
  56. package/scripts/install-chat-plugin.sh +85 -85
  57. package/scripts/install-windows.bat +95 -95
  58. package/scripts/package.mjs +254 -254
@@ -15,29 +15,29 @@ export function getMetadataTools(bridgeOptions) {
15
15
  required: ["item_id"],
16
16
  },
17
17
  handler: async (args) => {
18
- const script = buildToolScript(`
19
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
20
- if (!item) return __error("Item not found");
21
-
22
- var metadata = {};
23
- try {
24
- var xmpBlob = item.getProjectMetadata();
25
- metadata.projectMetadata = xmpBlob;
26
- } catch(e) {}
27
-
28
- try {
29
- var xmpBlob2 = item.getXMPMetadata();
30
- metadata.xmpMetadata = xmpBlob2;
31
- } catch(e) {}
32
-
33
- metadata.name = item.name;
34
- metadata.nodeId = item.nodeId;
35
-
36
- try {
37
- metadata.mediaPath = item.getMediaPath();
38
- } catch(e) {}
39
-
40
- return __result(metadata);
18
+ const script = buildToolScript(`
19
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
20
+ if (!item) return __error("Item not found");
21
+
22
+ var metadata = {};
23
+ try {
24
+ var xmpBlob = item.getProjectMetadata();
25
+ metadata.projectMetadata = xmpBlob;
26
+ } catch(e) {}
27
+
28
+ try {
29
+ var xmpBlob2 = item.getXMPMetadata();
30
+ metadata.xmpMetadata = xmpBlob2;
31
+ } catch(e) {}
32
+
33
+ metadata.name = item.name;
34
+ metadata.nodeId = item.nodeId;
35
+
36
+ try {
37
+ metadata.mediaPath = item.getMediaPath();
38
+ } catch(e) {}
39
+
40
+ return __result(metadata);
41
41
  `);
42
42
  return sendCommand(script, bridgeOptions);
43
43
  },
@@ -63,13 +63,13 @@ export function getMetadataTools(bridgeOptions) {
63
63
  required: ["item_id", "field_name", "value"],
64
64
  },
65
65
  handler: async (args) => {
66
- const script = buildToolScript(`
67
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
68
- if (!item) return __error("Item not found");
69
-
70
- item.setProjectMetadata("${escapeForExtendScript(args.value)}", "${escapeForExtendScript(args.field_name)}");
71
-
72
- return __result({ updated: true, item: item.name, field: "${escapeForExtendScript(args.field_name)}" });
66
+ const script = buildToolScript(`
67
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
68
+ if (!item) return __error("Item not found");
69
+
70
+ item.setProjectMetadata("${escapeForExtendScript(args.value)}", "${escapeForExtendScript(args.field_name)}");
71
+
72
+ return __result({ updated: true, item: item.name, field: "${escapeForExtendScript(args.field_name)}" });
73
73
  `);
74
74
  return sendCommand(script, bridgeOptions);
75
75
  },
@@ -91,13 +91,13 @@ export function getMetadataTools(bridgeOptions) {
91
91
  required: ["item_id", "color_index"],
92
92
  },
93
93
  handler: async (args) => {
94
- const script = buildToolScript(`
95
- // Accept both project item IDs/names AND timeline clip nodeIds.
96
- var item = __resolveProjectItemOrTimelineClip("${escapeForExtendScript(args.item_id)}");
97
- if (!item) return __error("Item not found in project tree or timeline: ${escapeForExtendScript(args.item_id)}");
98
-
99
- item.setColorLabel(${args.color_index});
100
- return __result({ updated: true, item: item.name, colorIndex: ${args.color_index} });
94
+ const script = buildToolScript(`
95
+ // Accept both project item IDs/names AND timeline clip nodeIds.
96
+ var item = __resolveProjectItemOrTimelineClip("${escapeForExtendScript(args.item_id)}");
97
+ if (!item) return __error("Item not found in project tree or timeline: ${escapeForExtendScript(args.item_id)}");
98
+
99
+ item.setColorLabel(${args.color_index});
100
+ return __result({ updated: true, item: item.name, colorIndex: ${args.color_index} });
101
101
  `);
102
102
  return sendCommand(script, bridgeOptions);
103
103
  },
@@ -115,12 +115,12 @@ export function getMetadataTools(bridgeOptions) {
115
115
  required: ["item_id"],
116
116
  },
117
117
  handler: async (args) => {
118
- const script = buildToolScript(`
119
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
120
- if (!item) return __error("Item not found");
121
-
122
- var colorIndex = item.getColorLabel();
123
- return __result({ item: item.name, colorIndex: colorIndex });
118
+ const script = buildToolScript(`
119
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
120
+ if (!item) return __error("Item not found");
121
+
122
+ var colorIndex = item.getColorLabel();
123
+ return __result({ item: item.name, colorIndex: colorIndex });
124
124
  `);
125
125
  return sendCommand(script, bridgeOptions);
126
126
  },
@@ -138,22 +138,22 @@ export function getMetadataTools(bridgeOptions) {
138
138
  required: ["item_id"],
139
139
  },
140
140
  handler: async (args) => {
141
- const script = buildToolScript(`
142
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
143
- if (!item) return __error("Item not found");
144
-
145
- var interp = item.getFootageInterpretation();
146
- if (!interp) return __error("No footage interpretation available");
147
-
148
- return __result({
149
- item: item.name,
150
- alphaUsage: interp.alphaUsage,
151
- fieldType: interp.fieldType,
152
- frameRate: interp.frameRate,
153
- ignoreAlpha: interp.ignoreAlpha,
154
- invertAlpha: interp.invertAlpha,
155
- pixelAspectRatio: interp.pixelAspectRatio
156
- });
141
+ const script = buildToolScript(`
142
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
143
+ if (!item) return __error("Item not found");
144
+
145
+ var interp = item.getFootageInterpretation();
146
+ if (!interp) return __error("No footage interpretation available");
147
+
148
+ return __result({
149
+ item: item.name,
150
+ alphaUsage: interp.alphaUsage,
151
+ fieldType: interp.fieldType,
152
+ frameRate: interp.frameRate,
153
+ ignoreAlpha: interp.ignoreAlpha,
154
+ invertAlpha: interp.invertAlpha,
155
+ pixelAspectRatio: interp.pixelAspectRatio
156
+ });
157
157
  `);
158
158
  return sendCommand(script, bridgeOptions);
159
159
  },
@@ -179,18 +179,18 @@ export function getMetadataTools(bridgeOptions) {
179
179
  required: ["item_id"],
180
180
  },
181
181
  handler: async (args) => {
182
- const script = buildToolScript(`
183
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
184
- if (!item) return __error("Item not found");
185
-
186
- var interp = item.getFootageInterpretation();
187
- if (!interp) return __error("No footage interpretation available");
188
-
189
- ${args.frame_rate !== undefined ? `interp.frameRate = ${args.frame_rate};` : ""}
190
- ${args.pixel_aspect_ratio !== undefined ? `interp.pixelAspectRatio = ${args.pixel_aspect_ratio};` : ""}
191
-
192
- item.setFootageInterpretation(interp);
193
- return __result({ updated: true, item: item.name });
182
+ const script = buildToolScript(`
183
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
184
+ if (!item) return __error("Item not found");
185
+
186
+ var interp = item.getFootageInterpretation();
187
+ if (!interp) return __error("No footage interpretation available");
188
+
189
+ ${args.frame_rate !== undefined ? `interp.frameRate = ${args.frame_rate};` : ""}
190
+ ${args.pixel_aspect_ratio !== undefined ? `interp.pixelAspectRatio = ${args.pixel_aspect_ratio};` : ""}
191
+
192
+ item.setFootageInterpretation(interp);
193
+ return __result({ updated: true, item: item.name });
194
194
  `);
195
195
  return sendCommand(script, bridgeOptions);
196
196
  },
@@ -208,12 +208,12 @@ export function getMetadataTools(bridgeOptions) {
208
208
  required: ["item_id"],
209
209
  },
210
210
  handler: async (args) => {
211
- const script = buildToolScript(`
212
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
213
- if (!item) return __error("Item not found");
214
-
215
- var xmp = item.getXMPMetadata();
216
- return __result({ item: item.name, xmpMetadata: xmp });
211
+ const script = buildToolScript(`
212
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
213
+ if (!item) return __error("Item not found");
214
+
215
+ var xmp = item.getXMPMetadata();
216
+ return __result({ item: item.name, xmpMetadata: xmp });
217
217
  `);
218
218
  return sendCommand(script, bridgeOptions);
219
219
  },
@@ -235,12 +235,12 @@ export function getMetadataTools(bridgeOptions) {
235
235
  required: ["item_id", "xmp_xml"],
236
236
  },
237
237
  handler: async (args) => {
238
- const script = buildToolScript(`
239
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
240
- if (!item) return __error("Item not found");
241
-
242
- item.setXMPMetadata("${escapeForExtendScript(args.xmp_xml)}");
243
- return __result({ updated: true, item: item.name });
238
+ const script = buildToolScript(`
239
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
240
+ if (!item) return __error("Item not found");
241
+
242
+ item.setXMPMetadata("${escapeForExtendScript(args.xmp_xml)}");
243
+ return __result({ updated: true, item: item.name });
244
244
  `);
245
245
  return sendCommand(script, bridgeOptions);
246
246
  },
@@ -258,17 +258,17 @@ export function getMetadataTools(bridgeOptions) {
258
258
  required: ["item_id"],
259
259
  },
260
260
  handler: async (args) => {
261
- const script = buildToolScript(`
262
- var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
263
- if (!item) return __error("Item not found");
264
-
265
- var info = { item: item.name };
266
- try { info.colorSpace = item.getColorSpace(); } catch(e) { info.colorSpace = "unknown"; }
267
- try { info.originalColorSpace = item.getOriginalColorSpace(); } catch(e) {}
268
- try { info.embeddedLUT = item.getEmbeddedLUTID(); } catch(e) {}
269
- try { info.inputLUT = item.getInputLUTID(); } catch(e) {}
270
-
271
- return __result(info);
261
+ const script = buildToolScript(`
262
+ var item = __findProjectItem("${escapeForExtendScript(args.item_id)}");
263
+ if (!item) return __error("Item not found");
264
+
265
+ var info = { item: item.name };
266
+ try { info.colorSpace = item.getColorSpace(); } catch(e) { info.colorSpace = "unknown"; }
267
+ try { info.originalColorSpace = item.getOriginalColorSpace(); } catch(e) {}
268
+ try { info.embeddedLUT = item.getEmbeddedLUTID(); } catch(e) {}
269
+ try { info.inputLUT = item.getInputLUTID(); } catch(e) {}
270
+
271
+ return __result(info);
272
272
  `);
273
273
  return sendCommand(script, bridgeOptions);
274
274
  },
@@ -20,11 +20,11 @@ export function getMulticamTools(bridgeOptions) {
20
20
  syncPoint: args.sync_point || "inPoint",
21
21
  };
22
22
  const paramsJson = JSON.stringify(JSON.stringify(params));
23
- const script = buildToolScript(`
24
- var result = createMulticamSequence(${paramsJson});
25
- var parsed = JSON.parse(result);
26
- if (!parsed.success) return __error(parsed.error);
27
- return __result(parsed.data);
23
+ const script = buildToolScript(`
24
+ var result = createMulticamSequence(${paramsJson});
25
+ var parsed = JSON.parse(result);
26
+ if (!parsed.success) return __error(parsed.error);
27
+ return __result(parsed.data);
28
28
  `);
29
29
  return sendCommand(script, bridgeOptions);
30
30
  },
@@ -41,11 +41,11 @@ export function getMulticamTools(bridgeOptions) {
41
41
  required: ["track_index", "time", "angle_index"],
42
42
  },
43
43
  handler: async (args) => {
44
- const script = buildToolScript(`
45
- var result = switchMulticamAngle(${args.track_index}, ${args.time}, ${args.angle_index});
46
- var parsed = JSON.parse(result);
47
- if (!parsed.success) return __error(parsed.error);
48
- return __result(parsed.data);
44
+ const script = buildToolScript(`
45
+ var result = switchMulticamAngle(${args.track_index}, ${args.time}, ${args.angle_index});
46
+ var parsed = JSON.parse(result);
47
+ if (!parsed.success) return __error(parsed.error);
48
+ return __result(parsed.data);
49
49
  `);
50
50
  return sendCommand(script, bridgeOptions);
51
51
  },
@@ -60,11 +60,11 @@ export function getMulticamTools(bridgeOptions) {
60
60
  required: ["sequence_index"],
61
61
  },
62
62
  handler: async (args) => {
63
- const script = buildToolScript(`
64
- var result = flattenMulticam(${args.sequence_index});
65
- var parsed = JSON.parse(result);
66
- if (!parsed.success) return __error(parsed.error);
67
- return __result(parsed.data);
63
+ const script = buildToolScript(`
64
+ var result = flattenMulticam(${args.sequence_index});
65
+ var parsed = JSON.parse(result);
66
+ if (!parsed.success) return __error(parsed.error);
67
+ return __result(parsed.data);
68
68
  `);
69
69
  return sendCommand(script, bridgeOptions);
70
70
  },
@@ -80,11 +80,11 @@ export function getMulticamTools(bridgeOptions) {
80
80
  required: ["track_index", "clip_index"],
81
81
  },
82
82
  handler: async (args) => {
83
- const script = buildToolScript(`
84
- var result = getMulticamAngles(${args.track_index}, ${args.clip_index});
85
- var parsed = JSON.parse(result);
86
- if (!parsed.success) return __error(parsed.error);
87
- return __result(parsed.data);
83
+ const script = buildToolScript(`
84
+ var result = getMulticamAngles(${args.track_index}, ${args.clip_index});
85
+ var parsed = JSON.parse(result);
86
+ if (!parsed.success) return __error(parsed.error);
87
+ return __result(parsed.data);
88
88
  `);
89
89
  return sendCommand(script, bridgeOptions);
90
90
  },
@@ -101,11 +101,11 @@ export function getMulticamTools(bridgeOptions) {
101
101
  },
102
102
  handler: async (args) => {
103
103
  const presetPathEsc = args.preset_path.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
104
- const script = buildToolScript(`
105
- var result = createProxy(${args.project_item_index}, "${presetPathEsc}");
106
- var parsed = JSON.parse(result);
107
- if (!parsed.success) return __error(parsed.error);
108
- return __result(parsed.data);
104
+ const script = buildToolScript(`
105
+ var result = createProxy(${args.project_item_index}, "${presetPathEsc}");
106
+ var parsed = JSON.parse(result);
107
+ if (!parsed.success) return __error(parsed.error);
108
+ return __result(parsed.data);
109
109
  `);
110
110
  return sendCommand(script, bridgeOptions);
111
111
  },
@@ -122,11 +122,11 @@ export function getMulticamTools(bridgeOptions) {
122
122
  },
123
123
  handler: async (args) => {
124
124
  const proxyPathEsc = args.proxy_path.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
125
- const script = buildToolScript(`
126
- var result = attachProxy(${args.project_item_index}, "${proxyPathEsc}");
127
- var parsed = JSON.parse(result);
128
- if (!parsed.success) return __error(parsed.error);
129
- return __result(parsed.data);
125
+ const script = buildToolScript(`
126
+ var result = attachProxy(${args.project_item_index}, "${proxyPathEsc}");
127
+ var parsed = JSON.parse(result);
128
+ if (!parsed.success) return __error(parsed.error);
129
+ return __result(parsed.data);
130
130
  `);
131
131
  return sendCommand(script, bridgeOptions);
132
132
  },
@@ -141,11 +141,11 @@ export function getMulticamTools(bridgeOptions) {
141
141
  required: ["project_item_index"],
142
142
  },
143
143
  handler: async (args) => {
144
- const script = buildToolScript(`
145
- var result = hasProxy(${args.project_item_index});
146
- var parsed = JSON.parse(result);
147
- if (!parsed.success) return __error(parsed.error);
148
- return __result(parsed.data);
144
+ const script = buildToolScript(`
145
+ var result = hasProxy(${args.project_item_index});
146
+ var parsed = JSON.parse(result);
147
+ if (!parsed.success) return __error(parsed.error);
148
+ return __result(parsed.data);
149
149
  `);
150
150
  return sendCommand(script, bridgeOptions);
151
151
  },
@@ -160,11 +160,11 @@ export function getMulticamTools(bridgeOptions) {
160
160
  required: ["project_item_index"],
161
161
  },
162
162
  handler: async (args) => {
163
- const script = buildToolScript(`
164
- var result = getProxyPath(${args.project_item_index});
165
- var parsed = JSON.parse(result);
166
- if (!parsed.success) return __error(parsed.error);
167
- return __result(parsed.data);
163
+ const script = buildToolScript(`
164
+ var result = getProxyPath(${args.project_item_index});
165
+ var parsed = JSON.parse(result);
166
+ if (!parsed.success) return __error(parsed.error);
167
+ return __result(parsed.data);
168
168
  `);
169
169
  return sendCommand(script, bridgeOptions);
170
170
  },
@@ -179,11 +179,11 @@ export function getMulticamTools(bridgeOptions) {
179
179
  required: ["enabled"],
180
180
  },
181
181
  handler: async (args) => {
182
- const script = buildToolScript(`
183
- var result = toggleProxies(${args.enabled});
184
- var parsed = JSON.parse(result);
185
- if (!parsed.success) return __error(parsed.error);
186
- return __result(parsed.data);
182
+ const script = buildToolScript(`
183
+ var result = toggleProxies(${args.enabled});
184
+ var parsed = JSON.parse(result);
185
+ if (!parsed.success) return __error(parsed.error);
186
+ return __result(parsed.data);
187
187
  `);
188
188
  return sendCommand(script, bridgeOptions);
189
189
  },
@@ -198,11 +198,11 @@ export function getMulticamTools(bridgeOptions) {
198
198
  required: ["project_item_index"],
199
199
  },
200
200
  handler: async (args) => {
201
- const script = buildToolScript(`
202
- var result = detachProxy(${args.project_item_index});
203
- var parsed = JSON.parse(result);
204
- if (!parsed.success) return __error(parsed.error);
205
- return __result(parsed.data);
201
+ const script = buildToolScript(`
202
+ var result = detachProxy(${args.project_item_index});
203
+ var parsed = JSON.parse(result);
204
+ if (!parsed.success) return __error(parsed.error);
205
+ return __result(parsed.data);
206
206
  `);
207
207
  return sendCommand(script, bridgeOptions);
208
208
  },
@@ -6,10 +6,10 @@ export function getPlaybackTools(bridgeOptions) {
6
6
  description: "Start playback of the active sequence timeline. Uses QE DOM.",
7
7
  parameters: {},
8
8
  handler: async () => {
9
- const script = buildToolScript(`
10
- app.enableQE();
11
- qe.startPlayback();
12
- return __result({ playing: true });
9
+ const script = buildToolScript(`
10
+ app.enableQE();
11
+ qe.startPlayback();
12
+ return __result({ playing: true });
13
13
  `);
14
14
  return sendCommand(script, bridgeOptions);
15
15
  },
@@ -18,10 +18,10 @@ export function getPlaybackTools(bridgeOptions) {
18
18
  description: "Stop playback of the active sequence timeline. Uses QE DOM.",
19
19
  parameters: {},
20
20
  handler: async () => {
21
- const script = buildToolScript(`
22
- app.enableQE();
23
- qe.stopPlayback();
24
- return __result({ stopped: true });
21
+ const script = buildToolScript(`
22
+ app.enableQE();
23
+ qe.stopPlayback();
24
+ return __result({ stopped: true });
25
25
  `);
26
26
  return sendCommand(script, bridgeOptions);
27
27
  },
@@ -39,9 +39,9 @@ export function getPlaybackTools(bridgeOptions) {
39
39
  },
40
40
  handler: async (args) => {
41
41
  const speed = args.speed ?? 1.0;
42
- const script = buildToolScript(`
43
- app.sourceMonitor.play(${speed});
44
- return __result({ playing: true, speed: ${speed} });
42
+ const script = buildToolScript(`
43
+ app.sourceMonitor.play(${speed});
44
+ return __result({ playing: true, speed: ${speed} });
45
45
  `);
46
46
  return sendCommand(script, bridgeOptions);
47
47
  },
@@ -50,10 +50,10 @@ export function getPlaybackTools(bridgeOptions) {
50
50
  description: "Get the current time indicator position in the Source Monitor",
51
51
  parameters: {},
52
52
  handler: async () => {
53
- const script = buildToolScript(`
54
- var pos = app.sourceMonitor.getPosition();
55
- if (!pos) return __error("No clip open in Source Monitor");
56
- return __result({ seconds: __ticksToSeconds(pos.ticks), ticks: pos.ticks });
53
+ const script = buildToolScript(`
54
+ var pos = app.sourceMonitor.getPosition();
55
+ if (!pos) return __error("No clip open in Source Monitor");
56
+ return __result({ seconds: __ticksToSeconds(pos.ticks), ticks: pos.ticks });
57
57
  `);
58
58
  return sendCommand(script, bridgeOptions);
59
59
  },