@vibeframe/cli 0.94.0 → 0.95.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 +42 -15
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -25754,8 +25754,18 @@ async function fileExists(path2) {
25754
25754
  return false;
25755
25755
  }
25756
25756
  }
25757
+ async function findProjectConfigPath(cwd = process.cwd()) {
25758
+ let dir = resolve4(cwd);
25759
+ for (; ; ) {
25760
+ const candidate = getProjectConfigPath(dir);
25761
+ if (await fileExists(candidate)) return candidate;
25762
+ const parent = resolve4(dir, "..");
25763
+ if (parent === dir) return null;
25764
+ dir = parent;
25765
+ }
25766
+ }
25757
25767
  async function getActiveScope(cwd) {
25758
- return await fileExists(getProjectConfigPath(cwd)) ? "project" : "user";
25768
+ return await findProjectConfigPath(cwd) ? "project" : "user";
25759
25769
  }
25760
25770
  function applyDefaults(parsed) {
25761
25771
  const defaults = createDefaultConfig();
@@ -25787,7 +25797,8 @@ async function loadConfig(options = {}) {
25787
25797
  const { scope, cwd, merge } = options;
25788
25798
  if (merge) {
25789
25799
  const user = await readConfigFile(USER_CONFIG_PATH);
25790
- const project2 = await readConfigFile(getProjectConfigPath(cwd));
25800
+ const projectPath2 = await findProjectConfigPath(cwd);
25801
+ const project2 = projectPath2 ? await readConfigFile(projectPath2) : null;
25791
25802
  if (!user && !project2) return null;
25792
25803
  if (!user) return project2;
25793
25804
  if (!project2) return user;
@@ -25808,7 +25819,8 @@ async function loadConfig(options = {}) {
25808
25819
  if (scope) {
25809
25820
  return readConfigFile(getConfigPath(scope, cwd));
25810
25821
  }
25811
- const project = await readConfigFile(getProjectConfigPath(cwd));
25822
+ const projectPath = await findProjectConfigPath(cwd);
25823
+ const project = projectPath ? await readConfigFile(projectPath) : null;
25812
25824
  if (project) return project;
25813
25825
  return readConfigFile(USER_CONFIG_PATH);
25814
25826
  }
@@ -63444,7 +63456,7 @@ init_source();
63444
63456
  // package.json
63445
63457
  var package_default = {
63446
63458
  name: "@vibeframe/cli",
63447
- version: "0.94.0",
63459
+ version: "0.95.0",
63448
63460
  description: "VibeFrame CLI - natural language video editing from the terminal",
63449
63461
  private: false,
63450
63462
  license: "MIT",
@@ -70767,11 +70779,8 @@ function applyProviderDefault(config2, choice) {
70767
70779
  }
70768
70780
  }
70769
70781
  function isProviderChoiceConfigured(config2, choice) {
70770
- const keys = [choice.key, ...getChoiceExtraKeys(config2, choice)].filter(
70771
- (keyDef) => Boolean(keyDef)
70772
- );
70773
- for (const keyDef of keys) {
70774
- const value = config2.providers[keyDef.configKey];
70782
+ if (choice.key) {
70783
+ const value = config2.providers[choice.key.configKey];
70775
70784
  if (value) return true;
70776
70785
  }
70777
70786
  if (choice.defaultFor?.kind === "image") {
@@ -71688,10 +71697,21 @@ vibe walkthrough scene # step-by-step authoring guide (scene)
71688
71697
  vibe walkthrough pipeline # step-by-step authoring guide (pipeline)
71689
71698
  \`\`\`
71690
71699
 
71691
- ## Two flows \u2014 pick by intent
71700
+ ## Route by the user's actual request
71692
71701
 
71693
- VibeFrame splits cleanly into two flows. Routing the user's request
71694
- correctly is the most important judgement call you'll make.
71702
+ Routing the user's request correctly is the most important judgement call
71703
+ you'll make. Do not force everything into a scene project.
71704
+
71705
+ **ASSET \u2014 create one generated asset.**
71706
+ If the user asks for a single image, single video clip, sound effect, music
71707
+ bed, or narration file, use \`vibe generate ...\` directly. Do **not** edit
71708
+ \`DESIGN.md\`, \`STORYBOARD.md\`, or run \`vibe scene ...\` unless the user
71709
+ explicitly asks to build a storyboard/scene/composed video.
71710
+
71711
+ Examples:
71712
+ - "make this image" \u2192 \`vibe generate image "..." -o assets/name.png\`
71713
+ - "use this image to make a video" \u2192 \`vibe generate video "..." -i image.png -o renders/name.mp4\`
71714
+ - "please add visuals using OpenAI image gen" \u2192 \`vibe generate image "..." -p openai ...\`
71695
71715
 
71696
71716
  **BUILD \u2014 create new video from text intent.**
71697
71717
  Use \`vibe build\` with a STORYBOARD.md + DESIGN.md. The
@@ -71703,9 +71723,9 @@ bundle, then renders to MP4. Idempotent re-runs reuse cached assets.
71703
71723
  Use \`vibe remix\`, \`vibe edit\`, or \`vibe audio\`. One-shot,
71704
71724
  batch-oriented operations on a file the user already has on disk.
71705
71725
 
71706
- Decision rule: if the user is starting from intent (a script, a brand,
71707
- an idea), it's BUILD. If the user is starting from a media file, it's
71708
- REMIX.
71726
+ Decision rule: if the user asks for one asset, it's ASSET. If the user asks
71727
+ for a multi-scene/storyboard/composed video, it's BUILD. If the user is
71728
+ starting from a media file and wants it transformed, it's REMIX.
71709
71729
 
71710
71730
  ## Common workflows
71711
71731
 
@@ -71827,6 +71847,13 @@ overview content moved into AGENTS.md above):
71827
71847
  - \`/vibe-pipeline\` \u2014 YAML pipeline authoring helper (Video as Code)
71828
71848
  - \`/vibe-scene\` \u2014 per-scene HTML authoring + \`vibe build\`
71829
71849
 
71850
+ Claude-specific routing note: follow the ASSET / BUILD / REMIX decision
71851
+ rules in \`AGENTS.md\`. In particular, a request for one generated image or
71852
+ one generated video clip is an ASSET request: use \`vibe generate image\` or
71853
+ \`vibe generate video\` directly. Do not invoke \`/vibe-scene\`, edit
71854
+ \`DESIGN.md\`, or edit \`STORYBOARD.md\` unless the user explicitly asks for a
71855
+ scene, storyboard, or composed video.
71856
+
71830
71857
  To install / update them later:
71831
71858
 
71832
71859
  \`\`\`bash
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vibeframe/cli",
3
- "version": "0.94.0",
3
+ "version": "0.95.0",
4
4
  "description": "VibeFrame CLI - natural language video editing from the terminal",
5
5
  "private": false,
6
6
  "license": "MIT",
@@ -183,8 +183,8 @@
183
183
  "tsx": "^4.21.0",
184
184
  "typescript": "^5.3.3",
185
185
  "vitest": "^1.2.2",
186
- "@vibeframe/ai-providers": "0.94.0",
187
- "@vibeframe/core": "0.94.0"
186
+ "@vibeframe/ai-providers": "0.95.0",
187
+ "@vibeframe/core": "0.95.0"
188
188
  },
189
189
  "engines": {
190
190
  "node": ">=20"