mulmocast 0.0.1 → 0.0.2

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 (79) hide show
  1. package/README.md +108 -12
  2. package/assets/html/chart.html +47 -0
  3. package/assets/html/mermaid.html +63 -0
  4. package/assets/templates/business.json +60 -6
  5. package/assets/templates/children_book.json +1 -3
  6. package/assets/templates/coding.json +103 -0
  7. package/lib/actions/audio.d.ts +1 -1
  8. package/lib/actions/audio.js +52 -81
  9. package/lib/actions/images.d.ts +1 -1
  10. package/lib/actions/images.js +48 -80
  11. package/lib/actions/movie.d.ts +1 -1
  12. package/lib/actions/movie.js +76 -76
  13. package/lib/actions/translate.d.ts +1 -1
  14. package/lib/actions/translate.js +16 -52
  15. package/lib/agents/add_bgm_agent.d.ts +1 -1
  16. package/lib/agents/add_bgm_agent.js +10 -14
  17. package/lib/agents/combine_audio_files_agent.d.ts +1 -1
  18. package/lib/agents/combine_audio_files_agent.js +40 -30
  19. package/lib/agents/image_google_agent.d.ts +1 -1
  20. package/lib/agents/image_google_agent.js +8 -11
  21. package/lib/agents/image_openai_agent.js +7 -14
  22. package/lib/agents/index.d.ts +8 -8
  23. package/lib/agents/index.js +13 -30
  24. package/lib/agents/mulmo_prompts_agent.d.ts +1 -1
  25. package/lib/agents/mulmo_prompts_agent.js +7 -11
  26. package/lib/agents/prompts_data.js +1 -4
  27. package/lib/agents/tts_nijivoice_agent.d.ts +1 -1
  28. package/lib/agents/tts_nijivoice_agent.js +8 -12
  29. package/lib/agents/tts_openai_agent.js +9 -16
  30. package/lib/agents/validate_mulmo_script_agent.d.ts +1 -1
  31. package/lib/agents/validate_mulmo_script_agent.js +6 -10
  32. package/lib/cli/args.d.ts +2 -1
  33. package/lib/cli/args.js +16 -14
  34. package/lib/cli/cli.js +64 -49
  35. package/lib/cli/common.js +1 -5
  36. package/lib/cli/tool-args.d.ts +2 -1
  37. package/lib/cli/tool-args.js +19 -18
  38. package/lib/cli/tool-cli.js +32 -51
  39. package/lib/methods/index.d.ts +3 -3
  40. package/lib/methods/index.js +3 -19
  41. package/lib/methods/mulmo_script.d.ts +10 -5
  42. package/lib/methods/mulmo_script.js +17 -11
  43. package/lib/methods/mulmo_script_template.d.ts +1 -1
  44. package/lib/methods/mulmo_script_template.js +4 -10
  45. package/lib/methods/mulmo_studio_context.d.ts +1 -1
  46. package/lib/methods/mulmo_studio_context.js +3 -9
  47. package/lib/tools/create_mulmo_script_from_url.d.ts +3 -0
  48. package/lib/tools/create_mulmo_script_from_url.js +152 -0
  49. package/lib/tools/create_mulmo_script_interactively.d.ts +3 -0
  50. package/lib/tools/create_mulmo_script_interactively.js +217 -0
  51. package/lib/tools/dump_prompt.js +5 -8
  52. package/lib/tools/prompt.js +9 -11
  53. package/lib/tools/seed_from_url2.d.ts +3 -0
  54. package/lib/tools/seed_from_url2.js +154 -0
  55. package/lib/types/index.d.ts +1 -1
  56. package/lib/types/index.js +1 -17
  57. package/lib/types/schema.d.ts +433 -71
  58. package/lib/types/schema.js +126 -111
  59. package/lib/types/type.d.ts +7 -3
  60. package/lib/types/type.js +1 -2
  61. package/lib/utils/const.d.ts +2 -1
  62. package/lib/utils/const.js +4 -6
  63. package/lib/utils/file.d.ts +19 -4
  64. package/lib/utils/file.js +78 -71
  65. package/lib/utils/filters.d.ts +1 -0
  66. package/lib/utils/filters.js +47 -26
  67. package/lib/utils/image_preprocess.d.ts +14 -0
  68. package/lib/utils/image_preprocess.js +52 -0
  69. package/lib/utils/inquirer.d.ts +2 -0
  70. package/lib/utils/inquirer.js +33 -0
  71. package/lib/utils/markdown.d.ts +3 -1
  72. package/lib/utils/markdown.js +17 -19
  73. package/lib/utils/plugins.d.ts +5 -0
  74. package/lib/utils/plugins.js +11 -0
  75. package/lib/utils/preprocess.d.ts +24 -7
  76. package/lib/utils/preprocess.js +8 -14
  77. package/lib/utils/string.js +4 -10
  78. package/lib/utils/text_hash.js +2 -39
  79. package/package.json +12 -6
