veogent 1.1.0 → 1.1.2

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/README.md CHANGED
@@ -61,7 +61,7 @@ veogent projects
61
61
  veogent image-materials
62
62
 
63
63
  # Create a brand new AI Story Project using your prompt
64
- veogent create-project -n "Cyberpunk T-Rex" -k "T-rex, Neon, Sci-fi" -d "A massive T-rex walking inside Tokyo" -l "English" -m "CINEMATIC" -c 5
64
+ veogent create-project -n "Cyberpunk T-Rex" -k "T-rex, Neon, Sci-fi" -d "A massive T-rex walking inside Tokyo" -l "English" -m "CINEMATIC" -c 5 -O '{"name":"Hero","entityType":"character","description":"brave knight"}'
65
65
  ```
66
66
 
67
67
  ### 📖 Storyboard, Chapters & Scenes
package/index.js CHANGED
@@ -242,12 +242,22 @@ program
242
242
  .requiredOption('-k, --keyword <keyword>', 'Keywords for the project')
243
243
  .requiredOption('-l, --lang <lang>', 'Story language')
244
244
  .option('-p, --promptId <promptId>', 'Custom Prompt ID from custom-prompts (optional)')
245
+ .option('-O, --objects <objects...>', 'List of specific objects to include as JSON strings (optional)')
245
246
  .action(async (options) => {
246
247
  try {
248
+ let parsedObjects = [];
249
+ if (options.objects && options.objects.length > 0) {
250
+ try {
251
+ parsedObjects = options.objects.map(objStr => typeof objStr === 'string' ? JSON.parse(objStr) : objStr);
252
+ } catch (e) {
253
+ throw new Error("Invalid JSON format for --objects. Example: -O '{\"name\":\"Hero\",\"entityType\":\"character\",\"description\":\"brave knight\"}'");
254
+ }
255
+ }
256
+
247
257
  const payload = {
248
258
  keywords: options.keyword,
249
259
  language: options.lang,
250
- objects: []
260
+ objects: parsedObjects
251
261
  };
252
262
  if (options.promptId) payload.customPromptId = options.promptId;
253
263
  const data = await api.post('/app/description', payload);
@@ -268,8 +278,18 @@ program
268
278
  .requiredOption('-m, --material <material>', 'Image material')
269
279
  .option('-c, --chapters <count>', 'Number of chapters', '1')
270
280
  .option('-C, --customPromptId <customPromptId>', 'Custom Prompt ID')
281
+ .option('-O, --objects <objects...>', 'List of specific objects for the project as JSON strings (optional)')
271
282
  .action(async (options) => {
272
283
  try {
284
+ let parsedObjects = [];
285
+ if (options.objects && options.objects.length > 0) {
286
+ try {
287
+ parsedObjects = options.objects.map(objStr => typeof objStr === 'string' ? JSON.parse(objStr) : objStr);
288
+ } catch (e) {
289
+ throw new Error("Invalid JSON format for --objects. Example: -O '{\"name\":\"Hero\",\"entityType\":\"character\",\"description\":\"desc\",\"file\":\"data:image/jpeg;base64,...\"}'");
290
+ }
291
+ }
292
+
273
293
  const payload = {
274
294
  projectName: options.name,
275
295
  keyword: options.keyword,
@@ -278,6 +298,7 @@ program
278
298
  soundEffects: options.sound === 'true' || options.sound === true,
279
299
  imageMaterial: options.material,
280
300
  numberChapters: parseInt(options.chapters),
301
+ objects: parsedObjects
281
302
  };
282
303
  if (options.customPromptId) payload.customPromptId = options.customPromptId;
283
304
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "veogent",
3
- "version": "1.1.0",
3
+ "version": "1.1.2",
4
4
  "description": "The official CLI to interact with the VEOGENT API - AI Video and Image generation platform",
5
5
  "main": "index.js",
6
6
  "bin": {
package/skills/SKILL.md CHANGED
@@ -164,9 +164,15 @@ The `veogent` command-line interface interacts with the **VEOGENT API** for mana
164
164
  | `-k, --keyword <keyword>` | ✅ | Keywords for the project |
165
165
  | `-l, --lang <lang>` | ✅ | Story language (e.g., `English`, `Vietnamese`) |
166
166
  | `-p, --promptId <promptId>` | ❌ | Custom Prompt ID from `custom-prompts` (optional) |
167
+ | `-O, --objects <objects...>`| ❌ | List of specific objects to include formatted as JSON strings (optional) |
168
+
169
+ > â„šī¸ **Object Structure (`--objects`):**
170
+ > `[{"name": "Hero", "entityType": "character", "description": "brave knight"}]`
171
+
167
172
  - **Example:**
168
173
  ```bash
