mulmocast 0.0.2 → 0.0.4

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 (80) hide show
  1. package/README.md +27 -9
  2. package/assets/font/NotoSansJP-Regular.ttf +0 -0
  3. package/assets/html/chart.html +1 -10
  4. package/assets/html/mermaid.html +1 -13
  5. package/assets/templates/business.json +16 -27
  6. package/assets/templates/coding.json +58 -21
  7. package/lib/actions/audio.d.ts +1 -1
  8. package/lib/actions/audio.js +43 -27
  9. package/lib/actions/images.js +20 -26
  10. package/lib/actions/index.d.ts +5 -0
  11. package/lib/actions/index.js +5 -0
  12. package/lib/actions/movie.d.ts +9 -1
  13. package/lib/actions/movie.js +97 -38
  14. package/lib/actions/pdf.d.ts +2 -0
  15. package/lib/actions/pdf.js +211 -0
  16. package/lib/actions/translate.js +22 -9
  17. package/lib/agents/combine_audio_files_agent.js +13 -22
  18. package/lib/cli/args.d.ts +3 -1
  19. package/lib/cli/args.js +49 -34
  20. package/lib/cli/cli.d.ts +15 -0
  21. package/lib/cli/cli.js +44 -47
  22. package/lib/cli/run.d.ts +1 -0
  23. package/lib/cli/run.js +2 -0
  24. package/lib/cli/tool-args.d.ts +2 -0
  25. package/lib/cli/tool-args.js +12 -2
  26. package/lib/cli/tool-cli.js +6 -4
  27. package/lib/methods/index.d.ts +1 -0
  28. package/lib/methods/index.js +1 -0
  29. package/lib/methods/mulmo_media_source.d.ts +4 -0
  30. package/lib/methods/mulmo_media_source.js +21 -0
  31. package/lib/methods/mulmo_script.d.ts +2 -6
  32. package/lib/methods/mulmo_script.js +12 -5
  33. package/lib/tools/create_mulmo_script_interactively.d.ts +1 -1
  34. package/lib/tools/create_mulmo_script_interactively.js +61 -20
  35. package/lib/types/index.d.ts +1 -0
  36. package/lib/types/index.js +1 -0
  37. package/lib/types/schema.d.ts +3626 -3162
  38. package/lib/types/schema.js +75 -41
  39. package/lib/types/type.d.ts +28 -1
  40. package/lib/utils/const.d.ts +2 -0
  41. package/lib/utils/const.js +2 -0
  42. package/lib/utils/file.d.ts +4 -1
  43. package/lib/utils/file.js +15 -1
  44. package/lib/utils/filters.js +1 -1
  45. package/lib/utils/image_plugins/chart.d.ts +3 -0
  46. package/lib/utils/image_plugins/chart.js +18 -0
  47. package/lib/utils/image_plugins/image.d.ts +2 -0
  48. package/lib/utils/image_plugins/image.js +3 -0
  49. package/lib/utils/image_plugins/index.d.ts +7 -0
  50. package/lib/utils/image_plugins/index.js +7 -0
  51. package/lib/utils/image_plugins/markdown.d.ts +3 -0
  52. package/lib/utils/image_plugins/markdown.js +11 -0
  53. package/lib/utils/image_plugins/mermaid.d.ts +3 -0
  54. package/lib/utils/image_plugins/mermaid.js +21 -0
  55. package/lib/utils/image_plugins/movie.d.ts +2 -0
  56. package/lib/utils/image_plugins/movie.js +3 -0
  57. package/lib/utils/image_plugins/source.d.ts +4 -0
  58. package/lib/utils/image_plugins/source.js +15 -0
  59. package/lib/utils/image_plugins/text_slide.d.ts +3 -0
  60. package/lib/utils/image_plugins/text_slide.js +12 -0
  61. package/lib/utils/image_plugins/type_guards.d.ts +6 -0
  62. package/lib/utils/image_plugins/type_guards.js +21 -0
  63. package/lib/utils/markdown.js +4 -1
  64. package/lib/utils/pdf.d.ts +8 -0
  65. package/lib/utils/pdf.js +75 -0
  66. package/lib/utils/preprocess.d.ts +58 -128
  67. package/lib/utils/preprocess.js +37 -37
  68. package/lib/utils/utils.d.ts +12 -0
  69. package/lib/utils/utils.js +34 -0
  70. package/package.json +21 -12
  71. package/lib/tools/seed.d.ts +0 -3
  72. package/lib/tools/seed.js +0 -201
  73. package/lib/tools/seed_from_url.d.ts +0 -3
  74. package/lib/tools/seed_from_url.js +0 -178
  75. package/lib/tools/seed_from_url2.d.ts +0 -3
  76. package/lib/tools/seed_from_url2.js +0 -154
  77. package/lib/utils/image_preprocess.d.ts +0 -14
  78. package/lib/utils/image_preprocess.js +0 -52
  79. package/lib/utils/text_hash.d.ts +0 -1
  80. package/lib/utils/text_hash.js +0 -4
