@mulmocast/slide 0.3.2 → 0.4.1

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 (48) hide show
  1. package/.claude/skills/extend/SKILL.md +36 -11
  2. package/.claude/skills/narrate/SKILL.md +36 -29
  3. package/README.md +57 -13
  4. package/lib/actions/common.d.ts +10 -0
  5. package/lib/actions/common.d.ts.map +1 -1
  6. package/lib/actions/common.js +33 -2
  7. package/lib/actions/common.js.map +1 -1
  8. package/lib/actions/extend-init.js +1 -1
  9. package/lib/actions/extend-scaffold.d.ts +5 -0
  10. package/lib/actions/extend-scaffold.d.ts.map +1 -0
  11. package/lib/actions/extend-scaffold.js +63 -0
  12. package/lib/actions/extend-scaffold.js.map +1 -0
  13. package/lib/actions/extend-validate.d.ts.map +1 -1
  14. package/lib/actions/extend-validate.js +1 -7
  15. package/lib/actions/extend-validate.js.map +1 -1
  16. package/lib/actions/narrate.d.ts +10 -0
  17. package/lib/actions/narrate.d.ts.map +1 -0
  18. package/lib/actions/narrate.js +162 -0
  19. package/lib/actions/narrate.js.map +1 -0
  20. package/lib/cli.js +62 -1
  21. package/lib/cli.js.map +1 -1
  22. package/lib/convert/markdown-utils.d.ts.map +1 -1
  23. package/lib/convert/markdown-utils.js +2 -1
  24. package/lib/convert/markdown-utils.js.map +1 -1
  25. package/lib/convert/marp.d.ts.map +1 -1
  26. package/lib/convert/marp.js +4 -2
  27. package/lib/convert/marp.js.map +1 -1
  28. package/lib/convert/movie.js +2 -2
  29. package/lib/convert/movie.js.map +1 -1
  30. package/lib/convert/pdf.js +1 -1
  31. package/lib/convert/pdf.js.map +1 -1
  32. package/lib/convert/pptx.js +1 -1
  33. package/lib/convert/pptx.js.map +1 -1
  34. package/lib/utils/audio-save.d.ts.map +1 -1
  35. package/lib/utils/audio-save.js +4 -3
  36. package/lib/utils/audio-save.js.map +1 -1
  37. package/lib/utils/bundle-server.js +1 -1
  38. package/lib/utils/bundle-server.js.map +1 -1
  39. package/lib/utils/llm-metadata.d.ts +28 -0
  40. package/lib/utils/llm-metadata.d.ts.map +1 -0
  41. package/lib/utils/llm-metadata.js +187 -0
  42. package/lib/utils/llm-metadata.js.map +1 -0
  43. package/lib/utils/llm.d.ts +6 -0
  44. package/lib/utils/llm.d.ts.map +1 -1
  45. package/lib/utils/llm.js +13 -14
  46. package/lib/utils/llm.js.map +1 -1
  47. package/package.json +2 -1
  48. package/tools/keynote/extract.scpt +1 -1
@@ -5,19 +5,44 @@ Convert a MulmoScript JSON into an ExtendedScript by adding `scriptMeta` and `be
5
5
  ## Invocation
6
6
 
7
7
  ```
8
- /extend <mulmo_script.json path> [--source <source file path>]
8
+ /extend <MulmoScript.json path> [--source <source file path>]
9
9
  ```
10
10
 
11
- ## CLI Command
11
+ ## CLI Commands Overview
12
12
 
13
- Determine the correct CLI command prefix by checking `package.json` in the project root:
14
- - If `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
15
- - Otherwise → use `npx mulmo-slide`
13
+ This project uses multiple CLI tools. Do NOT confuse them:
16
14
 