package/README.md CHANGED
@@ -1,11 +1,11 @@
1
- # mulmo
1
+ # mulmocast
2
2
 
3
3
  A CLI tool for generating podcast and video content from script files. Automates the process of creating audio, images, and video from structured script files.
4
4
 
5
5
  ## Installation
6
6
 
7
7
  ```bash
8
- npm install -g mulmo
8
+ npm install -g mulmocast
9
9
  ```
10
10
 
11
11
  You'll also need to install ffmpeg:
@@ -21,11 +21,16 @@ brew install ffmpeg
21
21
 
22
22
  Create a `.env` file in your project directory with the following API keys:
23
23
 
24
+ ### Required
24
25
  ```
25
26
  OPENAI_API_KEY=your_openai_api_key
26
- GOOGLE_PROJECT_ID=your_google_project_id # optional for movie, image generation
27
- NIJIVOICE_API_KEY=your_nijivoice_api_key # optional for movie, audio generation
28
- BROWSERLESS_API_TOKEN=your_browserless_api_token # optional for scripting from web content
27
+ ```
28
+ ### Optional
29
+ ```
30
+ DEFAULT_OPENAI_IMAGE_MODEL=gpt-image-1 # for the advanced image generation model
31
+ GOOGLE_PROJECT_ID=your_google_project_id # for Google's image generation model
32
+ NIJIVOICE_API_KEY=your_nijivoice_api_key # for Nijivoice's TTS model
33
+ BROWSERLESS_API_TOKEN=your_browserless_api_token # to access web in mulmo-tool
29
34
  ```
30
35
 
31
36
  ## Workflow
@@ -35,14 +40,28 @@ BROWSERLESS_API_TOKEN=your_browserless_api_token # optional for scripting from w
35
40
  3. Generate images with `mulmo images`
36
41
  4. Create final video with `mulmo movie`
37
42
 
43
+ ## Quick Start
44
+
45
+ ```
46
+ # Generate script with interactive mode
47
+ mulmo-tool scripting -i -t children_book -o ./ -f story
48
+ ```
49
+ After running this command, you'll create a story script through an interactive conversation with the AI.
50
+
51
+ ```
52
+ # Generate both audio and images, then combine into video
53
+ mulmo movie {generated_script_file}
54
+ ```
55
+ Replace `{generated_script_file}` with the output file from the previous command, such as `story-1746600802426.json`.
56
+
38
57
  ## Generate MulmoScript
39
58
 
40
59
  ```bash
41
60
  # Generate script from web content
42
- mulmo-tool scripting -u https://example.com -t seed_materials
61
+ mulmo-tool scripting -u https://example.com
43
62
 
44
63
  # Generate script with interactive mode
45
- mulmo-tool scripting -i -t seed_interactive
64
+ mulmo-tool scripting -i
46
65
  ```
47
66
 
48
67
  ## Generate content from MulmoScript
@@ -51,24 +70,101 @@ Mulmo provides several commands to handle different aspects of content creation:
51
70
 
52
71
  ```bash
53
72
  # Generate audio from script
54
- mulmo audio -f script.json
73
+ mulmo audio script.json
55
74
 
56
75
  # Generate images for script
57
- mulmo images -f script.json
76
+ mulmo images script.json
58
77
 
59
78
  # Generate both audio and images, then combine into video
60
- mulmo movie -f script.json
79
+ mulmo movie script.json
61
80
 
62
81
  # Translate script to Japanese
63
- mulmo translate -f script.json
82
+ mulmo translate script.json
64
83
  ```