@@ -1,110 +1,7 @@
1
- import { MulmoScript } from "../types/index.js";
2
- export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileName: string, files: {
3
- outDirPath: string;
4
- }) => {
1
+ import { MulmoStudio, MulmoScript } from "../types/index.js";
2
+ export declare const createOrUpdateStudioData: (_mulmoScript: MulmoScript, currentStudio: MulmoStudio | undefined, fileName: string) => {
5
3
  beats: {
6
- text: string;
7
- speaker: string;
8
4
  duration?: number | undefined;
9
- speechOptions?: {
10
- speed?: number | undefined;
11
- instruction?: string | undefined;
12
- } | undefined;
13
- image?: {
14
- type: "markdown";
15
- markdown: string | string[];
16
- } | {
17
- type: "web";
18
- url: string;
19
- } | {
20
- type: "pdf";
21
- source: {
22
- url: string;
23
- kind: "url";
24
- } | {
25
- kind: "data";
26
- data: string;
27
- } | {
28
- path: string;
29
- kind: "path";
30
- };
31
- } | {
32
- type: "image";
33
- source: {
34
- url: string;
35
- kind: "url";
36
- } | {
37
- kind: "data";
38
- data: string;
39
- } | {
40
- path: string;
41
- kind: "path";
42
- };
43
- } | {
44
- type: "svg";
45
- source: {
46
- url: string;
47
- kind: "url";
48
- } | {
49
- kind: "data";
50
- data: string;
51
- } | {
52
- path: string;
53
- kind: "path";
54
- };
55
- } | {
56
- type: "movie";
57
- source: {
58
- url: string;
59
- kind: "url";
60
- } | {
61
- kind: "data";
62
- data: string;
63
- } | {
64
- path: string;
65
- kind: "path";
66
- };
67
- } | {
68
- type: "textSlide";
69
- slide: {
70
- title: string;
71
- bullets: string[];
72
- };
73
- } | {
74
- type: "chart";
75
- title: string;
76
- chartData: Record<string, any>;
77
- } | {
78
- code: string;
79
- type: "mermaid";
80
- title: string;
81
- } | undefined;
82
- audio?: {
83
- type: "audio";
84
- source: {
85
- url: string;
86
- kind: "url";
87
- } | {
88
- kind: "data";
89
- data: string;
90
- } | {
91
- path: string;
92
- kind: "path";
93
- };
94
- } | {
95
- type: "midi";
96
- source: string;
97
- } | undefined;
98
- imageParams?: {
99
- model?: string | undefined;
100
- size?: string | undefined;
101
- style?: string | undefined;
102
- moderation?: string | undefined;
103
- } | undefined;
104
- textSlideParams?: {
105
- cssStyles: string[];
106
- } | undefined;
107
- imagePrompt?: string | undefined;
108
5
  multiLingualTexts?: Record<string, {
109
6
  text: string;
110
7
  lang: string;
@@ -117,7 +14,6 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
117
14
  imageFile?: string | undefined;
118
15
  }[];
119
16
  script: {
120
- title: string;
121
17
  $mulmocast: {
122
18
  version: "1.0";
123
19
  credit?: "closing" | undefined;
@@ -126,6 +22,17 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
126
22
  width: number;
127
23
  height: number;
128
24
  };
25
+ speechParams: {
26
+ provider: "openai" | "nijivoice";
27
+ speakers: Record<string, {
28
+ voiceId: string;
29
+ displayName?: Record<string, string> | undefined;
30
+ speechOptions?: {
31
+ speed?: number | undefined;
32
+ instruction?: string | undefined;
33
+ } | undefined;
34
+ }>;
35
+ };
129
36
  beats: {
130
37
  text: string;
131
38
  speaker: string;
@@ -145,8 +52,11 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
145
52
  url: string;
146
53
  kind: "url";
147
54
  } | {
148
- kind: "data";
55
+ kind: "base64";
149
56
  data: string;
57
+ } | {
58
+ text: string;
59
+ kind: "text";
150
60
  } | {
151
61
  path: string;
152
62
  kind: "path";
@@ -157,8 +67,11 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
157
67
  url: string;
158
68
  kind: "url";
159
69
  } | {
160
- kind: "data";
70
+ kind: "base64";
161
71
  data: string;
72
+ } | {
73
+ text: string;
74
+ kind: "text";
162
75
  } | {
163
76
  path: string;
164
77
  kind: "path";
@@ -169,8 +82,11 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
169
82
  url: string;
170
83
  kind: "url";
171
84
  } | {
172
- kind: "data";
85
+ kind: "base64";
173
86
  data: string;
87
+ } | {
88
+ text: string;
89
+ kind: "text";
174
90
  } | {
175
91
  path: string;
176
92
  kind: "path";
@@ -181,8 +97,11 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
181
97
  url: string;
182
98
  kind: "url";
183
99
  } | {
184
- kind: "data";
100
+ kind: "base64";
185
101
  data: string;
102
+ } | {
103
+ text: string;
104
+ kind: "text";
186
105
  } | {
187
106
  path: string;
188
107
  kind: "path";
@@ -198,9 +117,22 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
198
117
  title: string;
199
118
  chartData: Record<string, any>;
200
119
  } | {
201
- code: string;
120
+ code: {
121
+ url: string;
122
+ kind: "url";
123
+ } | {
124
+ kind: "base64";
125
+ data: string;
126
+ } | {
127
+ text: string;
128
+ kind: "text";
129
+ } | {
130
+ path: string;
131
+ kind: "path";
132
+ };
202
133
  type: "mermaid";
203
134
  title: string;
135
+ appendix?: string[] | undefined;
204
136
  } | undefined;
205
137
  audio?: {
206
138
  type: "audio";
@@ -208,8 +140,11 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
208
140
  url: string;
209
141
  kind: "url";
210
142
  } | {
211
- kind: "data";
143
+ kind: "base64";
212
144
  data: string;
145
+ } | {
146
+ text: string;
147
+ kind: "text";
213
148
  } | {
214
149
  path: string;
215
150
  kind: "path";
@@ -225,22 +160,12 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
225
160
  moderation?: string | undefined;
226
161
  } | undefined;
227
162
  textSlideParams?: {
228
- cssStyles: string[];
163
+ cssStyles: string | string[];
229
164
  } | undefined;
230
165
  imagePrompt?: string | undefined;
231
166
  }[];
232
- speechParams: {
233
- provider: "openai" | "nijivoice";
234
- speakers: Record<string, {
235
- displayName: Record<string, string>;
236
- voiceId: string;
237
- speechOptions?: {
238
- speed?: number | undefined;
239
- instruction?: string | undefined;
240
- } | undefined;
241
- }>;
242
- };
243
167
  lang?: string | undefined;
168
+ title?: string | undefined;
244
169
  imageParams?: {
245
170
  provider: "openai" | "google";
246
171
  model?: string | undefined;
@@ -249,15 +174,20 @@ export declare const createOrUpdateStudioData: (mulmoScript: MulmoScript, fileNa
249
174
  moderation?: string | undefined;
250
175
  } | undefined;
251
176
  textSlideParams?: {
252
- cssStyles: string[];
177
+ cssStyles: string | string[];
253
178
  } | undefined;
254
- description?: string | undefined;
255
- reference?: string | undefined;
256
179
  videoParams?: {
257
180
  padding?: number | undefined;
258
181
  } | undefined;
259
- imagePath?: string | undefined;
260
182
  omitCaptions?: boolean | undefined;
183
+ description?: string | undefined;
184
+ references?: {
185
+ type: "image" | "audio" | "article" | "video";
186
+ url: string;
187
+ title?: string | undefined;
188
+ description?: string | undefined;
189
+ }[] | undefined;
190
+ imagePath?: string | undefined;
261
191
  __test_invalid__?: boolean | undefined;
262
192
  };
263
193
  filename: string;
@@ -1,47 +1,47 @@
1
- import { readMulmoScriptFile, getOutputStudioFilePath } from "./file.js";
2
- import { text2hash } from "./text_hash.js";
3
- import { MulmoScriptMethods } from "../methods/index.js";
4
- export const createOrUpdateStudioData = (mulmoScript, fileName, files) => {
5
- const { outDirPath } = files;
6
- // Create or update MulmoStudio file with MulmoScript
7
- const outputStudioFilePath = getOutputStudioFilePath(outDirPath, fileName);
8
- const currentStudio = readMulmoScriptFile(outputStudioFilePath);
9
- const studio = currentStudio?.mulmoData ?? {
1
+ import { mulmoScriptSchema, mulmoBeatSchema, mulmoStudioSchema } from "../types/index.js";
2
+ const rebuildStudio = (currentStudio, mulmoScript, fileName) => {
3
+ const parsed = mulmoStudioSchema.safeParse(currentStudio);
4
+ if (parsed.success) {
5
+ return parsed.data;
6
+ }
7
+ return {
10
8
  script: mulmoScript,
11
9
  filename: fileName,
12
- beats: Array(mulmoScript.beats.length).fill({}),
10
+ beats: [...Array(mulmoScript.beats.length)].map(() => ({})),
13
11
  };
14
- if (!studio.beats) {
15
- studio.beats = [];
16
- }
17
- // Addition cloing credit
18
- if (mulmoScript.$mulmocast.credit === "closing") {
19
- mulmoScript.beats.push({
20
- speaker: mulmoScript.beats[0].speaker, // First speaker
21
- text: "",
22
- image: {
23
- type: "image",
24
- source: {
25
- kind: "url",
26
- url: "https://github.com/receptron/mulmocast-cli/raw/refs/heads/main/assets/images/mulmocast_credit.png",
27
- },
12
+ };
13
+ const mulmoCredit = (speaker) => {
14
+ return {
15
+ speaker,
16
+ text: "",
17
+ image: {
18
+ type: "image",
19
+ source: {
20
+ kind: "url",
21
+ url: "https://github.com/receptron/mulmocast-cli/raw/refs/heads/main/assets/images/mulmocast_credit.png",
28
22
  },
29
- audio: {
30
- type: "audio",
31
- source: {
32
- kind: "url",
33
- url: "https://github.com/receptron/mulmocast-cli/raw/refs/heads/main/assets/audio/silent300.mp3",
34
- },
23
+ },
24
+ audio: {
25
+ type: "audio",
26
+ source: {
27
+ kind: "url",
28
+ url: "https://github.com/receptron/mulmocast-cli/raw/refs/heads/main/assets/audio/silent300.mp3",
35
29
  },
36
- });
30
+ },
31
+ };
32
+ };
33
+ export const createOrUpdateStudioData = (_mulmoScript, currentStudio, fileName) => {
34
+ const mulmoScript = _mulmoScript.__test_invalid__ ? _mulmoScript : mulmoScriptSchema.parse(_mulmoScript); // validate and insert default value
35
+ const studio = rebuildStudio(currentStudio, mulmoScript, fileName);
36
+ // Addition cloing credit
37
+ if (mulmoScript.$mulmocast.credit === "closing") {
38
+ mulmoScript.beats.push(mulmoCredit(mulmoScript.beats[0].speaker)); // First speaker
37
39
  }
38
- studio.script = mulmoScript; // update the script
39
- studio.beats.length = mulmoScript.beats.length; // In case it became shorter
40
+ studio.script = mulmoScriptSchema.parse(mulmoScript); // update the script
41
+ studio.beats = studio.script.beats.map((_, index) => studio.beats[index] ?? {});
40
42
  mulmoScript.beats.forEach((beat, index) => {
41
- const voiceId = studio.script.speechParams.speakers[beat.speaker].voiceId;
42
- const speechOptions = MulmoScriptMethods.getSpeechOptions(studio.script, beat);
43
- const hash_string = `${beat.text}${voiceId}${speechOptions?.instruction ?? ""}${speechOptions?.speed ?? 1.0}`;
44
- studio.beats[index] = { ...studio.beats[index], ...beat, audioFile: `${fileName}_${index}_${text2hash(hash_string)}` };
43
+ // Filling the default values
44
+ studio.script.beats[index] = mulmoBeatSchema.parse(beat);
45
45
  });
46
46
  return studio;
47
47
  };
@@ -0,0 +1,12 @@
1
+ export declare const llmAgents: string[];
2
+ type LLMAgent = (typeof llmAgents)[number];
3
+ export declare const defaultOpenAIModel: string;
4
+ export declare const llmPair: (_agent?: LLMAgent, _model?: string) => {
5
+ agent: string;
6
+ model: string;
7
+ max_tokens: number;
8
+ };
9
+ export declare const chunkArray: <T>(array: T[], size?: number) => T[][];
10
+ export declare const isHttp: (fileOrUrl: string) => boolean;
11
+ export declare const text2hash: (input: string) => string;
12
+ export {};
@@ -0,0 +1,34 @@
1
+ import * as crypto from "crypto";
2
+ export const llmAgents = ["openAIAgent", "anthropicAgent", "geminiAgent", "groqAgent"];
3
+ const defaultModels = {
4
+ anthropicAgent: "claude-3-7-sonnet-20250219",
5
+ geminiAgent: "gemini-1.5-flash",
6
+ groqAgent: "llama3-8b-8192",
7
+ openAIAgent: "gpt-4o",
8
+ };
9
+ const longMaxTokens = {
10
+ anthropicAgent: 8192,
11
+ geminiAgent: 8192,
12
+ groqAgent: 4096,
13
+ openAIAgent: 8192,
14
+ };
15
+ export const defaultOpenAIModel = defaultModels["openAIAgent"];
16
+ export const llmPair = (_agent, _model) => {
17
+ const agent = _agent && llmAgents.includes(_agent ?? "") ? _agent : "openAIAgent";
18
+ const model = _model ?? defaultModels[agent ?? ""];
19
+ const max_tokens = longMaxTokens[agent];
20
+ return { agent, model, max_tokens };
21
+ };
22
+ export const chunkArray = (array, size = 3) => {
23
+ const chunks = [];
24
+ const copy = [...array];
25
+ while (copy.length)
26
+ chunks.push(copy.splice(0, size));
27
+ return chunks;
28
+ };
29
+ export const isHttp = (fileOrUrl) => {
30
+ return /^https?:\/\//.test(fileOrUrl);
31
+ };
32
+ export const text2hash = (input) => {
33
+ return crypto.createHash("sha256").update(input).digest("hex");
34
+ };
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "mulmocast",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
4
4
  "description": "",
5
5
  "type": "module",
6
- "main": "lib/cli/cli.js",
6
+ "main": "lib/cli/run.js",
7
7
  "bin": {
8
- "mulmo": "lib/cli/cli.js",
8
+ "mulmo": "lib/cli/run.js",
9
9
  "mulmo-tool": "lib/cli/tool-cli.js"
10
10
  },
11
11
  "files": [
@@ -14,6 +14,7 @@
14
14
  "./assets/audio/silent300.mp3",
15
15
  "./assets/audio/silent800.mp3",
16
16
  "./assets/html/",
17
+ "./assets/font/",
17
18
  "./assets/templates/"
18
19
  ],
19
20
  "types": "./lib/types/index.d.ts",
@@ -22,22 +23,22 @@
22
23
  "test": "tests"
23
24
  },
24
25
  "scripts": {
25
- "audio": "npx tsx ./src/cli/cli.ts audio",
26
- "translate": "npx tsx ./src/cli/cli.ts translate",
27
- "movie": "npx tsx ./src/cli/cli.ts movie",
28
- "images": "npx tsx ./src/cli/cli.ts images",
29
- "preprocess": "npx tsx ./src/cli/cli.ts preprocess",
26
+ "audio": "npx tsx ./src/cli/run.ts audio",
27
+ "translate": "npx tsx ./src/cli/run.ts translate",
28
+ "movie": "npx tsx ./src/cli/run.ts movie",
29
+ "images": "npx tsx ./src/cli/run.ts images",
30
+ "preprocess": "npx tsx ./src/cli/run.ts preprocess",
30
31
  "test": "rm -f scratchpad/test*.* && npx tsx ./src/audio.ts scripts/test/test.json && npx tsx ./src/images.ts scripts/test/test.json && npx tsx ./src/movie.ts scripts/test/test.json",
31
- "ci_test": "node --test --loader=ts-node/esm ./test/*/test_*.ts",
32
+ "ci_test": "tsx --test ./test/*/test_*.ts",
32
33
  "lint": "eslint src test",
33
34
  "build": "tsc",
34
35
  "build_test": "tsc && git checkout -- lib/*",
35
36
  "prompt": "npx tsx ./src/tools/prompt.ts",
36
- "cli": "npx tsx ./src/cli/cli.ts",
37
+ "cli": "npx tsx ./src/cli/run.ts",
37
38
  "scripting": "npx tsx ./src/cli/tool-cli.ts scripting",
38
39
  "dump_prompt": "npx tsx ./src/cli/tool-cli.ts prompt",
39
40
  "latest": "yarn upgrade-interactive --latest",
40
- "format": "prettier --write '{src,scripts,assets/templates,draft,ideason,scripts_mag2,proto,test,graphai,output}/**/*.{ts,json}'"
41
+ "format": "prettier --write '{src,scripts,assets/templates,draft,ideason,scripts_mag2,proto,test,graphai,output,docs/scripts}/**/*.{ts,json,yaml}'"
41
42
  },
42
43
  "repository": "git+ssh://git@github.com/receptron/mulmocast-cli.git",
43
44
  "author": "snakajima",
@@ -47,21 +48,28 @@
47
48
  },
48
49
  "homepage": "https://github.com/receptron/mulmocast-cli#readme",
49
50
  "dependencies": {
51
+ "@graphai/agent_filters": "^1.0.1",
52
+ "@graphai/anthropic_agent": "^2.0.0",
50
53
  "@graphai/browserless_agent": "^2.0.0",
54
+ "@graphai/gemini_agent": "^1.0.1",
55
+ "@graphai/groq_agent": "^1.0.1",
51
56
  "@graphai/input_agents": "^1.0.1",
52
57
  "@graphai/openai_agent": "^1.0.5",
53
58
  "@graphai/vanilla": "^2.0.1",
54
59
  "@graphai/vanilla_node_agents": "^2.0.0",
60
+ "@pdf-lib/fontkit": "^1.1.1",
55
61
  "@types/fluent-ffmpeg": "^2.1.26",
56
62
  "canvas": "^3.1.0",
57
63
  "dotenv": "^16.4.7",
58
64
  "fluent-ffmpeg": "^2.1.3",
59
65
  "google-auth-library": "^9.15.1",
60
- "graphai": "^1.0.12",
66
+ "graphai": "^1.0.13",
61
67
  "inquirer": "^12.6.0",
62
68
  "marked": "^15.0.11",
63
69
  "ora": "^8.2.0",
70
+ "pdf-lib": "^1.17.1",
64
71
  "puppeteer": "^24.8.1",
72
+ "yaml": "^2.7.1",
65
73
  "yargs": "^17.7.2",
66
74
  "zod": "^3.24.4",
67
75
  "zod-to-json-schema": "^3.24.5"
@@ -74,6 +82,7 @@
74
82
  "eslint-plugin-prettier": "^5.4.0",
75
83
  "prettier": "^3.3.3",
76
84
  "ts-node": "^10.9.2",
85
+ "tsx": "^4.19.4",
77
86
  "typescript": "^5.7.3",
78
87
  "typescript-eslint": "^8.32.0"
79
88
  },
@@ -1,3 +0,0 @@
1
- import "dotenv/config";
2
- import { ScriptingParams } from "../types";
3
- export declare const createMulmoScriptWithInteractive: ({ outDirPath, filename, templateName, urls }: ScriptingParams) => Promise<void>;