17
- Use this prefix (referred to as `{cli}` below) for all CLI calls in the steps.
15
+ | Command | Package | Purpose | Input |
16
+ |---------|---------|---------|-------|
17
+ | `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedScript | Presentation files (.pdf, .pptx, .md, .key) |
18
+ | `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `{basename}.json` |
19
+ | `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedScript → MulmoScript, query, summarize | `extended_script.json` |
20
+
21
+ **IMPORTANT**: `mulmo-slide movie` and `mulmo movie` are DIFFERENT commands. Use `npx mulmo movie` (not `mulmo-slide`) when generating video from a MulmoScript JSON.
22
+
23
+ **NOTE**: MulmoScript files are named `{basename}.json` (e.g., `scripts/paper/paper.json`), NOT `mulmo_script.json`.
24
+
25
+ ### CLI prefix for mulmo-slide
26
+
27
+ Determine the correct CLI command prefix:
28
+ - If `package.json` exists in the project root and its `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
29
+ - Otherwise (including when no `package.json` exists) → use `npx mulmo-slide`
30
+ - NEVER create a `package.json` file for this purpose
31
+
32
+ Use this prefix (referred to as `{cli}` below) for `mulmo-slide` CLI calls in the steps.
18
33
 
19
34
  ## Instructions
20
35
 
36
+ ### Step 0 (Optional): Scaffold
37
+
38
+ If the MulmoScript doesn't already have an `extended_script.json`, you can create a skeleton first:
39
+
40
+ ```bash
41
+ {cli} extend scaffold <MulmoScript.json>
42
+ ```
43
+
44
+ This adds beat IDs, empty metadata, and imports extracted texts as notes. You can then skip to Step 2 and analyze the scaffolded output.
45
+
21
46
  ### Step 1: Read Inputs
22
47
 
23
48
  Use the Read tool (not bash/node commands) to read the following files:
@@ -27,7 +52,7 @@ Use the Read tool (not bash/node commands) to read the following files:
27
52
  3. `extracted_texts.json` in the same directory as the MulmoScript (if it exists — generated by PDF converter, provides raw text per beat)
28
53
  4. The source file:
29
54
  - If `--source` is specified, use that file
30
- - Otherwise, infer from the MulmoScript path: `scripts/{basename}/mulmo_script.json` -> search for `samples/{basename}.*` (try `.md`, `.pptx`, `.pdf`, `.key`)
55
+ - Otherwise, infer from the MulmoScript path: `scripts/{basename}/{basename}.json` -> search for `samples/{basename}.*` (try `.md`, `.pptx`, `.pdf`, `.key`)
31
56
  - If no source file found, work from the MulmoScript content and extracted texts alone
32
57
 
33
58
  ### Step 2: Analyze Content
@@ -87,18 +112,18 @@ Based on the analysis, generate:
87
112
  ### Step 5: Write and Validate Output
88
113
 
89
114
  1. Determine output path:
90
- - Same directory as input: replace `mulmo_script.json` with `extended_script.json`
91
- - Example: `scripts/simple_text/mulmo_script.json` -> `scripts/simple_text/extended_script.json`
115
+ - Same directory as input: replace `{basename}.json` with `extended_script.json`
116
+ - Example: `scripts/simple_text/simple_text.json` -> `scripts/simple_text/extended_script.json`
92
117
  2. Write the JSON with 2-space indentation
93
118
  3. Run `{cli} extend validate <output_path>` to validate against the schema
94
119
  4. If validation fails, fix the errors and re-write the file, then validate again
95
120
  5. Generate MulmoScript from ExtendedScript using the preprocessor:
96
121
  ```bash
97
- npx mulmocast-preprocessor <extended_script.json> -o <mulmo_script.json>
122
+ npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
98
123
  ```
99
124
  Note: The preprocessor may not fully strip `scriptMeta`. If `mulmo movie` fails with "Unrecognized key" errors, manually strip remaining fields with a node one-liner:
100
125
  ```bash
101
- node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync('<mulmo_script.json>','utf8'));delete d.scriptMeta;delete d.outputProfiles;d.beats.forEach(b=>{delete b.meta;delete b.variants});fs.writeFileSync('<mulmo_script.json>',JSON.stringify(d,null,2))"
126
+ node -e "const fs=require('fs');const d=JSON.parse(fs.readFileSync('scripts/{basename}/{basename}.json','utf8'));delete d.scriptMeta;delete d.outputProfiles;d.beats.forEach(b=>{delete b.meta;delete b.variants});fs.writeFileSync('scripts/{basename}/{basename}.json',JSON.stringify(d,null,2))"
102
127
  ```