65
84
 
85
+ ## Cache and Re-run
86
+ When running the same `mulmo` command multiple times, previously generated files are treated as cache. For example, audio or image files will not be regenerated if they already exist.
87
+
88
+ To force regeneration, delete the old files — including temporary files — under the output directory before re-running the command or use -f (force) option.
89
+
90
+ If you modify the text or instruction fields in a MulmoScript, mulmo will automatically detect the changes and regenerate the corresponding audio content upon re-run.
91
+
66
92
  ## MulmoScript Format
67
93
 
68
94
  MulmoScript is a JSON format to define podcast or video scripts:
69
- schema: [./src/types/schema.ts](./src/types/schema.ts)
95
+ Schema definition: [schema.ts](./src/types/schema.ts)
96
+
97
+ ## Sample MulmoScript
98
+
99
+ https://github.com/receptron/mulmocast-cli/tree/main/scripts
100
+
101
+ ## Directory Structure
102
+
103
+ | Directory | Description |
104
+ |-------------------|-----------------------------------------------------------------------------|
105
+ | `output/` | Artifacts generated by commands — e.g., `.json`, audio, and video files |
106
+ | `output/audio/` | Temporary audio fragments used in the final audio assembly |
107
+ | `output/images/` | Image files generated by the `images` command |
108
+ | `output/cache/` | Internal cache files for various processing steps |
109
+
110
+ > These directories are automatically created as needed by the `mulmo` commands.
111
+
112
+ ## Help
113
+
114
+ CLI Usage
115
+
116
+ ```
117
+ $ mulmo -h
118
+ mulmo <action> <file>
119
+
120
+ Run mulmocast
121
+
122
+ Positionals:
123
+ action action to perform
124
+ [string] [choices: "translate", "audio", "images", "movie", "preprocess"]
125
+ file Mulmo Script File [string]
126
+
127
+ Options:
128
+ --version Show version number [boolean]
129
+ -v, --verbose verbose log [boolean] [required] [default: false]
130
+ -o, --outdir output dir [string]
131
+ -b, --basedir base dir [string]
132
+ -a, --audiodir audio dir [string]
133
+ -i, --imagedir image dir [string]
134
+ -f, --force force generate [boolean] [default: false]
135
+ --help Show help [boolean]
136
+
137
+ ```
138
+
139
+ ```
140
+ $ mulmo-tool -h
141
+
142
+ mulmo-tool <action>
143
+
144
+ Run mulmocast tool
145
+
146
+ Positionals:
147
+ action action to perform [string] [choices: "scripting", "prompt"]
148
+
149
+ Options:
150
+ --version Show version number [boolean]
151
+ -v, --verbose verbose log [boolean] [required] [default: false]
152
+ -o, --outdir output dir [string]
153
+ -b, --basedir base dir [string]
154
+ -u, --url URLs to reference (required when not in interactive mode)
155
+ [array] [default: []]
156
+ -i, --interactive Generate script in interactive mode with user prompts
157
+ [boolean]
158
+ -t, --template Template name to use
159
+ [string] [choices: "business", "children_book", "coding", "podcast_standard",
160
+ "sensei_and_taro"]
161
+ -c, --cache cache dir [string]
162
+ -s, --script script filename [string] [default: "script"]
163
+ --help Show help [boolean]
164
+ ```
70
165
 
71
166
 
72
167
  ## Contributing
73
168
 
74
169
  For developers interested in contributing to this project, please see [CONTRIBUTING.md](./CONTRIBUTING.md).
