@mulmocast/slide 0.1.7 → 0.3.0
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 +120 -0
- package/.claude/skills/extend/references/extended-script-schema.md +153 -0
- package/.claude/skills/narrate/SKILL.md +145 -0
- package/.claude/skills/narrate/references/extended-script-schema.md +153 -0
- package/README.md +154 -0
- package/lib/actions/bundle.js +14 -20
- package/lib/actions/bundle.js.map +1 -1
- package/lib/actions/common.d.ts +1 -1
- package/lib/actions/common.d.ts.map +1 -1
- package/lib/actions/common.js +26 -66
- package/lib/actions/common.js.map +1 -1
- package/lib/actions/extend-init.d.ts +2 -0
- package/lib/actions/extend-init.d.ts.map +1 -0
- package/lib/actions/extend-init.js +49 -0
- package/lib/actions/extend-init.js.map +1 -0
- package/lib/actions/extend-validate.d.ts +2 -0
- package/lib/actions/extend-validate.d.ts.map +1 -0
- package/lib/actions/extend-validate.js +56 -0
- package/lib/actions/extend-validate.js.map +1 -0
- package/lib/actions/movie.js +14 -20
- package/lib/actions/movie.js.map +1 -1
- package/lib/actions/preview.d.ts.map +1 -1
- package/lib/actions/preview.js +19 -55
- package/lib/actions/preview.js.map +1 -1
- package/lib/actions/upload.js +5 -44
- package/lib/actions/upload.js.map +1 -1
- package/lib/cli.js +60 -73
- package/lib/cli.js.map +1 -1
- package/lib/convert/markdown-plugins/directive.d.ts +1 -1
- package/lib/convert/markdown-plugins/directive.d.ts.map +1 -1
- package/lib/convert/markdown-plugins/directive.js +2 -5
- package/lib/convert/markdown-plugins/directive.js.map +1 -1
- package/lib/convert/markdown-plugins/index.d.ts +2 -2
- package/lib/convert/markdown-plugins/index.d.ts.map +1 -1
- package/lib/convert/markdown-plugins/index.js +23 -30
- package/lib/convert/markdown-plugins/index.js.map +1 -1
- package/lib/convert/markdown-plugins/layout.d.ts +91 -0
- package/lib/convert/markdown-plugins/layout.d.ts.map +1 -0
- package/lib/convert/markdown-plugins/layout.js +251 -0
- package/lib/convert/markdown-plugins/layout.js.map +1 -0
- package/lib/convert/markdown-plugins/mermaid.d.ts +1 -1
- package/lib/convert/markdown-plugins/mermaid.d.ts.map +1 -1
- package/lib/convert/markdown-plugins/mermaid.js +2 -5
- package/lib/convert/markdown-plugins/mermaid.js.map +1 -1
- package/lib/convert/markdown-plugins/types.d.ts +2 -0
- package/lib/convert/markdown-plugins/types.d.ts.map +1 -1
- package/lib/convert/markdown-plugins/types.js +1 -2
- package/lib/convert/markdown-plugins/types.js.map +1 -1
- package/lib/convert/markdown-transform.d.ts +42 -0
- package/lib/convert/markdown-transform.d.ts.map +1 -0
- package/lib/convert/markdown-transform.js +58 -0
- package/lib/convert/markdown-transform.js.map +1 -0
- package/lib/convert/markdown-utils-common.d.ts +21 -0
- package/lib/convert/markdown-utils-common.d.ts.map +1 -0
- package/lib/convert/markdown-utils-common.js +51 -0
- package/lib/convert/markdown-utils-common.js.map +1 -0
- package/lib/convert/markdown-utils.d.ts +4 -17
- package/lib/convert/markdown-utils.d.ts.map +1 -1
- package/lib/convert/markdown-utils.js +10 -91
- package/lib/convert/markdown-utils.js.map +1 -1
- package/lib/convert/markdown.d.ts +1 -1
- package/lib/convert/markdown.d.ts.map +1 -1
- package/lib/convert/markdown.js +36 -88
- package/lib/convert/markdown.js.map +1 -1
- package/lib/convert/marp.d.ts +4 -11
- package/lib/convert/marp.d.ts.map +1 -1
- package/lib/convert/marp.js +25 -119
- package/lib/convert/marp.js.map +1 -1
- package/lib/convert/movie.d.ts +1 -1
- package/lib/convert/movie.d.ts.map +1 -1
- package/lib/convert/movie.js +26 -64
- package/lib/convert/movie.js.map +1 -1
- package/lib/convert/movie_bundle.js +5 -44
- package/lib/convert/movie_bundle.js.map +1 -1
- package/lib/convert/pdf.d.ts +2 -1
- package/lib/convert/pdf.d.ts.map +1 -1
- package/lib/convert/pdf.js +27 -56
- package/lib/convert/pdf.js.map +1 -1
- package/lib/convert/pptx.d.ts +1 -1
- package/lib/convert/pptx.d.ts.map +1 -1
- package/lib/convert/pptx.js +31 -68
- package/lib/convert/pptx.js.map +1 -1
- package/lib/index.browser.d.ts +13 -0
- package/lib/index.browser.d.ts.map +1 -0
- package/lib/index.browser.js +13 -0
- package/lib/index.browser.js.map +1 -0
- package/lib/index.common.d.ts +17 -0
- package/lib/index.common.d.ts.map +1 -0
- package/lib/index.common.js +18 -0
- package/lib/index.common.js.map +1 -0
- package/lib/index.node.d.ts +11 -0
- package/lib/index.node.d.ts.map +1 -0
- package/lib/index.node.js +13 -0
- package/lib/index.node.js.map +1 -0
- package/lib/utils/audio-save.js +8 -49
- package/lib/utils/audio-save.js.map +1 -1
- package/lib/utils/bundle-server.js +6 -45
- package/lib/utils/bundle-server.js.map +1 -1
- package/lib/utils/dependencies.js +6 -43
- package/lib/utils/dependencies.js.map +1 -1
- package/lib/utils/lang-common.d.ts +10 -0
- package/lib/utils/lang-common.d.ts.map +1 -0
- package/lib/utils/lang-common.js +11 -0
- package/lib/utils/lang-common.js.map +1 -0
- package/lib/utils/lang.d.ts +3 -4
- package/lib/utils/lang.d.ts.map +1 -1
- package/lib/utils/lang.js +11 -21
- package/lib/utils/lang.js.map +1 -1
- package/lib/utils/llm.d.ts +1 -1
- package/lib/utils/llm.d.ts.map +1 -1
- package/lib/utils/llm.js +6 -46
- package/lib/utils/llm.js.map +1 -1
- package/lib/utils/pdf.d.ts +1 -1
- package/lib/utils/pdf.d.ts.map +1 -1
- package/lib/utils/pdf.js +13 -52
- package/lib/utils/pdf.js.map +1 -1
- package/lib/vue/main.js +4 -9
- package/lib/vue/main.js.map +1 -1
- package/package.json +22 -9
package/lib/actions/movie.js
CHANGED
|
@@ -1,44 +1,38 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
};
|
|
6
|
-
|
|
7
|
-
exports.runMulmoMovie = runMulmoMovie;
|
|
8
|
-
const mulmocast_1 = require("mulmocast");
|
|
9
|
-
const yargs_1 = __importDefault(require("yargs"));
|
|
10
|
-
const helpers_1 = require("yargs/helpers");
|
|
11
|
-
const common_1 = require("./common");
|
|
12
|
-
async function runMulmoMovie(mulmoScriptPath, outputDir, options = {}) {
|
|
2
|
+
import { audio, images, movie, translate, captions, MulmoStudioContextMethods } from "mulmocast";
|
|
3
|
+
import yargs from "yargs";
|
|
4
|
+
import { hideBin } from "yargs/helpers";
|
|
5
|
+
import { initializeContext, runAction } from "./common.js";
|
|
6
|
+
export async function runMulmoMovie(mulmoScriptPath, outputDir, options = {}) {
|
|
13
7
|
console.log(`\nGenerating movie with mulmo...`);
|
|
14
8
|
console.log(` Input: ${mulmoScriptPath}`);
|
|
15
9
|
console.log(` Output: ${outputDir}`);
|
|
16
|
-
const context = await
|
|
10
|
+
const context = await initializeContext(mulmoScriptPath, outputDir, {
|
|
17
11
|
targetLang: options.targetLang,
|
|
18
12
|
captionLang: options.captionLang,
|
|
19
13
|
});
|
|
20
14
|
const current = { context };
|
|
21
15
|
// Translate if needed (checks targetLang and captionLang)
|
|
22
|
-
if (
|
|
16
|
+
if (MulmoStudioContextMethods.needTranslate(current.context, true)) {
|
|
23
17
|
console.log(" Translating...");
|
|
24
|
-
current.context = await
|
|
18
|
+
current.context = await translate(current.context);
|
|
25
19
|
}
|
|
26
20
|
console.log(" Generating audio...");
|
|
27
|
-
current.context = await
|
|
21
|
+
current.context = await audio(current.context);
|
|
28
22
|
console.log(" Generating images...");
|
|
29
|
-
current.context = await
|
|
23
|
+
current.context = await images(current.context);
|
|
30
24
|
if (options.captionLang) {
|
|
31
25
|
console.log(` Generating captions (${options.captionLang})...`);
|
|
32
|
-
current.context = await
|
|
26
|
+
current.context = await captions(current.context);
|
|
33
27
|
}
|
|
34
28
|
console.log(" Creating movie...");
|
|
35
|
-
const result = await
|
|
29
|
+
const result = await movie(current.context);
|
|
36
30
|
if (!result) {
|
|
37
31
|
throw new Error("Movie generation failed");
|
|
38
32
|
}
|
|
39
33
|
}
|
|
40
34
|
async function main() {
|
|
41
|
-
const argv = await (
|
|
35
|
+
const argv = await yargs(hideBin(process.argv))
|
|
42
36
|
.usage("Usage: $0 <presentation-file> [options]")
|
|
43
37
|
.command("$0 <file>", "Generate movie from presentation", (yargs) => {
|
|
44
38
|
return yargs.positional("file", {
|
|
@@ -77,7 +71,7 @@ async function main() {
|
|
|
77
71
|
const captionLang = argv.c;
|
|
78
72
|
// Create a runner that captures options
|
|
79
73
|
const runner = (mulmoScriptPath, outputDir) => runMulmoMovie(mulmoScriptPath, outputDir, { targetLang, captionLang });
|
|
80
|
-
await
|
|
74
|
+
await runAction("Movie", argv.file, runner, {
|
|
81
75
|
force: argv.f,
|
|
82
76
|
generateText: argv.g,
|
|
83
77
|
});
|
package/lib/actions/movie.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"movie.js","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"movie.js","sourceRoot":"","sources":["../../src/actions/movie.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"preview.d.ts","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":";AAoCA,wBAAgB,kBAAkB,CAAC,IAAI,GAAE,MAAqB,GAAG,IAAI,CAiFpE"}
|
package/lib/actions/preview.js
CHANGED
|
@@ -1,63 +1,27 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.startPreviewServer = startPreviewServer;
|
|
41
|
-
const http = __importStar(require("http"));
|
|
42
|
-
const fs = __importStar(require("fs"));
|
|
43
|
-
const path = __importStar(require("path"));
|
|
44
|
-
const dotenv_1 = __importDefault(require("dotenv"));
|
|
45
|
-
const audio_save_1 = require("../utils/audio-save");
|
|
46
|
-
const bundle_server_1 = require("../utils/bundle-server");
|
|
2
|
+
import * as http from "http";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
import dotenv from "dotenv";
|
|
7
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
8
|
+
const __dirname = path.dirname(__filename);
|
|
9
|
+
import { saveBeatText, transcribeAudio, parseRequestBody, } from "../utils/audio-save.js";
|
|
10
|
+
import { findBundles, getMimeType, isValidFile, createFileStream } from "../utils/bundle-server.js";
|
|
47
11
|
// Load .env file
|
|
48
|
-
|
|
12
|
+
dotenv.config();
|
|
49
13
|
const DEFAULT_PORT = 3000;
|
|
50
14
|
// Serve static file
|
|
51
15
|
function serveFile(res, filePath) {
|
|
52
|
-
if (!
|
|
16
|
+
if (!isValidFile(filePath)) {
|
|
53
17
|
res.writeHead(404, { "Content-Type": "text/plain" });
|
|
54
18
|
res.end("Not Found");
|
|
55
19
|
return;
|
|
56
20
|
}
|
|
57
|
-
res.writeHead(200, { "Content-Type":
|
|
58
|
-
|
|
21
|
+
res.writeHead(200, { "Content-Type": getMimeType(filePath) });
|
|
22
|
+
createFileStream(filePath).pipe(res);
|
|
59
23
|
}
|
|
60
|
-
function startPreviewServer(port = DEFAULT_PORT) {
|
|
24
|
+
export function startPreviewServer(port = DEFAULT_PORT) {
|
|
61
25
|
const cwd = process.cwd();
|
|
62
26
|
const outputDir = path.join(cwd, "output");
|
|
63
27
|
// Find the Vue build directory
|
|
@@ -78,33 +42,33 @@ function startPreviewServer(port = DEFAULT_PORT) {
|
|
|
78
42
|
const pathname = url.pathname;
|
|
79
43
|
// API endpoint for bundles list
|
|
80
44
|
if (pathname === "/api/bundles") {
|
|
81
|
-
const bundles =
|
|
45
|
+
const bundles = findBundles(outputDir);
|
|
82
46
|
res.writeHead(200, { "Content-Type": "application/json" });
|
|
83
47
|
res.end(JSON.stringify(bundles));
|
|
84
48
|
return;
|
|
85
49
|
}
|
|
86
50
|
// API endpoint for saving recorded audio
|
|
87
51
|
if (pathname === "/api/save-beat-text" && req.method === "POST") {
|
|
88
|
-
const body = await
|
|
52
|
+
const body = await parseRequestBody(req);
|
|
89
53
|
if (!body) {
|
|
90
54
|
res.writeHead(400, { "Content-Type": "application/json" });
|
|
91
55
|
res.end(JSON.stringify({ success: false, error: "Invalid request body" }));
|
|
92
56
|
return;
|
|
93
57
|
}
|
|
94
|
-
const result =
|
|
58
|
+
const result = saveBeatText(outputDir, body);
|
|
95
59
|
res.writeHead(result.success ? 200 : 400, { "Content-Type": "application/json" });
|
|
96
60
|
res.end(JSON.stringify(result));
|
|
97
61
|
return;
|
|
98
62
|
}
|
|
99
63
|
// API endpoint for transcribing audio
|
|
100
64
|
if (pathname === "/api/transcribe" && req.method === "POST") {
|
|
101
|
-
const body = await
|
|
65
|
+
const body = await parseRequestBody(req);
|
|
102
66
|
if (!body) {
|
|
103
67
|
res.writeHead(400, { "Content-Type": "application/json" });
|
|
104
68
|
res.end(JSON.stringify({ success: false, error: "Invalid request body" }));
|
|
105
69
|
return;
|
|
106
70
|
}
|
|
107
|
-
const result = await
|
|
71
|
+
const result = await transcribeAudio(body);
|
|
108
72
|
res.writeHead(result.success ? 200 : 400, { "Content-Type": "application/json" });
|
|
109
73
|
res.end(JSON.stringify(result));
|
|
110
74
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"preview.js","sourceRoot":"","sources":["../../src/actions/preview.ts"],"names":[],"mappings":"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"}
|
package/lib/actions/upload.js
CHANGED
|
@@ -1,47 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env tsx
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
7
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
8
|
-
}
|
|
9
|
-
Object.defineProperty(o, k2, desc);
|
|
10
|
-
}) : (function(o, m, k, k2) {
|
|
11
|
-
if (k2 === undefined) k2 = k;
|
|
12
|
-
o[k2] = m[k];
|
|
13
|
-
}));
|
|
14
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
15
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
16
|
-
}) : function(o, v) {
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
exports.uploadBundleDir = uploadBundleDir;
|
|
41
|
-
const dotenv_1 = __importDefault(require("dotenv"));
|
|
42
|
-
const fs = __importStar(require("fs"));
|
|
43
|
-
const path = __importStar(require("path"));
|
|
44
|
-
dotenv_1.default.config({ quiet: true });
|
|
2
|
+
import dotenv from "dotenv";
|
|
3
|
+
import * as fs from "fs";
|
|
4
|
+
import * as path from "path";
|
|
5
|
+
dotenv.config({ quiet: true });
|
|
45
6
|
const API_BASE_URL = "https://mulmocast-app-dev.web.app/api/1.0";
|
|
46
7
|
const MAX_RETRIES = 3;
|
|
47
8
|
const INITIAL_DELAY_MS = 1000;
|
|
@@ -105,7 +66,7 @@ async function uploadFileToR2(sign, mediaDir) {
|
|
|
105
66
|
}
|
|
106
67
|
return false;
|
|
107
68
|
}
|
|
108
|
-
async function uploadBundleDir(bundleDir, apiKey) {
|
|
69
|
+
export async function uploadBundleDir(bundleDir, apiKey) {
|
|
109
70
|
const jsonFilePath = path.join(bundleDir, "mulmo_view.json");
|
|
110
71
|
if (!fs.existsSync(jsonFilePath)) {
|
|
111
72
|
throw new Error(`mulmo_view.json not found in ${bundleDir}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"upload.js","sourceRoot":"","sources":["../../src/actions/upload.ts"],"names":[],"mappings":"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"}
|
package/lib/cli.js
CHANGED
|
@@ -1,60 +1,22 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
}
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
o["default"] = v;
|
|
18
|
-
});
|
|
19
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
20
|
-
var ownKeys = function(o) {
|
|
21
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
22
|
-
var ar = [];
|
|
23
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
24
|
-
return ar;
|
|
25
|
-
};
|
|
26
|
-
return ownKeys(o);
|
|
27
|
-
};
|
|
28
|
-
return function (mod) {
|
|
29
|
-
if (mod && mod.__esModule) return mod;
|
|
30
|
-
var result = {};
|
|
31
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
32
|
-
__setModuleDefault(result, mod);
|
|
33
|
-
return result;
|
|
34
|
-
};
|
|
35
|
-
})();
|
|
36
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
37
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
38
|
-
};
|
|
39
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
-
const yargs_1 = __importDefault(require("yargs"));
|
|
41
|
-
const helpers_1 = require("yargs/helpers");
|
|
42
|
-
const marp_1 = require("./convert/marp");
|
|
43
|
-
const markdown_1 = require("./convert/markdown");
|
|
44
|
-
const pptx_1 = require("./convert/pptx");
|
|
45
|
-
const pdf_1 = require("./convert/pdf");
|
|
46
|
-
const movie_1 = require("./convert/movie");
|
|
47
|
-
const child_process_1 = require("child_process");
|
|
48
|
-
const path = __importStar(require("path"));
|
|
49
|
-
const fs = __importStar(require("fs"));
|
|
50
|
-
const lang_1 = require("./utils/lang");
|
|
51
|
-
const common_1 = require("./actions/common");
|
|
52
|
-
const movie_2 = require("./actions/movie");
|
|
53
|
-
const bundle_1 = require("./actions/bundle");
|
|
54
|
-
const preview_1 = require("./actions/preview");
|
|
2
|
+
import yargs from "yargs";
|
|
3
|
+
import { hideBin } from "yargs/helpers";
|
|
4
|
+
import { convertMarp } from "./convert/marp.js";
|
|
5
|
+
import { convertMarkdown } from "./convert/markdown.js";
|
|
6
|
+
import { convertPptx } from "./convert/pptx.js";
|
|
7
|
+
import { convertPdf } from "./convert/pdf.js";
|
|
8
|
+
import { convertMovie } from "./convert/movie.js";
|
|
9
|
+
import { execSync } from "child_process";
|
|
10
|
+
import * as path from "path";
|
|
11
|
+
import * as fs from "fs";
|
|
12
|
+
import { langOption } from "./utils/lang.js";
|
|
13
|
+
import { detectFileType, getBasename, convertToMulmoScript, getMulmoScriptPath, getKeynoteScriptPath, } from "./actions/common.js";
|
|
14
|
+
import { runMulmoMovie } from "./actions/movie.js";
|
|
15
|
+
import { runMulmoBundle } from "./actions/bundle.js";
|
|
16
|
+
import { startPreviewServer } from "./actions/preview.js";
|
|
55
17
|
// Common options for conversion commands
|
|
56
18
|
const convertOptions = {
|
|
57
|
-
...
|
|
19
|
+
...langOption,
|
|
58
20
|
g: {
|
|
59
21
|
alias: "generate-text",
|
|
60
22
|
type: "boolean",
|
|
@@ -64,7 +26,7 @@ const convertOptions = {
|
|
|
64
26
|
};
|
|
65
27
|
// Options for action commands (movie, bundle)
|
|
66
28
|
const actionOptions = {
|
|
67
|
-
...
|
|
29
|
+
...langOption,
|
|
68
30
|
f: {
|
|
69
31
|
alias: "force",
|
|
70
32
|
type: "boolean",
|
|
@@ -134,6 +96,11 @@ const markdownOptions = {
|
|
|
134
96
|
description: "Remove Marp-style directives (<!-- _class: ... -->)",
|
|
135
97
|
default: false,
|
|
136
98
|
},
|
|
99
|
+
layout: {
|
|
100
|
+
type: "boolean",
|
|
101
|
+
description: "Auto-detect layout based on content (row-2, 2x2)",
|
|
102
|
+
default: false,
|
|
103
|
+
},
|
|
137
104
|
style: {
|
|
138
105
|
type: "string",
|
|
139
106
|
description: "Markdown slide style (e.g., corporate-blue, finance-green)",
|
|
@@ -161,7 +128,7 @@ async function runConvert(type, file, options) {
|
|
|
161
128
|
}
|
|
162
129
|
switch (type) {
|
|
163
130
|
case "marp":
|
|
164
|
-
await
|
|
131
|
+
await convertMarp({
|
|
165
132
|
inputPath,
|
|
166
133
|
lang: options.lang,
|
|
167
134
|
generateText: options.generateText,
|
|
@@ -170,32 +137,33 @@ async function runConvert(type, file, options) {
|
|
|
170
137
|
});
|
|
171
138
|
break;
|
|
172
139
|
case "markdown":
|
|
173
|
-
await
|
|
140
|
+
await convertMarkdown({
|
|
174
141
|
inputPath,
|
|
175
142
|
lang: options.lang,
|
|
176
143
|
generateText: options.generateText,
|
|
177
144
|
separator: options.separator,
|
|
178
145
|
mermaid: options.mermaid,
|
|
179
146
|
directive: options.directive,
|
|
147
|
+
layout: options.layout,
|
|
180
148
|
style: options.style,
|
|
181
149
|
});
|
|
182
150
|
break;
|
|
183
151
|
case "pptx":
|
|
184
|
-
await
|
|
152
|
+
await convertPptx({
|
|
185
153
|
inputPath,
|
|
186
154
|
lang: options.lang,
|
|
187
155
|
generateText: options.generateText,
|
|
188
156
|
});
|
|
189
157
|
break;
|
|
190
158
|
case "pdf":
|
|
191
|
-
await
|
|
159
|
+
await convertPdf({
|
|
192
160
|
inputPath,
|
|
193
161
|
lang: options.lang,
|
|
194
162
|
generateText: options.generateText,
|
|
195
163
|
});
|
|
196
164
|
break;
|
|
197
165
|
case "movie":
|
|
198
|
-
await
|
|
166
|
+
await convertMovie({
|
|
199
167
|
inputPath,
|
|
200
168
|
lang: options.lang,
|
|
201
169
|
bundle: options.bundle,
|
|
@@ -203,8 +171,8 @@ async function runConvert(type, file, options) {
|
|
|
203
171
|
});
|
|
204
172
|
break;
|
|
205
173
|
case "keynote": {
|
|
206
|
-
const scriptPath =
|
|
207
|
-
|
|
174
|
+
const scriptPath = getKeynoteScriptPath();
|
|
175
|
+
execSync(`osascript "${scriptPath}" "${inputPath}"`, {
|
|
208
176
|
stdio: "inherit",
|
|
209
177
|
cwd: process.cwd(),
|
|
210
178
|
});
|
|
@@ -218,18 +186,18 @@ async function runAction(action, file, options) {
|
|
|
218
186
|
console.error(`File not found: ${inputPath}`);
|
|
219
187
|
process.exit(1);
|
|
220
188
|
}
|
|
221
|
-
const fileType =
|
|
222
|
-
const basename =
|
|
189
|
+
const fileType = detectFileType(inputPath);
|
|
190
|
+
const basename = getBasename(inputPath);
|
|
223
191
|
const outputDir = path.join("output", basename);
|
|
224
192
|
if (!fs.existsSync(outputDir)) {
|
|
225
193
|
fs.mkdirSync(outputDir, { recursive: true });
|
|
226
194
|
}
|
|
227
|
-
const mulmoScriptPath =
|
|
195
|
+
const mulmoScriptPath = getMulmoScriptPath(basename);
|
|
228
196
|
if (!options.force && fs.existsSync(mulmoScriptPath)) {
|
|
229
197
|
console.log(`\n✓ Using existing MulmoScript: ${mulmoScriptPath}`);
|
|
230
198
|
}
|
|
231
199
|
else {
|
|
232
|
-
await
|
|
200
|
+
await convertToMulmoScript(inputPath, fileType, {
|
|
233
201
|
generateText: options.generateText,
|
|
234
202
|
lang: options.lang,
|
|
235
203
|
});
|
|
@@ -239,19 +207,19 @@ async function runAction(action, file, options) {
|
|
|
239
207
|
console.log(`\n✓ MulmoScript generated: ${mulmoScriptPath}`);
|
|
240
208
|
}
|
|
241
209
|
if (action === "movie") {
|
|
242
|
-
await
|
|
210
|
+
await runMulmoMovie(mulmoScriptPath, outputDir, {
|
|
243
211
|
targetLang: options.targetLang,
|
|
244
212
|
captionLang: options.captionLang,
|
|
245
213
|
});
|
|
246
214
|
}
|
|
247
215
|
else {
|
|
248
|
-
await
|
|
216
|
+
await runMulmoBundle(mulmoScriptPath, outputDir);
|
|
249
217
|
}
|
|
250
218
|
console.log(`\n✓ ${action === "movie" ? "Movie" : "Bundle"} generation complete!`);
|
|
251
219
|
console.log(` Output directory: ${outputDir}`);
|
|
252
220
|
}
|
|
253
221
|
async function runUpload(basename) {
|
|
254
|
-
const dotenv = await
|
|
222
|
+
const dotenv = await import("dotenv");
|
|
255
223
|
dotenv.config();
|
|
256
224
|
const apiKey = process.env.MULMO_MEDIA_API_KEY;
|
|
257
225
|
if (!apiKey) {
|
|
@@ -272,12 +240,12 @@ async function runUpload(basename) {
|
|
|
272
240
|
}
|
|
273
241
|
const bundleDir = path.join(outputDir, bundleEntry.name);
|
|
274
242
|
// Dynamic import to avoid loading upload code unnecessarily
|
|
275
|
-
const { uploadBundleDir } = await
|
|
243
|
+
const { uploadBundleDir } = await import("./actions/upload.js");
|
|
276
244
|
const result = await uploadBundleDir(bundleDir, apiKey);
|
|
277
245
|
console.log(`\n✓ Upload complete!`);
|
|
278
246
|
console.log(` Upload path: ${result.uploadPath}`);
|
|
279
247
|
}
|
|
280
|
-
(
|
|
248
|
+
yargs(hideBin(process.argv))
|
|
281
249
|
.scriptName("mulmo-slide")
|
|
282
250
|
.usage("$0 <command> [options]")
|
|
283
251
|
.command("marp <file>", "Convert Marp markdown to MulmoScript", (yargs) => {
|
|
@@ -311,6 +279,7 @@ async function runUpload(basename) {
|
|
|
311
279
|
separator: argv.s,
|
|
312
280
|
mermaid: argv.mermaid,
|
|
313
281
|
directive: argv.directive,
|
|
282
|
+
layout: argv.layout,
|
|
314
283
|
style: argv.style,
|
|
315
284
|
});
|
|
316
285
|
})
|
|
@@ -365,7 +334,7 @@ async function runUpload(basename) {
|
|
|
365
334
|
console.error(`File not found: ${inputPath}`);
|
|
366
335
|
process.exit(1);
|
|
367
336
|
}
|
|
368
|
-
const fileType =
|
|
337
|
+
const fileType = detectFileType(inputPath);
|
|
369
338
|
const targetLangsStr = argv["target-langs"];
|
|
370
339
|
await runConvert(fileType, argv.file, {
|
|
371
340
|
lang: argv.l,
|
|
@@ -436,6 +405,24 @@ async function runUpload(basename) {
|
|
|
436
405
|
}, async (argv) => {
|
|
437
406
|
await runUpload(argv.basename);
|
|
438
407
|
})
|
|
408
|
+
.command("extend", "Manage /extend Claude Code skill", (yargs) => {
|
|
409
|
+
return yargs
|
|
410
|
+
.command("init", "Install /extend skill into current project (.claude/skills/extend/)", () => { }, async () => {
|
|
411
|
+
const { runExtendInit } = await import("./actions/extend-init.js");
|
|
412
|
+
runExtendInit();
|
|
413
|
+
})
|
|
414
|
+
.command("validate <file>", "Validate an ExtendedScript JSON file against the schema", (yargs) => {
|
|
415
|
+
return yargs.positional("file", {
|
|
416
|
+
describe: "ExtendedScript JSON file to validate",
|
|
417
|
+
type: "string",
|
|
418
|
+
demandOption: true,
|
|
419
|
+
});
|
|
420
|
+
}, async (argv) => {
|
|
421
|
+
const { runExtendValidate } = await import("./actions/extend-validate.js");
|
|
422
|
+
runExtendValidate(argv.file);
|
|
423
|
+
})
|
|
424
|
+
.demandCommand(1, "Use 'mulmo-slide extend init' or 'mulmo-slide extend validate <file>'");
|
|
425
|
+
}, () => { })
|
|
439
426
|
.command("preview [port]", "Start MulmoViewer preview server", (yargs) => {
|
|
440
427
|
return yargs.positional("port", {
|
|
441
428
|
describe: "Port number for the server",
|
|
@@ -443,7 +430,7 @@ async function runUpload(basename) {
|
|
|
443
430
|
default: 3000,
|
|
444
431
|
});
|
|
445
432
|
}, (argv) => {
|
|
446
|
-
|
|
433
|
+
startPreviewServer(argv.port);
|
|
447
434
|
})
|
|
448
435
|
.demandCommand(1, "You need to specify a command")
|
|
449
436
|
.strict()
|