103
128
  6. Display a summary to the user:
104
129
  - Number of beats processed
@@ -10,54 +10,61 @@ Convert any supported source file (PDF, PPTX, Markdown, Keynote) into a validate
10
10
 
11
11
  Supported formats: `.pdf`, `.pptx`, `.md`, `.key`
12
12
 
13
- ## CLI Command
13
+ ## CLI Commands Overview
14
14
 
15
- Determine the correct CLI command prefix by checking `package.json` in the project root:
16
- - If `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
17
- - Otherwise → use `npx mulmo-slide`
15
+ This project uses multiple CLI tools. Do NOT confuse them:
18
16
 
19
- Use this prefix (referred to as `{cli}` below) for all CLI calls in the steps.
17
+ | Command | Package | Purpose | Input |
18
+ |---------|---------|---------|-------|
19
+ | `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedScript | Presentation files (.pdf, .pptx, .md, .key) |
20
+ | `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `{basename}.json` |
21
+ | `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedScript → MulmoScript, query, summarize | `extended_script.json` |
20
22
 
21
- ## Instructions
23
+ **IMPORTANT**: `mulmo-slide movie` and `mulmo movie` are DIFFERENT commands. Use `npx mulmo movie` (not `mulmo-slide`) when generating video from a MulmoScript JSON.
22
24
 
23
- ### Step 1: Convert Source to MulmoScript
25
+ **NOTE**: MulmoScript files are named `{basename}.json` (e.g., `scripts/paper/paper.json`), NOT `mulmo_script.json`.
24
26
 
25
- Detect the file format and run the appropriate converter.
27
+ ### CLI prefix for mulmo-slide
26
28
 
27
- **PDF:**
28
- ```bash
29
- {cli} pdf <file>
30
- ```
29
+ Determine the correct CLI command prefix:
30
+ - If `package.json` exists in the project root and its `name` is `"@mulmocast/slide"` (i.e., developing MulmoCast-Slides itself) → use `yarn cli`
31
+ - Otherwise (including when no `package.json` exists) → use `npx mulmo-slide`
32
+ - NEVER create a `package.json` file for this purpose
31
33
 
32
- **PPTX:**
33
- ```bash
34
- {cli} pptx <file>
35
- ```
34
+ Use this prefix (referred to as `{cli}` below) for `mulmo-slide` CLI calls in the steps.
35
+
36
+ ## Instructions
37
+
38
+ ### Step 1: Scaffold ExtendedScript
39
+
40
+ Run the narrate CLI with `--scaffold-only` to convert the source and create the ExtendedScript skeleton in one step:
36
41
 
37
- **Markdown:**
38
42
  ```bash
39
- {cli} markdown <file>
43
+ {cli} narrate <file> --scaffold-only
40
44
  ```
41
45
 
42
- **Keynote (.key):**
46
+ This automatically detects the file format, converts to MulmoScript, and creates `scripts/{basename}/extended_script.json` with:
47
+ - Beat IDs assigned
48
+ - Empty metadata fields ready for AI analysis
49
+ - Extracted texts imported as notes (for PDF)
50
+
51
+ If the MulmoScript already exists and you want to regenerate it, add `-f`:
43
52
  ```bash
44
- {cli} keynote <file>
53
+ {cli} narrate <file> --scaffold-only -f
45
54
  ```
46
55
 
47
- This produces `scripts/{basename}/mulmo_script.json` and (for PDF) `scripts/{basename}/extracted_texts.json`.
48
-
49
56
  Confirm the output:
50
- - How many slides/beats were generated
51
- - Whether `extracted_texts.json` exists (PDF only)
57
+ - How many beats were scaffolded
58
+ - Whether notes were imported from extracted texts
52
59
 
53
60
  ### Step 2: Read Inputs
54
61
 
55
62
  Use the Read tool (not bash/node commands) to read the following files:
56
63
 
57
- 1. `scripts/{basename}/mulmo_script.json`
64
+ 1. `scripts/{basename}/extended_script.json` (the scaffolded output from Step 1)
58
65
  2. `.claude/skills/narrate/references/extended-script-schema.md`