170
+
@@ -0,0 +1,47 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Simple Chart.js Bar Chart</title>
7
+ <style>
8
+ body {
9
+ font-family: Arial, sans-serif;
10
+ padding: 40px; padding-top: 60px;
11
+ }
12
+ .chart-container {
13
+ width: ${width}px;
14
+ margin: 0 auto;
15
+ }
16
+ h1 {
17
+ text-align: center;
18
+ font-size: 50px;
19
+ color: #333;
20
+ margin-bottom: 80px;
21
+ }
22
+ </style>
23
+ <!-- Include Chart.js from CDN -->
24
+ <script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
25
+ </head>
26
+ <body>
27
+ <h1>${title}</h1>
28
+ <div class="chart-container">
29
+ <canvas id="myChart"></canvas>
30
+ </div>
31
+
32
+ <!-- Plain JavaScript instead of TypeScript -->
33
+ <script>
34
+ // Wait for DOM to be fully loaded
35
+ document.addEventListener('DOMContentLoaded', function() {
36
+ // Get the canvas element
37
+ const ctx = document.getElementById('myChart');
38
+
39
+ // Create the data object (no TypeScript interfaces)
40
+ const chartData = ${chart_data};
41
+
42
+ // Initialize the chart
43
+ new Chart(ctx, chartData);
44
+ });
45
+ </script>
46
+ </body>
47
+ </html>
@@ -0,0 +1,63 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Mermaid Diagram</title>
7
+ <style>
8
+ body {
9
+ box-sizing: border-box;
10
+ font-family: Arial, sans-serif;
11
+ padding: 40px;
12
+ padding-top: 60px;
13
+ height: 100vh;
14
+ }
15
+ .container {
16
+ height: 100%;
17
+ display: flex;
18
+ flex-direction: column;
19
+ }
20
+ h1 {
21
+ text-align: center;
22
+ font-size: 50px;
23
+ color: #333;
24
+ margin-bottom: 30px;
25
+ }
26
+ .mermaid {
27
+ width: 100%;
28
+ height: 100%;
29
+ margin: 0 auto;
30
+ display: flex;
31
+ justify-content: center;
32
+ align-items: center;
33
+ flex-grow: 1;
34
+ overflow: auto;
35
+ }
36
+ .mermaid svg {
37
+ max-width: 100%;
38
+ max-height: 100%;
39
+ height: auto;
40
+ width: auto;
41
+ }
42
+ </style>
43
+ <!-- Include Mermaid from CDN -->
44
+ <script src="https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js"></script>
45
+ <script>
46
+ mermaid.initialize({
47
+ startOnLoad: true,
48
+ theme: 'default',
49
+ flowchart: {
50
+ useMaxWidth: true
51
+ }
52
+ });
53
+ </script>
54
+ </head>
55
+ <body>
56
+ <div class="container">
57
+ <h1>${title}</h1>
58
+ <div class="mermaid">
59
+ ${diagram_code}
60
+ </div>
61
+ </div>
62
+ </body>
63
+ </html>
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "title": "Business presentation",
3
- "description": "Template for children book.",
4
- "systemPrompt": "Generate a script for a business presentation of the given topic. Use textSlides or markdown to show slides or use imagePrompt to generate an appropriate image for that page. Use the JSON below as a template",
3
+ "description": "Template for business presentation.",
4
+ "systemPrompt": "Generate a script for a business presentation of the given topic. Use textSlides or markdown to show slides or use imagePrompt to generate an appropriate image for that page. Use the JSON below as a template. chartData is the data for Chart.js",
5
5
  "script": {
6
6
  "$mulmocast": {
7
7
  "version": "1.0",
@@ -13,9 +13,7 @@
13
13
  "height": 1024
14
14
  },
15
15
  "imageParams": {
16
- "style": "Style appropriate for business environment.",
17
- "model": "gpt-image-1",
18
- "size": "1536x1024"
16
+ "style": "Style appropriate for business environment."
19
17
  },
20
18
  "speechParams": {
21
19
  "speakers": {
@@ -28,6 +26,19 @@
28
26
  }
29
27
  }
30
28
  },
29
+ "textSlideParams": {
30
+ "cssStyles": [
31
+ "body { padding: 40px; padding-top: 60px; font-family: Arial, sans-serif;color:#333; font-size: 36px }",
32
+ "h1 { font-size: 50px; text-align: center }",
33
+ "ul { margin-left: 36px } ",
34
+ "pre { background: #eeeecc; font-size: 24px; padding:10px }",
35
+ "p { margin-left: 36px }",
36
+ "table { font-size: 36px; margin: auto; border: 1px solid gray; border-collapse: collapse }",
37
+ "th { border-bottom: 1px solid gray }",
38
+ "td, th { padding: 8px }",
39
+ "tr:nth-child(even) { background-color: #eee }"
40
+ ]
41
+ },
31
42
  "lang": "en",
