@vibeframe/mcp-server 0.88.0 → 0.90.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.
Files changed (2) hide show
  1. package/dist/index.js +106 -65
  2. 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/cache/
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
@@ -25409,44 +25408,86 @@ var init_schema = __esm({
25409
25408
  import { resolve as resolve2 } from "node:path";
25410
25409
  import { homedir } from "node:os";
25411
25410
  import { readFile as readFile2, writeFile as writeFile2, mkdir as mkdir2, access as access2 } from "node:fs/promises";
25412
- async function loadConfig() {
25411
+ function getProjectConfigDir(cwd = process.cwd()) {
25412
+ return resolve2(cwd, ".vibeframe");
25413
+ }
25414
+ function getProjectConfigPath(cwd = process.cwd()) {
25415
+ return resolve2(getProjectConfigDir(cwd), "config.yaml");
25416
+ }
25417
+ function getConfigPath(scope, cwd) {
25418
+ return scope === "project" ? getProjectConfigPath(cwd) : USER_CONFIG_PATH;
25419
+ }
25420
+ async function fileExists(path14) {
25413
25421
  try {
25414
- await access2(CONFIG_PATH);
25415
- const content = await readFile2(CONFIG_PATH, "utf-8");
25416
- const config4 = (0, import_yaml2.parse)(content);
25417
- const defaults = createDefaultConfig();
25418
- return {
25419
- ...defaults,
25420
- ...config4,
25421
- llm: { ...defaults.llm, ...config4.llm },
25422
- providers: { ...defaults.providers, ...config4.providers },
25423
- defaults: { ...defaults.defaults, ...config4.defaults },
25424
- repl: { ...defaults.repl, ...config4.repl }
25425
- };
25422
+ await access2(path14);
25423
+ return true;
25424
+ } catch {
25425
+ return false;
25426
+ }
25427
+ }
25428
+ function applyDefaults(parsed) {
25429
+ const defaults = createDefaultConfig();
25430
+ return {
25431
+ ...defaults,
25432
+ ...parsed,
25433
+ llm: { ...defaults.llm, ...parsed.llm },
25434
+ providers: { ...defaults.providers, ...parsed.providers },
25435
+ defaults: { ...defaults.defaults, ...parsed.defaults },
25436
+ repl: { ...defaults.repl, ...parsed.repl }
25437
+ };
25438
+ }
25439
+ async function readConfigFile(path14) {
25440
+ if (!await fileExists(path14)) return null;
25441
+ try {
25442
+ const content = await readFile2(path14, "utf-8");
25443
+ const parsed = (0, import_yaml2.parse)(content);
25444
+ return applyDefaults(parsed);
25426
25445
  } catch {
25427
25446
  return null;
25428
25447
  }
25429
25448
  }
25449
+ async function loadConfig(options = {}) {
25450
+ const { scope, cwd, merge: merge3 } = options;
25451
+ if (merge3) {
25452
+ const user = await readConfigFile(USER_CONFIG_PATH);
25453
+ const project2 = await readConfigFile(getProjectConfigPath(cwd));
25454
+ if (!user && !project2) return null;
25455
+ if (!user) return project2;
25456
+ if (!project2) return user;
25457
+ return {
25458
+ ...user,
25459
+ ...project2,
25460
+ llm: { ...user.llm, ...project2.llm },
25461
+ providers: { ...user.providers, ...project2.providers },
25462
+ defaults: { ...user.defaults, ...project2.defaults },
25463
+ repl: { ...user.repl, ...project2.repl }
25464
+ };
25465
+ }
25466
+ if (scope) {
25467
+ return readConfigFile(getConfigPath(scope, cwd));
25468
+ }
25469
+ const project = await readConfigFile(getProjectConfigPath(cwd));
25470
+ if (project) return project;
25471
+ return readConfigFile(USER_CONFIG_PATH);
25472
+ }
25430
25473
  async function getApiKeyFromConfig(providerKey) {
25431
25474
  const config4 = await loadConfig();
25432
25475
  if (config4?.providers[providerKey]) {
25433
25476
  return config4.providers[providerKey];
25434
25477
  }
25435
25478
  const envVar = PROVIDER_ENV_VARS[providerKey];
25436
- if (envVar) {
25437
- return process.env[envVar];
25438
- }
25479
+ if (envVar) return process.env[envVar];
25439
25480
  return void 0;
25440
25481
  }
25441
- var import_yaml2, CONFIG_DIR, CONFIG_PATH;
25482
+ var import_yaml2, USER_CONFIG_DIR, USER_CONFIG_PATH;
25442
25483
  var init_config = __esm({
25443
25484
  "../cli/src/config/index.ts"() {
25444
25485
  "use strict";
25445
25486
  import_yaml2 = __toESM(require_dist(), 1);
25446
25487
  init_schema();
25447
25488
  init_schema();
25448
- CONFIG_DIR = resolve2(homedir(), ".vibeframe");
25449
- CONFIG_PATH = resolve2(CONFIG_DIR, "config.yaml");
25489
+ USER_CONFIG_DIR = resolve2(homedir(), ".vibeframe");
25490
+ USER_CONFIG_PATH = resolve2(USER_CONFIG_DIR, "config.yaml");
25450
25491
  }
25451
25492
  });
25452
25493
 
@@ -127444,7 +127485,7 @@ var require_typescript2 = __commonJS({
127444
127485
  rangeStartIsOnSameLineAsRangeEnd: () => rangeStartIsOnSameLineAsRangeEnd,
127445
127486
  rangeStartPositionsAreOnSameLine: () => rangeStartPositionsAreOnSameLine,
127446
127487
  readBuilderProgram: () => readBuilderProgram,
127447
- readConfigFile: () => readConfigFile,
127488
+ readConfigFile: () => readConfigFile2,
127448
127489
  readJson: () => readJson,
127449
127490
  readJsonConfigFile: () => readJsonConfigFile,
127450
127491
  readJsonOrUndefined: () => readJsonOrUndefined,
@@ -134068,7 +134109,7 @@ ${lanes.join("\n")}
134068
134109
  watchDirectory,
134069
134110
  preferNonRecursiveWatch: !fsSupportsRecursiveFsWatch,
134070
134111
  resolvePath: (path14) => _path.resolve(path14),
134071
- fileExists,
134112
+ fileExists: fileExists2,
134072
134113
  directoryExists,
134073
134114
  getAccessibleFileSystemEntries,
134074
134115
  createDirectory(directoryName) {
@@ -134230,7 +134271,7 @@ ${lanes.join("\n")}
134230
134271
  if (platform === "win32" || platform === "win64") {
134231
134272
  return false;
134232
134273
  }
134233
- return !fileExists(swapCase(__filename));
134274
+ return !fileExists2(swapCase(__filename));
134234
134275
  }
134235
134276
  function swapCase(s) {
134236
134277
  return s.replace(/\w/g, (ch) => {
@@ -134363,7 +134404,7 @@ ${lanes.join("\n")}
134363
134404
  return false;
134364
134405
  }
134365
134406
  }
134366
- function fileExists(path14) {
134407
+ function fileExists2(path14) {
134367
134408
  return fileSystemEntryExists(
134368
134409
  path14,
134369
134410
  0
@@ -171058,7 +171099,7 @@ ${lanes.join("\n")}
171058
171099
  watchOptionsToExtend
171059
171100
  );
171060
171101
  }
171061
- function readConfigFile(fileName, readFile34) {
171102
+ function readConfigFile2(fileName, readFile34) {
171062
171103
  const textOrDiagnostic = tryReadFile(fileName, readFile34);
171063
171104
  return isString3(textOrDiagnostic) ? parseConfigFileTextToJson(fileName, textOrDiagnostic) : { config: {}, error: textOrDiagnostic };
171064
171105
  }
@@ -260189,7 +260230,7 @@ ${lanes.join("\n")}
260189
260230
  const getCanonicalFileName = createGetCanonicalFileName(useCaseSensitiveFileNames2);
260190
260231
  return {
260191
260232
  useCaseSensitiveFileNames: useCaseSensitiveFileNames2,
260192
- fileExists,
260233
+ fileExists: fileExists2,
260193
260234
  readFile: (path14, encoding) => host.readFile(path14, encoding),
260194
260235
  directoryExists: host.directoryExists && directoryExists,
260195
260236
  getDirectories,
@@ -260275,7 +260316,7 @@ ${lanes.join("\n")}
260275
260316
  }
260276
260317
  return host.writeFile(fileName, data, writeByteOrderMark);
260277
260318
  }
260278
- function fileExists(fileName) {
260319
+ function fileExists2(fileName) {
260279
260320
  const path14 = toPath3(fileName);
260280
260321
  const result = getCachedFileSystemEntriesForBaseDir(path14);
260281
260322
  return result && hasEntry(result.sortedAndCanonicalizedFiles, getCanonicalFileName(getBaseNameOfFileName(fileName))) || host.fileExists(fileName);
@@ -260391,10 +260432,10 @@ ${lanes.join("\n")}
260391
260432
  clearFirstAncestorEntry(filePath);
260392
260433
  }
260393
260434
  }
260394
- function updateFilesOfFileSystemEntry(parentResult, baseName, fileExists2) {
260435
+ function updateFilesOfFileSystemEntry(parentResult, baseName, fileExists22) {
260395
260436
  const canonicalizedFiles = parentResult.sortedAndCanonicalizedFiles;
260396
260437
  const canonicalizedBaseName = getCanonicalFileName(baseName);
260397
- if (fileExists2) {
260438
+ if (fileExists22) {
260398
260439
  if (insertSorted(canonicalizedFiles, canonicalizedBaseName, compareStringsCaseSensitive)) {
260399
260440
  parentResult.files.push(baseName);
260400
260441
  }
@@ -260694,10 +260735,10 @@ ${lanes.join("\n")}
260694
260735
  function closeFileWatcherOf(objWithWatcher) {
260695
260736
  objWithWatcher.watcher.close();
260696
260737
  }
260697
- function findConfigFile(searchPath, fileExists, configName = "tsconfig.json") {
260738
+ function findConfigFile(searchPath, fileExists2, configName = "tsconfig.json") {
260698
260739
  return forEachAncestorDirectory(searchPath, (ancestor) => {
260699
260740
  const fileName = combinePaths(ancestor, configName);
260700
- return fileExists(fileName) ? fileName : void 0;
260741
+ return fileExists2(fileName) ? fileName : void 0;
260701
260742
  });
260702
260743
  }
260703
260744
  function resolveTripleslashReference(moduleName, containingFile) {
@@ -261304,14 +261345,14 @@ ${lanes.join("\n")}
261304
261345
  }
261305
261346
  return { file, pos, end, packageId };
261306
261347
  }
261307
- function isProgramUptoDate(program2, rootFileNames, newOptions, getSourceVersion, fileExists, hasInvalidatedResolutions, hasInvalidatedLibResolutions, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences) {
261348
+ function isProgramUptoDate(program2, rootFileNames, newOptions, getSourceVersion, fileExists2, hasInvalidatedResolutions, hasInvalidatedLibResolutions, hasChangedAutomaticTypeDirectiveNames, getParsedCommandLine, projectReferences) {
261308
261349
  if (!program2 || (hasChangedAutomaticTypeDirectiveNames == null ? void 0 : hasChangedAutomaticTypeDirectiveNames())) return false;
261309
261350
  if (!arrayIsEqualTo(program2.getRootFileNames(), rootFileNames)) return false;
261310
261351
  let seenResolvedRefs;
261311
261352
  if (!arrayIsEqualTo(program2.getProjectReferences(), projectReferences, projectReferenceUptoDate)) return false;
261312
261353
  if (program2.getSourceFiles().some(sourceFileNotUptoDate)) return false;
261313
261354
  const missingPaths = program2.getMissingFilePaths();
261314
- if (missingPaths && forEachEntry(missingPaths, fileExists)) return false;
261355
+ if (missingPaths && forEachEntry(missingPaths, fileExists2)) return false;
261315
261356
  const currentOptions = program2.getCompilerOptions();
261316
261357
  if (!compareDataObjects(currentOptions, newOptions)) return false;
261317
261358
  if (program2.resolvedLibReferences && forEachEntry(program2.resolvedLibReferences, (_value, libFileName) => hasInvalidatedLibResolutions(libFileName))) return false;
@@ -261639,7 +261680,7 @@ ${lanes.join("\n")}
261639
261680
  let mapSourceFileToResolvedRef;
261640
261681
  let mapOutputFileToResolvedRef;
261641
261682
  const useSourceOfProjectReferenceRedirect = !!((_d = host.useSourceOfProjectReferenceRedirect) == null ? void 0 : _d.call(host)) && !options.disableSourceOfProjectReferenceRedirect;
261642
- const { onProgramCreateComplete, fileExists, directoryExists } = updateHostForUseSourceOfProjectReferenceRedirect({
261683
+ const { onProgramCreateComplete, fileExists: fileExists2, directoryExists } = updateHostForUseSourceOfProjectReferenceRedirect({
261643
261684
  compilerHost: host,
261644
261685
  getSymlinkCache,
261645
261686
  useSourceOfProjectReferenceRedirect,
@@ -261873,7 +261914,7 @@ ${lanes.join("\n")}
261873
261914
  getImpliedNodeFormatForEmit: getImpliedNodeFormatForEmit2,
261874
261915
  shouldTransformImportCall,
261875
261916
  emitBuildInfo,
261876
- fileExists,
261917
+ fileExists: fileExists2,
261877
261918
  readFile: readFile34,
261878
261919
  directoryExists,
261879
261920
  getSymlinkCache,
@@ -264372,8 +264413,8 @@ ${lanes.join("\n")}
264372
264413
  const originalDirectoryExists = host.compilerHost.directoryExists;
264373
264414
  const originalGetDirectories = host.compilerHost.getDirectories;
264374
264415
  const originalRealpath = host.compilerHost.realpath;
264375
- if (!host.useSourceOfProjectReferenceRedirect) return { onProgramCreateComplete: noop3, fileExists };
264376
- host.compilerHost.fileExists = fileExists;
264416
+ if (!host.useSourceOfProjectReferenceRedirect) return { onProgramCreateComplete: noop3, fileExists: fileExists2 };
264417
+ host.compilerHost.fileExists = fileExists2;
264377
264418
  let directoryExists;
264378
264419
  if (originalDirectoryExists) {
264379
264420
  directoryExists = host.compilerHost.directoryExists = (path14) => {
@@ -264412,13 +264453,13 @@ ${lanes.join("\n")}
264412
264453
  return ((_a7 = host.getSymlinkCache().getSymlinkedFiles()) == null ? void 0 : _a7.get(host.toPath(s))) || originalRealpath.call(host.compilerHost, s);
264413
264454
  };
264414
264455
  }
264415
- return { onProgramCreateComplete, fileExists, directoryExists };
264456
+ return { onProgramCreateComplete, fileExists: fileExists2, directoryExists };
264416
264457
  function onProgramCreateComplete() {
264417
264458
  host.compilerHost.fileExists = originalFileExists;
264418
264459
  host.compilerHost.directoryExists = originalDirectoryExists;
264419
264460
  host.compilerHost.getDirectories = originalGetDirectories;
264420
264461
  }
264421
- function fileExists(file) {
264462
+ function fileExists2(file) {
264422
264463
  if (originalFileExists.call(host.compilerHost, file)) return true;
264423
264464
  if (!host.getResolvedProjectReferences()) return false;
264424
264465
  if (!isDeclarationFileName(file)) return false;
@@ -268770,7 +268811,7 @@ ${lanes.join("\n")}
268770
268811
  compilerHost.getSourceFile = (fileName, ...args) => getVersionedSourceFileByPath(fileName, toPath3(fileName), ...args);
268771
268812
  compilerHost.getSourceFileByPath = getVersionedSourceFileByPath;
268772
268813
  compilerHost.getNewLine = () => newLine;
268773
- compilerHost.fileExists = fileExists;
268814
+ compilerHost.fileExists = fileExists2;
268774
268815
  compilerHost.onReleaseOldSourceFile = onReleaseOldSourceFile;
268775
268816
  compilerHost.onReleaseParsedCommandLine = onReleaseParsedCommandLine;
268776
268817
  compilerHost.toPath = toPath3;
@@ -268974,7 +269015,7 @@ ${lanes.join("\n")}
268974
269015
  function isFilePresenceUnknownOnHost(hostSourceFile) {
268975
269016
  return typeof hostSourceFile.version === "boolean";
268976
269017
  }
268977
- function fileExists(fileName) {
269018
+ function fileExists2(fileName) {
268978
269019
  const path14 = toPath3(fileName);
268979
269020
  if (isFileMissingOnHost(sourceFilesCache.get(path14))) {
268980
269021
  return false;
@@ -273732,12 +273773,12 @@ ${lanes.join("\n")}
273732
273773
  return nodeCoreModules.has(moduleName) ? "node" : moduleName;
273733
273774
  }
273734
273775
  function loadSafeList(host, safeListPath) {
273735
- const result = readConfigFile(safeListPath, (path14) => host.readFile(path14));
273776
+ const result = readConfigFile2(safeListPath, (path14) => host.readFile(path14));
273736
273777
  return new Map(Object.entries(result.config));
273737
273778
  }
273738
273779
  function loadTypesMap(host, typesMapPath) {
273739
273780
  var _a7;
273740
- const result = readConfigFile(typesMapPath, (path14) => host.readFile(path14));
273781
+ const result = readConfigFile2(typesMapPath, (path14) => host.readFile(path14));
273741
273782
  if ((_a7 = result.config) == null ? void 0 : _a7.simpleMap) {
273742
273783
  return new Map(Object.entries(result.config.simpleMap));
273743
273784
  }
@@ -273813,7 +273854,7 @@ ${lanes.join("\n")}
273813
273854
  let manifestTypingNames;
273814
273855
  if (host.fileExists(manifestPath)) {
273815
273856
  filesToWatch2.push(manifestPath);
273816
- manifest2 = readConfigFile(manifestPath, (path14) => host.readFile(path14)).config;
273857
+ manifest2 = readConfigFile2(manifestPath, (path14) => host.readFile(path14)).config;
273817
273858
  manifestTypingNames = flatMap([manifest2.dependencies, manifest2.devDependencies, manifest2.optionalDependencies, manifest2.peerDependencies], getOwnKeys);
273818
273859
  addInferredTypings(manifestTypingNames, `Typing names in '${manifestPath}' dependencies`);
273819
273860
  }
@@ -273847,7 +273888,7 @@ ${lanes.join("\n")}
273847
273888
  if (log2) log2(`Searching for typing names in ${packagesFolderPath}; all files: ${JSON.stringify(dependencyManifestNames)}`);
273848
273889
  for (const manifestPath2 of dependencyManifestNames) {
273849
273890
  const normalizedFileName = normalizePath(manifestPath2);
273850
- const result2 = readConfigFile(normalizedFileName, (path14) => host.readFile(path14));
273891
+ const result2 = readConfigFile2(normalizedFileName, (path14) => host.readFile(path14));
273851
273892
  const manifest22 = result2.config;
273852
273893
  if (!manifest22.name) {
273853
273894
  continue;
@@ -275943,15 +275984,15 @@ ${lanes.join("\n")}
275943
275984
  }
275944
275985
  return true;
275945
275986
  }
275946
- function getMappedLocation(location, sourceMapper, fileExists) {
275987
+ function getMappedLocation(location, sourceMapper, fileExists2) {
275947
275988
  const mapsTo = sourceMapper.tryGetSourcePosition(location);
275948
- return mapsTo && (!fileExists || fileExists(normalizePath(mapsTo.fileName)) ? mapsTo : void 0);
275989
+ return mapsTo && (!fileExists2 || fileExists2(normalizePath(mapsTo.fileName)) ? mapsTo : void 0);
275949
275990
  }
275950
- function getMappedDocumentSpan(documentSpan, sourceMapper, fileExists) {
275991
+ function getMappedDocumentSpan(documentSpan, sourceMapper, fileExists2) {
275951
275992
  const { fileName, textSpan } = documentSpan;
275952
- const newPosition = getMappedLocation({ fileName, pos: textSpan.start }, sourceMapper, fileExists);
275993
+ const newPosition = getMappedLocation({ fileName, pos: textSpan.start }, sourceMapper, fileExists2);
275953
275994
  if (!newPosition) return void 0;
275954
- const newEndPosition = getMappedLocation({ fileName, pos: textSpan.start + textSpan.length }, sourceMapper, fileExists);
275995
+ const newEndPosition = getMappedLocation({ fileName, pos: textSpan.start + textSpan.length }, sourceMapper, fileExists2);
275955
275996
  const newLength = newEndPosition ? newEndPosition.pos - newPosition.pos : textSpan.length;
275956
275997
  return {
275957
275998
  fileName: newPosition.fileName,
@@ -275961,20 +276002,20 @@ ${lanes.join("\n")}
275961
276002
  },
275962
276003
  originalFileName: documentSpan.fileName,
275963
276004
  originalTextSpan: documentSpan.textSpan,
275964
- contextSpan: getMappedContextSpan(documentSpan, sourceMapper, fileExists),
276005
+ contextSpan: getMappedContextSpan(documentSpan, sourceMapper, fileExists2),
275965
276006
  originalContextSpan: documentSpan.contextSpan
275966
276007
  };
275967
276008
  }
275968
- function getMappedContextSpan(documentSpan, sourceMapper, fileExists) {
276009
+ function getMappedContextSpan(documentSpan, sourceMapper, fileExists2) {
275969
276010
  const contextSpanStart = documentSpan.contextSpan && getMappedLocation(
275970
276011
  { fileName: documentSpan.fileName, pos: documentSpan.contextSpan.start },
275971
276012
  sourceMapper,
275972
- fileExists
276013
+ fileExists2
275973
276014
  );
275974
276015
  const contextSpanEnd = documentSpan.contextSpan && getMappedLocation(
275975
276016
  { fileName: documentSpan.fileName, pos: documentSpan.contextSpan.start + documentSpan.contextSpan.length },
275976
276017
  sourceMapper,
275977
- fileExists
276018
+ fileExists2
275978
276019
  );
275979
276020
  return contextSpanStart && contextSpanEnd ? { start: contextSpanStart.pos, length: contextSpanEnd.pos - contextSpanStart.pos } : void 0;
275980
276021
  }
@@ -322947,7 +322988,7 @@ ${options.prefix}` : "\n" : options.prefix
322947
322988
  rangeStartIsOnSameLineAsRangeEnd: () => rangeStartIsOnSameLineAsRangeEnd,
322948
322989
  rangeStartPositionsAreOnSameLine: () => rangeStartPositionsAreOnSameLine,
322949
322990
  readBuilderProgram: () => readBuilderProgram,
322950
- readConfigFile: () => readConfigFile,
322991
+ readConfigFile: () => readConfigFile2,
322951
322992
  readJson: () => readJson,
322952
322993
  readJsonConfigFile: () => readJsonConfigFile,
322953
322994
  readJsonOrUndefined: () => readJsonOrUndefined,
@@ -324458,9 +324499,9 @@ ${options.prefix}` : "\n" : options.prefix
324458
324499
  this.markContainingProjectsAsDirty();
324459
324500
  }
324460
324501
  }
324461
- close(fileExists = true) {
324502
+ close(fileExists2 = true) {
324462
324503
  this.textStorage.isOpen = false;
324463
- if (fileExists && this.textStorage.scheduleReloadIfNeeded()) {
324504
+ if (fileExists2 && this.textStorage.scheduleReloadIfNeeded()) {
324464
324505
  this.markContainingProjectsAsDirty();
324465
324506
  }
324466
324507
  }
@@ -325564,11 +325605,11 @@ ${options.prefix}` : "\n" : options.prefix
325564
325605
  this.rootFilesMap.set(path14, { fileName });
325565
325606
  this.markAsDirty();
325566
325607
  }
325567
- removeFile(info, fileExists, detachFromProject) {
325608
+ removeFile(info, fileExists2, detachFromProject) {
325568
325609
  if (this.isRoot(info)) {
325569
325610
  this.removeRoot(info);
325570
325611
  }
325571
- if (fileExists) {
325612
+ if (fileExists2) {
325572
325613
  this.resolutionCache.removeResolutionsOfFile(info.path);
325573
325614
  } else {
325574
325615
  this.resolutionCache.invalidateResolutionOfFile(info.path);
@@ -328438,8 +328479,8 @@ ${options.prefix}` : "\n" : options.prefix
328438
328479
  */
328439
328480
  closeOpenFile(info, skipAssignOrphanScriptInfosToInferredProject) {
328440
328481
  var _a7;
328441
- const fileExists = info.isDynamic ? false : this.host.fileExists(info.fileName);
328442
- info.close(fileExists);
328482
+ const fileExists2 = info.isDynamic ? false : this.host.fileExists(info.fileName);
328483
+ info.close(fileExists2);
328443
328484
  this.stopWatchingConfigFilesForScriptInfo(info);
328444
328485
  const canonicalFileName = this.toCanonicalFileName(info.fileName);
328445
328486
  if (this.openFilesWithNonRootedDiskPath.get(canonicalFileName) === info) {
@@ -328465,7 +328506,7 @@ ${options.prefix}` : "\n" : options.prefix
328465
328506
  }
328466
328507
  p.removeFile(
328467
328508
  info,
328468
- fileExists,
328509
+ fileExists2,
328469
328510
  /*detachFromProject*/
328470
328511
  true
328471
328512
  );
@@ -328481,7 +328522,7 @@ ${options.prefix}` : "\n" : options.prefix
328481
328522
  if (!skipAssignOrphanScriptInfosToInferredProject && ensureProjectsForOpenFiles) {
328482
328523
  this.assignOrphanScriptInfosToInferredProject();
328483
328524
  }
328484
- if (fileExists) {
328525
+ if (fileExists2) {
328485
328526
  this.watchClosedScriptInfo(info);
328486
328527
  } else {
328487
328528
  this.handleDeletedFile(
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/mcp-server",
3
- "version": "0.88.0",
3
+ "version": "0.90.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.88.0",
61
- "@vibeframe/cli": "0.88.0"
60
+ "@vibeframe/cli": "0.90.0",
61
+ "@vibeframe/core": "0.90.0"
62
62
  },
63
63
  "engines": {
64
64
  "node": ">=20"