59
- 3. `scripts/{basename}/extracted_texts.json` (if it exists, generated by PDF converter — provides raw text per beat)
60
- 4. The original source `.md` file (if Markdown, for speaker notes and structure)
66
+ 3. The original source `.md` file (if Markdown, for speaker notes and structure)
67
+ 4. For image-based slides (PDF/PPTX), read the slide images to understand visual content
61
68
 
62
69
  ### Step 3: Analyze Content
63
70
 
@@ -137,8 +144,8 @@ npx mulmocast-preprocessor query scripts/{basename}/extended_script.json -i
137
144
  npx mulmocast-preprocessor summarize scripts/{basename}/extended_script.json
138
145
 
139
146
  ## Generate a narrated video
140
- npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/mulmo_script.json
141
- npx mulmo movie scripts/{basename}/mulmo_script.json
147
+ npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
148
+ npx mulmo movie scripts/{basename}/{basename}.json
142
149
  ```
143
150
 
144
151
  Ask the user if they want to adjust any narration or metadata before proceeding.
package/README.md CHANGED
@@ -117,8 +117,8 @@ yarn movie samples/omochikaeri.pptx -g -l ja
117
117
  yarn bundle samples/sample.md -g -l ja
118
118
  ```
119
119
 
120
- **Note:** When re-running commands, the existing `mulmo_script.json` will be reused. To regenerate:
121
- - Delete the existing JSON file: `rm scripts/<basename>/mulmo_script.json`
120
+ **Note:** When re-running commands, the existing MulmoScript JSON will be reused. To regenerate:
121
+ - Delete the existing JSON file: `rm scripts/<basename>/<basename>.json`
122
122
  - Or use the `-f` (force) flag with movie/bundle: `yarn movie samples/sample.pptx -f -g`
123
123
 
124
124
  ## Unified CLI
@@ -136,8 +136,10 @@ Commands:
136
136
  mulmo-slide keynote <file> Convert Keynote to MulmoScript (macOS only)
137
137
  mulmo-slide movie <file> Generate movie from presentation
138
138
  mulmo-slide bundle <file> Generate MulmoViewer bundle from presentation
139
+ mulmo-slide narrate <file> Generate narrated ExtendedScript (full pipeline)
139
140
  mulmo-slide extend init Install Claude Code skills (/narrate, /extend)
140
141
  mulmo-slide extend validate Validate ExtendedScript JSON against schema
142
+ mulmo-slide extend scaffold Create ExtendedScript skeleton from MulmoScript
141
143
  ```
142
144
 
143
145
  The `convert` command auto-detects file format by extension (.pptx, .md, .key, .pdf).
@@ -226,7 +228,7 @@ yarn test:keynote
226
228
 
227
229
  **Output:**
228
230
  - `scripts/<basename>/images/` - PNG images of each slide
229
- - `scripts/<basename>/mulmo_script.json` - MulmoScript JSON file
231
+ - `scripts/<basename>/<basename>.json` - MulmoScript JSON file
230
232
 
231
233
  ### Marp Extractor
232
234
 
@@ -261,8 +263,8 @@ yarn test:marp
261
263
 
262
264
  **Output:**
263
265
  - `scripts/<basename>/images/` - PNG images of each slide
264
- - `scripts/<basename>/mulmo_script.json` - MulmoScript JSON file (PNG format)
265
- - `scripts/<basename>/mulmo_script-markdown.json` - MulmoScript JSON file (Markdown format)
266
+ - `scripts/<basename>/<basename>.json` - MulmoScript JSON file (PNG format)
267
+ - `scripts/<basename>/<basename>-markdown.json` - MulmoScript JSON file (Markdown format)
266
268
 
267
269
  **Features:**
268
270
  - Extracts speaker notes from HTML comments (`<!-- note text -->`)
@@ -380,7 +382,7 @@ mulmo-slide markdown document.md --layout --style corporate-blue
380
382
  ```
381
383
 
382
384
  **Output:**
383
- - `scripts/<basename>/mulmo_script.json` - MulmoScript JSON file (Markdown format)
385
+ - `scripts/<basename>/<basename>.json` - MulmoScript JSON file (Markdown format)
384
386
 