32
43
  "beats": [
33
44
  {
@@ -41,7 +52,7 @@
41
52
  }
42
53
  },
43
54
  "textSlideParams": {
44
- "cssStyles": ["h1 { margin-top: 400px }"]
55
+ "cssStyles": ["h1 { margin-top: 300px }"]
45
56
  }
46
57
  },
47
58
  {
@@ -83,6 +94,49 @@
83
94
  "speaker": "Presenter",
84
95
  "text": "Our story begins with tree-dwelling primates—small mammals with forward-facing eyes and grasping hands. These ancestors lived in forests and evolved traits useful for climbing and visual depth perception.",
85
96
  "imagePrompt": "tree-dwelling primates with forward-facing eyes in a jungle."
97
+ },
98
+ {
99
+ "speaker": "Presenter",
100
+ "text": "This page shows the sales and profits of this company from January 2024 to June 2024.",
101
+ "image": {
102
+ "type": "chart",
103
+ "title": "Sales and Profits (from Jan to June)",
104
+ "chartData": {
105
+ "type": "bar",
106
+ "data": {
107
+ "labels": ["January", "February", "March", "April", "May", "June"],
108
+ "datasets": [
109
+ {
110
+ "label": "Revenue ($1000s)",
111
+ "data": [120, 135, 180, 155, 170, 190],
112
+ "backgroundColor": "rgba(54, 162, 235, 0.5)",
113
+ "borderColor": "rgba(54, 162, 235, 1)",
114
+ "borderWidth": 1
115
+ },
116
+ {
117
+ "label": "Profit ($1000s)",
118
+ "data": [45, 52, 68, 53, 61, 73],
119
+ "backgroundColor": "rgba(75, 192, 192, 0.5)",
120
+ "borderColor": "rgba(75, 192, 192, 1)",
121
+ "borderWidth": 1
122
+ }
123
+ ]
124
+ },
125
+ "options": {
126
+ "responsive": true,
127
+ "animation": false
128
+ }
129
+ }
130
+ }
131
+ },
132
+ {
133
+ "speaker": "Presenter",
134
+ "text": "Next, let's look at a diagram of our business process flow. This illustrates the key steps from product development to sales.",
135
+ "image": {
136
+ "type": "mermaid",
137
+ "title": "Business Process Flow",
138
+ "code": "graph LR\n A[Market Research] --> B[Product Planning]\n B --> C[Development]\n C --> D[Testing]\n D --> E[Manufacturing]\n E --> F[Marketing]\n F --> G[Sales]\n G --> H[Customer Support]\n H --> A"
139
+ }
86
140
  }
87
141
  ]
88
142
  }
@@ -13,9 +13,7 @@
13
13
  "height": 1024
14
14
  },
15
15
  "imageParams": {
16
- "style": "A hand-drawn style illustration with a warm, nostalgic atmosphere. The background is rich with natural scenery—lush forests, cloudy skies, and traditional Japanese architecture. Characters have expressive eyes, soft facial features, and are portrayed with gentle lighting and subtle shading. The color palette is muted yet vivid, using earthy tones and watercolor-like textures. The overall scene feels magical and peaceful, with a sense of quiet wonder and emotional depth, reminiscent of classic 1980s and 1990s Japanese animation.",
17
- "model": "gpt-image-1",
18
- "size": "1536x1024"
16
+ "style": "A hand-drawn style illustration with a warm, nostalgic atmosphere. The background is rich with natural scenery—lush forests, cloudy skies, and traditional Japanese architecture. Characters have expressive eyes, soft facial features, and are portrayed with gentle lighting and subtle shading. The color palette is muted yet vivid, using earthy tones and watercolor-like textures. The overall scene feels magical and peaceful, with a sense of quiet wonder and emotional depth, reminiscent of classic 1980s and 1990s Japanese animation."
19
17
  },
