@remotion/studio-server 4.0.507 → 4.0.509

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 (76) hide show
  1. package/dist/canvas-capture/generate-canvas-capture-composition.d.ts +14 -0
  2. package/dist/canvas-capture/generate-canvas-capture-composition.js +174 -0
  3. package/dist/codemods/delete-jsx-node.d.ts +4 -0
  4. package/dist/codemods/delete-jsx-node.js +8 -0
  5. package/dist/codemods/duplicate-composition.js +8 -6
  6. package/dist/codemods/duplicate-jsx-node.d.ts +2 -0
  7. package/dist/codemods/duplicate-jsx-node.js +8 -0
  8. package/dist/codemods/get-node-path-remappings.d.ts +16 -0
  9. package/dist/codemods/get-node-path-remappings.js +88 -0
  10. package/dist/codemods/recast-mods.js +13 -0
  11. package/dist/codemods/reorder-sequence.d.ts +2 -1
  12. package/dist/codemods/reorder-sequence.js +8 -0
  13. package/dist/codemods/split-jsx-sequence.d.ts +2 -0
  14. package/dist/codemods/split-jsx-sequence.js +8 -0
  15. package/dist/codemods/update-keyframes/update-keyframes.js +17 -10
  16. package/dist/file-watcher.d.ts +11 -1
  17. package/dist/file-watcher.js +16 -5
  18. package/dist/helpers/coding-agent-registry.d.ts +0 -1
  19. package/dist/helpers/coding-agent-registry.js +1 -5
  20. package/dist/helpers/finder-artwork.d.ts +1 -0
  21. package/dist/helpers/finder-artwork.js +4 -0
  22. package/dist/helpers/resolve-composition-component.d.ts +4 -1
  23. package/dist/helpers/resolve-composition-component.js +63 -69
  24. package/dist/helpers/terminal-artwork.d.ts +6 -0
  25. package/dist/helpers/terminal-artwork.js +14 -0
  26. package/dist/helpers/terminal-registry.d.ts +36 -0
  27. package/dist/helpers/terminal-registry.js +401 -0
  28. package/dist/index.d.ts +8 -2
  29. package/dist/preview-server/api-routes.js +2 -0
  30. package/dist/preview-server/live-events.d.ts +1 -0
  31. package/dist/preview-server/live-events.js +3 -1
  32. package/dist/preview-server/routes/add-effect-keyframe.js +7 -1
  33. package/dist/preview-server/routes/add-effect.js +7 -1
  34. package/dist/preview-server/routes/add-keyframes.js +10 -2
  35. package/dist/preview-server/routes/add-sequence-keyframe.js +7 -1
  36. package/dist/preview-server/routes/app-icon.d.ts +6 -0
  37. package/dist/preview-server/routes/app-icon.js +66 -0
  38. package/dist/preview-server/routes/apply-codemod.js +34 -5
  39. package/dist/preview-server/routes/apply-visual-control-change.js +7 -1
  40. package/dist/preview-server/routes/batch-update-keyframe-settings.js +10 -2
  41. package/dist/preview-server/routes/can-update-sequence-props.d.ts +1 -0
  42. package/dist/preview-server/routes/can-update-sequence-props.js +5 -4
  43. package/dist/preview-server/routes/default-coding-agent.js +4 -2
  44. package/dist/preview-server/routes/delete-effect.js +7 -1
  45. package/dist/preview-server/routes/delete-jsx-node.js +16 -2
  46. package/dist/preview-server/routes/delete-keyframes.js +10 -2
  47. package/dist/preview-server/routes/duplicate-effect.js +7 -1
  48. package/dist/preview-server/routes/duplicate-jsx-node.js +17 -5
  49. package/dist/preview-server/routes/insert-element.js +23 -3
  50. package/dist/preview-server/routes/insert-jsx-element.js +23 -2
  51. package/dist/preview-server/routes/move-keyframes.js +10 -2
  52. package/dist/preview-server/routes/open-in-terminal.d.ts +3 -0
  53. package/dist/preview-server/routes/open-in-terminal.js +17 -0
  54. package/dist/preview-server/routes/paste-effects.js +7 -1
  55. package/dist/preview-server/routes/reorder-effect.js +7 -1
  56. package/dist/preview-server/routes/reorder-sequence.js +17 -2
  57. package/dist/preview-server/routes/save-effect-props.js +7 -1
  58. package/dist/preview-server/routes/save-multiple-effect-props.js +10 -2
  59. package/dist/preview-server/routes/save-sequence-props.js +29 -5
  60. package/dist/preview-server/routes/split-jsx-sequence.js +17 -6
  61. package/dist/preview-server/routes/update-config.js +6 -1
  62. package/dist/preview-server/routes/update-default-props.js +7 -1
  63. package/dist/preview-server/routes/update-effect-keyframe-settings.js +7 -1
  64. package/dist/preview-server/routes/update-sequence-keyframe-settings.js +7 -1
  65. package/dist/preview-server/sequence-node-path-mutation.d.ts +7 -0
  66. package/dist/preview-server/sequence-node-path-mutation.js +21 -0
  67. package/dist/preview-server/sequence-props-watchers.js +15 -6
  68. package/dist/preview-server/start-server.d.ts +1 -0
  69. package/dist/preview-server/start-server.js +1 -0
  70. package/dist/preview-server/undo-stack.d.ts +7 -13
  71. package/dist/preview-server/undo-stack.js +58 -5
  72. package/dist/routes.d.ts +2 -1
  73. package/dist/routes.js +12 -2
  74. package/dist/start-studio.d.ts +2 -1
  75. package/dist/start-studio.js +2 -1
  76. package/package.json +8 -8