385
387
  ### PowerPoint (PPTX) Converter
386
388
 
@@ -411,7 +413,7 @@ yarn pptx path/to/presentation.pptx -g -l ja
411
413
  **Output:**
412
414
  - `scripts/<basename>/` - Directory named after input file
413
415
  - `scripts/<basename>/images/<basename>-0.png, -1.png, ...` - PNG images of each slide
414
- - `scripts/<basename>/mulmo_script.json` - MulmoScript JSON file
416
+ - `scripts/<basename>/<basename>.json` - MulmoScript JSON file
415
417
 
416
418
  ### PDF Converter
417
419
 
@@ -441,7 +443,7 @@ yarn pdf path/to/presentation.pdf -g -l ja
441
443
  **Output:**
442
444
  - `scripts/<basename>/` - Directory named after input file
443
445
  - `scripts/<basename>/images/<basename>-0.png, -1.png, ...` - PNG images of each page
444
- - `scripts/<basename>/mulmo_script.json` - MulmoScript JSON file
446
+ - `scripts/<basename>/<basename>.json` - MulmoScript JSON file
445
447
 
446
448
  ## Movie Generation
447
449
 
@@ -557,8 +559,50 @@ mulmo-slide bundle presentation.pptx -f -g
557
559
  - The LLM considers the overall presentation structure to generate contextual narration
558
560
  - Output is in the specified language (`-l` option)
559
561
 
562
+ ## Narrate CLI
563
+
564
+ Generate a narrated ExtendedScript from any supported source file in one command. This automates the full pipeline: conversion to MulmoScript, LLM-based narration and metadata generation, and validation.
565
+
566
+ **Usage:**
567
+
568
+ ```bash
569
+ # Full pipeline (requires OPENAI_API_KEY)
570
+ mulmo-slide narrate paper.pdf
571
+ mulmo-slide narrate slides.pptx -l ja
572
+ mulmo-slide narrate document.md --mermaid -s heading
573
+
574
+ # Scaffold only (no LLM, for Claude Code handoff)
575
+ mulmo-slide narrate paper.pdf --scaffold-only
576
+
577
+ # yarn (development)
578
+ yarn narrate samples/sample.pdf -l ja
579
+ yarn narrate samples/sample.pdf --scaffold-only
580
+ ```
581
+
582
+ **Options:**
583
+ - `-l, --lang` - Language for narration (en, ja, fr, de)
584
+ - `--scaffold-only` - Only create ExtendedScript skeleton (no LLM). Useful as preparation for Claude Code `/narrate` analysis
585
+ - `-f, --force` - Force regenerate MulmoScript even if it exists
586
+ - `-s, --separator` - Slide separator mode (for Markdown files)
587
+ - `--mermaid` - Convert mermaid code blocks (for Markdown files)
588
+
589
+ **Output:** `scripts/{basename}/extended_script.json`
590
+
591
+ ### Extend Scaffold
592
+
593
+ Create an ExtendedScript skeleton from an existing MulmoScript without any LLM calls. This adds beat IDs, empty metadata fields, and imports extracted texts as notes.
594
+
595
+ ```bash
596
+ mulmo-slide extend scaffold scripts/<basename>/<basename>.json
597
+
598
+ # yarn (development)
599
+ yarn cli extend scaffold scripts/<basename>/<basename>.json
600
+ ```
601
+
560
602
  ## Narrate: Source File to Narrated Video (Claude Code Skill)
561
603
 
604
+ > **Tip:** If you don't need interactive analysis and want a fully automated pipeline, use the [Narrate CLI](#narrate-cli) instead (`mulmo-slide narrate <file>`). It runs the full pipeline with OpenAI GPT-4o without requiring Claude Code.
605
+
562
606
  The `/narrate` skill converts any supported source file into a narrated ExtendedScript in one step. It handles the full pipeline: conversion, narration generation, metadata, and validation.
563
607
 
564
608
  ### Setup
@@ -608,8 +652,8 @@ npx mulmocast-preprocessor query scripts/{basename}/extended_script.json -i
608
652
  npx mulmocast-preprocessor summarize scripts/{basename}/extended_script.json