20
18
  "speechParams": {
21
19
  "speakers": {
@@ -0,0 +1,103 @@
1
+ {
2
+ "title": "Coding presentation",
3
+ "description": "Template for software and coding presentation.",
4
+ "systemPrompt": "Generate a script for a technical presentation of the given topic. Use markdown with a code block to show some code on a slide. Use the JSON below as a template.",
5
+ "script": {
6
+ "$mulmocast": {
7
+ "version": "1.0",
8
+ "credit": "closing"
9
+ },
10
+ "title": "Sample Title",
11
+ "canvasSize": {
12
+ "width": 1536,
13
+ "height": 1024
14
+ },
15
+ "imageParams": {
16
+ "style": "Style appropriate for software presentation."
17
+ },
18
+ "speechParams": {
19
+ "speakers": {
20
+ "Presenter": {
21
+ "voiceId": "shimmer",
22
+ "displayName": {
23
+ "en": "Presenter",
24
+ "ja": "語り手"
25
+ }
26
+ }
27
+ }
28
+ },
29
+ "lang": "en",
30
+ "textSlideParams": {
31
+ "cssStyles": [
32
+ "body { margin: 40px; margin-top: 60px; color:#333; font-size: 48px }",
33
+ "h1 { font-size: 60px; text-align: center }",
34
+ "ul { margin-left: 40px } ",
35
+ "pre { background: #eeeecc; font-size: 24px; padding:10px }",
36
+ "p { margin-left: 40px }",
37
+ "table { font-size: 40px; margin: auto; border: 1px solid gray; border-collapse: collapse }",
38
+ "th { border-bottom: 1px solid gray }",
39
+ "td, th { padding: 8px }",
40
+ "tr:nth-child(even) { background-color: #eee }"
41
+ ]
42
+ },
43
+ "beats": [
44
+ {
45
+ "speaker": "Presenter",
46
+ "text": "Today we're exploring a fascinating concept that has shaped some of the most innovative companies and leaders of our time: the Reality Distortion Field. This term has become synonymous with visionary leadership and the ability to accomplish seemingly impossible goals.",
47
+ "image": {
48
+ "type": "textSlide",
49
+ "slide": {
50
+ "title": "This is the title of this slide",
51
+ "bullets": []
52
+ }
53
+ },
54
+ "textSlideParams": {
55
+ "cssStyles": ["h1 { margin-top: 400px }"]
56
+ }
57
+ },
58
+ {
59
+ "speaker": "Presenter",
60
+ "text": "Here is the sample code",
61
+ "image": {
62
+ "type": "markdown",
63
+ "markdown": ["# Markdown Table Example", "```TypeScript", "const main = () => {", " console.log('Hello World')", "}", "```"]
64
+ }
65
+ },
66
+ {
67
+ "speaker": "Presenter",
68
+ "text": "The evolution of humans is a complex journey that spans millions of years, shaped by biology, environment, and culture. Here's a high-level summary of the key stages in human evolution",
69
+ "image": {
70
+ "type": "textSlide",
71
+ "slide": {
72
+ "title": "Human Evolution",
73
+ "bullets": [
74
+ "Early Primates",
75
+ "Hominids and Hominins",
76
+ "Australopithecus",
77
+ "Genus Homo Emerges",
78
+ "Homo erectus and Migration",
79
+ "Neanderthals and Other Archaic Humans",
80
+ "Homo sapiens"
81
+ ]
82
+ }
83
+ }
84
+ },
85
+ {
86
+ "speaker": "Presenter",
87
+ "text": "Our story begins with tree-dwelling primates—small mammals with forward-facing eyes and grasping hands. These ancestors lived in forests and evolved traits useful for climbing and visual depth perception.",
88
+ "image": {
89
+ "type": "markdown",
90
+ "markdown": [
91
+ "# Markdown Table Example",
92
+ "| Item | In Stock | Price |",
93
+ "| :---------------- | :------: | ----: |",
94
+ "| Python Hat | True | 23.99 |",
95
+ "| SQL Hat | True | 23.99 |",
96
+ "| Codecademy Tee | False | 19.99 |",
97
+ "| Codecademy Hoodie | False | 42.99 |"
98
+ ]
99
+ }
100
+ }
101
+ ]
102
+ }
103
+ }
@@ -1,3 +1,3 @@
1
1
  import "dotenv/config";
2
- import { MulmoStudioContext } from "../types";
2
+ import { MulmoStudioContext } from "../types/index.js";
3
3
  export declare const audio: (context: MulmoStudioContext, concurrency: number) => Promise<void>;