@vibeframe/cli 0.33.1 → 0.35.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/dist/commands/ai-edit.d.ts.map +1 -1
- package/dist/commands/ai-edit.js +46 -5
- package/dist/commands/ai-edit.js.map +1 -1
- package/dist/commands/ai-script-pipeline-cli.d.ts.map +1 -1
- package/dist/commands/ai-script-pipeline-cli.js +14 -4
- package/dist/commands/ai-script-pipeline-cli.js.map +1 -1
- package/dist/commands/doctor.js +105 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/setup.js +7 -3
- package/dist/commands/setup.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +39 -28
- package/dist/index.js.map +1 -1
- package/dist/utils/api-key.d.ts +0 -3
- package/dist/utils/api-key.d.ts.map +1 -1
- package/dist/utils/api-key.js +17 -2
- package/dist/utils/api-key.js.map +1 -1
- package/dist/utils/first-run.d.ts +4 -0
- package/dist/utils/first-run.d.ts.map +1 -1
- package/dist/utils/first-run.js +29 -3
- package/dist/utils/first-run.js.map +1 -1
- package/dist/utils/input-validation.d.ts +27 -0
- package/dist/utils/input-validation.d.ts.map +1 -0
- package/dist/utils/input-validation.js +67 -0
- package/dist/utils/input-validation.js.map +1 -0
- package/dist/utils/remotion.d.ts +21 -0
- package/dist/utils/remotion.d.ts.map +1 -1
- package/dist/utils/remotion.js +165 -17
- package/dist/utils/remotion.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -26,8 +26,9 @@ import { setupCommand } from "./commands/setup.js";
|
|
|
26
26
|
import { doctorCommand } from "./commands/doctor.js";
|
|
27
27
|
import { agentCommand } from "./commands/agent.js";
|
|
28
28
|
import { ApiKeyError } from "./utils/api-key.js";
|
|
29
|
-
import { isFirstRun, showFirstRunBanner } from "./utils/first-run.js";
|
|
29
|
+
import { isFirstRun, showFirstRunBanner, markBannerShown } from "./utils/first-run.js";
|
|
30
30
|
import { exitWithError, usageError } from "./commands/output.js";
|
|
31
|
+
import { rejectControlChars } from "./utils/input-validation.js";
|
|
31
32
|
/**
|
|
32
33
|
* Read all data from stdin (non-blocking, only when stdin is piped).
|
|
33
34
|
*/
|
|
@@ -66,29 +67,27 @@ program
|
|
|
66
67
|
},
|
|
67
68
|
})
|
|
68
69
|
.addHelpText("after", `
|
|
69
|
-
Workflow commands:
|
|
70
|
-
vibe project create|info|set Manage .vibe.json project files
|
|
71
|
-
vibe timeline add-source|add-clip|trim|split|list|delete Edit project timeline
|
|
72
|
-
vibe export <project> -o out.mp4 Export project to video
|
|
73
|
-
vibe batch import|concat|apply-effect Bulk operations
|
|
74
|
-
vibe detect scenes|silence|beats Analyze media structure
|
|
75
|
-
|
|
76
|
-
Utilities:
|
|
77
|
-
vibe setup Configure API keys and preferences
|
|
78
|
-
vibe setup --show Show current API key status
|
|
79
|
-
vibe doctor --json Check system health and available providers
|
|
80
|
-
vibe schema --list List all commands with JSON schema
|
|
81
|
-
vibe schema <group.action> Show JSON schema (e.g., vibe schema generate.image)
|
|
82
|
-
|
|
83
70
|
Global flags (work with any command):
|
|
84
71
|
--json Output JSON (auto-enabled when piped)
|
|
85
72
|
--fields Limit output fields (e.g., --fields "path,duration")
|
|
86
|
-
--quiet Output only the result value
|
|
73
|
+
--quiet Output only the result value (path, URL, or ID)
|
|
87
74
|
--stdin Read options from stdin as JSON (for agent/script use)
|
|
88
75
|
--dry-run Preview without executing (most commands)
|
|
89
76
|
|
|
90
|
-
|
|
91
|
-
|
|
77
|
+
Cost tiers:
|
|
78
|
+
Free detect, edit (silence-cut/fade/noise-reduce), project, timeline, export
|
|
79
|
+
Low analyze, audio transcribe, generate image ~$0.01-$0.10
|
|
80
|
+
High generate video, edit image ~$1-$5
|
|
81
|
+
V.High pipeline (script-to-video, highlights, auto-shorts) ~$5-$50+
|
|
82
|
+
|
|
83
|
+
Quick start:
|
|
84
|
+
vibe doctor Check system health and API keys
|
|
85
|
+
vibe setup Configure API keys interactively
|
|
86
|
+
vibe schema --list Discover all commands (69 commands)
|
|
87
|
+
|
|
88
|
+
Agent integration:
|
|
89
|
+
echo '{"provider":"kling"}' | vibe generate video "prompt" --stdin --json
|
|
90
|
+
vibe schema generate.video Get parameter schema for any command
|
|
92
91
|
`);
|
|
93
92
|
// Set JSON mode env var before subcommand parsing
|
|
94
93
|
// Also check for first-run, stdin JSON, and show banner
|
|
@@ -125,9 +124,18 @@ program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
|
125
124
|
for (const [key, value] of Object.entries(json)) {
|
|
126
125
|
// Convert kebab-case to camelCase (e.g., "api-key" → "apiKey")
|
|
127
126
|
const camelKey = key.replace(/-([a-z])/g, (_, c) => c.toUpperCase());
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
|
|
127
|
+
// Reject control characters in string values from stdin
|
|
128
|
+
if (typeof value === "string") {
|
|
129
|
+
try {
|
|
130
|
+
rejectControlChars(value, key);
|
|
131
|
+
}
|
|
132
|
+
catch {
|
|
133
|
+
exitWithError(usageError(`--stdin field '${key}' contains control characters.`, "Remove non-printable characters from the JSON value."));
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// Only set if not already explicitly specified via CLI flag
|
|
137
|
+
const source = actionCommand.getOptionValueSource(camelKey);
|
|
138
|
+
if (source === undefined || source === "default") {
|
|
131
139
|
actionCommand.setOptionValueWithSource(camelKey, value, "stdin");
|
|
132
140
|
}
|
|
133
141
|
}
|
|
@@ -147,6 +155,7 @@ program.hook("preAction", async (thisCommand, actionCommand) => {
|
|
|
147
155
|
try {
|
|
148
156
|
if (await isFirstRun()) {
|
|
149
157
|
showFirstRunBanner();
|
|
158
|
+
await markBannerShown();
|
|
150
159
|
}
|
|
151
160
|
}
|
|
152
161
|
catch {
|
|
@@ -163,14 +172,16 @@ program.addCommand(pipelineCommand);
|
|
|
163
172
|
program.addCommand(setupCommand);
|
|
164
173
|
program.addCommand(doctorCommand);
|
|
165
174
|
program.addCommand(agentCommand);
|
|
166
|
-
//
|
|
167
|
-
program.addCommand(projectCommand
|
|
168
|
-
program.addCommand(timelineCommand
|
|
169
|
-
program.addCommand(
|
|
175
|
+
// Workflow commands
|
|
176
|
+
program.addCommand(projectCommand);
|
|
177
|
+
program.addCommand(timelineCommand);
|
|
178
|
+
program.addCommand(exportCommand);
|
|
179
|
+
program.addCommand(detectCommand);
|
|
180
|
+
program.addCommand(batchCommand);
|
|
181
|
+
// Agent integration commands
|
|
182
|
+
program.addCommand(schemaCommand);
|
|
183
|
+
// Utility commands (less commonly used directly)
|
|
170
184
|
program.addCommand(mediaCommand, { hidden: true });
|
|
171
|
-
program.addCommand(exportCommand, { hidden: true });
|
|
172
|
-
program.addCommand(batchCommand, { hidden: true });
|
|
173
|
-
program.addCommand(detectCommand, { hidden: true });
|
|
174
185
|
// Propagate exitOverride and JSON-aware error output to all subcommands
|
|
175
186
|
// Commander.js doesn't inherit these settings from the parent program
|
|
176
187
|
function propagateErrorHandling(cmd) {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,uCAAuC;AACvC,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,KAAK,GAAG,EAAE,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;AAC1D,CAAC;AAED,OAAO,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AACvC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEvC,qCAAqC;AACrC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAoB,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/api-key.d.ts
CHANGED
|
@@ -8,9 +8,6 @@ export declare function loadEnv(): void;
|
|
|
8
8
|
* Get API key from config, environment, or prompt
|
|
9
9
|
*/
|
|
10
10
|
export declare function getApiKey(envVar: string, providerName: string, optionValue?: string): Promise<string | null>;
|
|
11
|
-
/**
|
|
12
|
-
* Error thrown when a required API key is missing (non-interactive mode)
|
|
13
|
-
*/
|
|
14
11
|
export declare class ApiKeyError extends Error {
|
|
15
12
|
envVar: string;
|
|
16
13
|
providerName: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/utils/api-key.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAS9B;AAkED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6DxB;
|
|
1
|
+
{"version":3,"file":"api-key.d.ts","sourceRoot":"","sources":["../../src/utils/api-key.ts"],"names":[],"mappings":"AAOA;;;;GAIG;AACH,wBAAgB,OAAO,IAAI,IAAI,CAS9B;AAkED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CA6DxB;AAiBD,qBAAa,WAAY,SAAQ,KAAK;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;gBAEhB,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM;IAYhD,YAAY,IAAI;QACd,OAAO,EAAE,KAAK,CAAC;QACf,KAAK,EAAE,MAAM,CAAC;QACd,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,SAAS,EAAE,KAAK,CAAC;KAClB;CAYF;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAKjD;AAED;;;GAGG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EACpB,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
package/dist/utils/api-key.js
CHANGED
|
@@ -140,23 +140,38 @@ export async function getApiKey(envVar, providerName, optionValue) {
|
|
|
140
140
|
/**
|
|
141
141
|
* Error thrown when a required API key is missing (non-interactive mode)
|
|
142
142
|
*/
|
|
143
|
+
/** URLs where users can obtain API keys */
|
|
144
|
+
const API_KEY_URLS = {
|
|
145
|
+
GOOGLE_API_KEY: "https://aistudio.google.com/apikey",
|
|
146
|
+
OPENAI_API_KEY: "https://platform.openai.com/api-keys",
|
|
147
|
+
ANTHROPIC_API_KEY: "https://console.anthropic.com/settings/keys",
|
|
148
|
+
XAI_API_KEY: "https://console.x.ai",
|
|
149
|
+
ELEVENLABS_API_KEY: "https://elevenlabs.io/app/settings/api-keys",
|
|
150
|
+
RUNWAY_API_SECRET: "https://app.runwayml.com/settings/api-keys",
|
|
151
|
+
KLING_API_KEY: "https://klingai.com/dev",
|
|
152
|
+
REPLICATE_API_TOKEN: "https://replicate.com/account/api-tokens",
|
|
153
|
+
};
|
|
143
154
|
export class ApiKeyError extends Error {
|
|
144
155
|
envVar;
|
|
145
156
|
providerName;
|
|
146
157
|
constructor(envVar, providerName) {
|
|
158
|
+
const keyUrl = API_KEY_URLS[envVar];
|
|
159
|
+
const urlHint = keyUrl ? `\n Get key: ${keyUrl}` : "";
|
|
147
160
|
super(`${providerName} API key required.\n` +
|
|
148
|
-
` Set ${envVar} in .env, or run: vibe setup`);
|
|
161
|
+
` Set ${envVar} in .env, or run: vibe setup${urlHint}`);
|
|
149
162
|
this.name = "ApiKeyError";
|
|
150
163
|
this.envVar = envVar;
|
|
151
164
|
this.providerName = providerName;
|
|
152
165
|
}
|
|
153
166
|
toStructured() {
|
|
167
|
+
const keyUrl = API_KEY_URLS[this.envVar];
|
|
168
|
+
const urlHint = keyUrl ? ` Get key: ${keyUrl}` : "";
|
|
154
169
|
return {
|
|
155
170
|
success: false,
|
|
156
171
|
error: `${this.providerName} API key required.`,
|
|
157
172
|
code: "API_KEY_MISSING",
|
|
158
173
|
exitCode: 4,
|
|
159
|
-
suggestion: `Set ${this.envVar} in .env, or run: vibe setup`,
|
|
174
|
+
suggestion: `Set ${this.envVar} in .env, or run: vibe setup. Check available features: vibe doctor --json.${urlHint}`,
|
|
160
175
|
retryable: false,
|
|
161
176
|
};
|
|
162
177
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/utils/api-key.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"api-key.js","sourceRoot":"","sources":["../../src/utils/api-key.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,10 @@
|
|
|
6
6
|
* Check if this is the user's first run (no config and no env vars set)
|
|
7
7
|
*/
|
|
8
8
|
export declare function isFirstRun(): Promise<boolean>;
|
|
9
|
+
/**
|
|
10
|
+
* Mark that the first-run banner has been shown (won't show again)
|
|
11
|
+
*/
|
|
12
|
+
export declare function markBannerShown(): Promise<void>;
|
|
9
13
|
/**
|
|
10
14
|
* Show a friendly welcome banner for first-time users
|
|
11
15
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-run.d.ts","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"first-run.d.ts","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;GAEG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,OAAO,CAAC,CA4BnD;AAED;;GAEG;AACH,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAOrD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAczC"}
|
package/dist/utils/first-run.js
CHANGED
|
@@ -2,15 +2,26 @@
|
|
|
2
2
|
* First-run detection for VibeFrame CLI
|
|
3
3
|
* Shows a welcome banner when user has never configured the tool
|
|
4
4
|
*/
|
|
5
|
-
import { access } from "node:fs/promises";
|
|
5
|
+
import { access, writeFile, mkdir } from "node:fs/promises";
|
|
6
|
+
import { dirname } from "node:path";
|
|
6
7
|
import chalk from "chalk";
|
|
7
8
|
import { CONFIG_PATH } from "../config/index.js";
|
|
8
9
|
import { PROVIDER_ENV_VARS } from "../config/schema.js";
|
|
9
10
|
import { loadEnv } from "./api-key.js";
|
|
11
|
+
/** Marker file to track if banner has been shown */
|
|
12
|
+
const BANNER_SHOWN_PATH = CONFIG_PATH.replace(/config\.yaml$/, ".banner-shown");
|
|
10
13
|
/**
|
|
11
14
|
* Check if this is the user's first run (no config and no env vars set)
|
|
12
15
|
*/
|
|
13
16
|
export async function isFirstRun() {
|
|
17
|
+
// Check if banner was already shown
|
|
18
|
+
try {
|
|
19
|
+
await access(BANNER_SHOWN_PATH);
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
// Banner not shown yet
|
|
24
|
+
}
|
|
14
25
|
// Check if config file exists
|
|
15
26
|
try {
|
|
16
27
|
await access(CONFIG_PATH);
|
|
@@ -29,6 +40,18 @@ export async function isFirstRun() {
|
|
|
29
40
|
}
|
|
30
41
|
return true;
|
|
31
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Mark that the first-run banner has been shown (won't show again)
|
|
45
|
+
*/
|
|
46
|
+
export async function markBannerShown() {
|
|
47
|
+
try {
|
|
48
|
+
await mkdir(dirname(BANNER_SHOWN_PATH), { recursive: true });
|
|
49
|
+
await writeFile(BANNER_SHOWN_PATH, new Date().toISOString());
|
|
50
|
+
}
|
|
51
|
+
catch {
|
|
52
|
+
// Best-effort
|
|
53
|
+
}
|
|
54
|
+
}
|
|
32
55
|
/**
|
|
33
56
|
* Show a friendly welcome banner for first-time users
|
|
34
57
|
*/
|
|
@@ -38,10 +61,13 @@ export function showFirstRunBanner() {
|
|
|
38
61
|
console.log(chalk.dim(" AI-native video editing from your terminal."));
|
|
39
62
|
console.log();
|
|
40
63
|
console.log(` ${chalk.white("1.")} ${chalk.green("vibe setup")} Configure API keys ${chalk.dim("(1 min)")}`);
|
|
41
|
-
console.log(` ${chalk.white("2.")} ${chalk.green("vibe doctor")} Check
|
|
64
|
+
console.log(` ${chalk.white("2.")} ${chalk.green("vibe doctor")} Check system health`);
|
|
42
65
|
console.log(` ${chalk.white("3.")} ${chalk.green("vibe --help")} See all commands`);
|
|
43
66
|
console.log();
|
|
44
|
-
console.log(chalk.dim(" No API keys?
|
|
67
|
+
console.log(chalk.dim(" No API keys yet? Try these offline:"));
|
|
68
|
+
console.log(chalk.dim(" vibe edit silence-cut video.mp4 -o clean.mp4"));
|
|
69
|
+
console.log(chalk.dim(" vibe detect scenes video.mp4"));
|
|
70
|
+
console.log(chalk.dim(" vibe edit fade video.mp4 -o faded.mp4 --fade-in 1 --fade-out 1"));
|
|
45
71
|
console.log();
|
|
46
72
|
}
|
|
47
73
|
//# sourceMappingURL=first-run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first-run.js","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"first-run.js","sourceRoot":"","sources":["../../src/utils/first-run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation utilities for agent-safety (agentic CLI hardening).
|
|
3
|
+
*
|
|
4
|
+
* Defends against: path traversal, control character injection,
|
|
5
|
+
* and overly long inputs that agents may hallucinate.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Reject strings containing control characters (below ASCII 0x20,
|
|
9
|
+
* excluding tab, newline, CR which are sometimes intentional).
|
|
10
|
+
*/
|
|
11
|
+
export declare function rejectControlChars(value: string, fieldName?: string): string;
|
|
12
|
+
/**
|
|
13
|
+
* Validate that a file path does not escape the sandbox directory.
|
|
14
|
+
* Returns the resolved absolute path.
|
|
15
|
+
*/
|
|
16
|
+
export declare function validateSafePath(inputPath: string, sandbox?: string): string;
|
|
17
|
+
/**
|
|
18
|
+
* Validate output path — must not traverse outside cwd unless absolute.
|
|
19
|
+
* Allows absolute paths (user-specified like /tmp/output.mp4).
|
|
20
|
+
*/
|
|
21
|
+
export declare function validateOutputPath(outputPath: string): string;
|
|
22
|
+
/**
|
|
23
|
+
* Validate a user-provided string (prompt text, etc.) for sanity.
|
|
24
|
+
* Rejects control chars and caps length to prevent context abuse.
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateTextInput(value: string, fieldName?: string, maxLength?: number): string;
|
|
27
|
+
//# sourceMappingURL=input-validation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.d.ts","sourceRoot":"","sources":["../../src/utils/input-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAkBH;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAU,GAAG,MAAM,CAO7E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,GACf,MAAM,CAYR;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,MAAM,EACb,SAAS,SAAU,EACnB,SAAS,SAAQ,GAChB,MAAM,CAQR"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input validation utilities for agent-safety (agentic CLI hardening).
|
|
3
|
+
*
|
|
4
|
+
* Defends against: path traversal, control character injection,
|
|
5
|
+
* and overly long inputs that agents may hallucinate.
|
|
6
|
+
*/
|
|
7
|
+
import { resolve, relative } from "node:path";
|
|
8
|
+
/**
|
|
9
|
+
* Check if a string contains control characters (below ASCII 0x20,
|
|
10
|
+
* excluding tab=0x09, newline=0x0a, carriage return=0x0d).
|
|
11
|
+
*/
|
|
12
|
+
function hasControlChars(str) {
|
|
13
|
+
for (let i = 0; i < str.length; i++) {
|
|
14
|
+
const code = str.charCodeAt(i);
|
|
15
|
+
if (code < 0x20 && code !== 0x09 && code !== 0x0a && code !== 0x0d) {
|
|
16
|
+
return true;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
return false;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Reject strings containing control characters (below ASCII 0x20,
|
|
23
|
+
* excluding tab, newline, CR which are sometimes intentional).
|
|
24
|
+
*/
|
|
25
|
+
export function rejectControlChars(value, fieldName = "input") {
|
|
26
|
+
if (hasControlChars(value)) {
|
|
27
|
+
throw new Error(`Control character detected in ${fieldName}. Input contains non-printable characters.`);
|
|
28
|
+
}
|
|
29
|
+
return value;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate that a file path does not escape the sandbox directory.
|
|
33
|
+
* Returns the resolved absolute path.
|
|
34
|
+
*/
|
|
35
|
+
export function validateSafePath(inputPath, sandbox) {
|
|
36
|
+
const base = sandbox ?? process.cwd();
|
|
37
|
+
const resolved = resolve(base, inputPath);
|
|
38
|
+
const rel = relative(base, resolved);
|
|
39
|
+
// If the relative path starts with ".." it escapes the sandbox
|
|
40
|
+
if (rel.startsWith("..")) {
|
|
41
|
+
throw new Error(`Path traversal detected: '${inputPath}' resolves outside '${base}'.`);
|
|
42
|
+
}
|
|
43
|
+
return resolved;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate output path — must not traverse outside cwd unless absolute.
|
|
47
|
+
* Allows absolute paths (user-specified like /tmp/output.mp4).
|
|
48
|
+
*/
|
|
49
|
+
export function validateOutputPath(outputPath) {
|
|
50
|
+
// Absolute paths are trusted (user explicitly chose them)
|
|
51
|
+
if (outputPath.startsWith("/") || outputPath.startsWith("~")) {
|
|
52
|
+
return resolve(outputPath);
|
|
53
|
+
}
|
|
54
|
+
return validateSafePath(outputPath);
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Validate a user-provided string (prompt text, etc.) for sanity.
|
|
58
|
+
* Rejects control chars and caps length to prevent context abuse.
|
|
59
|
+
*/
|
|
60
|
+
export function validateTextInput(value, fieldName = "input", maxLength = 10000) {
|
|
61
|
+
rejectControlChars(value, fieldName);
|
|
62
|
+
if (value.length > maxLength) {
|
|
63
|
+
throw new Error(`${fieldName} exceeds maximum length of ${maxLength} characters (got ${value.length}).`);
|
|
64
|
+
}
|
|
65
|
+
return value;
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=input-validation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validation.js","sourceRoot":"","sources":["../../src/utils/input-validation.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE9C;;;GAGG;AACH,SAAS,eAAe,CAAC,GAAW;IAClC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;YACnE,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,KAAa,EAAE,SAAS,GAAG,OAAO;IACnE,IAAI,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CACb,iCAAiC,SAAS,4CAA4C,CACvF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,OAAgB;IAEhB,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAErC,+DAA+D;IAC/D,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACb,6BAA6B,SAAS,uBAAuB,IAAI,IAAI,CACtE,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,UAAkB;IACnD,0DAA0D;IAC1D,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7D,OAAO,OAAO,CAAC,UAAU,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;AACtC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,SAAS,GAAG,OAAO,EACnB,SAAS,GAAG,KAAK;IAEjB,kBAAkB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,GAAG,SAAS,EAAE,CAAC;QAC7B,MAAM,IAAI,KAAK,CACb,GAAG,SAAS,8BAA8B,SAAS,oBAAoB,KAAK,CAAC,MAAM,IAAI,CACxF,CAAC;IACJ,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
package/dist/utils/remotion.d.ts
CHANGED
|
@@ -147,6 +147,27 @@ export interface GenerateCaptionComponentOptions {
|
|
|
147
147
|
/** When set, embed the video inside the component (no transparency needed) */
|
|
148
148
|
videoFileName?: string;
|
|
149
149
|
}
|
|
150
|
+
export type TextOverlayStyle = "lower-third" | "center-bold" | "subtitle" | "minimal";
|
|
151
|
+
export interface GenerateTextOverlayComponentOptions {
|
|
152
|
+
texts: string[];
|
|
153
|
+
style: TextOverlayStyle;
|
|
154
|
+
fontSize: number;
|
|
155
|
+
fontColor: string;
|
|
156
|
+
startTime: number;
|
|
157
|
+
endTime: number;
|
|
158
|
+
fadeDuration: number;
|
|
159
|
+
width: number;
|
|
160
|
+
height: number;
|
|
161
|
+
videoFileName: string;
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* Generate a Remotion TSX component for text overlays.
|
|
165
|
+
* Fallback for when FFmpeg drawtext filter (libfreetype) is unavailable.
|
|
166
|
+
*/
|
|
167
|
+
export declare function generateTextOverlayComponent(options: GenerateTextOverlayComponentOptions): {
|
|
168
|
+
code: string;
|
|
169
|
+
name: string;
|
|
170
|
+
};
|
|
150
171
|
/**
|
|
151
172
|
* Generate a Remotion TSX component that renders styled captions.
|
|
152
173
|
* No LLM call — purely programmatic from SRT segments + style config.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"remotion.d.ts","sourceRoot":"","sources":["../../src/utils/remotion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;
|
|
1
|
+
{"version":3,"file":"remotion.d.ts","sourceRoot":"","sources":["../../src/utils/remotion.ts"],"names":[],"mappings":"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"}
|