609
653
 
610
654
  # Generate a narrated video
611
- npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/mulmo_script.json
612
- npx mulmo movie scripts/{basename}/mulmo_script.json
655
+ npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
656
+ npx mulmo movie scripts/{basename}/{basename}.json
613
657
  ```
614
658
 
615
659
  ### Validating ExtendedScript
@@ -630,7 +674,7 @@ Outputs beat count, scriptMeta presence, meta coverage percentage, and sections
630
674
  If you already have a MulmoScript and just want to add metadata:
631
675
 
632
676
  ```
633
- /extend scripts/simple_text/mulmo_script.json
677
+ /extend scripts/simple_text/simple_text.json
634
678
  ```
635
679
 
636
680
  ### Tutorials
@@ -648,8 +692,8 @@ scripts/<basename>/
648
692
  │ ├── <basename>-0.png (or images.001.png for Marp)
649
693
  │ ├── <basename>-1.png (or images.002.png for Marp)
650
694
  │ └── ...
651
- ├── mulmo_script.json # MulmoScript (all formats)
652
- └── mulmo_script-markdown.json # Marp only: Markdown format
695
+ ├── <basename>.json # MulmoScript (all formats)
696
+ └── <basename>-markdown.json # Marp only: Markdown format
653
697
  ```
654
698
 
655
699
  ## License
@@ -15,11 +15,21 @@ export interface InitializeContextOptions {
15
15
  captionLang?: string;
16
16
  }
17
17
  export declare function initializeContext(mulmoScriptPath: string, outputDir: string, options?: InitializeContextOptions): Promise<MulmoStudioContext>;
18
+ export declare const readJsonFile: <T>(filePath: string) => T;
19
+ export declare const writeJsonFile: (filePath: string, data: unknown) => void;
20
+ export declare const loadExtractedTexts: (dir: string) => string[] | null;
21
+ export declare const formatZodError: (error: {
22
+ issues: Array<{
23
+ path: PropertyKey[];
24
+ message: string;
25
+ }>;
26
+ }) => string;
18
27
  export type ActionRunner = (mulmoScriptPath: string, outputDir: string) => Promise<void>;
19
28
  export interface RunActionOptions {
20
29
  force?: boolean;
21
30
  generateText?: boolean;
22
31
  }
32
+ export declare function getMulmoScriptFilename(basename: string): string;
23
33
  export declare function getMulmoScriptPath(basename: string): string;
24
34
  export declare function runAction(commandName: string, inputFile: string, actionRunner: ActionRunner, options?: RunActionOptions): Promise<void>;
25
35
  //# sourceMappingURL=common.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAIrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAiBzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
1
+ {"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAMtD,wBAAgB,cAAc,IAAI,MAAM,CAGvC;AAGD,wBAAgB,oBAAoB,IAAI,MAAM,CAE7C;AAED,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,OAAO,CAAC;AAIrE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAiBzD;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAGpD;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,IAAI,CAAC,EAAE,aAAa,CAAC;CACtB;AAED,wBAAsB,oBAAoB,CACxC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,MAAM,CAAC,CAiCjB;AAED,MAAM,WAAW,wBAAwB;IACvC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,wBAAsB,iBAAiB,CACrC,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,wBAA6B,GACrC,OAAO,CAAC,kBAAkB,CAAC,CA4B7B;AAED,eAAO,MAAM,YAAY,GAAI,CAAC,EAAE,UAAU,MAAM,KAAG,CAGlD,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,UAAU,MAAM,EAAE,MAAM,OAAO,KAAG,IAE/D,CAAC;AAEF,eAAO,MAAM,kBAAkB,GAAI,KAAK,MAAM,KAAG,MAAM,EAAE,GAAG,IAW3D,CAAC;AAEF,eAAO,MAAM,cAAc,GAAI,OAAO;IACpC,MAAM,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,WAAW,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzD,KAAG,MAOH,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,CAAC,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;AAEzF,MAAM,WAAW,gBAAgB;IAC/B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,wBAAsB,SAAS,CAC7B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,YAAY,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC,IAAI,CAAC,CAuCf"}
@@ -69,7 +69,7 @@ export async function convertToMulmoScript(filePath, fileType, options = {}) {
69
69
  stdio: "inherit",
70
70
  cwd: process.cwd(),
71
71
  });