@@ -101,7 +101,12 @@ const createFileWatcherRegistry = () => {
101
101
  return;
102
102
  }
103
103
  shared.lastKnownContent = content;
104
- event = { type: 'changed', content, originatorClientId: undefined };
104
+ event = {
105
+ type: 'changed',
106
+ content,
107
+ originatorClientId: undefined,
108
+ skipSequencePropsUpdate: false,
109
+ };
105
110
  }
106
111
  if (!event) {
107
112
  return;
@@ -123,7 +128,8 @@ const createFileWatcherRegistry = () => {
123
128
  },
124
129
  };
125
130
  };
126
- const _writeFileAndNotifyFileWatchers = (file, content, originatorClientId) => {
131
+ const _writeFileAndNotifyFileWatchers = ({ file, content, originatorClientId, metadata, }) => {
132
+ var _a;
127
133
  (0, node_fs_1.writeFileSync)(file, content);
128
134
  const shared = sharedWatchers.get(getRegistryKey(file, false));
129
135
  if (!shared) {
@@ -132,7 +138,12 @@ const createFileWatcherRegistry = () => {
132
138
  shared.lastKnownContent = content;
133
139
  shared.existedBefore = true;
134
140
  for (const subscriber of shared.subscribers) {
135
- subscriber({ type: 'changed', content, originatorClientId });
141
+ subscriber({
142
+ type: 'changed',
143
+ content,
144
+ originatorClientId,
145
+ skipSequencePropsUpdate: (_a = metadata === null || metadata === void 0 ? void 0 : metadata.skipSequencePropsUpdate) !== null && _a !== void 0 ? _a : false,
146
+ });
136
147
  }
137
148
  };
138
149
  return {
@@ -166,10 +177,10 @@ const installFileWatcher = (options) => {
166
177
  return (0, exports.getFileWatcherRegistry)().installFileWatcher(options);
167
178
  };
168
179
  exports.installFileWatcher = installFileWatcher;
169
- const writeFileAndNotifyFileWatchers = (file, content, originatorClientId) => {
180
+ const writeFileAndNotifyFileWatchers = (options) => {
170
181
  if (!currentRegistry) {
171
182
  return;
172
183
  }
173
- (0, exports.getFileWatcherRegistry)().writeFileAndNotifyFileWatchers(file, content, originatorClientId);
184
+ (0, exports.getFileWatcherRegistry)().writeFileAndNotifyFileWatchers(options);
174
185
  };
175
186
  exports.writeFileAndNotifyFileWatchers = writeFileAndNotifyFileWatchers;
@@ -4,7 +4,6 @@ export type InstalledCodingAgent = {
4
4
  name: string;
5
5
  nameWithType: string;
6
6
  applicationPath: string;
7
- iconDataUrl: string | null;
8
7
  platform: SupportedCodingAgentPlatform;
9
8
  launchMode: 'direct' | 'terminal';
10
9
  terminal: InstalledTerminal | null;
@@ -184,7 +184,6 @@ const findMacApplications = async (bundleIdentifier) => {
184
184
  return [];
185
185
  }
186
186
  };
187
- const getBundledCodingAgentIconDataUrl = (id) => `data:image/png;base64,${(0, node_fs_1.readFileSync)(node_path_1.default.join(__dirname, '..', '..', 'web', 'coding-agent-icons', `${id}.png`)).toString('base64')}`;
188
187
  const defaultDiscoveryContext = {
189
188
  platform: process.platform,
190
189
  env: process.env,
@@ -294,10 +293,7 @@ const discoverAvailableCodingAgents = async (context) => {
294
293
  }
295
294
  }
296
295
  }
297
- return installedCodingAgents.map((codingAgent) => ({
298
- ...codingAgent,
299
- iconDataUrl: getBundledCodingAgentIconDataUrl(codingAgent.id),
300
- }));
296
+ return installedCodingAgents;
301
297
  };
302
298
  exports.discoverAvailableCodingAgents = discoverAvailableCodingAgents;
303
299
  let availableCodingAgents = null;
@@ -0,0 +1 @@
1
+ export declare const finderArtworkDataUrl = "data:image/png;base64,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";
@@ -0,0 +1,4 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.finderArtworkDataUrl = void 0;
4
+ exports.finderArtworkDataUrl = 'data:image/png;base64,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';
@@ -1,4 +1,5 @@
1
- import { type InsertableCompositionElement, type InsertableCompositionElementPosition } from '@remotion/studio-shared';
1
+ import { type InsertableCompositionElement, type InsertableCompositionElementPosition, type SequenceNodePathRemapping } from '@remotion/studio-shared';
2
+ import type { SequenceNodePath } from 'remotion';
2
3
  export type ResolvedCompositionComponent = {
3
4
  source: string;
4
5
  line: number;
@@ -43,4 +44,6 @@ export declare const insertJsxElementIntoComposition: ({ remotionRoot, compositi
43
44
  output: string;
44
45
  formatted: boolean;
45
46
  logLine: number;
47
+ nodePathRemappings: SequenceNodePathRemapping[];
48
+ insertedNodePath: SequenceNodePath | null;
46
49
  }>;
@@ -39,11 +39,11 @@ Object.defineProperty(exports, "__esModule", { value: true });
39
39
  exports.insertJsxElementIntoComposition = exports.resolveCompositionComponent = exports.resolveCompositionComponentWithFile = void 0;
40
40
  const node_fs_1 = __importDefault(require("node:fs"));
41
41
  const node_path_1 = __importDefault(require("node:path"));
42
- const studio_codemods_1 = require("@remotion/studio-codemods");
43
42
  const studio_shared_1 = require("@remotion/studio-shared");
44
43
  const recast = __importStar(require("recast"));
45
44
  const no_react_1 = require("remotion/no-react");
46
45
  const format_file_content_1 = require("../codemods/format-file-content");
46
+ const get_node_path_remappings_1 = require("../codemods/get-node-path-remappings");
47
47
  const parse_ast_1 = require("../codemods/parse-ast");
48
48
  const strip_parenthesized_extra_1 = require("../codemods/strip-parenthesized-extra");
49
49
  const update_nested_prop_1 = require("../codemods/update-nested-prop");
@@ -1130,14 +1130,14 @@ const addElementToComponentRoot = ({ ast, exportName, element, }) => {
1130
1130
  CANVAS_ROOT_ELEMENTS.includes(rootNode.openingElement.name.name)) {
1131
1131
  throw new Error(`Cannot insert a JSX element into a composition whose root element is <${rootNode.openingElement.name.name}>`);
1132
1132
  }
1133
- if (rootNode.type === 'JSXElement' && rootNode.openingElement.selfClosing) {
1134
- const fragment = recast.types.builders.jsxFragment(recast.types.builders.jsxOpeningFragment(), recast.types.builders.jsxClosingFragment(), [
1135
- createSequenceWithChild({
1133
+ if (rootNode.type === 'JSXElement') {
1134
+ const existingRoot = rootNode.openingElement.selfClosing
1135
+ ? createSequenceWithChild({
1136
1136
  child: (0, strip_parenthesized_extra_1.stripParenthesizedExtra)(rootNode),
1137
1137
  sequenceLocalName: ensureSequenceImport(ast),
1138
- }),
1139
- element,
1140
- ]);
1138
+ })
1139
+ : (0, strip_parenthesized_extra_1.stripParenthesizedExtra)(rootNode);
1140
+ const fragment = recast.types.builders.jsxFragment(recast.types.builders.jsxOpeningFragment(), recast.types.builders.jsxClosingFragment(), [existingRoot, element]);
1141
1141
  let replaced = false;
1142
1142
  recast.types.visit(ast, {
1143
1143
  visitJSXElement(astPath) {
@@ -1427,7 +1427,7 @@ const createInsertableJsxElement = ({ addPositionStyleToComponent, ast, destinat
1427
1427
  throw new Error('Unsupported element type');
1428
1428
  };
1429
1429
  const insertJsxElementIntoComposition = async ({ remotionRoot, compositionFile, compositionId, element, from, prettierConfigOverride, wrapInSequence = null, }) => {
1430
- var _a;
1430
+ var _a, _b;
1431
1431
  const location = await (0, exports.resolveCompositionComponentWithFile)({
1432
1432
  remotionRoot,
1433
1433
  compositionFile,
@@ -1440,82 +1440,76 @@ const insertJsxElementIntoComposition = async ({ remotionRoot, compositionFile,
1440
1440
  remotionRoot,
1441
1441
  fileName: location.fileName,
1442
1442
  });
1443
- let finalFile;
1444
- let logLine;
1445
- if (element.type === 'solid' && from === null && wrapInSequence === null) {
1446
- const inserted = (0, studio_codemods_1.insertSolidIntoSource)({
1447
- exportName: location.exportName,
1448
- height: element.height,
1443
+ const ast = (0, parse_ast_1.parseAst)(input);
1444
+ const capturedNodePaths = (0, get_node_path_remappings_1.captureJsxNodePaths)(ast);
1445
+ if (element.type === 'composition' &&
1446
+ element.compositionId === compositionId) {
1447
+ throw new Error('Cannot insert a composition into itself');
1448
+ }
1449
+ const sequenceWrapper = element.type === 'composition'
1450
+ ? {
1451
+ dimensions: { width: element.width, height: element.height },
1452
+ durationInFrames: element.durationInFrames,
1453
+ name: element.compositionId,
1449
1454
  position: element.position,
1450
- source: input,
1451
- width: element.width,
1452
- });
1453
- finalFile = inserted.output;
1454
- logLine = inserted.line;
1455
- }
1456
- else {
1457
- const ast = (0, parse_ast_1.parseAst)(input);
1458
- if (element.type === 'composition' &&
1459
- element.compositionId === compositionId) {
1460
- throw new Error('Cannot insert a composition into itself');
1455
+ from,
1461
1456
  }
1462
- const sequenceWrapper = element.type === 'composition'
1463
- ? {
1464
- dimensions: { width: element.width, height: element.height },
1465
- durationInFrames: element.durationInFrames,
1466
- name: element.compositionId,
1457
+ : from === null ||
1458
+ element.type === 'asset' ||
1459
+ element.type === 'svg' ||
1460
+ element.type === 'component'
1461
+ ? wrapInSequence
1462
+ : {
1463
+ dimensions: null,
1464
+ durationInFrames: null,
1465
+ name: null,
1467
1466
  position: element.position,
1468
1467
  from,
1469
- }
1470
- : from === null ||
1471
- element.type === 'asset' ||
1472
- element.type === 'svg' ||
1473
- element.type === 'component'
1474
- ? wrapInSequence
1475
- : {
1476
- dimensions: null,
1477
- durationInFrames: null,
1478
- name: null,
1479
- position: element.position,
1480
- from,
1481
- };
1482
- const elementToInsert = await createInsertableJsxElement({
1483
- addPositionStyleToComponent: sequenceWrapper === null,
1484
- ast,
1485
- destinationFileName: location.fileName,
1486
- element,
1487
- from,
1488
- remotionRoot,
1489
- });
1490
- const finalElementToInsert = sequenceWrapper
1491
- ? createSequenceWrappedElement({
1492
- child: elementToInsert,
1493
- dimensions: sequenceWrapper.dimensions,
1494
- durationInFrames: (_a = sequenceWrapper.durationInFrames) !== null && _a !== void 0 ? _a : null,
1495
- from: sequenceWrapper.from,
1496
- name: sequenceWrapper.name,
1497
- position: sequenceWrapper.position,
1498
- sequenceLocalName: ensureSequenceImport(ast),
1499
- })
1500
- : elementToInsert;
1501
- logLine = addElementToComponentRoot({
1502
- ast,
1503
- exportName: location.exportName,
1504
- element: finalElementToInsert,
1505
- });
1506
- finalFile = (0, parse_ast_1.serializeAst)(ast);
1507
- }
1468
+ };
1469
+ const elementToInsert = await createInsertableJsxElement({
1470
+ addPositionStyleToComponent: sequenceWrapper === null,
1471
+ ast,
1472
+ destinationFileName: location.fileName,
1473
+ element,
1474
+ from,
1475
+ remotionRoot,
1476
+ });
1477
+ const finalElementToInsert = sequenceWrapper
1478
+ ? createSequenceWrappedElement({
1479
+ child: elementToInsert,
1480
+ dimensions: sequenceWrapper.dimensions,
1481
+ durationInFrames: (_a = sequenceWrapper.durationInFrames) !== null && _a !== void 0 ? _a : null,
1482
+ from: sequenceWrapper.from,
1483
+ name: sequenceWrapper.name,
1484
+ position: sequenceWrapper.position,
1485
+ sequenceLocalName: ensureSequenceImport(ast),
1486
+ })
1487
+ : elementToInsert;
1488
+ const logLine = addElementToComponentRoot({
1489
+ ast,
1490
+ exportName: location.exportName,
1491
+ element: finalElementToInsert,
1492
+ });
1493
+ const finalFile = (0, parse_ast_1.serializeAst)(ast);
1508
1494
  const { output, formatted } = await (0, format_file_content_1.formatFileContent)({
1509
1495
  input: finalFile,
1510
1496
  prettierConfigOverride,
1511
1497
  });
1498
+ const { finalNodePathByNode, nodePathRemappings } = (0, get_node_path_remappings_1.getNodePathRemappings)({
1499
+ ast,
1500
+ captured: capturedNodePaths,
1501
+ output,
1502
+ });
1503
+ const insertedNodePath = (_b = finalNodePathByNode.get(finalElementToInsert.openingElement)) !== null && _b !== void 0 ? _b : null;
1512
1504
  return {
1513
1505
  fileName: location.fileName,
1514
1506
  source: location.source,
1515
1507
  oldContents: input,
1516
1508
  output,
1517
1509
  formatted,
1510
+ insertedNodePath,
1518
1511
  logLine,
1512
+ nodePathRemappings,
1519
1513
  };
1520
1514
  };
1521
1515
  exports.insertJsxElementIntoComposition = insertJsxElementIntoComposition;
@@ -0,0 +1,6 @@
1
+ export declare const terminalArtworkDataUrls: {
2
+ readonly ghostty: "data:image/png;base64,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";
3
+ readonly iterm2: "data:image/png;base64,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";
4
+ readonly 'windows-terminal': "data:image/png;base64,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";
5
+ readonly terminal: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAYAAABV7bNHAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAeGVYSWZNTQAqAAAACAAEARoABQAAAAEAAAA+ARsABQAAAAEAAABGASgAAwAAAAEAAgAAh2kABAAAAAEAAABOAAAAAAAAAJAAAAABAAAAkAAAAAEAA6ABAAMAAAABAAEAAKACAAQAAAABAAAASKADAAQAAAABAAAASAAAAABCvP5OAAAACXBIWXMAABYlAAAWJQFJUiTwAAACnGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgICAgICAgICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iPgogICAgICAgICA8dGlmZjpYUmVzb2x1dGlvbj4xNDQ8L3RpZmY6WFJlc29sdXRpb24+CiAgICAgICAgIDx0aWZmOllSZXNvbHV0aW9uPjE0NDwvdGlmZjpZUmVzb2x1dGlvbj4KICAgICAgICAgPHRpZmY6UmVzb2x1dGlvblVuaXQ+MjwvdGlmZjpSZXNvbHV0aW9uVW5pdD4KICAgICAgICAgPGV4aWY6UGl4ZWxZRGltZW5zaW9uPjI1NjwvZXhpZjpQaXhlbFlEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWERpbWVuc2lvbj4yNTY8L2V4aWY6UGl4ZWxYRGltZW5zaW9uPgogICAgICAgICA8ZXhpZjpDb2xvclNwYWNlPjE8L2V4aWY6Q29sb3JTcGFjZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+Cun+yXEAAAyESURBVHgB7VtdbFzFFT53d+1d2/ES78Y2dkLStAmYhIBFKH/GQAlKEBQaaINUEQnxwFMfKBIPSK0qXlAQVDxEVFErRU0JitK0IQ3NTynlrwpqQ0lIbAdITOM6MfY6Meu/tdfev9vvm/Us67V31vEma2P5JON7d2buzJlvzpxzZu65IvM0j8A8AvMIzCMwj8A8AnMUASvfcR06fryyotR/rRQ7VhU7XRW2iE8sKXdYTrdliSOREHFYVpFt2y6xLBSTkGlZLgv5vDWSQ8RO2FH8jaGlZFXbxqNWLGHbUQeyEokE2rVGEnYihAEFUb83Ycc+7+kJtD50660BY/s5CqcN0Eet59YvKFvwpOWQexwO5+LSsjJxOp3gU/0f3+20exnfzIRfY3DrfPUTf+KYlfDQEICLdyXiiSMj4fAfbvveksOol2s6dFOp6yWz/s6x5uv9VVdvcRW5flR+1VUSHh6WQMd5CXR+JV9fuCCDA/0SGRmVWDwqkBp0ZEkiHhfMLu6+6Q6zzgGo8hQ3k97YgglAGpMe1LHxz4GZcTiTeWzX6XKJ2+2RBV6v+KuqpLp2sdQsWSKlZQtkaHBQIpHI4WB34Pn7165pmrSby5H57snPHz7R2RP4cjBiHz9/wf71735v33P/etvvX2RDdojGrEjkxefz2w333me/9Jvf2p+0B2zyfLIrePGDpi82XQ4sJrTx9rEWghM60xe2933wkX1bQ2MKDMiFjblUIJG5mU7khTzpCVt72x32nnc+tMn7yc6vw/84eeonEwaYT8auv723+lh7oPt0cMje+dZh++qaWtX5ZECQuZlMk/FEoCp8PnvrjjfsLzCGY+3dwd3v/vPmqWCC9sy0adOm4g2PPb69wuevb/n0uPz8qc0SCHRJ+oNEi9rFBT1QXFQkxcXFUoSk7/n7iiX0V8SEvmkkYN1o1ZT4aI2HCZPhcFj+/eH78v07G2Tp8u+WoP7KRKh/z4kTJ2Ads5NuI2uNve999NDyFSv+GotFrZ/9dJP85+i/UuAQGJhw8S5cKOXl5QoUMqhT1kavQAENgk7RSEQGoZgH+vsVWHqQNAn1N98i2/64VzwlpdL2Zevjj917559M7BBcEzl9lf6nYMKt9w4fnAAOZ672mmuksroaHZYoS0NwSJrZQl3ZJ/umtSMv5KkWVow8ciJJlPoTxz+Rt//yppSgjr9y0ZPIcrEsGxkBeuaFFxZjadw1FBqUA3t2j2uDjFTX1Ehpaaky4yMjI2NmfVy1GfmhJgXLjLyRx3QXgQwdevPPEhoYEJez6I5fvvzyMhOTRoBWrb6pzuV0VXfBz/ms6UTKi+GMeOEDlYCBWCwmlZWV8sgjjyhGRkdHTf0VtIy6iDySVy1FlO8vWpqk49z/oBeLfCuuW7XaxJQRIH9FRZ3HUyLdnZ3S39enHX2ldxZA50Bk1Bqn/tm6davs3LlT7r77bolGoyqZOi5YGXgkf3rpc8DUT4GODnF7POIt915n4sUIkGU5fVQpX1+8IHHlFSebcsBa0EJRlCm+3d3dsnfvXlm7dq28/vrrsm3bNlmzZo1w2VHCZpLIIy2q2gaNMUJp6rnQjQmmkXH4TPyZAALotpf7QOogTWzcRXM65voToFAoJM8995xs3LhR9u3bJ+vXr1fXF198UZYuXaqkTD8/E1daWrogepmRB44pYcc5DgKkDd0E9nIAZHltNDKC/VY6ERwtsswnSPRzWlpa5Nlnn5UNGzbIgQMHZPPmzfLaa6+p2eNMzhjRunEppBE2sDglwP7QYS1ENnEYX2GsbjaAWBkel+WmootFxy8TgpMOENsiAKxLs1oNE1tRUaG64HqfaVK8ZgAUjUQVv9hDe8BfNhyMPgBQsItxXAA9guOYNMqEmsCQiXXr1snTTz8tt99+u/TDSXvllVdk9+7dEsduPtPUpjVXkNvMCY3HY3BPeMIgRWAgc0gpnkxOEh6yIUHxCQABjVQDBGchPOlXX31VGhsblfXasWOHbN++Xdrb23EE4Z5xcFLMpt3YEB2OLRGPfTOYtHJ9awQIyyYpQRlLTD/MKwFatGiRNDQ0KL1DC0ZdRKVIb3W2Ek4dlQTF1ZlUdi5NAEGJxS0ko4fMpRMMBuWJJ56Qo0ePqp488C8mIy41E7GtzKVgqp9PGXUmx8ZlZiIjQHE8zNNAimM24qB6e3sVOFTQ2YgDr62tVZKVrc4FnEji5K8gIKkllmNs5NMIkI0GKIK5TDQHbwKHz1MX7dq1S5ZgA5mN6Ec1NTUZ28r27KXmkyc1thxSbQSI58jUMVyv+RKXF30jny+749rH7QwkshCkdBDGxjGayAjQVJaYqXFdRgnjlmPLli1GaaSUpW8J9PNX4qqXGMdoIiNAXGKJWO4lZuogvSyb8k6vU6h7LjE1thxLzCjP2legSz7XiGOiH2QyQByzESDqjWQj+eug2QawkiAAlNP1MDGuXvgBpDkrQRSAfJYY3n0DYVixHJreBPJsLeOYlBHCGE1kXGJaggjUXCOOSY/PNDYjQDwLSiRiRtNsanw2lyV1EMeWY/tjGkQ8mtzQXQ5H0dTPTJSlNqsYo4mmIEG5TaGpg9lalnJhGHpkIDNA2OoqLT8HdZDyg5QVy0OCotFYNJefYAB/VhepzWq+Zl4paTTCxuYapSQoHyWtzKDazc/BrQbNPMeWY7Nq0kHYqyZiSgdlP9P+1gqWMvNYHYxnNJEJICKMMyX6CXN1ifGsKw+Ako4inMU5uNVQnjScYL5dNZFZgrA+acXmpKOISefqyHVgZgII+mtsJ59pxTJ/m6ZgtpZdBiUNDR+PEOW094RquN9GjTTRVUnGMmKvaXSlTRLEc+QID8wyEWJnEzucraKSjBsAw+MY5Dm5WmKxxAgKxhem1TQBZMei0UH6CnxLmk7U/N8mgAhO5pGNy+VUp6WQgf7pAEREcaYdHyTKboS2aOKLbOTnNI+6/my4Ehy+VUl/Cc9wHY4tEo32gsestt4oQdHR0X42zGBIZ5oiGmu4IG9A8wWYS4lhwel7Sg66DB/fMC8WiWiAJl1mJoCsvmCwlWF0jPErRSCCboEzEmLcTxpo+Q7kij0PHhmjpFUCx+DB+zcGdo5ibAN9ff9FVrpwjWPFCNDp06dbIUU9bKx28eKUHLI1BmnzS59CvQkdx/UUf5A38kheNQJcSzWIEWDIDiJy+86cOXMaWVlxyFpAHhCt0TE8PPwxFdqN9fXMShGVd3dXl6BcxStSlGcLkReGCZI38khe0+nG+pvw/t8lI+HhY0eOHGlPL8u8NwFEaQx/1dGxB6Jo19XVyXcQkKkdc8LBcN/O8+flIqJcGfNHRrQoKybJaIESB8a+yQN5IU+dCPUlj3rqyPtSBE+sWn2DWl5dnV17kMUAzPEIIkPTePutc5NXpXL279//95qamiM+v6/xgQcflF1vvCEDiGplWD87JlN9CH/pR6I7oD4owewpYNjOlZYs9K8YHQNHKV4YFuaRPw0OEfDAcq1/4AEV2NUbDH588ODBQ8hmVdUErhMo/aOdCYXIsDEDMWj8c4imfxggeRhV33b2rIzAMmjxSzGB2aMLQMung8kLdkWf6e6H5omDouSUQDE/jK8BVl67EvHb4VBzU/Mzzc3Nn6GInvS0AcKzYp09e7YbwU89Xm/5uqqqKteyZcuk5+JF6cX3DpkzpWdtpq5kmES+KDW8clltfHSjrFi5kiY/1na27ReI596PInrRWmvgdiLlkiA+odA9depUa1VVdcDr9TZU+CrcddfXySK/X/kYI6PJiHrNEB+YycTJYSTJEljexsa75Af33Yc4ykpIzmgIk/0rRN7uRJUhJOM+DOWpJcp7E6k+UaEMkaz33Fxf/zy+1biFUWUMmevv75MBSFMoNATTOQYWgq5yHUaZOryUMlosHU3v9riVE4iJlKtgyt3FbsG7B/htoU+bmptfeh+EtkNIxj2Y7p8DnyqxrhupBBuPqx969NEf1tbU/Lik1LMGTJQm92uokvw/1ualND9VNiarp4Q8KerqNrm1iESi+NAw3BLo7nzzrbcOHsBkduLpMBI/SUo+NFlzaXmXOgLWp+VjGCvBqsBHKyuhk24oLy9bVlzkXl7sLi7BJ1Sw7ygtJGG4sXjMjoxGwthfteH7kXNtbW2ISG5pBRtBJIJCqeFnA1MCB/WmPQwNFHexDG2lLuNV3+N22m3z2emQHjSVLnULk76P4P6SgEF9RfnOM59nosXXSbepr6qjAvzRAPFKe6ETf+uyArAx38U8AvMIzCMwj0DBEPg/NOBvz6Go83kAAAAASUVORK5CYII=";
6
+ };
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.terminalArtworkDataUrls = void 0;
4
+ // Terminal.app and Ghostty.app artwork extracted from installed macOS applications.
5
+ // iTerm2 artwork sourced from the official release icon:
6
+ // https://github.com/gnachman/iTerm2/blob/3ec57866cd9bcf932f2675f7ca47183793a37b79/images/AppIcon/release.png
7
+ // Windows Terminal artwork sourced from Microsoft's official repository:
8
+ // https://github.com/microsoft/terminal/blob/b888cb7e4c3b0b21b7ed66c224bcdf7fa9ef6d9a/res/terminal/Terminal.svg
9
+ exports.terminalArtworkDataUrls = {
10
+ ghostty: 'data:image/png;base64,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',
11
+ iterm2: 'data:image/png;base64,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',
12
+ 'windows-terminal': 'data:image/png;base64,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',
13
+ terminal: 'data:image/png;base64,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',
14
+ };
@@ -0,0 +1,36 @@
1
+ import type { TerminalId } from '@remotion/studio-shared';
2
+ type SupportedTerminalPlatform = 'darwin' | 'linux' | 'win32';
3
+ export type InstalledTerminal = {
4
+ id: TerminalId;
5
+ name: string;
6
+ applicationPath: string;
7
+ platform: SupportedTerminalPlatform;
8
+ };
9
+ export type TerminalDiscoveryContext = {
10
+ platform: NodeJS.Platform;
11
+ env: NodeJS.ProcessEnv;
12
+ homeDirectory: string;
13
+ pathExists: (filePath: string) => boolean;
14
+ findMacApplications: (bundleIdentifier: string) => Promise<readonly string[]>;
15
+ };
16
+ export declare const discoverAvailableTerminals: (context: TerminalDiscoveryContext) => Promise<readonly InstalledTerminal[]>;
17
+ export declare const getAvailableTerminals: () => Promise<readonly InstalledTerminal[]>;
18
+ type TerminalLaunchInstruction = {
19
+ type: 'command';
20
+ command: string;
21
+ args: string[];
22
+ cwd: string;
23
+ } | {
24
+ type: 'url';
25
+ url: string;
26
+ };
27
+ export declare const getTerminalLaunchInstruction: ({ terminal, directory, }: {
28
+ terminal: InstalledTerminal;
29
+ directory: string;
30
+ }) => TerminalLaunchInstruction;
31
+ export declare const launchTerminal: ({ terminal, directory, allowedDirectory, }: {
32
+ terminal: InstalledTerminal;
33
+ directory: string;
34
+ allowedDirectory: string;
35
+ }) => Promise<void>;
36
+ export {};