169
- veogent create-project-description -k "T-rex, Neon, Tokyo" -l "English" -p "promptId123"
174
+ veogent create-project-description -k "T-rex, Neon, Tokyo" -l "English" -p "promptId123" \
175
+ -O '{"name":"Hero","entityType":"character","description":"brave knight"}'
170
176
  ```
171
177
 
172
178
  ### Skill: `create-project`
@@ -182,11 +188,18 @@ The `veogent` command-line interface interacts with the **VEOGENT API** for mana
182
188
  | `-m, --material <material>` | ✅ | Image material (from `image-materials`) | — |
183
189
  | `-c, --chapters <count>` | ❌ | Number of chapters | `1` |
184
190
  | `-C, --customPromptId <id>` | ❌ | Custom Prompt ID | — |
191
+ | `-O, --objects <objects...>`| ❌ | List of specific objects for the project formatted as JSON strings | `[]` |
192
+
193
+ > â„šī¸ **Object Structure (`--objects`):**
194
+ > `[{"name": "Hero", "entityType": "character", "description": "desc", "file": "data:image/jpeg;base64,..."}]`
195
+ > *(Note: `file` is optional but useful for providing a reference image)*
196
+
185
197
  - **Example:**
186
198
  ```bash
187
199
  veogent create-project -n "Cyberpunk T-Rex" -k "T-rex, Neon, Sci-fi" \
188
200
  -d "A massive T-rex walking inside Tokyo at night..." \
189
- -l "English" -m "CINEMATIC" -c 5
201
+ -l "English" -m "CINEMATIC" -c 5 \
202
+ -O '{"name":"Hero","entityType":"character","description":"desc","file":"data:image/jpeg;base64,..."}'
190
203
  ```
191
204
 
192
205
  ---
@@ -420,6 +433,8 @@ Beside the main visual description, you **CAN** include minor action description
420
433
  - **Description:** Create a generation job request. Supports `GENERATE_IMAGES`, `GENERATE_VIDEO`, and `VIDEO_UPSCALE`.
421
434
  - **Guidelines:**
422
435
  > âš ī¸ **CRITICAL VALIDATION RULES (Strict DTO):** Do not pass unsupported flags for a specific type, or the server will return a `400 Bad Request` or `Validation Error`. The CLI also performs client-side model validation — unsupported models throw `E_IMAGE_MODEL_UNSUPPORTED` / `E_VIDEO_MODEL_UNSUPPORTED`.
436
+ - **Options:**
437
+ > â„šī¸ When `--orientation` include: `HORIZONTAL`, `VERTICAL`
423
438
 
424
439
  #### 1. Generate Images (`GENERATE_IMAGES`)
425
440
 
@@ -430,11 +445,12 @@ Beside the main visual description, you **CAN** include minor action description
430
445
  | `-c, --chapter` | ✅ | Chapter ID | — |
431
446
  | `-s, --scene` | ✅ | Scene ID | — |
432
447
  | `-i, --imagemodel` | ❌ | Image model | `imagen3.5` |
448
+ | `-o, --orientation` | ❌ | Orientation | `HORIZONTAL` |
433
449
 
434
- > đŸšĢ **Prohibited flags:** Do NOT pass `-o` (orientation), `-v` (videomodel), or `-S` (speed).
450
+ > đŸšĢ **Prohibited flags:** Do NOT pass `-v` (videomodel), or `-S` (speed).
435
451
 
436
452
  ```bash
437
- veogent request -t "GENERATE_IMAGES" -p "projID" -c "chapID" -s "sceneID" -i "imagen3.5"
453
+ veogent request -t "GENERATE_IMAGES" -p "projID" -c "chapID" -s "sceneID" -i "imagen3.5" -o "HORIZONTAL"
438
454
  ```
439
455
 
440
456
  #### 2. Generate Video (`GENERATE_VIDEO`)
@@ -454,6 +470,7 @@ veogent request -t "GENERATE_IMAGES" -p "projID" -c "chapID" -s "sceneID" -i "im
454
470
  > â„šī¸ `useFlowKey` is **locked natively to `true`** — you must have a valid Flow Key.
455
471
  > â„šī¸ Only run `GENERATE_VIDEO` **after** the scene already has a successful matching-orientation image.
456
472
  > â„šī¸ When `-E` (endscene) is set, the response includes `generationMode: "CHAINED_VIDEO"`.
473
+ > â„šī¸ When `--speed` include: `normal`, `slowmotion`, `timelapse`
457
474
 
458
475
  ```bash
459
476
  veogent request -t "GENERATE_VIDEO" -p "projID" -c "chapID" -s "sceneA" \