72
- return path.join("scripts", basename, "mulmo_script.json");
72
+ return path.join("scripts", basename, getMulmoScriptFilename(basename));
73
73
  }
74
74
  }
75
75
  }
@@ -92,8 +92,39 @@ export async function initializeContext(mulmoScriptPath, outputDir, options = {}
92
92
  }
93
93
  return context;
94
94
  }
95
+ export const readJsonFile = (filePath) => {
96
+ const content = fs.readFileSync(filePath, "utf-8");
97
+ return JSON.parse(content);
98
+ };
99
+ export const writeJsonFile = (filePath, data) => {
100
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2) + "\n");
101
+ };
102
+ export const loadExtractedTexts = (dir) => {
103
+ const textsPath = path.join(dir, "extracted_texts.json");
104
+ if (!fs.existsSync(textsPath)) {
105
+ return null;
106
+ }
107
+ try {
108
+ return readJsonFile(textsPath);
109
+ }
110
+ catch {
111
+ console.warn(`Warning: Could not parse ${textsPath}, skipping notes`);
112
+ return null;
113
+ }
114
+ };
115
+ export const formatZodError = (error) => {
116
+ return error.issues
117
+ .map((issue) => {
118
+ const pathStr = issue.path.length > 0 ? issue.path.map(String).join(".") : "(root)";
119
+ return ` - ${pathStr}: ${issue.message}`;
120
+ })
121
+ .join("\n");
122
+ };
123
+ export function getMulmoScriptFilename(basename) {
124
+ return `${basename}.json`;
125
+ }
95
126
  export function getMulmoScriptPath(basename) {
96
- return path.join("scripts", basename, "mulmo_script.json");
127
+ return path.join("scripts", basename, getMulmoScriptFilename(basename));
97
128
  }
