@mulmocast/slide 0.5.0 → 0.5.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.
- package/.claude/skills/extend/SKILL.md +6 -6
- package/.claude/skills/extend/references/extended-script-schema.md +5 -5
- package/.claude/skills/md-to-mulmo/SKILL.md +8 -8
- package/.claude/skills/narrate/SKILL.md +8 -8
- package/.claude/skills/narrate/references/extended-script-schema.md +5 -5
- package/README.md +17 -17
- package/lib/actions/extend-scaffold.d.ts +2 -2
- package/lib/actions/extend-scaffold.d.ts.map +1 -1
- package/lib/actions/extend-scaffold.js +3 -3
- package/lib/actions/extend-scaffold.js.map +1 -1
- package/lib/actions/extend-validate.js +3 -3
- package/lib/actions/extend-validate.js.map +1 -1
- package/lib/actions/md-to-extended.d.ts +7 -7
- package/lib/actions/md-to-extended.d.ts.map +1 -1
- package/lib/actions/md-to-extended.js +20 -20
- package/lib/actions/md-to-extended.js.map +1 -1
- package/lib/actions/narrate.d.ts.map +1 -1
- package/lib/actions/narrate.js +6 -6
- package/lib/actions/narrate.js.map +1 -1
- package/lib/actions/preview.js +1 -1
- package/lib/actions/preview.js.map +1 -1
- package/lib/cli.js +7 -7
- package/lib/cli.js.map +1 -1
- package/lib/convert/marp.js +1 -1
- package/lib/convert/marp.js.map +1 -1
- package/lib/convert/movie.d.ts.map +1 -1
- package/lib/convert/movie.js +2 -2
- package/lib/convert/movie.js.map +1 -1
- package/package.json +7 -6
- package/lib/convert/pdfvision.d.ts +0 -14
- package/lib/convert/pdfvision.d.ts.map +0 -1
- package/lib/convert/pdfvision.js +0 -247
- package/lib/convert/pdfvision.js.map +0 -1
- package/lib/utils/document-analysis.d.ts +0 -43
- package/lib/utils/document-analysis.d.ts.map +0 -1
- package/lib/utils/document-analysis.js +0 -118
- package/lib/utils/document-analysis.js.map +0 -1
- package/lib/utils/narration-generator.d.ts +0 -14
- package/lib/utils/narration-generator.d.ts.map +0 -1
- package/lib/utils/narration-generator.js +0 -68
- package/lib/utils/narration-generator.js.map +0 -1
- package/lib/utils/vision-provider.d.ts +0 -12
- package/lib/utils/vision-provider.d.ts.map +0 -1
- package/lib/utils/vision-provider.js +0 -105
- package/lib/utils/vision-provider.js.map +0 -1
- package/lib/vue/assets/index-D6am8L57.css +0 -1
- package/lib/vue/assets/index-xq-ZNfmX.js +0 -2
- package/lib/vue/index.html +0 -13
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# /extend - MulmoScript to
|
|
1
|
+
# /extend - MulmoScript to ExtendedMulmoScript Conversion
|
|
2
2
|
|
|
3
|
-
Convert a MulmoScript JSON into an
|
|
3
|
+
Convert a MulmoScript JSON into an ExtendedMulmoScript by adding `scriptMeta` and `beats[].meta` metadata fields. The metadata is used by mulmocast-preprocessor's AI features (summarize, query).
|
|
4
4
|
|
|
5
5
|
## Invocation
|
|
6
6
|
|
|
@@ -14,9 +14,9 @@ This project uses multiple CLI tools. Do NOT confuse them:
|
|
|
14
14
|
|
|
15
15
|
| Command | Package | Purpose | Input |
|
|
16
16
|
|---------|---------|---------|-------|
|
|
17
|
-
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold
|
|
17
|
+
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedMulmoScript | Presentation files (.pdf, .pptx, .md, .key) |
|
|
18
18
|
| `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `{basename}.json` |
|
|
19
|
-
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert
|
|
19
|
+
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedMulmoScript → MulmoScript, query, summarize | `extended_script.json` |
|
|
20
20
|
|
|
21
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
22
|
|
|
@@ -101,7 +101,7 @@ Based on the analysis, generate:
|
|
|
101
101
|
- If the beat's `text` field is empty and `extracted_texts.json` is available, generate a concise narration text based on the extracted text. The narration should be a natural spoken summary of the slide content, NOT a verbatim copy of the extracted text.
|
|
102
102
|
- If the beat already has `text`, preserve it as-is.
|
|
103
103
|
|
|
104
|
-
### Step 4: Build
|
|
104
|
+
### Step 4: Build ExtendedMulmoScript
|
|
105
105
|
|
|
106
106
|
1. Start with the original MulmoScript (preserve ALL existing fields exactly)
|
|
107
107
|
2. Add `scriptMeta` at the top level
|
|
@@ -117,7 +117,7 @@ Based on the analysis, generate:
|
|
|
117
117
|
2. Write the JSON with 2-space indentation
|
|
118
118
|
3. Run `{cli} extend validate <output_path>` to validate against the schema
|
|
119
119
|
4. If validation fails, fix the errors and re-write the file, then validate again
|
|
120
|
-
5. Generate MulmoScript from
|
|
120
|
+
5. Generate MulmoScript from ExtendedMulmoScript using the preprocessor:
|
|
121
121
|
```bash
|
|
122
122
|
npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
|
|
123
123
|
```
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ExtendedMulmoScript Schema Reference
|
|
2
2
|
|
|
3
|
-
This document defines the
|
|
3
|
+
This document defines the ExtendedMulmoScript format used by `mulmocast-preprocessor`.
|
|
4
4
|
Canonical source: `@mulmocast/extended-types` npm package (`mulmocast-plus/packages/mulmocast-extended-types/src/index.ts`)
|
|
5
5
|
|
|
6
6
|
## Type Definitions
|
|
@@ -33,7 +33,7 @@ Profile-specific content overrides (not generated by `/extend`).
|
|
|
33
33
|
}
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
###
|
|
36
|
+
### ExtendedMulmoBeat
|
|
37
37
|
|
|
38
38
|
A beat with optional `variants` and `meta` fields (extends MulmoBeat).
|
|
39
39
|
|
|
@@ -99,14 +99,14 @@ Profile display information (not generated by `/extend`).
|
|
|
99
99
|
}
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
###
|
|
102
|
+
### ExtendedMulmoScript
|
|
103
103
|
|
|
104
104
|
The top-level type (extends MulmoScript).
|
|
105
105
|
|
|
106
106
|
```typescript
|
|
107
107
|
{
|
|
108
108
|
// ... all MulmoScript fields preserved ...
|
|
109
|
-
beats:
|
|
109
|
+
beats: ExtendedMulmoBeat[]; // Beats with meta
|
|
110
110
|
outputProfiles?: Record<string, OutputProfile>; // Profile definitions
|
|
111
111
|
scriptMeta?: ScriptMeta; // Script-level metadata
|
|
112
112
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# /md-to-mulmo - Markdown to
|
|
1
|
+
# /md-to-mulmo - Markdown to ExtendedMulmoScript Conversion
|
|
2
2
|
|
|
3
|
-
Convert a structured markdown document into an
|
|
3
|
+
Convert a structured markdown document into an ExtendedMulmoScript with intelligent beat allocation, narration, metadata, and variant support for detailed/short output profiles.
|
|
4
4
|
|
|
5
5
|
## Invocation
|
|
6
6
|
|
|
@@ -12,9 +12,9 @@ Convert a structured markdown document into an ExtendedScript with intelligent b
|
|
|
12
12
|
|
|
13
13
|
| Command | Package | Purpose | Input |
|
|
14
14
|
|---------|---------|---------|-------|
|
|
15
|
-
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files, parse markdown, assemble
|
|
15
|
+
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files, parse markdown, assemble ExtendedMulmoScript | `.md`, `.pdf`, `.pptx`, etc. |
|
|
16
16
|
| `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `{basename}.json` |
|
|
17
|
-
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert
|
|
17
|
+
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedMulmoScript → MulmoScript, query, summarize | `extended_script.json` |
|
|
18
18
|
|
|
19
19
|
### CLI prefix for mulmo-slide
|
|
20
20
|
|
|
@@ -37,7 +37,7 @@ Run the parse-md command to extract document structure and generate JSON Schemas
|
|
|
37
37
|
|
|
38
38
|
This produces in `scripts/{basename}/`:
|
|
39
39
|
- `parsed_structure.json` — structured markdown sections with typed elements
|
|
40
|
-
- `extended-script.schema.json` —
|
|
40
|
+
- `extended-script.schema.json` — ExtendedMulmoScript JSON Schema (generated from Zod every run)
|
|
41
41
|
- `presentation-plan.schema.json` — intermediate format JSON Schema
|
|
42
42
|
|
|
43
43
|
### Step 2: Read Inputs
|
|
@@ -131,7 +131,7 @@ Write this to `scripts/{basename}/presentation_plan.json`.
|
|
|
131
131
|
|
|
132
132
|
### Step 4: Assemble and Validate
|
|
133
133
|
|
|
134
|
-
Run the assemble command to convert the plan to
|
|
134
|
+
Run the assemble command to convert the plan to ExtendedMulmoScript:
|
|
135
135
|
|
|
136
136
|
```bash
|
|
137
137
|
{cli} assemble-extended scripts/{basename}/presentation_plan.json
|
|
@@ -140,14 +140,14 @@ Run the assemble command to convert the plan to ExtendedScript:
|
|
|
140
140
|
This:
|
|
141
141
|
- Validates the plan against the JSON Schema (z.fromJSONSchema)
|
|
142
142
|
- Converts `isCore`/`shortNarration` → `variants`/`outputProfiles`
|
|
143
|
-
- Validates the result against
|
|
143
|
+
- Validates the result against ExtendedMulmoScript schema
|
|
144
144
|
- Outputs `scripts/{basename}/extended_script.json`
|
|
145
145
|
|
|
146
146
|
If validation fails, fix the plan and re-run.
|
|
147
147
|
|
|
148
148
|
### Step 5: Post-processing
|
|
149
149
|
|
|
150
|
-
Generate MulmoScript from
|
|
150
|
+
Generate MulmoScript from ExtendedMulmoScript:
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
153
|
npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# /narrate - Source File to Narrated
|
|
1
|
+
# /narrate - Source File to Narrated ExtendedMulmoScript
|
|
2
2
|
|
|
3
|
-
Convert any supported source file (PDF, PPTX, Markdown, Keynote) into a validated
|
|
3
|
+
Convert any supported source file (PDF, PPTX, Markdown, Keynote) into a validated ExtendedMulmoScript with AI-generated narration and metadata. This is the main entry point for the full pipeline.
|
|
4
4
|
|
|
5
5
|
## Invocation
|
|
6
6
|
|
|
@@ -16,9 +16,9 @@ This project uses multiple CLI tools. Do NOT confuse them:
|
|
|
16
16
|
|
|
17
17
|
| Command | Package | Purpose | Input |
|
|
18
18
|
|---------|---------|---------|-------|
|
|
19
|
-
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold
|
|
19
|
+
| `mulmo-slide` (or `yarn cli`) | `@mulmocast/slide` | Convert source files to MulmoScript, scaffold ExtendedMulmoScript | Presentation files (.pdf, .pptx, .md, .key) |
|
|
20
20
|
| `mulmo` | `mulmocast` | Generate movie/PDF/audio from MulmoScript | `{basename}.json` |
|
|
21
|
-
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert
|
|
21
|
+
| `mulmocast-preprocessor` | `mulmocast-preprocessor` | Convert ExtendedMulmoScript → MulmoScript, query, summarize | `extended_script.json` |
|
|
22
22
|
|
|
23
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.
|
|
24
24
|
|
|
@@ -35,9 +35,9 @@ Use this prefix (referred to as `{cli}` below) for `mulmo-slide` CLI calls in th
|
|
|
35
35
|
|
|
36
36
|
## Instructions
|
|
37
37
|
|
|
38
|
-
### Step 1: Scaffold
|
|
38
|
+
### Step 1: Scaffold ExtendedMulmoScript
|
|
39
39
|
|
|
40
|
-
Run the narrate CLI with `--scaffold-only` to convert the source and create the
|
|
40
|
+
Run the narrate CLI with `--scaffold-only` to convert the source and create the ExtendedMulmoScript skeleton in one step:
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
43
|
{cli} narrate <file> --scaffold-only
|
|
@@ -106,7 +106,7 @@ Based on the analysis, generate:
|
|
|
106
106
|
- `context`: Background info for AI query/summarize. Be substantive — don't just restate the slide
|
|
107
107
|
- `expectedQuestions`: 1-3 natural audience questions
|
|
108
108
|
|
|
109
|
-
### Step 5: Build and Write
|
|
109
|
+
### Step 5: Build and Write ExtendedMulmoScript
|
|
110
110
|
|
|
111
111
|
1. Start with the original MulmoScript (preserve ALL existing fields)
|
|
112
112
|
2. Add `scriptMeta` at the top level
|
|
@@ -135,7 +135,7 @@ Display a summary:
|
|
|
135
135
|
Then show the user the next steps they can take:
|
|
136
136
|
|
|
137
137
|
```
|
|
138
|
-
|
|
138
|
+
ExtendedMulmoScript is ready! Here's what you can do next:
|
|
139
139
|
|
|
140
140
|
## Query the content interactively
|
|
141
141
|
npx mulmocast-preprocessor query scripts/{basename}/extended_script.json -i
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
#
|
|
1
|
+
# ExtendedMulmoScript Schema Reference
|
|
2
2
|
|
|
3
|
-
This document defines the
|
|
3
|
+
This document defines the ExtendedMulmoScript format used by `mulmocast-preprocessor`.
|
|
4
4
|
Canonical source: `@mulmocast/extended-types` npm package (`mulmocast-plus/packages/mulmocast-extended-types/src/index.ts`)
|
|
5
5
|
|
|
6
6
|
## Type Definitions
|
|
@@ -33,7 +33,7 @@ Profile-specific content overrides (not generated by `/extend`).
|
|
|
33
33
|
}
|
|
34
34
|
```
|
|
35
35
|
|
|
36
|
-
###
|
|
36
|
+
### ExtendedMulmoBeat
|
|
37
37
|
|
|
38
38
|
A beat with optional `variants` and `meta` fields (extends MulmoBeat).
|
|
39
39
|
|
|
@@ -99,14 +99,14 @@ Profile display information (not generated by `/extend`).
|
|
|
99
99
|
}
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
-
###
|
|
102
|
+
### ExtendedMulmoScript
|
|
103
103
|
|
|
104
104
|
The top-level type (extends MulmoScript).
|
|
105
105
|
|
|
106
106
|
```typescript
|
|
107
107
|
{
|
|
108
108
|
// ... all MulmoScript fields preserved ...
|
|
109
|
-
beats:
|
|
109
|
+
beats: ExtendedMulmoBeat[]; // Beats with meta
|
|
110
110
|
outputProfiles?: Record<string, OutputProfile>; // Profile definitions
|
|
111
111
|
scriptMeta?: ScriptMeta; // Script-level metadata
|
|
112
112
|
}
|
package/README.md
CHANGED
|
@@ -137,12 +137,12 @@ Commands:
|
|
|
137
137
|
mulmo-slide keynote <file> Convert Keynote to MulmoScript (macOS only)
|
|
138
138
|
mulmo-slide movie <file> Generate movie from presentation
|
|
139
139
|
mulmo-slide bundle <file> Generate MulmoViewer bundle from presentation
|
|
140
|
-
mulmo-slide narrate <file> Generate narrated
|
|
140
|
+
mulmo-slide narrate <file> Generate narrated ExtendedMulmoScript (full pipeline)
|
|
141
141
|
mulmo-slide extend init Install Claude Code skills (/narrate, /extend)
|
|
142
|
-
mulmo-slide extend validate Validate
|
|
143
|
-
mulmo-slide extend scaffold Create
|
|
142
|
+
mulmo-slide extend validate Validate ExtendedMulmoScript JSON against schema
|
|
143
|
+
mulmo-slide extend scaffold Create ExtendedMulmoScript skeleton from MulmoScript
|
|
144
144
|
mulmo-slide parse-md <file> Parse markdown structure for LLM presentation planning
|
|
145
|
-
mulmo-slide assemble-extended <file> Assemble
|
|
145
|
+
mulmo-slide assemble-extended <file> Assemble ExtendedMulmoScript from presentation plan
|
|
146
146
|
```
|
|
147
147
|
|
|
148
148
|
The `convert` command auto-detects file format by extension (.pptx, .md, .key, .pdf).
|
|
@@ -564,7 +564,7 @@ mulmo-slide bundle presentation.pptx -f -g
|
|
|
564
564
|
|
|
565
565
|
## Narrate CLI
|
|
566
566
|
|
|
567
|
-
Generate a narrated
|
|
567
|
+
Generate a narrated ExtendedMulmoScript from any supported source file in one command. This automates the full pipeline: conversion to MulmoScript, LLM-based narration and metadata generation, and validation.
|
|
568
568
|
|
|
569
569
|
**Usage:**
|
|
570
570
|
|
|
@@ -584,7 +584,7 @@ yarn narrate samples/sample.pdf --scaffold-only
|
|
|
584
584
|
|
|
585
585
|
**Options:**
|
|
586
586
|
- `-l, --lang` - Language for narration (en, ja, fr, de)
|
|
587
|
-
- `--scaffold-only` - Only create
|
|
587
|
+
- `--scaffold-only` - Only create ExtendedMulmoScript skeleton (no LLM). Useful as preparation for Claude Code `/narrate` analysis
|
|
588
588
|
- `-f, --force` - Force regenerate MulmoScript even if it exists
|
|
589
589
|
- `-s, --separator` - Slide separator mode (for Markdown files)
|
|
590
590
|
- `--mermaid` - Convert mermaid code blocks (for Markdown files)
|
|
@@ -593,7 +593,7 @@ yarn narrate samples/sample.pdf --scaffold-only
|
|
|
593
593
|
|
|
594
594
|
### Extend Scaffold
|
|
595
595
|
|
|
596
|
-
Create an
|
|
596
|
+
Create an ExtendedMulmoScript skeleton from an existing MulmoScript without any LLM calls. This adds beat IDs, empty metadata fields, and imports extracted texts as notes.
|
|
597
597
|
|
|
598
598
|
```bash
|
|
599
599
|
mulmo-slide extend scaffold scripts/<basename>/<basename>.json
|
|
@@ -602,15 +602,15 @@ mulmo-slide extend scaffold scripts/<basename>/<basename>.json
|
|
|
602
602
|
yarn cli extend scaffold scripts/<basename>/<basename>.json
|
|
603
603
|
```
|
|
604
604
|
|
|
605
|
-
## Markdown to
|
|
605
|
+
## Markdown to ExtendedMulmoScript (LLM-assisted)
|
|
606
606
|
|
|
607
|
-
Convert a structured markdown document into an
|
|
607
|
+
Convert a structured markdown document into an ExtendedMulmoScript with intelligent beat allocation, narration, and metadata. This is a multi-step process using the `/md-to-mulmo` Claude Code skill.
|
|
608
608
|
|
|
609
609
|
### Pipeline Overview
|
|
610
610
|
|
|
611
611
|
1. **Parse** (`parse-md`): Extract document structure and generate JSON Schemas
|
|
612
612
|
2. **Plan** (LLM via `/md-to-mulmo` skill): Create presentation plan with beat allocation
|
|
613
|
-
3. **Assemble** (`assemble-extended`): Convert plan to
|
|
613
|
+
3. **Assemble** (`assemble-extended`): Convert plan to ExtendedMulmoScript with variants
|
|
614
614
|
|
|
615
615
|
### Usage
|
|
616
616
|
|
|
@@ -620,20 +620,20 @@ mulmo-slide parse-md path/to/document.md
|
|
|
620
620
|
|
|
621
621
|
# Step 2: Use /md-to-mulmo skill in Claude Code (creates presentation_plan.json)
|
|
622
622
|
|
|
623
|
-
# Step 3: Assemble
|
|
623
|
+
# Step 3: Assemble ExtendedMulmoScript from plan
|
|
624
624
|
mulmo-slide assemble-extended scripts/{basename}/presentation_plan.json
|
|
625
625
|
|
|
626
|
-
# Step 4: Generate MulmoScript from
|
|
626
|
+
# Step 4: Generate MulmoScript from ExtendedMulmoScript
|
|
627
627
|
npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{basename}/{basename}.json
|
|
628
628
|
```
|
|
629
629
|
|
|
630
630
|
**Output of `parse-md`:**
|
|
631
631
|
- `scripts/{basename}/parsed_structure.json` — structured markdown sections
|
|
632
|
-
- `scripts/{basename}/extended-script.schema.json` —
|
|
632
|
+
- `scripts/{basename}/extended-script.schema.json` — ExtendedMulmoScript JSON Schema
|
|
633
633
|
- `scripts/{basename}/presentation-plan.schema.json` — intermediate plan schema
|
|
634
634
|
|
|
635
635
|
**Output of `assemble-extended`:**
|
|
636
|
-
- `scripts/{basename}/extended_script.json` — validated
|
|
636
|
+
- `scripts/{basename}/extended_script.json` — validated ExtendedMulmoScript with output profiles
|
|
637
637
|
|
|
638
638
|
### Setup
|
|
639
639
|
|
|
@@ -649,7 +649,7 @@ Then use `/md-to-mulmo path/to/document.md` in Claude Code.
|
|
|
649
649
|
|
|
650
650
|
> **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.
|
|
651
651
|
|
|
652
|
-
The `/narrate` skill converts any supported source file into a narrated
|
|
652
|
+
The `/narrate` skill converts any supported source file into a narrated ExtendedMulmoScript in one step. It handles the full pipeline: conversion, narration generation, metadata, and validation.
|
|
653
653
|
|
|
654
654
|
### Setup
|
|
655
655
|
|
|
@@ -702,9 +702,9 @@ npx mulmocast-preprocessor scripts/{basename}/extended_script.json -o scripts/{b
|
|
|
702
702
|
npx mulmo movie scripts/{basename}/{basename}.json
|
|
703
703
|
```
|
|
704
704
|
|
|
705
|
-
### Validating
|
|
705
|
+
### Validating ExtendedMulmoScript
|
|
706
706
|
|
|
707
|
-
Validate an
|
|
707
|
+
Validate an ExtendedMulmoScript JSON file against the schema:
|
|
708
708
|
|
|
709
709
|
```bash
|
|
710
710
|
mulmo-slide extend validate scripts/simple_text/extended_script.json
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { MulmoScript } from "@mulmocast/types";
|
|
2
|
-
import type {
|
|
3
|
-
export declare const
|
|
2
|
+
import type { ExtendedMulmoScript } from "@mulmocast/extended-types";
|
|
3
|
+
export declare const scaffoldExtendedMulmoScript: (mulmoScript: MulmoScript, extractedTexts: string[] | null) => ExtendedMulmoScript;
|
|
4
4
|
export declare const runExtendScaffold: (filePath: string) => void;
|
|
5
5
|
//# sourceMappingURL=extend-scaffold.d.ts.map
|
|
@@ -1 +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,
|
|
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,mBAAmB,EAA+B,MAAM,2BAA2B,CAAC;AAyBlG,eAAO,MAAM,2BAA2B,GACtC,aAAa,WAAW,EACxB,gBAAgB,MAAM,EAAE,GAAG,IAAI,KAC9B,mBAWF,CAAC;AAgCF,eAAO,MAAM,iBAAiB,GAAI,UAAU,MAAM,KAAG,IAiBpD,CAAC"}
|
|
@@ -18,7 +18,7 @@ const addBeatMeta = (beats, extractedTexts) => {
|
|
|
18
18
|
return { ...beat, meta };
|
|
19
19
|
});
|
|
20
20
|
};
|
|
21
|
-
export const
|
|
21
|
+
export const scaffoldExtendedMulmoScript = (mulmoScript, extractedTexts) => {
|
|
22
22
|
const beats = addBeatMeta(addBeatIds(mulmoScript.beats), extractedTexts);
|
|
23
23
|
// Set defaults first so the spread preserves existing values
|
|
24
24
|
// (JSON may include scriptMeta/outputProfiles not in MulmoScript type)
|
|
@@ -36,7 +36,7 @@ const buildSummary = (mulmoScript, result, outputPath) => ({
|
|
|
36
36
|
outputPath,
|
|
37
37
|
});
|
|
38
38
|
const printSummary = (summary) => {
|
|
39
|
-
console.log(`\n✓ Scaffolded
|
|
39
|
+
console.log(`\n✓ Scaffolded ExtendedMulmoScript: ${summary.outputPath}`);
|
|
40
40
|
console.log(` Beats: ${summary.beatCount}`);
|
|
41
41
|
if (summary.idsAdded > 0) {
|
|
42
42
|
console.log(` IDs added: ${summary.idsAdded}`);
|
|
@@ -55,7 +55,7 @@ export const runExtendScaffold = (filePath) => {
|
|
|
55
55
|
const mulmoScript = readJsonFile(resolvedPath);
|
|
56
56
|
const dir = path.dirname(resolvedPath);
|
|
57
57
|
const extractedTexts = loadExtractedTexts(dir);
|
|
58
|
-
const result =
|
|
58
|
+
const result = scaffoldExtendedMulmoScript(mulmoScript, extractedTexts);
|
|
59
59
|
const outputPath = path.join(dir, "extended_script.json");
|
|
60
60
|
writeJsonFile(outputPath, result);
|
|
61
61
|
printSummary(buildSummary(mulmoScript, result, outputPath));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-scaffold.js","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE9E,MAAM,UAAU,GAAG,CAAC,KAAkB,
|
|
1
|
+
{"version":3,"file":"extend-scaffold.js","sourceRoot":"","sources":["../../src/actions/extend-scaffold.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as fs from "fs";
|
|
2
2
|
import * as path from "path";
|
|
3
|
-
import {
|
|
3
|
+
import { extendedMulmoScriptSchema } from "@mulmocast/extended-types";
|
|
4
4
|
import { formatZodError } from "./common.js";
|
|
5
5
|
const summarizeScript = (data) => {
|
|
6
6
|
const script = data;
|
|
@@ -32,14 +32,14 @@ export const runExtendValidate = (filePath) => {
|
|
|
32
32
|
console.error(`Failed to parse JSON: ${message}`);
|
|
33
33
|
process.exit(1);
|
|
34
34
|
}
|
|
35
|
-
const result =
|
|
35
|
+
const result = extendedMulmoScriptSchema.safeParse(data);
|
|
36
36
|
if (!result.success) {
|
|
37
37
|
console.error(`\n✗ Validation failed: ${resolvedPath}\n`);
|
|
38
38
|
console.error(formatZodError(result.error));
|
|
39
39
|
process.exit(1);
|
|
40
40
|
}
|
|
41
41
|
const summary = summarizeScript(data);
|
|
42
|
-
console.log(`\n✓ Valid
|
|
42
|
+
console.log(`\n✓ Valid ExtendedMulmoScript: ${resolvedPath}`);
|
|
43
43
|
console.log(` Beats: ${summary.beatCount}`);
|
|
44
44
|
console.log(` ScriptMeta: ${summary.hasScriptMeta ? "yes" : "no"}`);
|
|
45
45
|
console.log(` Meta coverage: ${summary.metaCoverage}%`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"extend-validate.js","sourceRoot":"","sources":["../../src/actions/extend-validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Markdown →
|
|
2
|
+
* Markdown → ExtendedMulmoScript pipeline
|
|
3
3
|
*
|
|
4
4
|
* Step 1: Generate JSON Schema from Zod (every run) + parse markdown
|
|
5
|
-
* Step 3: Assemble
|
|
6
|
-
* Step 4: Validate against
|
|
5
|
+
* Step 3: Assemble ExtendedMulmoScript from presentation plan
|
|
6
|
+
* Step 4: Validate against ExtendedMulmoScript schema
|
|
7
7
|
*
|
|
8
8
|
* Step 2 (LLM presentation planning) is handled by the /md-to-mulmo skill.
|
|
9
9
|
*/
|
|
10
|
-
import type {
|
|
10
|
+
import type { ExtendedMulmoScript } from "@mulmocast/extended-types";
|
|
11
11
|
interface BeatPlan {
|
|
12
12
|
id: string;
|
|
13
13
|
sourceSections: string[];
|
|
@@ -34,10 +34,10 @@ export declare const generateSchemas: (outputDir: string) => {
|
|
|
34
34
|
planSchemaPath: string;
|
|
35
35
|
};
|
|
36
36
|
export declare const runParseMd: (inputPath: string) => void;
|
|
37
|
-
export declare const
|
|
38
|
-
export declare const
|
|
37
|
+
export declare const assembleExtendedMulmoScript: (plan: PresentationPlan) => ExtendedMulmoScript;
|
|
38
|
+
export declare const validateExtendedMulmoScript: (data: unknown) => {
|
|
39
39
|
success: true;
|
|
40
|
-
data:
|
|
40
|
+
data: ExtendedMulmoScript;
|
|
41
41
|
} | {
|
|
42
42
|
success: false;
|
|
43
43
|
errors: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md-to-extended.d.ts","sourceRoot":"","sources":["../../src/actions/md-to-extended.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"md-to-extended.d.ts","sourceRoot":"","sources":["../../src/actions/md-to-extended.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAQH,OAAO,KAAK,EACV,mBAAmB,EAGpB,MAAM,2BAA2B,CAAC;AAMnC,UAAU,QAAQ;IAChB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE;QACJ,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9B,CAAC;CACH;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,KAAK,EAAE,QAAQ,EAAE,CAAC;CACnB;AASD,eAAO,MAAM,eAAe,GAC1B,WAAW,MAAM,KAChB;IAAE,kBAAkB,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAWtD,CAAC;AAIF,eAAO,MAAM,UAAU,GAAI,WAAW,MAAM,KAAG,IAkC9C,CAAC;AAkCF,eAAO,MAAM,2BAA2B,GAAI,MAAM,gBAAgB,KAAG,mBA+BpE,CAAC;AAIF,eAAO,MAAM,2BAA2B,GACtC,MAAM,OAAO,KACZ;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAMjF,CAAC;AASF,eAAO,MAAM,wBAAwB,GACnC,MAAM,OAAO,KACZ;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAO9E,CAAC;AAIF,eAAO,MAAM,mBAAmB,GAAI,WAAW,MAAM,KAAG,IA+CvD,CAAC"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Markdown →
|
|
2
|
+
* Markdown → ExtendedMulmoScript pipeline
|
|
3
3
|
*
|
|
4
4
|
* Step 1: Generate JSON Schema from Zod (every run) + parse markdown
|
|
5
|
-
* Step 3: Assemble
|
|
6
|
-
* Step 4: Validate against
|
|
5
|
+
* Step 3: Assemble ExtendedMulmoScript from presentation plan
|
|
6
|
+
* Step 4: Validate against ExtendedMulmoScript schema
|
|
7
7
|
*
|
|
8
8
|
* Step 2 (LLM presentation planning) is handled by the /md-to-mulmo skill.
|
|
9
9
|
*/
|
|
@@ -12,13 +12,13 @@ import * as path from "path";
|
|
|
12
12
|
import { fileURLToPath } from "url";
|
|
13
13
|
import { toJSONSchema, fromJSONSchema } from "zod";
|
|
14
14
|
import { currentMulmoScriptVersion } from "mulmocast";
|
|
15
|
-
import {
|
|
15
|
+
import { extendedMulmoScriptSchema } from "@mulmocast/extended-types";
|
|
16
16
|
import { parseMarkdown } from "../utils/markdown-parser.js";
|
|
17
17
|
import { readJsonFile, writeJsonFile } from "./common.js";
|
|
18
18
|
// --- Step 1A: Generate JSON Schema files ---
|
|
19
19
|
const PLAN_SCHEMA_PATH = path.resolve(path.dirname(fileURLToPath(import.meta.url)), "../../references/presentation-plan.schema.json");
|
|
20
20
|
export const generateSchemas = (outputDir) => {
|
|
21
|
-
const extendedSchema = toJSONSchema(
|
|
21
|
+
const extendedSchema = toJSONSchema(extendedMulmoScriptSchema);
|
|
22
22
|
const extendedSchemaPath = path.join(outputDir, "extended-script.schema.json");
|
|
23
23
|
writeJsonFile(extendedSchemaPath, extendedSchema);
|
|
24
24
|
// Copy plan schema to output dir
|
|
@@ -43,7 +43,7 @@ export const runParseMd = (inputPath) => {
|
|
|
43
43
|
// Step 1A: Generate schemas
|
|
44
44
|
console.log("Generating JSON Schemas...");
|
|
45
45
|
const { extendedSchemaPath, planSchemaPath } = generateSchemas(outputDir);
|
|
46
|
-
console.log(`
|
|
46
|
+
console.log(` ExtendedMulmoScript schema: ${extendedSchemaPath}`);
|
|
47
47
|
console.log(` Plan schema: ${planSchemaPath}`);
|
|
48
48
|
// Step 1B: Parse markdown
|
|
49
49
|
console.log("Parsing markdown structure...");
|
|
@@ -57,7 +57,7 @@ export const runParseMd = (inputPath) => {
|
|
|
57
57
|
console.log(` Frontmatter: ${parsed.frontmatter ? "yes" : "no"}`);
|
|
58
58
|
console.log(`\nNext: Run /md-to-mulmo skill to create presentation_plan.json`);
|
|
59
59
|
};
|
|
60
|
-
// --- Step 3: Assemble
|
|
60
|
+
// --- Step 3: Assemble ExtendedMulmoScript from presentation plan ---
|
|
61
61
|
const buildVariants = (beat) => {
|
|
62
62
|
if (beat.isCore) {
|
|
63
63
|
if (beat.shortNarration != null) {
|
|
@@ -68,7 +68,7 @@ const buildVariants = (beat) => {
|
|
|
68
68
|
// Non-core beats are skipped in short version
|
|
69
69
|
return { short: { skip: true } };
|
|
70
70
|
};
|
|
71
|
-
const
|
|
71
|
+
const buildExtendedMulmoBeat = (beat) => {
|
|
72
72
|
const variants = buildVariants(beat);
|
|
73
73
|
const result = {
|
|
74
74
|
id: beat.id,
|
|
@@ -84,7 +84,7 @@ const buildExtendedBeat = (beat) => {
|
|
|
84
84
|
}
|
|
85
85
|
return result;
|
|
86
86
|
};
|
|
87
|
-
export const
|
|
87
|
+
export const assembleExtendedMulmoScript = (plan) => {
|
|
88
88
|
const coreCount = plan.beats.filter((b) => b.isCore).length;
|
|
89
89
|
const optionalCount = plan.beats.length - coreCount;
|
|
90
90
|
// Build as input (without defaulted fields) and parse through schema to fill defaults
|
|
@@ -103,17 +103,17 @@ export const assembleExtendedScript = (plan) => {
|
|
|
103
103
|
},
|
|
104
104
|
},
|
|
105
105
|
scriptMeta: plan.scriptMeta,
|
|
106
|
-
beats: plan.beats.map(
|
|
106
|
+
beats: plan.beats.map(buildExtendedMulmoBeat),
|
|
107
107
|
};
|
|
108
|
-
const result =
|
|
108
|
+
const result = extendedMulmoScriptSchema.safeParse(input);
|
|
109
109
|
if (!result.success) {
|
|
110
|
-
throw new Error(`Assembly produced invalid
|
|
110
|
+
throw new Error(`Assembly produced invalid ExtendedMulmoScript: ${JSON.stringify(result.error.format())}`);
|
|
111
111
|
}
|
|
112
112
|
return result.data;
|
|
113
113
|
};
|
|
114
114
|
// --- Step 4: Validate ---
|
|
115
|
-
export const
|
|
116
|
-
const result =
|
|
115
|
+
export const validateExtendedMulmoScript = (data) => {
|
|
116
|
+
const result = extendedMulmoScriptSchema.safeParse(data);
|
|
117
117
|
if (result.success) {
|
|
118
118
|
return { success: true, data: result.data };
|
|
119
119
|
}
|
|
@@ -150,13 +150,13 @@ export const runAssembleExtended = (inputPath) => {
|
|
|
150
150
|
}
|
|
151
151
|
const plan = planResult.data;
|
|
152
152
|
console.log(` Beats: ${plan.beats.length} (core: ${plan.beats.filter((b) => b.isCore).length})`);
|
|
153
|
-
// Assemble
|
|
154
|
-
console.log("Assembling
|
|
155
|
-
const extended =
|
|
153
|
+
// Assemble ExtendedMulmoScript
|
|
154
|
+
console.log("Assembling ExtendedMulmoScript...");
|
|
155
|
+
const extended = assembleExtendedMulmoScript(plan);
|
|
156
156
|
// Validate
|
|
157
|
-
const validationResult =
|
|
157
|
+
const validationResult = validateExtendedMulmoScript(extended);
|
|
158
158
|
if (!validationResult.success) {
|
|
159
|
-
console.error("
|
|
159
|
+
console.error("ExtendedMulmoScript validation failed:");
|
|
160
160
|
console.error(validationResult.errors);
|
|
161
161
|
process.exit(1);
|
|
162
162
|
}
|
|
@@ -165,7 +165,7 @@ export const runAssembleExtended = (inputPath) => {
|
|
|
165
165
|
const outputPath = path.join(dir, "extended_script.json");
|
|
166
166
|
writeJsonFile(outputPath, validationResult.data);
|
|
167
167
|
const coreCount = plan.beats.filter((b) => b.isCore).length;
|
|
168
|
-
console.log(`\n✓
|
|
168
|
+
console.log(`\n✓ ExtendedMulmoScript generated: ${outputPath}`);
|
|
169
169
|
console.log(` Total beats: ${plan.beats.length}`);
|
|
170
170
|
console.log(` Core (all profiles): ${coreCount}`);
|
|
171
171
|
console.log(` Detailed-only: ${plan.beats.length - coreCount}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"md-to-extended.js","sourceRoot":"","sources":["../../src/actions/md-to-extended.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,KAAK,CAAC;AACnD,OAAO,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"md-to-extended.js","sourceRoot":"","sources":["../../src/actions/md-to-extended.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +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;
|
|
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;AAsGD,eAAO,MAAM,UAAU,GAAU,UAAU,MAAM,EAAE,SAAS,cAAc,KAAG,OAAO,CAAC,IAAI,CA6FxF,CAAC"}
|