@vibeframe/mcp-server 0.89.0 → 0.91.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/index.js +140 -81
- package/package.json +3 -3
package/dist/index.js
CHANGED
|
@@ -7607,9 +7607,8 @@ vibe scene lint --json # structured output for agent loops
|
|
|
7607
7607
|
`;
|
|
7608
7608
|
}
|
|
7609
7609
|
function buildSceneGitignore() {
|
|
7610
|
-
return `# VibeFrame caches
|
|
7611
|
-
.vibeframe/
|
|
7612
|
-
.vibeframe/checkpoints/
|
|
7610
|
+
return `# VibeFrame \u2014 caches, checkpoints, and project-scope config.yaml (may contain API keys)
|
|
7611
|
+
.vibeframe/
|
|
7613
7612
|
|
|
7614
7613
|
# Render outputs
|
|
7615
7614
|
renders/*.mp4
|
|
@@ -14023,7 +14022,7 @@ function getCommandKeyMap() {
|
|
|
14023
14022
|
function getSetupProviders() {
|
|
14024
14023
|
return [...apiKeyRegistry.values()].filter((k) => k.showInSetup).map((k) => ({
|
|
14025
14024
|
key: k.configKey,
|
|
14026
|
-
name: k.
|
|
14025
|
+
name: getDisplayLabelForApiKey(k.configKey),
|
|
14027
14026
|
env: k.envVar,
|
|
14028
14027
|
desc: k.setupDescription ?? "",
|
|
14029
14028
|
url: k.envExampleUrl
|
|
@@ -14035,6 +14034,16 @@ function getAllApiKeys() {
|
|
|
14035
14034
|
function getKeyFormat(configKey) {
|
|
14036
14035
|
return apiKeyRegistry.get(configKey)?.keyFormat;
|
|
14037
14036
|
}
|
|
14037
|
+
function getDisplayLabelForApiKey(configKey) {
|
|
14038
|
+
const apiKey = apiKeyRegistry.get(configKey);
|
|
14039
|
+
if (!apiKey)
|
|
14040
|
+
return configKey;
|
|
14041
|
+
const provider = [...providerRegistry2.values()].find((p) => p.apiKey === configKey && p.displayName && p.gateway);
|
|
14042
|
+
if (provider?.displayName && provider.gateway) {
|
|
14043
|
+
return `${provider.displayName} (via ${provider.gateway})`;
|
|
14044
|
+
}
|
|
14045
|
+
return apiKey.label;
|
|
14046
|
+
}
|
|
14038
14047
|
function getAllProviders() {
|
|
14039
14048
|
return [...providerRegistry2.values()];
|
|
14040
14049
|
}
|
|
@@ -24139,7 +24148,7 @@ var init_FalProvider = __esm({
|
|
|
24139
24148
|
VALID_ASPECTS = ["21:9", "16:9", "4:3", "1:1", "3:4", "9:16", "auto"];
|
|
24140
24149
|
FalProvider = class {
|
|
24141
24150
|
constructor() {
|
|
24142
|
-
this.id = "
|
|
24151
|
+
this.id = "seedance";
|
|
24143
24152
|
this.name = "fal.ai (Seedance 2.0)";
|
|
24144
24153
|
this.description = "fal.ai hosting ByteDance Seedance 2.0 \u2014 Artificial Analysis #2 on both text-to-video and image-to-video leaderboards";
|
|
24145
24154
|
this.capabilities = ["text-to-video", "image-to-video"];
|
|
@@ -24238,11 +24247,13 @@ var init_fal = __esm({
|
|
|
24238
24247
|
init_FalProvider();
|
|
24239
24248
|
init_define_provider();
|
|
24240
24249
|
defineProvider({
|
|
24241
|
-
id: "
|
|
24242
|
-
label: "
|
|
24250
|
+
id: "seedance",
|
|
24251
|
+
label: "Seedance 2.0",
|
|
24243
24252
|
displayName: "Seedance 2.0",
|
|
24244
24253
|
gateway: "fal.ai",
|
|
24245
|
-
|
|
24254
|
+
// `fal` is a deprecated v0.x alias kept so existing scripts keep working.
|
|
24255
|
+
// Will be removed at the 1.0 cut (see docs/1.0-readiness.md).
|
|
24256
|
+
aliases: ["fal"],
|
|
24246
24257
|
models: ["seedance-2.0", "seedance-2.0-fast"],
|
|
24247
24258
|
capabilities: ["text-to-video", "image-to-video", "native-audio"],
|
|
24248
24259
|
apiKey: "fal",
|
|
@@ -24943,6 +24954,7 @@ __export(dist_exports, {
|
|
|
24943
24954
|
getAllProviders: () => getAllProviders,
|
|
24944
24955
|
getBestProviderForCapability: () => getBestProviderForCapability,
|
|
24945
24956
|
getCommandKeyMap: () => getCommandKeyMap,
|
|
24957
|
+
getDisplayLabelForApiKey: () => getDisplayLabelForApiKey,
|
|
24946
24958
|
getKeyFormat: () => getKeyFormat,
|
|
24947
24959
|
getProviderEnvVars: () => getProviderEnvVars,
|
|
24948
24960
|
getProvidersFor: () => getProvidersFor,
|
|
@@ -25409,44 +25421,86 @@ var init_schema = __esm({
|
|
|
25409
25421
|
import { resolve as resolve2 } from "node:path";
|
|
25410
25422
|
import { homedir } from "node:os";
|
|
25411
25423
|
import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, access as access2 } from "node:fs/promises";
|
|
25412
|
-
|
|
25424
|
+
function getProjectConfigDir(cwd = process.cwd()) {
|
|
25425
|
+
return resolve2(cwd, ".vibeframe");
|
|
25426
|
+
}
|
|
25427
|
+
function getProjectConfigPath(cwd = process.cwd()) {
|
|
25428
|
+
return resolve2(getProjectConfigDir(cwd), "config.yaml");
|
|
25429
|
+
}
|
|
25430
|
+
function getConfigPath(scope, cwd) {
|
|
25431
|
+
return scope === "project" ? getProjectConfigPath(cwd) : USER_CONFIG_PATH;
|
|
25432
|
+
}
|
|
25433
|
+
async function fileExists(path14) {
|
|
25413
25434
|
try {
|
|
25414
|
-
await access2(
|
|
25415
|
-
|
|
25416
|
-
|
|
25417
|
-
|
|
25418
|
-
|
|
25419
|
-
|
|
25420
|
-
|
|
25421
|
-
|
|
25422
|
-
|
|
25423
|
-
|
|
25424
|
-
|
|
25425
|
-
}
|
|
25435
|
+
await access2(path14);
|
|
25436
|
+
return true;
|
|
25437
|
+
} catch {
|
|
25438
|
+
return false;
|
|
25439
|
+
}
|
|
25440
|
+
}
|
|
25441
|
+
function applyDefaults(parsed) {
|
|
25442
|
+
const defaults = createDefaultConfig();
|
|
25443
|
+
return {
|
|
25444
|
+
...defaults,
|
|
25445
|
+
...parsed,
|
|
25446
|
+
llm: { ...defaults.llm, ...parsed.llm },
|
|
25447
|
+
providers: { ...defaults.providers, ...parsed.providers },
|
|
25448
|
+
defaults: { ...defaults.defaults, ...parsed.defaults },
|
|
25449
|
+
repl: { ...defaults.repl, ...parsed.repl }
|
|
25450
|
+
};
|
|
25451
|
+
}
|
|
25452
|
+
async function readConfigFile(path14) {
|
|
25453
|
+
if (!await fileExists(path14)) return null;
|
|
25454
|
+
try {
|
|
25455
|
+
const content = await readFile2(path14, "utf-8");
|
|
25456
|
+
const parsed = (0, import_yaml2.parse)(content);
|
|
25457
|
+
return applyDefaults(parsed);
|
|
25426
25458
|
} catch {
|
|
25427
25459
|
return null;
|
|
25428
25460
|
}
|
|
25429
25461
|
}
|
|
25462
|
+
async function loadConfig(options = {}) {
|
|
25463
|
+
const { scope, cwd, merge: merge3 } = options;
|
|
25464
|
+
if (merge3) {
|
|
25465
|
+
const user = await readConfigFile(USER_CONFIG_PATH);
|
|
25466
|
+
const project2 = await readConfigFile(getProjectConfigPath(cwd));
|
|
25467
|
+
if (!user && !project2) return null;
|
|
25468
|
+
if (!user) return project2;
|
|
25469
|
+
if (!project2) return user;
|
|
25470
|
+
return {
|
|
25471
|
+
...user,
|
|
25472
|
+
...project2,
|
|
25473
|
+
llm: { ...user.llm, ...project2.llm },
|
|
25474
|
+
providers: { ...user.providers, ...project2.providers },
|
|
25475
|
+
defaults: { ...user.defaults, ...project2.defaults },
|
|
25476
|
+
repl: { ...user.repl, ...project2.repl }
|
|
25477
|
+
};
|
|
25478
|
+
}
|
|
25479
|
+
if (scope) {
|
|
25480
|
+
return readConfigFile(getConfigPath(scope, cwd));
|
|
25481
|
+
}
|
|
25482
|
+
const project = await readConfigFile(getProjectConfigPath(cwd));
|
|
25483
|
+
if (project) return project;
|
|
25484
|
+
return readConfigFile(USER_CONFIG_PATH);
|
|
25485
|
+
}
|
|
25430
25486
|
async function getApiKeyFromConfig(providerKey) {
|
|
25431
25487
|
const config4 = await loadConfig();
|
|
25432
25488
|
if (config4?.providers[providerKey]) {
|
|
25433
25489
|
return config4.providers[providerKey];
|
|
25434
25490
|
}
|
|
25435
25491
|
const envVar = PROVIDER_ENV_VARS[providerKey];
|
|
25436
|
-
if (envVar)
|
|
25437
|
-
return process.env[envVar];
|
|
25438
|
-
}
|
|
25492
|
+
if (envVar) return process.env[envVar];
|
|
25439
25493
|
return void 0;
|
|
25440
25494
|
}
|
|
25441
|
-
var import_yaml2,
|
|
25495
|
+
var import_yaml2, USER_CONFIG_DIR, USER_CONFIG_PATH;
|
|
25442
25496
|
var init_config = __esm({
|
|
25443
25497
|
"../cli/src/config/index.ts"() {
|
|
25444
25498
|
"use strict";
|
|
25445
25499
|
import_yaml2 = __toESM(require_dist(), 1);
|
|
25446
25500
|
init_schema();
|
|
25447
25501
|
init_schema();
|
|
25448
|
-
|
|
25449
|
-
|
|
25502
|
+
USER_CONFIG_DIR = resolve2(homedir(), ".vibeframe");
|
|
25503
|
+
USER_CONFIG_PATH = resolve2(USER_CONFIG_DIR, "config.yaml");
|
|
25450
25504
|
}
|
|
25451
25505
|
});
|
|
25452
25506
|
|
|
@@ -127444,7 +127498,7 @@ var require_typescript2 = __commonJS({
|
|
|
127444
127498
|
rangeStartIsOnSameLineAsRangeEnd: () => rangeStartIsOnSameLineAsRangeEnd,
|
|
127445
127499
|
rangeStartPositionsAreOnSameLine: () => rangeStartPositionsAreOnSameLine,
|
|
127446
127500
|
readBuilderProgram: () => readBuilderProgram,
|
|
127447
|
-
readConfigFile: () =>
|
|
127501
|
+
readConfigFile: () => readConfigFile2,
|
|
127448
127502
|
readJson: () => readJson,
|
|
127449
127503
|
readJsonConfigFile: () => readJsonConfigFile,
|
|
127450
127504
|
readJsonOrUndefined: () => readJsonOrUndefined,
|
|
@@ -134068,7 +134122,7 @@ ${lanes.join("\n")}
|
|
|
134068
134122
|
watchDirectory,
|
|
134069
134123
|
preferNonRecursiveWatch: !fsSupportsRecursiveFsWatch,
|
|
134070
134124
|
resolvePath: (path14) => _path.resolve(path14),
|
|
134071
|
-
fileExists,
|
|
134125
|
+
fileExists: fileExists2,
|
|
134072
134126
|
directoryExists,
|
|
134073
134127
|
getAccessibleFileSystemEntries,
|
|
134074
134128
|
createDirectory(directoryName) {
|
|
@@ -134230,7 +134284,7 @@ ${lanes.join("\n")}
|
|
|
134230
134284
|
if (platform === "win32" || platform === "win64") {
|
|
134231
134285
|
return false;
|
|
134232
134286
|
}
|
|
134233
|
-
return !
|
|
134287
|
+
return !fileExists2(swapCase(__filename));
|
|
134234
134288
|
}
|
|
134235
134289
|
function swapCase(s) {
|
|
134236
134290
|
return s.replace(/\w/g, (ch) => {
|
|
@@ -134363,7 +134417,7 @@ ${lanes.join("\n")}
|
|
|
134363
134417
|
return false;
|
|
134364
134418
|
}
|
|
134365
134419
|
}
|
|
134366
|
-
function
|
|
134420
|
+
function fileExists2(path14) {
|
|
134367
134421
|
return fileSystemEntryExists(
|
|
134368
134422
|
path14,
|
|
134369
134423
|
0
|
|
@@ -171058,7 +171112,7 @@ ${lanes.join("\n")}
|
|
|
171058
171112
|
watchOptionsToExtend
|
|
171059
171113
|
);
|
|
171060
171114
|
}
|
|
171061
|
-
function
|
|
171115
|
+
function readConfigFile2(fileName, readFile34) {
|
|
171062
171116
|
const textOrDiagnostic = tryReadFile(fileName, readFile34);
|
|
171063
171117
|
return isString3(textOrDiagnostic) ? parseConfigFileTextToJson(fileName, textOrDiagnostic) : { config: {}, error: textOrDiagnostic };
|
|
171064
171118
|
}
|
|
@@ -260189,7 +260243,7 @@ ${lanes.join("\n")}
|
|
|
260189
260243
|
const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames2);
|
|
260190
260244
|
return {
|
|
260191
260245
|
useCaseSensitiveFileNames: useCaseSensitiveFileNames2,
|
|
260192
|
-
fileExists,
|
|
260246
|
+
fileExists: fileExists2,
|
|
260193
260247
|
readFile: (path14, encoding) => host.readFile(path14, encoding),
|
|
260194
260248
|
directoryExists: host.directoryExists && directoryExists,
|
|
260195
260249
|
getDirectories,
|
|
@@ -260275,7 +260329,7 @@ ${lanes.join("\n")}
|
|
|
260275
260329
|
}
|
|
260276
260330
|
return host.writeFile(fileName, data, writeByteOrderMark);
|
|
260277
260331
|
}
|
|
260278
|
-
function
|
|
260332
|
+
function fileExists2(fileName) {
|
|
260279
260333
|
const path14 = toPath3(fileName);
|
|
260280
260334
|
const result = getCachedFileSystemEntriesForBaseDir(path14);
|
|
260281
260335
|
return result && hasEntry(result.sortedAndCanonicalizedFiles, getCanonicalFileName(getBaseNameOfFileName(fileName))) || host.fileExists(fileName);
|
|
@@ -260391,10 +260445,10 @@ ${lanes.join("\n")}
|
|
|
260391
260445
|
clearFirstAncestorEntry(filePath);
|
|
260392
260446
|
}
|
|
260393
260447
|
}
|
|
260394
|
-
function updateFilesOfFileSystemEntry(parentResult, baseName,
|
|
260448
|
+
function updateFilesOfFileSystemEntry(parentResult, baseName, fileExists22) {
|
|
260395
260449
|
const canonicalizedFiles = parentResult.sortedAndCanonicalizedFiles;
|
|
260396
260450
|
const canonicalizedBaseName = getCanonicalFileName(baseName);
|
|
260397
|
-
if (
|
|
260451
|
+
if (fileExists22) {
|
|
260398
260452
|
if (insertSorted(canonicalizedFiles, canonicalizedBaseName, compareStringsCaseSensitive)) {
|
|
260399
260453
|
parentResult.files.push(baseName);
|
|
260400
260454
|
}
|
|
@@ -260694,10 +260748,10 @@ ${lanes.join("\n")}
|
|
|
260694
260748
|
function closeFileWatcherOf(objWithWatcher) {
|
|
260695
260749
|
objWithWatcher.watcher.close();
|
|
260696
260750
|
}
|
|
260697
|
-
function findConfigFile(searchPath,
|
|
260751
|
+
function findConfigFile(searchPath, fileExists2, configName = "tsconfig.json") {
|
|
260698
260752
|
return forEachAncestorDirectory(searchPath, (ancestor) => {
|
|
260699
260753
|
const fileName = combinePaths(ancestor, configName);
|
|
260700
|
-
return
|
|
260754
|
+
return fileExists2(fileName) ? fileName : void 0;
|
|
260701
260755
|
});
|
|
260702
260756
|
}
|
|
260703
260757
|
function resolveTripleslashReference(moduleName, containingFile) {
|
|
@@ -261304,14 +261358,14 @@ ${lanes.join("\n")}
|
|
|
261304
261358
|
}
|
|
261305
261359
|
return { file, pos, end, packageId };
|
|
261306
261360
|
}
|
|
261307
|
-
function isProgramUptoDate(program2, rootFileNames, newOptions, getSourceVersion,
|
|
261361
|
+
function isProgramUptoDate(program2, rootFileNames, newOptions, getSourceVersion, fileExists2, hasInvalidatedResolutions, hasInvalidatedLibResolutions, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences) {
|
|
261308
261362
|
if (!program2 || (hasChangedAutomaticTypeDirectiveNames == null ? void 0 : hasChangedAutomaticTypeDirectiveNames())) return false;
|
|
261309
261363
|
if (!arrayIsEqualTo(program2.getRootFileNames(), rootFileNames)) return false;
|
|
261310
261364
|
let seenResolvedRefs;
|
|
261311
261365
|
if (!arrayIsEqualTo(program2.getProjectReferences(), projectReferences, projectReferenceUptoDate)) return false;
|
|
261312
261366
|
if (program2.getSourceFiles().some(sourceFileNotUptoDate)) return false;
|
|
261313
261367
|
const missingPaths = program2.getMissingFilePaths();
|
|
261314
|
-
if (missingPaths && forEachEntry(missingPaths,
|
|
261368
|
+
if (missingPaths && forEachEntry(missingPaths, fileExists2)) return false;
|
|
261315
261369
|
const currentOptions = program2.getCompilerOptions();
|
|
261316
261370
|
if (!compareDataObjects(currentOptions, newOptions)) return false;
|
|
261317
261371
|
if (program2.resolvedLibReferences && forEachEntry(program2.resolvedLibReferences, (_value, libFileName) => hasInvalidatedLibResolutions(libFileName))) return false;
|
|
@@ -261639,7 +261693,7 @@ ${lanes.join("\n")}
|
|
|
261639
261693
|
let mapSourceFileToResolvedRef;
|
|
261640
261694
|
let mapOutputFileToResolvedRef;
|
|
261641
261695
|
const useSourceOfProjectReferenceRedirect = !!((_d = host.useSourceOfProjectReferenceRedirect) == null ? void 0 : _d.call(host)) && !options.disableSourceOfProjectReferenceRedirect;
|
|
261642
|
-
const { onProgramCreateComplete, fileExists, directoryExists } = updateHostForUseSourceOfProjectReferenceRedirect({
|
|
261696
|
+
const { onProgramCreateComplete, fileExists: fileExists2, directoryExists } = updateHostForUseSourceOfProjectReferenceRedirect({
|
|
261643
261697
|
compilerHost: host,
|
|
261644
261698
|
getSymlinkCache,
|
|
261645
261699
|
useSourceOfProjectReferenceRedirect,
|
|
@@ -261873,7 +261927,7 @@ ${lanes.join("\n")}
|
|
|
261873
261927
|
getImpliedNodeFormatForEmit: getImpliedNodeFormatForEmit2,
|
|
261874
261928
|
shouldTransformImportCall,
|
|
261875
261929
|
emitBuildInfo,
|
|
261876
|
-
fileExists,
|
|
261930
|
+
fileExists: fileExists2,
|
|
261877
261931
|
readFile: readFile34,
|
|
261878
261932
|
directoryExists,
|
|
261879
261933
|
getSymlinkCache,
|
|
@@ -264372,8 +264426,8 @@ ${lanes.join("\n")}
|
|
|
264372
264426
|
const originalDirectoryExists = host.compilerHost.directoryExists;
|
|
264373
264427
|
const originalGetDirectories = host.compilerHost.getDirectories;
|
|
264374
264428
|
const originalRealpath = host.compilerHost.realpath;
|
|
264375
|
-
if (!host.useSourceOfProjectReferenceRedirect) return { onProgramCreateComplete: noop3, fileExists };
|
|
264376
|
-
host.compilerHost.fileExists =
|
|
264429
|
+
if (!host.useSourceOfProjectReferenceRedirect) return { onProgramCreateComplete: noop3, fileExists: fileExists2 };
|
|
264430
|
+
host.compilerHost.fileExists = fileExists2;
|
|
264377
264431
|
let directoryExists;
|
|
264378
264432
|
if (originalDirectoryExists) {
|
|
264379
264433
|
directoryExists = host.compilerHost.directoryExists = (path14) => {
|
|
@@ -264412,13 +264466,13 @@ ${lanes.join("\n")}
|
|
|
264412
264466
|
return ((_a7 = host.getSymlinkCache().getSymlinkedFiles()) == null ? void 0 : _a7.get(host.toPath(s))) || originalRealpath.call(host.compilerHost, s);
|
|
264413
264467
|
};
|
|
264414
264468
|
}
|
|
264415
|
-
return { onProgramCreateComplete, fileExists, directoryExists };
|
|
264469
|
+
return { onProgramCreateComplete, fileExists: fileExists2, directoryExists };
|
|
264416
264470
|
function onProgramCreateComplete() {
|
|
264417
264471
|
host.compilerHost.fileExists = originalFileExists;
|
|
264418
264472
|
host.compilerHost.directoryExists = originalDirectoryExists;
|
|
264419
264473
|
host.compilerHost.getDirectories = originalGetDirectories;
|
|
264420
264474
|
}
|
|
264421
|
-
function
|
|
264475
|
+
function fileExists2(file) {
|
|
264422
264476
|
if (originalFileExists.call(host.compilerHost, file)) return true;
|
|
264423
264477
|
if (!host.getResolvedProjectReferences()) return false;
|
|
264424
264478
|
if (!isDeclarationFileName(file)) return false;
|
|
@@ -268770,7 +268824,7 @@ ${lanes.join("\n")}
|
|
|
268770
268824
|
compilerHost.getSourceFile = (fileName, ...args) => getVersionedSourceFileByPath(fileName, toPath3(fileName), ...args);
|
|
268771
268825
|
compilerHost.getSourceFileByPath = getVersionedSourceFileByPath;
|
|
268772
268826
|
compilerHost.getNewLine = () => newLine;
|
|
268773
|
-
compilerHost.fileExists =
|
|
268827
|
+
compilerHost.fileExists = fileExists2;
|
|
268774
268828
|
compilerHost.onReleaseOldSourceFile = onReleaseOldSourceFile;
|
|
268775
268829
|
compilerHost.onReleaseParsedCommandLine = onReleaseParsedCommandLine;
|
|
268776
268830
|
compilerHost.toPath = toPath3;
|
|
@@ -268974,7 +269028,7 @@ ${lanes.join("\n")}
|
|
|
268974
269028
|
function isFilePresenceUnknownOnHost(hostSourceFile) {
|
|
268975
269029
|
return typeof hostSourceFile.version === "boolean";
|
|
268976
269030
|
}
|
|
268977
|
-
function
|
|
269031
|
+
function fileExists2(fileName) {
|
|
268978
269032
|
const path14 = toPath3(fileName);
|
|
268979
269033
|
if (isFileMissingOnHost(sourceFilesCache.get(path14))) {
|
|
268980
269034
|
return false;
|
|
@@ -273732,12 +273786,12 @@ ${lanes.join("\n")}
|
|
|
273732
273786
|
return nodeCoreModules.has(moduleName) ? "node" : moduleName;
|
|
273733
273787
|
}
|
|
273734
273788
|
function loadSafeList(host, safeListPath) {
|
|
273735
|
-
const result =
|
|
273789
|
+
const result = readConfigFile2(safeListPath, (path14) => host.readFile(path14));
|
|
273736
273790
|
return new Map(Object.entries(result.config));
|
|
273737
273791
|
}
|
|
273738
273792
|
function loadTypesMap(host, typesMapPath) {
|
|
273739
273793
|
var _a7;
|
|
273740
|
-
const result =
|
|
273794
|
+
const result = readConfigFile2(typesMapPath, (path14) => host.readFile(path14));
|
|
273741
273795
|
if ((_a7 = result.config) == null ? void 0 : _a7.simpleMap) {
|
|
273742
273796
|
return new Map(Object.entries(result.config.simpleMap));
|
|
273743
273797
|
}
|
|
@@ -273813,7 +273867,7 @@ ${lanes.join("\n")}
|
|
|
273813
273867
|
let manifestTypingNames;
|
|
273814
273868
|
if (host.fileExists(manifestPath)) {
|
|
273815
273869
|
filesToWatch2.push(manifestPath);
|
|
273816
|
-
manifest2 =
|
|
273870
|
+
manifest2 = readConfigFile2(manifestPath, (path14) => host.readFile(path14)).config;
|
|
273817
273871
|
manifestTypingNames = flatMap([manifest2.dependencies, manifest2.devDependencies, manifest2.optionalDependencies, manifest2.peerDependencies], getOwnKeys);
|
|
273818
273872
|
addInferredTypings(manifestTypingNames, `Typing names in '${manifestPath}' dependencies`);
|
|
273819
273873
|
}
|
|
@@ -273847,7 +273901,7 @@ ${lanes.join("\n")}
|
|
|
273847
273901
|
if (log2) log2(`Searching for typing names in ${packagesFolderPath}; all files: ${JSON.stringify(dependencyManifestNames)}`);
|
|
273848
273902
|
for (const manifestPath2 of dependencyManifestNames) {
|
|
273849
273903
|
const normalizedFileName = normalizePath(manifestPath2);
|
|
273850
|
-
const result2 =
|
|
273904
|
+
const result2 = readConfigFile2(normalizedFileName, (path14) => host.readFile(path14));
|
|
273851
273905
|
const manifest22 = result2.config;
|
|
273852
273906
|
if (!manifest22.name) {
|
|
273853
273907
|
continue;
|
|
@@ -275943,15 +275997,15 @@ ${lanes.join("\n")}
|
|
|
275943
275997
|
}
|
|
275944
275998
|
return true;
|
|
275945
275999
|
}
|
|
275946
|
-
function getMappedLocation(location, sourceMapper,
|
|
276000
|
+
function getMappedLocation(location, sourceMapper, fileExists2) {
|
|
275947
276001
|
const mapsTo = sourceMapper.tryGetSourcePosition(location);
|
|
275948
|
-
return mapsTo && (!
|
|
276002
|
+
return mapsTo && (!fileExists2 || fileExists2(normalizePath(mapsTo.fileName)) ? mapsTo : void 0);
|
|
275949
276003
|
}
|
|
275950
|
-
function getMappedDocumentSpan(documentSpan, sourceMapper,
|
|
276004
|
+
function getMappedDocumentSpan(documentSpan, sourceMapper, fileExists2) {
|
|
275951
276005
|
const { fileName, textSpan } = documentSpan;
|
|
275952
|
-
const newPosition = getMappedLocation({ fileName, pos: textSpan.start }, sourceMapper,
|
|
276006
|
+
const newPosition = getMappedLocation({ fileName, pos: textSpan.start }, sourceMapper, fileExists2);
|
|
275953
276007
|
if (!newPosition) return void 0;
|
|
275954
|
-
const newEndPosition = getMappedLocation({ fileName, pos: textSpan.start + textSpan.length }, sourceMapper,
|
|
276008
|
+
const newEndPosition = getMappedLocation({ fileName, pos: textSpan.start + textSpan.length }, sourceMapper, fileExists2);
|
|
275955
276009
|
const newLength = newEndPosition ? newEndPosition.pos - newPosition.pos : textSpan.length;
|
|
275956
276010
|
return {
|
|
275957
276011
|
fileName: newPosition.fileName,
|
|
@@ -275961,20 +276015,20 @@ ${lanes.join("\n")}
|
|
|
275961
276015
|
},
|
|
275962
276016
|
originalFileName: documentSpan.fileName,
|
|
275963
276017
|
originalTextSpan: documentSpan.textSpan,
|
|
275964
|
-
contextSpan: getMappedContextSpan(documentSpan, sourceMapper,
|
|
276018
|
+
contextSpan: getMappedContextSpan(documentSpan, sourceMapper, fileExists2),
|
|
275965
276019
|
originalContextSpan: documentSpan.contextSpan
|
|
275966
276020
|
};
|
|
275967
276021
|
}
|
|
275968
|
-
function getMappedContextSpan(documentSpan, sourceMapper,
|
|
276022
|
+
function getMappedContextSpan(documentSpan, sourceMapper, fileExists2) {
|
|
275969
276023
|
const contextSpanStart = documentSpan.contextSpan && getMappedLocation(
|
|
275970
276024
|
{ fileName: documentSpan.fileName, pos: documentSpan.contextSpan.start },
|
|
275971
276025
|
sourceMapper,
|
|
275972
|
-
|
|
276026
|
+
fileExists2
|
|
275973
276027
|
);
|
|
275974
276028
|
const contextSpanEnd = documentSpan.contextSpan && getMappedLocation(
|
|
275975
276029
|
{ fileName: documentSpan.fileName, pos: documentSpan.contextSpan.start + documentSpan.contextSpan.length },
|
|
275976
276030
|
sourceMapper,
|
|
275977
|
-
|
|
276031
|
+
fileExists2
|
|
275978
276032
|
);
|
|
275979
276033
|
return contextSpanStart && contextSpanEnd ? { start: contextSpanStart.pos, length: contextSpanEnd.pos - contextSpanStart.pos } : void 0;
|
|
275980
276034
|
}
|
|
@@ -322947,7 +323001,7 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
322947
323001
|
rangeStartIsOnSameLineAsRangeEnd: () => rangeStartIsOnSameLineAsRangeEnd,
|
|
322948
323002
|
rangeStartPositionsAreOnSameLine: () => rangeStartPositionsAreOnSameLine,
|
|
322949
323003
|
readBuilderProgram: () => readBuilderProgram,
|
|
322950
|
-
readConfigFile: () =>
|
|
323004
|
+
readConfigFile: () => readConfigFile2,
|
|
322951
323005
|
readJson: () => readJson,
|
|
322952
323006
|
readJsonConfigFile: () => readJsonConfigFile,
|
|
322953
323007
|
readJsonOrUndefined: () => readJsonOrUndefined,
|
|
@@ -324458,9 +324512,9 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
324458
324512
|
this.markContainingProjectsAsDirty();
|
|
324459
324513
|
}
|
|
324460
324514
|
}
|
|
324461
|
-
close(
|
|
324515
|
+
close(fileExists2 = true) {
|
|
324462
324516
|
this.textStorage.isOpen = false;
|
|
324463
|
-
if (
|
|
324517
|
+
if (fileExists2 && this.textStorage.scheduleReloadIfNeeded()) {
|
|
324464
324518
|
this.markContainingProjectsAsDirty();
|
|
324465
324519
|
}
|
|
324466
324520
|
}
|
|
@@ -325564,11 +325618,11 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
325564
325618
|
this.rootFilesMap.set(path14, { fileName });
|
|
325565
325619
|
this.markAsDirty();
|
|
325566
325620
|
}
|
|
325567
|
-
removeFile(info,
|
|
325621
|
+
removeFile(info, fileExists2, detachFromProject) {
|
|
325568
325622
|
if (this.isRoot(info)) {
|
|
325569
325623
|
this.removeRoot(info);
|
|
325570
325624
|
}
|
|
325571
|
-
if (
|
|
325625
|
+
if (fileExists2) {
|
|
325572
325626
|
this.resolutionCache.removeResolutionsOfFile(info.path);
|
|
325573
325627
|
} else {
|
|
325574
325628
|
this.resolutionCache.invalidateResolutionOfFile(info.path);
|
|
@@ -328438,8 +328492,8 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
328438
328492
|
*/
|
|
328439
328493
|
closeOpenFile(info, skipAssignOrphanScriptInfosToInferredProject) {
|
|
328440
328494
|
var _a7;
|
|
328441
|
-
const
|
|
328442
|
-
info.close(
|
|
328495
|
+
const fileExists2 = info.isDynamic ? false : this.host.fileExists(info.fileName);
|
|
328496
|
+
info.close(fileExists2);
|
|
328443
328497
|
this.stopWatchingConfigFilesForScriptInfo(info);
|
|
328444
328498
|
const canonicalFileName = this.toCanonicalFileName(info.fileName);
|
|
328445
328499
|
if (this.openFilesWithNonRootedDiskPath.get(canonicalFileName) === info) {
|
|
@@ -328465,7 +328519,7 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
328465
328519
|
}
|
|
328466
328520
|
p.removeFile(
|
|
328467
328521
|
info,
|
|
328468
|
-
|
|
328522
|
+
fileExists2,
|
|
328469
328523
|
/*detachFromProject*/
|
|
328470
328524
|
true
|
|
328471
328525
|
);
|
|
@@ -328481,7 +328535,7 @@ ${options.prefix}` : "\n" : options.prefix
|
|
|
328481
328535
|
if (!skipAssignOrphanScriptInfosToInferredProject && ensureProjectsForOpenFiles) {
|
|
328482
328536
|
this.assignOrphanScriptInfosToInferredProject();
|
|
328483
328537
|
}
|
|
328484
|
-
if (
|
|
328538
|
+
if (fileExists2) {
|
|
328485
328539
|
this.watchClosedScriptInfo(info);
|
|
328486
328540
|
} else {
|
|
328487
328541
|
this.handleDeletedFile(
|
|
@@ -459850,9 +459904,9 @@ var init_ai_script_pipeline = __esm({
|
|
|
459850
459904
|
import { resolve as resolve50 } from "node:path";
|
|
459851
459905
|
import { readFile as readFile25, writeFile as writeFile33 } from "node:fs/promises";
|
|
459852
459906
|
function registerVideoCommand(parent) {
|
|
459853
|
-
parent.command("video").alias("vid").description("Generate video using AI (Seedance, Grok, Kling, Runway, or Veo)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider: seedance (ByteDance Seedance 2.0 via fal.ai), grok, kling, runway, veo. `fal` is a
|
|
459907
|
+
parent.command("video").alias("vid").description("Generate video using AI (Seedance, Grok, Kling, Runway, or Veo)").argument("[prompt]", "Text prompt describing the video (interactive if omitted)").option("-p, --provider <provider>", "Provider: seedance (ByteDance Seedance 2.0 via fal.ai), grok, kling, runway, veo. `fal` is a deprecated v0.x alias for seedance and will be removed in 1.0.").option("-k, --api-key <key>", "API key (or set FAL_KEY / XAI_API_KEY / RUNWAY_API_SECRET / KLING_API_KEY / GOOGLE_API_KEY env)").option("-o, --output <path>", "Output file path (downloads video)").option("-i, --image <path>", "Reference image for image-to-video").option(
|
|
459854
459908
|
"-d, --duration <sec>",
|
|
459855
|
-
"Duration in seconds. Seedance accepts 4-15
|
|
459909
|
+
"Duration in seconds. Seedance accepts 4-15; Kling accepts 5 or 10; Veo maps to 6 or 8.",
|
|
459856
459910
|
"5"
|
|
459857
459911
|
).option("-r, --ratio <ratio>", "Aspect ratio: 16:9, 9:16, or 1:1 (auto-detected from image if omitted)").option("--seed <number>", "Random seed for reproducibility (Runway only)").option("--mode <mode>", "Generation mode: std or pro (Kling only)", "std").option("--seedance-model <model>", "Seedance variant: quality or fast (fal.ai only)", "quality").option("--negative <prompt>", "Negative prompt - what to avoid (Kling/Veo)").option("--resolution <res>", "Video resolution: 720p, 1080p, 4k (Veo only)").option("--last-frame <path>", "Last frame image for frame interpolation (Veo only)").option("--ref-images <paths...>", "Reference images for character consistency (Veo 3.1 only, max 3)").option("--person <mode>", "Person generation: allow_all, allow_adult (Veo only)").option("--veo-model <model>", "Veo model: 3.0, 3.1, 3.1-fast (default: 3.1-fast)", "3.1-fast").option("--runway-model <model>", "Runway model: gen4.5 (default, text+image-to-video), gen4_turbo (image-to-video only)", "gen4.5").option("--no-wait", "Start generation and return task ID without waiting").option("--dry-run", "Preview parameters without executing").addHelpText("after", `
|
|
459858
459912
|
Examples:
|
|
@@ -459898,8 +459952,7 @@ Examples:
|
|
|
459898
459952
|
veo: "GOOGLE_API_KEY",
|
|
459899
459953
|
kling: "KLING_API_KEY",
|
|
459900
459954
|
runway: "RUNWAY_API_SECRET",
|
|
459901
|
-
seedance: "FAL_KEY"
|
|
459902
|
-
fal: "FAL_KEY"
|
|
459955
|
+
seedance: "FAL_KEY"
|
|
459903
459956
|
};
|
|
459904
459957
|
let provider;
|
|
459905
459958
|
if (options.provider) {
|
|
@@ -459908,10 +459961,18 @@ Examples:
|
|
|
459908
459961
|
exitWithError(
|
|
459909
459962
|
usageError(
|
|
459910
459963
|
`Invalid provider: ${provider}`,
|
|
459911
|
-
"Available providers: seedance, grok, kling, runway, veo. `fal` is a
|
|
459964
|
+
"Available providers: seedance, grok, kling, runway, veo. `fal` is a deprecated alias for seedance."
|
|
459912
459965
|
)
|
|
459913
459966
|
);
|
|
459914
459967
|
}
|
|
459968
|
+
if (provider === "fal") {
|
|
459969
|
+
process.stderr.write(
|
|
459970
|
+
source_default.yellow(
|
|
459971
|
+
"Note: `-p fal` is a deprecated alias for `-p seedance` and will be removed in 1.0.\n"
|
|
459972
|
+
)
|
|
459973
|
+
);
|
|
459974
|
+
provider = "seedance";
|
|
459975
|
+
}
|
|
459915
459976
|
if (videoEnvMap[provider] && !hasApiKey(videoEnvMap[provider]) && !options.apiKey) {
|
|
459916
459977
|
const resolved = resolveProvider("video");
|
|
459917
459978
|
if (resolved) {
|
|
@@ -459971,7 +460032,7 @@ Examples:
|
|
|
459971
460032
|
data: {
|
|
459972
460033
|
params: {
|
|
459973
460034
|
prompt: prompt3,
|
|
459974
|
-
provider
|
|
460035
|
+
provider,
|
|
459975
460036
|
duration: options.duration,
|
|
459976
460037
|
ratio: options.ratio,
|
|
459977
460038
|
image: options.image,
|
|
@@ -459990,16 +460051,14 @@ Examples:
|
|
|
459990
460051
|
kling: "KLING_API_KEY",
|
|
459991
460052
|
veo: "GOOGLE_API_KEY",
|
|
459992
460053
|
grok: "XAI_API_KEY",
|
|
459993
|
-
seedance: "FAL_KEY"
|
|
459994
|
-
fal: "FAL_KEY"
|
|
460054
|
+
seedance: "FAL_KEY"
|
|
459995
460055
|
};
|
|
459996
460056
|
const providerNameMap = {
|
|
459997
460057
|
runway: "Runway",
|
|
459998
460058
|
kling: "Kling",
|
|
459999
460059
|
veo: "Veo",
|
|
460000
460060
|
grok: "Grok",
|
|
460001
|
-
seedance: "Seedance 2.0 via fal.ai"
|
|
460002
|
-
fal: "Seedance 2.0 via fal.ai"
|
|
460061
|
+
seedance: "Seedance 2.0 via fal.ai"
|
|
460003
460062
|
};
|
|
460004
460063
|
const envKey = envKeyMap[provider];
|
|
460005
460064
|
const providerName = providerNameMap[provider];
|
|
@@ -460218,7 +460277,7 @@ Examples:
|
|
|
460218
460277
|
},
|
|
460219
460278
|
3e5
|
|
460220
460279
|
);
|
|
460221
|
-
} else if (provider === "
|
|
460280
|
+
} else if (provider === "seedance") {
|
|
460222
460281
|
const fal = new FalProvider();
|
|
460223
460282
|
await fal.initialize({ apiKey });
|
|
460224
460283
|
let falImage = referenceImage;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vibeframe/mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.91.0",
|
|
4
4
|
"description": "VibeFrame MCP Server - AI-native video editing via Model Context Protocol",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -57,8 +57,8 @@
|
|
|
57
57
|
"tsx": "^4.21.0",
|
|
58
58
|
"typescript": "^5.3.3",
|
|
59
59
|
"vitest": "^1.2.2",
|
|
60
|
-
"@vibeframe/core": "0.
|
|
61
|
-
"@vibeframe/cli": "0.
|
|
60
|
+
"@vibeframe/core": "0.91.0",
|
|
61
|
+
"@vibeframe/cli": "0.91.0"
|
|
62
62
|
},
|
|
63
63
|
"engines": {
|
|
64
64
|
"node": ">=20"
|