98
129
  export async function runAction(commandName, inputFile, actionRunner, options = {}) {
99
130
  const { force = false, generateText = false } = options;
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/actions/common.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,6 @@ export const runExtendInit = () => {
44
44
  console.log(`\nInstalled skills (${totalFiles} files total)`);
45
45
  console.log(`\nUsage in Claude Code:`);
46
46
  console.log(` /narrate <source file> Full pipeline (recommended)`);
47
- console.log(` /extend <mulmo_script.json> Add metadata to existing MulmoScript`);
47
+ console.log(` /extend <MulmoScript.json> Add metadata to existing MulmoScript`);
48
48
  };
49
49
  //# sourceMappingURL=extend-init.js.map
@@ -0,0 +1,5 @@
1
+ import type { MulmoScript } from "@mulmocast/types";
2
+ import type { ExtendedScript } from "@mulmocast/extended-types";
3
+ export declare const scaffoldExtendedScript: (mulmoScript: MulmoScript, extractedTexts: string[] | null) => ExtendedScript;
4
+ export declare const runExtendScaffold: (filePath: string) => void;
5
+ //# sourceMappingURL=extend-scaffold.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-scaffold.d.ts","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAa,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAA0B,MAAM,2BAA2B,CAAC;AAsBxF,eAAO,MAAM,sBAAsB,GACjC,aAAa,WAAW,EACxB,gBAAgB,MAAM,EAAE,GAAG,IAAI,KAC9B,cAWF,CAAC;AAgCF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAiBpD,CAAC"}
@@ -0,0 +1,63 @@
1
+ import * as fs from "fs";
2
+ import * as path from "path";
3
+ import { readJsonFile, writeJsonFile, loadExtractedTexts } from "./common.js";
4
+ const addBeatIds = (beats) => {
5
+ return beats.map((beat, i) => {
6
+ if (beat.id) {
7
+ return beat;
8
+ }
9
+ return { ...beat, id: `beat-${i + 1}` };
10
+ });
11
+ };
12
+ const addBeatMeta = (beats, extractedTexts) => {
13
+ return beats.map((beat, i) => {
14
+ const meta = { ...(beat.meta ?? {}) };
15
+ if (extractedTexts && i < extractedTexts.length && extractedTexts[i]) {
16
+ meta.notes = extractedTexts[i];
17
+ }
18
+ return { ...beat, meta };
19
+ });
20
+ };
21
+ export const scaffoldExtendedScript = (mulmoScript, extractedTexts) => {
22
+ const beats = addBeatMeta(addBeatIds(mulmoScript.beats), extractedTexts);
23
+ // Set defaults first so the spread preserves existing values
24
+ // (JSON may include scriptMeta/outputProfiles not in MulmoScript type)
25
+ return {
26
+ scriptMeta: {},
27
+ outputProfiles: {},
28
+ ...mulmoScript,
29
+ beats,
30
+ };
31
+ };
32
+ const buildSummary = (mulmoScript, result, outputPath) => ({
33
+ beatCount: result.beats.length,
34
+ idsAdded: mulmoScript.beats.filter((b) => !b.id).length,
35
+ notesAdded: result.beats.filter((b) => b.meta?.notes).length,
36
+ outputPath,
37
+ });
38
+ const printSummary = (summary) => {
39
+ console.log(`\n✓ Scaffolded ExtendedScript: ${summary.outputPath}`);
40
+ console.log(` Beats: ${summary.beatCount}`);
41
+ if (summary.idsAdded > 0) {
42
+ console.log(` IDs added: ${summary.idsAdded}`);
43
+ }
44
+ if (summary.notesAdded > 0) {
45
+ console.log(` Notes from extracted_texts: ${summary.notesAdded}`);
46
+ }
47
+ console.log(`\nNext: Add narration and metadata manually or with LLM`);
48
+ };
49
+ export const runExtendScaffold = (filePath) => {
50
+ const resolvedPath = path.resolve(filePath);
51
+ if (!fs.existsSync(resolvedPath)) {
52
+ console.error(`File not found: ${resolvedPath}`);
53
+ process.exit(1);
54
+ }
55
+ const mulmoScript = readJsonFile(resolvedPath);
56
+ const dir = path.dirname(resolvedPath);
57
+ const extractedTexts = loadExtractedTexts(dir);
58
+ const result = scaffoldExtendedScript(mulmoScript, extractedTexts);
59
+ const outputPath = path.join(dir, "extended_script.json");
60
+ writeJsonFile(outputPath, result);
61
+ printSummary(buildSummary(mulmoScript, result, outputPath));
62
+ };
63
+ //# sourceMappingURL=extend-scaffold.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extend-scaffold.js","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"extend-validate.d.ts","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AAuCA,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAmCpD,CAAC"}
1
+ {"version":3,"file":"extend-validate.d.ts","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAmCpD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import * as fs from "fs";
2
2
  import * as path from "path";
3
3
  import { extendedScriptSchema } from "@mulmocast/extended-types";
4
+ import { formatZodError } from "./common.js";
4
5
  const summarizeScript = (data) => {
5
6
  const script = data;
6
7
  const beats = script.beats;
@@ -15,13 +16,6 @@ const summarizeScript = (data) => {
15
16
  sections,
16
17
  };
17
18
  };
18
- const formatZodError = (error) => {
19
- const lines = error.issues.map((issue) => {
20
- const pathStr = issue.path.length > 0 ? issue.path.map((p) => String(p)).join(".") : "(root)";
21
- return ` - ${pathStr}: ${issue.message}`;
22
- });
23
- return lines.join("\n");
24
- };
25
19
  export const runExtendValidate = (filePath) => {
26
20
  const resolvedPath = path.resolve(filePath);
27
21
  if (!fs.existsSync(resolvedPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SupportedLang } from "../utils/lang.js";
2
+ export interface NarrateOptions {
3
+ lang?: SupportedLang;
4
+ scaffoldOnly?: boolean;
5
+ force?: boolean;
6
+ separator?: string;
7
+ mermaid?: boolean;
8
+ }
9
+ export declare const runNarrate: (filePath: string, options: NarrateOptions) => Promise<void>;
10
+ //# sourceMappingURL=narrate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"narrate.d.ts","sourceRoot":"","sources":["../../src/actions/narrate.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAItD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,aAAa,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAmGD,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CA6FxF,CAAC"}