videoclaw 3.0.0-alpha.1 → 3.0.0-alpha.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/CLAUDE.md +113 -5
- package/README.md +33 -4
- package/dist/cli/args.d.ts +13 -0
- package/dist/cli/args.d.ts.map +1 -1
- package/dist/cli/args.js +22 -0
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/handlers/analysis.d.ts +9 -0
- package/dist/cli/handlers/analysis.d.ts.map +1 -1
- package/dist/cli/handlers/analysis.js +35 -4
- package/dist/cli/handlers/analysis.js.map +1 -1
- package/dist/cli/handlers/audio.js +6 -6
- package/dist/cli/handlers/audio.js.map +1 -1
- package/dist/cli/handlers/batch.js +2 -2
- package/dist/cli/handlers/batch.js.map +1 -1
- package/dist/cli/handlers/candidates.d.ts.map +1 -1
- package/dist/cli/handlers/candidates.js +66 -13
- package/dist/cli/handlers/candidates.js.map +1 -1
- package/dist/cli/handlers/character.d.ts.map +1 -1
- package/dist/cli/handlers/character.js +9 -8
- package/dist/cli/handlers/character.js.map +1 -1
- package/dist/cli/handlers/clone.d.ts.map +1 -1
- package/dist/cli/handlers/clone.js +5 -5
- package/dist/cli/handlers/clone.js.map +1 -1
- package/dist/cli/handlers/create.js +2 -2
- package/dist/cli/handlers/create.js.map +1 -1
- package/dist/cli/handlers/execution.d.ts +25 -0
- package/dist/cli/handlers/execution.d.ts.map +1 -1
- package/dist/cli/handlers/execution.js +304 -7
- package/dist/cli/handlers/execution.js.map +1 -1
- package/dist/cli/handlers/media-ops.d.ts +11 -0
- package/dist/cli/handlers/media-ops.d.ts.map +1 -1
- package/dist/cli/handlers/media-ops.js +120 -7
- package/dist/cli/handlers/media-ops.js.map +1 -1
- package/dist/cli/handlers/media-production.d.ts +8 -0
- package/dist/cli/handlers/media-production.d.ts.map +1 -1
- package/dist/cli/handlers/media-production.js +91 -8
- package/dist/cli/handlers/media-production.js.map +1 -1
- package/dist/cli/handlers/migrate-home.d.ts +2 -0
- package/dist/cli/handlers/migrate-home.d.ts.map +1 -0
- package/dist/cli/handlers/migrate-home.js +25 -0
- package/dist/cli/handlers/migrate-home.js.map +1 -0
- package/dist/cli/handlers/monitor.d.ts +2 -0
- package/dist/cli/handlers/monitor.d.ts.map +1 -0
- package/dist/cli/handlers/monitor.js +23 -0
- package/dist/cli/handlers/monitor.js.map +1 -0
- package/dist/cli/handlers/motion-overlay.js +2 -2
- package/dist/cli/handlers/motion-overlay.js.map +1 -1
- package/dist/cli/handlers/multi-shot.d.ts.map +1 -1
- package/dist/cli/handlers/multi-shot.js +13 -3
- package/dist/cli/handlers/multi-shot.js.map +1 -1
- package/dist/cli/handlers/project-ops.js +13 -13
- package/dist/cli/handlers/project-ops.js.map +1 -1
- package/dist/cli/handlers/prompt-craft.d.ts +1 -0
- package/dist/cli/handlers/prompt-craft.d.ts.map +1 -1
- package/dist/cli/handlers/prompt-craft.js +18 -7
- package/dist/cli/handlers/prompt-craft.js.map +1 -1
- package/dist/cli/handlers/provider-registration.d.ts.map +1 -1
- package/dist/cli/handlers/provider-registration.js +7 -6
- package/dist/cli/handlers/provider-registration.js.map +1 -1
- package/dist/cli/handlers/reference-sheets.js +6 -6
- package/dist/cli/handlers/reference-sheets.js.map +1 -1
- package/dist/cli/handlers/reporting.js +18 -18
- package/dist/cli/handlers/reporting.js.map +1 -1
- package/dist/cli/handlers/review-portal.d.ts.map +1 -1
- package/dist/cli/handlers/review-portal.js +19 -11
- package/dist/cli/handlers/review-portal.js.map +1 -1
- package/dist/cli/handlers/show.d.ts +11 -0
- package/dist/cli/handlers/show.d.ts.map +1 -1
- package/dist/cli/handlers/show.js +43 -3
- package/dist/cli/handlers/show.js.map +1 -1
- package/dist/cli/handlers/stages.d.ts.map +1 -1
- package/dist/cli/handlers/stages.js +6 -6
- package/dist/cli/handlers/stages.js.map +1 -1
- package/dist/cli/handlers/studio.js +2 -2
- package/dist/cli/handlers/studio.js.map +1 -1
- package/dist/cli/handlers/templates.js +5 -5
- package/dist/cli/handlers/templates.js.map +1 -1
- package/dist/cli/provider-adapter.js +6 -0
- package/dist/cli/provider-adapter.js.map +1 -1
- package/dist/cli/vclaw.d.ts.map +1 -1
- package/dist/cli/vclaw.js +41 -10
- package/dist/cli/vclaw.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +5 -4
- package/dist/mcp/tools.js.map +1 -1
- package/dist/video/allocation-model.d.ts +45 -0
- package/dist/video/allocation-model.d.ts.map +1 -0
- package/dist/video/allocation-model.js +83 -0
- package/dist/video/allocation-model.js.map +1 -0
- package/dist/video/archive-project.d.ts.map +1 -1
- package/dist/video/archive-project.js +2 -1
- package/dist/video/archive-project.js.map +1 -1
- package/dist/video/artifact-history.d.ts.map +1 -1
- package/dist/video/artifact-history.js +2 -1
- package/dist/video/artifact-history.js.map +1 -1
- package/dist/video/assemble/assemble.d.ts.map +1 -1
- package/dist/video/assemble/assemble.js +6 -1
- package/dist/video/assemble/assemble.js.map +1 -1
- package/dist/video/assemble/gemini-vision-classify.d.ts +31 -0
- package/dist/video/assemble/gemini-vision-classify.d.ts.map +1 -1
- package/dist/video/assemble/gemini-vision-classify.js +58 -0
- package/dist/video/assemble/gemini-vision-classify.js.map +1 -1
- package/dist/video/assemble/media-qc.d.ts +9 -1
- package/dist/video/assemble/media-qc.d.ts.map +1 -1
- package/dist/video/assemble/media-qc.js +19 -0
- package/dist/video/assemble/media-qc.js.map +1 -1
- package/dist/video/assemble/stitch.d.ts +66 -2
- package/dist/video/assemble/stitch.d.ts.map +1 -1
- package/dist/video/assemble/stitch.js +135 -13
- package/dist/video/assemble/stitch.js.map +1 -1
- package/dist/video/asset-tag-lookup.d.ts +7 -0
- package/dist/video/asset-tag-lookup.d.ts.map +1 -1
- package/dist/video/asset-tag-lookup.js +9 -0
- package/dist/video/asset-tag-lookup.js.map +1 -1
- package/dist/video/character-auto-create.d.ts.map +1 -1
- package/dist/video/character-auto-create.js +4 -3
- package/dist/video/character-auto-create.js.map +1 -1
- package/dist/video/character-consistency.d.ts.map +1 -1
- package/dist/video/character-consistency.js +2 -1
- package/dist/video/character-consistency.js.map +1 -1
- package/dist/video/characters.d.ts +9 -0
- package/dist/video/characters.d.ts.map +1 -1
- package/dist/video/characters.js +2 -0
- package/dist/video/characters.js.map +1 -1
- package/dist/video/cli-schema.d.ts +11 -0
- package/dist/video/cli-schema.d.ts.map +1 -1
- package/dist/video/cli-schema.js +37 -8
- package/dist/video/cli-schema.js.map +1 -1
- package/dist/video/consistency-audit.d.ts +262 -0
- package/dist/video/consistency-audit.d.ts.map +1 -0
- package/dist/video/consistency-audit.js +585 -0
- package/dist/video/consistency-audit.js.map +1 -0
- package/dist/video/continuation-handoff.d.ts +49 -0
- package/dist/video/continuation-handoff.d.ts.map +1 -0
- package/dist/video/continuation-handoff.js +74 -0
- package/dist/video/continuation-handoff.js.map +1 -0
- package/dist/video/cost-estimate.d.ts.map +1 -1
- package/dist/video/cost-estimate.js +2 -1
- package/dist/video/cost-estimate.js.map +1 -1
- package/dist/video/csv-export.d.ts.map +1 -1
- package/dist/video/csv-export.js +2 -1
- package/dist/video/csv-export.js.map +1 -1
- package/dist/video/dependencies.d.ts.map +1 -1
- package/dist/video/dependencies.js +2 -1
- package/dist/video/dependencies.js.map +1 -1
- package/dist/video/director-preflight.d.ts.map +1 -1
- package/dist/video/director-preflight.js +3 -2
- package/dist/video/director-preflight.js.map +1 -1
- package/dist/video/doctor-portfolio.d.ts.map +1 -1
- package/dist/video/doctor-portfolio.js +2 -1
- package/dist/video/doctor-portfolio.js.map +1 -1
- package/dist/video/doctor.d.ts.map +1 -1
- package/dist/video/doctor.js +2 -1
- package/dist/video/doctor.js.map +1 -1
- package/dist/video/environment-auto-create.d.ts.map +1 -1
- package/dist/video/environment-auto-create.js +3 -2
- package/dist/video/environment-auto-create.js.map +1 -1
- package/dist/video/execute-autochain.d.ts +5 -0
- package/dist/video/execute-autochain.d.ts.map +1 -1
- package/dist/video/execute-autochain.js +14 -1
- package/dist/video/execute-autochain.js.map +1 -1
- package/dist/video/execute-pool.d.ts +72 -0
- package/dist/video/execute-pool.d.ts.map +1 -0
- package/dist/video/execute-pool.js +99 -0
- package/dist/video/execute-pool.js.map +1 -0
- package/dist/video/execute-render-scenes.d.ts +91 -0
- package/dist/video/execute-render-scenes.d.ts.map +1 -0
- package/dist/video/execute-render-scenes.js +97 -0
- package/dist/video/execute-render-scenes.js.map +1 -0
- package/dist/video/execute.d.ts +9 -0
- package/dist/video/execute.d.ts.map +1 -1
- package/dist/video/execute.js +150 -32
- package/dist/video/execute.js.map +1 -1
- package/dist/video/execution-cancel.d.ts.map +1 -1
- package/dist/video/execution-cancel.js +2 -1
- package/dist/video/execution-cancel.js.map +1 -1
- package/dist/video/execution-plan.d.ts +2 -0
- package/dist/video/execution-plan.d.ts.map +1 -1
- package/dist/video/execution-plan.js +13 -4
- package/dist/video/execution-plan.js.map +1 -1
- package/dist/video/execution-profile.d.ts.map +1 -1
- package/dist/video/execution-profile.js +3 -2
- package/dist/video/execution-profile.js.map +1 -1
- package/dist/video/execution-runtime.d.ts +51 -0
- package/dist/video/execution-runtime.d.ts.map +1 -1
- package/dist/video/execution-runtime.js +202 -5
- package/dist/video/execution-runtime.js.map +1 -1
- package/dist/video/execution-seed.d.ts.map +1 -1
- package/dist/video/execution-seed.js +2 -1
- package/dist/video/execution-seed.js.map +1 -1
- package/dist/video/execution-status.d.ts.map +1 -1
- package/dist/video/execution-status.js +109 -57
- package/dist/video/execution-status.js.map +1 -1
- package/dist/video/filmmaking-prompts.d.ts.map +1 -1
- package/dist/video/filmmaking-prompts.js +2 -1
- package/dist/video/filmmaking-prompts.js.map +1 -1
- package/dist/video/final-media.d.ts +4 -0
- package/dist/video/final-media.d.ts.map +1 -1
- package/dist/video/final-media.js +4 -0
- package/dist/video/final-media.js.map +1 -1
- package/dist/video/finish.d.ts +59 -4
- package/dist/video/finish.d.ts.map +1 -1
- package/dist/video/finish.js +110 -3
- package/dist/video/finish.js.map +1 -1
- package/dist/video/flow-captcha.d.ts +33 -0
- package/dist/video/flow-captcha.d.ts.map +1 -0
- package/dist/video/flow-captcha.js +47 -0
- package/dist/video/flow-captcha.js.map +1 -0
- package/dist/video/flow-character-library.d.ts +13 -0
- package/dist/video/flow-character-library.d.ts.map +1 -1
- package/dist/video/flow-character-library.js +21 -1
- package/dist/video/flow-character-library.js.map +1 -1
- package/dist/video/gen-image-flow.d.ts +28 -10
- package/dist/video/gen-image-flow.d.ts.map +1 -1
- package/dist/video/gen-image-flow.js +51 -19
- package/dist/video/gen-image-flow.js.map +1 -1
- package/dist/video/generation-telemetry.d.ts.map +1 -1
- package/dist/video/generation-telemetry.js +3 -2
- package/dist/video/generation-telemetry.js.map +1 -1
- package/dist/video/image-ops.d.ts +56 -0
- package/dist/video/image-ops.d.ts.map +1 -0
- package/dist/video/image-ops.js +61 -0
- package/dist/video/image-ops.js.map +1 -0
- package/dist/video/legacy-import.d.ts.map +1 -1
- package/dist/video/legacy-import.js +2 -1
- package/dist/video/legacy-import.js.map +1 -1
- package/dist/video/magnific/media-host.d.ts +13 -0
- package/dist/video/magnific/media-host.d.ts.map +1 -0
- package/dist/video/magnific/media-host.js +34 -0
- package/dist/video/magnific/media-host.js.map +1 -0
- package/dist/video/magnific/models.d.ts +44 -0
- package/dist/video/magnific/models.d.ts.map +1 -0
- package/dist/video/magnific/models.js +100 -0
- package/dist/video/magnific/models.js.map +1 -0
- package/dist/video/magnific/registry.d.ts +5 -0
- package/dist/video/magnific/registry.d.ts.map +1 -0
- package/dist/video/magnific/registry.js +16 -0
- package/dist/video/magnific/registry.js.map +1 -0
- package/dist/video/magnific/types.d.ts +24 -0
- package/dist/video/magnific/types.d.ts.map +1 -0
- package/dist/video/magnific/types.js +2 -0
- package/dist/video/magnific/types.js.map +1 -0
- package/dist/video/metrics.d.ts.map +1 -1
- package/dist/video/metrics.js +2 -1
- package/dist/video/metrics.js.map +1 -1
- package/dist/video/migrate-home.d.ts +46 -0
- package/dist/video/migrate-home.d.ts.map +1 -0
- package/dist/video/migrate-home.js +104 -0
- package/dist/video/migrate-home.js.map +1 -0
- package/dist/video/monitor/discovery.d.ts +50 -0
- package/dist/video/monitor/discovery.d.ts.map +1 -0
- package/dist/video/monitor/discovery.js +239 -0
- package/dist/video/monitor/discovery.js.map +1 -0
- package/dist/video/monitor/live-page.d.ts +23 -0
- package/dist/video/monitor/live-page.d.ts.map +1 -0
- package/dist/video/monitor/live-page.js +24 -0
- package/dist/video/monitor/live-page.js.map +1 -0
- package/dist/video/monitor/overview-html.d.ts +3 -0
- package/dist/video/monitor/overview-html.d.ts.map +1 -0
- package/dist/video/monitor/overview-html.js +758 -0
- package/dist/video/monitor/overview-html.js.map +1 -0
- package/dist/video/monitor/project-detail.d.ts +17 -0
- package/dist/video/monitor/project-detail.d.ts.map +1 -0
- package/dist/video/monitor/project-detail.js +253 -0
- package/dist/video/monitor/project-detail.js.map +1 -0
- package/dist/video/monitor/serve.d.ts +13 -0
- package/dist/video/monitor/serve.d.ts.map +1 -0
- package/dist/video/monitor/serve.js +206 -0
- package/dist/video/monitor/serve.js.map +1 -0
- package/dist/video/monitor/thumbnails.d.ts +24 -0
- package/dist/video/monitor/thumbnails.d.ts.map +1 -0
- package/dist/video/monitor/thumbnails.js +70 -0
- package/dist/video/monitor/thumbnails.js.map +1 -0
- package/dist/video/monitor/types.d.ts +37 -0
- package/dist/video/monitor/types.d.ts.map +1 -0
- package/dist/video/monitor/types.js +2 -0
- package/dist/video/monitor/types.js.map +1 -0
- package/dist/video/monitor/workspace.d.ts +11 -0
- package/dist/video/monitor/workspace.d.ts.map +1 -0
- package/dist/video/monitor/workspace.js +65 -0
- package/dist/video/monitor/workspace.js.map +1 -0
- package/dist/video/motion-overlay/v2v-transport.d.ts +4 -0
- package/dist/video/motion-overlay/v2v-transport.d.ts.map +1 -1
- package/dist/video/motion-overlay/v2v-transport.js +5 -3
- package/dist/video/motion-overlay/v2v-transport.js.map +1 -1
- package/dist/video/native-dreamina.d.ts +15 -0
- package/dist/video/native-dreamina.d.ts.map +1 -1
- package/dist/video/native-dreamina.js +34 -1
- package/dist/video/native-dreamina.js.map +1 -1
- package/dist/video/native-flow-r2v.d.ts +7 -0
- package/dist/video/native-flow-r2v.d.ts.map +1 -1
- package/dist/video/native-flow-r2v.js +5 -0
- package/dist/video/native-flow-r2v.js.map +1 -1
- package/dist/video/native-magnific.d.ts +57 -0
- package/dist/video/native-magnific.d.ts.map +1 -0
- package/dist/video/native-magnific.js +358 -0
- package/dist/video/native-magnific.js.map +1 -0
- package/dist/video/native-runway.d.ts.map +1 -1
- package/dist/video/native-runway.js +11 -2
- package/dist/video/native-runway.js.map +1 -1
- package/dist/video/native-veo.d.ts +17 -5
- package/dist/video/native-veo.d.ts.map +1 -1
- package/dist/video/native-veo.js +120 -10
- package/dist/video/native-veo.js.map +1 -1
- package/dist/video/next-actions.d.ts.map +1 -1
- package/dist/video/next-actions.js +2 -1
- package/dist/video/next-actions.js.map +1 -1
- package/dist/video/obsidian-export.d.ts.map +1 -1
- package/dist/video/obsidian-export.js +2 -1
- package/dist/video/obsidian-export.js.map +1 -1
- package/dist/video/obsidian-sync.d.ts.map +1 -1
- package/dist/video/obsidian-sync.js +2 -1
- package/dist/video/obsidian-sync.js.map +1 -1
- package/dist/video/output-diagnosis.d.ts +30 -0
- package/dist/video/output-diagnosis.d.ts.map +1 -0
- package/dist/video/output-diagnosis.js +98 -0
- package/dist/video/output-diagnosis.js.map +1 -0
- package/dist/video/post-production.d.ts.map +1 -1
- package/dist/video/post-production.js +2 -1
- package/dist/video/post-production.js.map +1 -1
- package/dist/video/preview-portal/discovery.d.ts +7 -0
- package/dist/video/preview-portal/discovery.d.ts.map +1 -1
- package/dist/video/preview-portal/discovery.js +60 -1
- package/dist/video/preview-portal/discovery.js.map +1 -1
- package/dist/video/preview-portal/gallery.d.ts +15 -0
- package/dist/video/preview-portal/gallery.d.ts.map +1 -0
- package/dist/video/preview-portal/gallery.js +27 -0
- package/dist/video/preview-portal/gallery.js.map +1 -0
- package/dist/video/preview-portal/generate.d.ts +10 -0
- package/dist/video/preview-portal/generate.d.ts.map +1 -1
- package/dist/video/preview-portal/generate.js +33 -5
- package/dist/video/preview-portal/generate.js.map +1 -1
- package/dist/video/preview-portal/index.d.ts +2 -2
- package/dist/video/preview-portal/index.d.ts.map +1 -1
- package/dist/video/preview-portal/index.js +1 -1
- package/dist/video/preview-portal/index.js.map +1 -1
- package/dist/video/preview-portal/render.d.ts.map +1 -1
- package/dist/video/preview-portal/render.js +319 -5
- package/dist/video/preview-portal/render.js.map +1 -1
- package/dist/video/preview-portal/run-discovery.d.ts +3 -0
- package/dist/video/preview-portal/run-discovery.d.ts.map +1 -0
- package/dist/video/preview-portal/run-discovery.js +359 -0
- package/dist/video/preview-portal/run-discovery.js.map +1 -0
- package/dist/video/preview-portal/shared-assets.d.ts +7 -2
- package/dist/video/preview-portal/shared-assets.d.ts.map +1 -1
- package/dist/video/preview-portal/shared-assets.js +99 -1
- package/dist/video/preview-portal/shared-assets.js.map +1 -1
- package/dist/video/preview-portal/types.d.ts +110 -1
- package/dist/video/preview-portal/types.d.ts.map +1 -1
- package/dist/video/preview-portal/types.js +6 -0
- package/dist/video/preview-portal/types.js.map +1 -1
- package/dist/video/project-index.d.ts.map +1 -1
- package/dist/video/project-index.js +2 -1
- package/dist/video/project-index.js.map +1 -1
- package/dist/video/projects.d.ts.map +1 -1
- package/dist/video/projects.js +2 -1
- package/dist/video/projects.js.map +1 -1
- package/dist/video/prompt-lint.d.ts +1 -1
- package/dist/video/prompt-lint.d.ts.map +1 -1
- package/dist/video/prompt-lint.js +38 -0
- package/dist/video/prompt-lint.js.map +1 -1
- package/dist/video/prompt-rules.d.ts.map +1 -1
- package/dist/video/prompt-rules.js +5 -3
- package/dist/video/prompt-rules.js.map +1 -1
- package/dist/video/provider-adapter-runner.d.ts.map +1 -1
- package/dist/video/provider-adapter-runner.js +22 -0
- package/dist/video/provider-adapter-runner.js.map +1 -1
- package/dist/video/provider-platform/registry.d.ts.map +1 -1
- package/dist/video/provider-platform/registry.js +44 -0
- package/dist/video/provider-platform/registry.js.map +1 -1
- package/dist/video/provider-platform/route-capabilities.d.ts.map +1 -1
- package/dist/video/provider-platform/route-capabilities.js +15 -0
- package/dist/video/provider-platform/route-capabilities.js.map +1 -1
- package/dist/video/provider-platform/types.d.ts +2 -2
- package/dist/video/provider-platform/types.d.ts.map +1 -1
- package/dist/video/provider-platform/types.js +1 -0
- package/dist/video/provider-platform/types.js.map +1 -1
- package/dist/video/provider-status.d.ts.map +1 -1
- package/dist/video/provider-status.js +9 -0
- package/dist/video/provider-status.js.map +1 -1
- package/dist/video/providers/google-flow.d.ts +5 -13
- package/dist/video/providers/google-flow.d.ts.map +1 -1
- package/dist/video/providers/google-flow.js +16 -2
- package/dist/video/providers/google-flow.js.map +1 -1
- package/dist/video/readiness.d.ts.map +1 -1
- package/dist/video/readiness.js +11 -1
- package/dist/video/readiness.js.map +1 -1
- package/dist/video/reference-transfer.d.ts +38 -0
- package/dist/video/reference-transfer.d.ts.map +1 -0
- package/dist/video/reference-transfer.js +104 -0
- package/dist/video/reference-transfer.js.map +1 -0
- package/dist/video/remix-narrated.d.ts.map +1 -1
- package/dist/video/remix-narrated.js +2 -1
- package/dist/video/remix-narrated.js.map +1 -1
- package/dist/video/report-diff.d.ts.map +1 -1
- package/dist/video/report-diff.js +2 -1
- package/dist/video/report-diff.js.map +1 -1
- package/dist/video/report-history.d.ts.map +1 -1
- package/dist/video/report-history.js +4 -3
- package/dist/video/report-history.js.map +1 -1
- package/dist/video/report.d.ts.map +1 -1
- package/dist/video/report.js +2 -1
- package/dist/video/report.js.map +1 -1
- package/dist/video/retake-protocol.d.ts +56 -0
- package/dist/video/retake-protocol.d.ts.map +1 -0
- package/dist/video/retake-protocol.js +113 -0
- package/dist/video/retake-protocol.js.map +1 -0
- package/dist/video/review-ui.d.ts.map +1 -1
- package/dist/video/review-ui.js +4 -2
- package/dist/video/review-ui.js.map +1 -1
- package/dist/video/run-state/normalize.d.ts +12 -0
- package/dist/video/run-state/normalize.d.ts.map +1 -0
- package/dist/video/run-state/normalize.js +31 -0
- package/dist/video/run-state/normalize.js.map +1 -0
- package/dist/video/run-state/read.d.ts +5 -0
- package/dist/video/run-state/read.d.ts.map +1 -0
- package/dist/video/run-state/read.js +58 -0
- package/dist/video/run-state/read.js.map +1 -0
- package/dist/video/run-state/types.d.ts +32 -0
- package/dist/video/run-state/types.d.ts.map +1 -0
- package/dist/video/run-state/types.js +2 -0
- package/dist/video/run-state/types.js.map +1 -0
- package/dist/video/run-status.d.ts +70 -0
- package/dist/video/run-status.d.ts.map +1 -0
- package/dist/video/run-status.js +118 -0
- package/dist/video/run-status.js.map +1 -0
- package/dist/video/scene-candidate-store.d.ts +20 -0
- package/dist/video/scene-candidate-store.d.ts.map +1 -1
- package/dist/video/scene-candidate-store.js +30 -0
- package/dist/video/scene-candidate-store.js.map +1 -1
- package/dist/video/seedance-antislop.d.ts +55 -0
- package/dist/video/seedance-antislop.d.ts.map +1 -0
- package/dist/video/seedance-antislop.js +238 -0
- package/dist/video/seedance-antislop.js.map +1 -0
- package/dist/video/show-bible-attach.d.ts +87 -0
- package/dist/video/show-bible-attach.d.ts.map +1 -0
- package/dist/video/show-bible-attach.js +186 -0
- package/dist/video/show-bible-attach.js.map +1 -0
- package/dist/video/show-preflight.d.ts +33 -0
- package/dist/video/show-preflight.d.ts.map +1 -0
- package/dist/video/show-preflight.js +234 -0
- package/dist/video/show-preflight.js.map +1 -0
- package/dist/video/status.d.ts.map +1 -1
- package/dist/video/status.js +2 -1
- package/dist/video/status.js.map +1 -1
- package/dist/video/storyboard-grid.d.ts.map +1 -1
- package/dist/video/storyboard-grid.js +2 -1
- package/dist/video/storyboard-grid.js.map +1 -1
- package/dist/video/storyboard-markdown.d.ts.map +1 -1
- package/dist/video/storyboard-markdown.js +4 -3
- package/dist/video/storyboard-markdown.js.map +1 -1
- package/dist/video/template-store.d.ts.map +1 -1
- package/dist/video/template-store.js +6 -5
- package/dist/video/template-store.js.map +1 -1
- package/dist/video/timeline.d.ts.map +1 -1
- package/dist/video/timeline.js +2 -1
- package/dist/video/timeline.js.map +1 -1
- package/dist/video/types.d.ts +8 -0
- package/dist/video/types.d.ts.map +1 -1
- package/dist/video/verify-env.d.ts.map +1 -1
- package/dist/video/verify-env.js +2 -0
- package/dist/video/verify-env.js.map +1 -1
- package/dist/video/verify-final.d.ts.map +1 -1
- package/dist/video/verify-final.js +2 -1
- package/dist/video/verify-final.js.map +1 -1
- package/dist/video/vfx-register.d.ts +32 -0
- package/dist/video/vfx-register.d.ts.map +1 -0
- package/dist/video/vfx-register.js +85 -0
- package/dist/video/vfx-register.js.map +1 -0
- package/dist/video/video-context.d.ts.map +1 -1
- package/dist/video/video-context.js +3 -2
- package/dist/video/video-context.js.map +1 -1
- package/dist/video/workload.d.ts.map +1 -1
- package/dist/video/workload.js +2 -1
- package/dist/video/workload.js.map +1 -1
- package/dist/video/workspace-root.d.ts +21 -0
- package/dist/video/workspace-root.d.ts.map +1 -0
- package/dist/video/workspace-root.js +34 -0
- package/dist/video/workspace-root.js.map +1 -0
- package/dist/video/workspace.d.ts +9 -0
- package/dist/video/workspace.d.ts.map +1 -1
- package/dist/video/workspace.js +3 -2
- package/dist/video/workspace.js.map +1 -1
- package/docs/ARCHITECTURE.md +2 -2
- package/docs/ASSEMBLE.md +30 -4
- package/docs/CLI_REFERENCE.md +374 -24
- package/docs/Claude Code + Higgsfield MCP = FULL Creative Agency.md +2 -2
- package/docs/DIAGRAMS_SOURCE.md +2 -13
- package/docs/ENGINE_ESCAPE_AUDIT.md +85 -0
- package/docs/MIGRATION.md +2 -2
- package/docs/MOTION_OVERLAY.md +5 -0
- package/docs/PROJECT_LAYOUT.md +1 -1
- package/docs/PROMPT_QUALITY.md +18 -5
- package/docs/PROVIDER_PLATFORM.md +4 -1
- package/docs/PUBLISHING.md +4 -0
- package/docs/SEEDANCE_HARVEST.md +76 -0
- package/docs/SKILLS.md +4 -57
- package/docs/assets/diagram-architecture.jpg +0 -0
- package/docs/assets/diagram-assemble.jpg +0 -0
- package/docs/assets/diagram-lifecycle.jpg +0 -0
- package/docs/assets/diagram-obsidian-loop.jpg +0 -0
- package/docs/assets/diagram-obsidian-vault.jpg +0 -0
- package/docs/assets/diagram-routing.jpg +0 -0
- package/docs/assets/diagram-skills-ecosystem.jpg +0 -0
- package/docs/assets/diagram-story-bible.jpg +0 -0
- package/docs/assets/diagram-studio-goals.jpg +0 -0
- package/docs/assets/vclaw-review-ui-desktop-after-stage-gate.png +0 -0
- package/docs/assets/vclaw-review-ui-mobile-after-stage-gate.png +0 -0
- package/docs/preview-portal-audit.md +59 -10
- package/package.json +1 -1
- package/references/video/seedance-skills/model-mechanics.md +83 -0
- package/schemas/video/artifacts/consistency-audit.schema.json +83 -0
- package/schemas/video/artifacts/execution-plan.schema.json +1 -1
- package/schemas/video/artifacts/execution-report.schema.json +1 -1
- package/schemas/video/artifacts/run-contract.schema.json +61 -0
- package/skills/README.md +0 -11
- package/skills/ai-slop-cleaner/SKILL.md +1 -1
- package/skills/bunty/SKILL.md +3 -3
- package/skills/catalog.json +0 -55
- package/skills/character-library/SKILL.md +1 -1
- package/skills/concierge/SKILL.md +1 -1
- package/skills/movie-director/SKILL.md +3 -3
- package/skills/skills-auditor/SKILL.md +3 -3
- package/skills/video-portfolio-ops/SKILL.md +1 -1
- package/src/video/allocation-model.ts +105 -0
- package/src/video/archive-project.ts +2 -1
- package/src/video/artifact-history.ts +2 -1
- package/src/video/assemble/.omc/state/sessions/3a741ceb-9c9f-4c48-a46f-a33edb5dcdc1/pre-tool-advisory-throttle.json +14 -0
- package/src/video/assemble/assemble.ts +7 -1
- package/src/video/assemble/gemini-vision-classify.ts +79 -0
- package/src/video/assemble/media-qc.ts +33 -1
- package/src/video/assemble/stitch.ts +195 -15
- package/src/video/asset-tag-lookup.ts +15 -0
- package/src/video/character-auto-create.ts +4 -3
- package/src/video/character-consistency.ts +2 -1
- package/src/video/characters.ts +11 -0
- package/src/video/cli-schema.ts +37 -8
- package/src/video/consistency-audit.ts +831 -0
- package/src/video/continuation-handoff.ts +103 -0
- package/src/video/cost-estimate.ts +2 -1
- package/src/video/csv-export.ts +2 -1
- package/src/video/dependencies.ts +2 -1
- package/src/video/director-preflight.ts +3 -2
- package/src/video/doctor-portfolio.ts +2 -1
- package/src/video/doctor.ts +2 -1
- package/src/video/environment-auto-create.ts +3 -2
- package/src/video/execute-autochain.ts +22 -1
- package/src/video/execute-pool.ts +138 -0
- package/src/video/execute-render-scenes.ts +152 -0
- package/src/video/execute.ts +169 -32
- package/src/video/execution-cancel.ts +2 -1
- package/src/video/execution-plan.ts +14 -4
- package/src/video/execution-profile.ts +3 -2
- package/src/video/execution-runtime.ts +214 -5
- package/src/video/execution-seed.ts +2 -1
- package/src/video/execution-status.ts +116 -57
- package/src/video/filmmaking-prompts.ts +2 -1
- package/src/video/final-media.ts +9 -0
- package/src/video/finish.ts +153 -5
- package/src/video/flow-captcha.ts +45 -0
- package/src/video/flow-character-library.ts +30 -1
- package/src/video/gen-image-flow.ts +59 -19
- package/src/video/generation-telemetry.ts +3 -2
- package/src/video/image-ops.ts +115 -0
- package/src/video/legacy-import.ts +2 -1
- package/src/video/magnific/media-host.ts +37 -0
- package/src/video/magnific/models.ts +118 -0
- package/src/video/magnific/registry.ts +18 -0
- package/src/video/magnific/types.ts +35 -0
- package/src/video/metrics.ts +2 -1
- package/src/video/migrate-home.ts +133 -0
- package/src/video/monitor/discovery.ts +255 -0
- package/src/video/monitor/live-page.ts +31 -0
- package/src/video/monitor/overview-html.ts +813 -0
- package/src/video/monitor/project-detail.ts +274 -0
- package/src/video/monitor/serve.ts +171 -0
- package/src/video/monitor/thumbnails.ts +76 -0
- package/src/video/monitor/types.ts +36 -0
- package/src/video/monitor/workspace.ts +81 -0
- package/src/video/motion-overlay/v2v-transport.ts +20 -11
- package/src/video/native-dreamina.ts +35 -1
- package/src/video/native-flow-r2v.ts +12 -0
- package/src/video/native-magnific.ts +431 -0
- package/src/video/native-runway.ts +11 -2
- package/src/video/native-veo.ts +126 -11
- package/src/video/next-actions.ts +2 -1
- package/src/video/obsidian-export.ts +2 -1
- package/src/video/obsidian-sync.ts +2 -1
- package/src/video/output-diagnosis.ts +110 -0
- package/src/video/post-production.ts +2 -1
- package/src/video/preview-portal/.omc/state/sessions/2fdd28da-2e8b-4462-a451-750b206c53e1/pre-tool-advisory-throttle.json +18 -0
- package/src/video/preview-portal/discovery.ts +74 -1
- package/src/video/preview-portal/gallery.ts +28 -0
- package/src/video/preview-portal/generate.ts +35 -5
- package/src/video/preview-portal/index.ts +2 -1
- package/src/video/preview-portal/render.ts +353 -6
- package/src/video/preview-portal/run-discovery.ts +410 -0
- package/src/video/preview-portal/shared-assets.ts +100 -1
- package/src/video/preview-portal/types.ts +118 -0
- package/src/video/project-index.ts +2 -1
- package/src/video/projects.ts +2 -1
- package/src/video/prompt-lint.ts +50 -1
- package/src/video/prompt-rules.ts +5 -3
- package/src/video/provider-adapter-runner.ts +23 -0
- package/src/video/provider-platform/registry.ts +45 -0
- package/src/video/provider-platform/route-capabilities.ts +15 -0
- package/src/video/provider-platform/types.ts +2 -1
- package/src/video/provider-status.ts +9 -0
- package/src/video/providers/google-flow.ts +14 -4
- package/src/video/readiness.ts +13 -1
- package/src/video/reference-transfer.ts +132 -0
- package/src/video/remix-narrated.ts +2 -1
- package/src/video/report-diff.ts +2 -1
- package/src/video/report-history.ts +4 -3
- package/src/video/report.ts +2 -1
- package/src/video/retake-protocol.ts +146 -0
- package/src/video/review-ui.ts +4 -2
- package/src/video/run-state/normalize.ts +33 -0
- package/src/video/run-state/read.ts +68 -0
- package/src/video/run-state/types.ts +36 -0
- package/src/video/run-status.ts +192 -0
- package/src/video/scene-candidate-store.ts +34 -0
- package/src/video/seedance-antislop.ts +290 -0
- package/src/video/show-bible-attach.ts +233 -0
- package/src/video/show-preflight.ts +324 -0
- package/src/video/status.ts +2 -1
- package/src/video/storyboard-grid.ts +2 -1
- package/src/video/storyboard-markdown.ts +4 -3
- package/src/video/template-store.ts +6 -5
- package/src/video/timeline.ts +2 -1
- package/src/video/types.ts +8 -0
- package/src/video/verify-env.ts +2 -0
- package/src/video/verify-final.ts +2 -1
- package/src/video/vfx-register.ts +102 -0
- package/src/video/video-context.ts +3 -2
- package/src/video/workload.ts +2 -1
- package/src/video/workspace-root.ts +34 -0
- package/src/video/workspace.ts +12 -2
- package/skills/build-fix/SKILL.md +0 -145
- package/skills/configure-notifications/SKILL.md +0 -286
- package/skills/deep-interview/SKILL.md +0 -358
- package/skills/doctor/SKILL.md +0 -200
- package/skills/help/SKILL.md +0 -200
- package/skills/note/SKILL.md +0 -62
- package/skills/pipeline/SKILL.md +0 -86
- package/skills/review/SKILL.md +0 -38
- package/skills/skill/SKILL.md +0 -835
- package/skills/studio-mode/SKILL.md +0 -148
- package/skills/worker/SKILL.md +0 -106
package/CLAUDE.md
CHANGED
|
@@ -2,7 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Quick orientation (read this first, then `MERGE_PLAN.md`)
|
|
6
|
+
|
|
7
|
+
- **Entrypoint:** `src/cli/vclaw.ts` — a thin ~530-line dispatch shell; all command logic lives in `src/cli/handlers/*.ts` (25 modules).
|
|
8
|
+
- **Domain core:** `src/video/*` — small single-purpose modules (projects, execution, assemble, audio-platform, studio, preview-portal, motion-overlay, provider-platform, …).
|
|
9
|
+
- **Contracts & state:** `schemas/video/*` JSON Schemas are the source of truth for artifact *shapes*; the on-disk `projects/<slug>/` tree is the source of truth for project *state*.
|
|
10
|
+
- **Tests:** `node:test` files in `src/tests/*.test.ts`, run from compiled `dist/tests/` (`npm test`).
|
|
11
|
+
- **Also load:** the sibling `.claude/CLAUDE.md` for the `graphify`, `improvement-run`, and `concierge`/`clawbot` skill triggers.
|
|
12
|
+
|
|
13
|
+
> **Repository status (2026-07-02):** This is `videoclaw-v3`, the current repo —
|
|
6
14
|
> unified from `videoclaw-v2`, itself the merged successor of the older `videoclaw`
|
|
7
15
|
> package and the clean-room `vclaw-video-core` rebuild. (The
|
|
8
16
|
> npm package is `videoclaw`; "videoclaw-v3" is just the repo name.) Foundation
|
|
@@ -30,6 +38,88 @@ first message is just a greeting with no task, offer the concierge menu.
|
|
|
30
38
|
Engineering and maintenance requests on this codebase itself are NOT concierge
|
|
31
39
|
territory — handle those normally.
|
|
32
40
|
|
|
41
|
+
## Working discipline — ground in what already exists before you build (READ THIS FIRST)
|
|
42
|
+
|
|
43
|
+
This project keeps getting bitten by the same failure: **improvising a fresh
|
|
44
|
+
(worse) approach instead of reusing the proven artifact that already exists**, and
|
|
45
|
+
silently dropping load-bearing pieces between turns.
|
|
46
|
+
|
|
47
|
+
**The honest root cause is a default to fast *visible* output** — a clip, an HTML,
|
|
48
|
+
a keyframe, a render — **over a provably-correct setup.** A fast wrong render is
|
|
49
|
+
slower than a slow right one: it burns spend, trust, and rework. The rules below
|
|
50
|
+
are forcing functions against that default; the friction IS the point. The
|
|
51
|
+
highest-leverage rules are **0, 1, and 4** — do them even when it feels slower.
|
|
52
|
+
|
|
53
|
+
Before authoring or changing **any** skill, procedure, function, prompt, render
|
|
54
|
+
setup, or review surface — and before creating a new command — work through this:
|
|
55
|
+
|
|
56
|
+
0. **Read the spec in full, once, up front — and write the contract down.** When
|
|
57
|
+
the user points to an authoritative method file (a doc, `WORKFLOW.md`, a
|
|
58
|
+
compliance sheet, a working harness script, a `--validate`d prompt), read the
|
|
59
|
+
WHOLE thing first and extract its requirements into a written checklist/contract
|
|
60
|
+
(a file or notepad) BEFORE building. Do NOT skim it on demand and discover the
|
|
61
|
+
pieces one correction at a time — that is exactly what makes the operator repeat
|
|
62
|
+
himself. For any multi-step build/production, keep that contract on disk and
|
|
63
|
+
**re-read it each turn**; requirements held only in working memory erode over a
|
|
64
|
+
long session. The on-disk contract, not your memory, is what you build against.
|
|
65
|
+
1. **Inventory before you build (the #1 rule).** Search first. Grep/read the
|
|
66
|
+
relevant `src/video/*`, `src/cli/handlers/*`, `skills/*`, `docs/*`, the
|
|
67
|
+
project's on-disk `artifacts/*` (e.g. `show-bible.json`, `voice-clones.json`,
|
|
68
|
+
`story-bible`, `flow-characters.json`, `seedance-assets.json`), and any
|
|
69
|
+
`references/` assets, proven harness scripts, or already-`--validate`d prompts.
|
|
70
|
+
If a working artifact exists, **use it** — never regenerate an ad-hoc
|
|
71
|
+
substitute. Most "why did this break again" pain is re-deriving something that
|
|
72
|
+
was already solved and written down.
|
|
73
|
+
2. **Artifacts/registries are the source of truth, not memory.** Drive work from
|
|
74
|
+
the on-disk artifacts (the `show-bible` registry, voice clones, reference
|
|
75
|
+
sheets, validated prompt files) — not from paths or prompts re-typed from
|
|
76
|
+
memory. If you catch yourself re-typing a file path or re-authoring a prompt
|
|
77
|
+
that already exists, stop and load it from the artifact.
|
|
78
|
+
3. **Prompting is per-model — never reuse one prompt style across routes.**
|
|
79
|
+
Seedance/Runway/Dreamina lock identity from **references + a rich per-subject
|
|
80
|
+
visual descriptor** (never a generic "the man") + the multi-shot framework, and
|
|
81
|
+
take character-sheet + location + per-speaker voice refs. Flow (`veo-useapi`)
|
|
82
|
+
locks identity on a **registered Flow Character** and tolerates generic
|
|
83
|
+
prompts. Image models (GB, `openai-gpt-image-2`) differ again. Check the
|
|
84
|
+
route's ruleset (and any model-specific prompting skill/doc) before authoring a
|
|
85
|
+
prompt or choosing references.
|
|
86
|
+
4. **Encode the method so the TOOL enforces it — don't rely on remembering.**
|
|
87
|
+
When a procedure has required inputs/steps, add a fail-fast preflight/readiness
|
|
88
|
+
gate that ERRORS (non-zero, clear blocker) when a required piece is missing, and
|
|
89
|
+
prefer **registry-driven auto-attach** over manual setup. The target shape: an
|
|
90
|
+
operator just prompts; the tool attaches the right inputs and refuses to render
|
|
91
|
+
wrong (see `show-preflight` + show-bible auto-attach).
|
|
92
|
+
5. **Review-first, one-at-a-time for any spend.** Before any paid or slow
|
|
93
|
+
generation, emit the exact **contract** — the prompt + the references + the JSON
|
|
94
|
+
that will actually be submitted — for review (the review portal IS the
|
|
95
|
+
contract; show the EXACT submit payload, not a paraphrase). Then render ONE
|
|
96
|
+
unit, verify it (extract a frame + whisper the audio / QC), get approval, and
|
|
97
|
+
only then the next. Never batch-spend on an unreviewed setup. **Immediately
|
|
98
|
+
before submitting, dry-run `buildExecutionPayload` and confirm the resolved
|
|
99
|
+
refs/prompt/route match the approved contract** — the actual submission has
|
|
100
|
+
silently diverged before (an `@tag` hijacked the references and dropped the
|
|
101
|
+
approved sheets/location). If it doesn't match the contract, do not submit.
|
|
102
|
+
6. **New command/skill = conventions below + steps 1 & 4.** Still do the full
|
|
103
|
+
registration (handler + `vclaw.ts` dispatch + `cli-schema.ts` `COMMANDS` entry +
|
|
104
|
+
bump the `cli-schema.test.ts` count + a `cli-*.test.ts` + README/CLI_REFERENCE +
|
|
105
|
+
a schema for any new artifact), but **inventory first** (step 1) and add a
|
|
106
|
+
**preflight gate** (step 4) if it has required inputs.
|
|
107
|
+
7. **Verify OUTCOMES, not that a command ran — and never report unverified
|
|
108
|
+
progress.** "Launched a driver" / "submitted" is NOT "it's working." After any
|
|
109
|
+
submit or render, confirm the real provider-side state before claiming it: a
|
|
110
|
+
live job exists (`execute-status` → `live-submitted` + a candidate + a
|
|
111
|
+
`.vclaw-jobs/*.json` file), and then the actual output downloaded + QC'd (frame
|
|
112
|
+
+ whisper). If you tell the user something is happening, prove it (a job id /
|
|
113
|
+
status / a frame) — do not assert progress you have not checked. Corollary —
|
|
114
|
+
**clear stale outputs before any re-render:** a changed scene prompt plus an old
|
|
115
|
+
`outputs/scene-N.mp4` makes the resumable driver SKIP that scene and you verify
|
|
116
|
+
the wrong/old clip. Delete stale outputs (and re-select winners that the
|
|
117
|
+
restructure orphaned) first; a `scene-selection-missing` block silently refuses
|
|
118
|
+
every produce.
|
|
119
|
+
|
|
120
|
+
When in doubt, the on-disk project and its artifacts win over anything you
|
|
121
|
+
remember.
|
|
122
|
+
|
|
33
123
|
## Build, test, and smoke commands
|
|
34
124
|
|
|
35
125
|
```bash
|
|
@@ -77,7 +167,7 @@ npm run graph:full # rebuild the graphify knowledge graph
|
|
|
77
167
|
|
|
78
168
|
### Layers (read top-down)
|
|
79
169
|
|
|
80
|
-
1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~
|
|
170
|
+
1. `src/cli/vclaw.ts` — the single user-facing entrypoint, now a thin dispatch shell (~530 lines: imports, `printHelp`, the `NOUN_VERB_ALIASES` map, `resolveSubcommand`, the `VIDEO_DISPATCH` table, and `main`). The decomposition is COMPLETE (PRs #89–#120): pure arg/slug/spend helpers live in `src/cli/args.ts`, and ALL command handlers live in `src/cli/handlers/` (25 modules — `analysis`, `audio`, `batch`, `candidates`, `character`, `clone`, `create`, `execution`, `library`, `media-ops`, `media-production`, `migrate-home`, `monitor`, `motion-overlay`, `multi-shot`, `project-ops`, `prompt-craft`, `provider-registration`, `reference-sheets`, `reporting`, `review-portal`, `show`, `stages`, `studio`, `templates`), each a verbatim extraction with module-private helpers and only dispatch-facing handlers exported. ⚠️ When moving handler code, watch for position-sensitive path math (`import.meta.url` etc.) — the compiled location changes (see the documented adaptations in `handlers/studio.ts` and `handlers/motion-overlay.ts`). `src/cli/provider-adapter.ts` is the built-in adapter binary for the four `..._ADAPTER` routes (see Provider routes below). Besides `video`/`studio`, `main` also dispatches two smaller families: `vclaw mcp serve` (`src/mcp/` — a read-only stdio MCP server exposing `list_projects`, `get_project_status`, `get_artifacts`, `get_event_log`, `list_provider_routes`; writes stay CLI-only by design) and `vclaw veo <verb>` (`src/video/veo-subprocess.ts` — spawn-forwarding to the Bun-based `vclaw-cli/flow.ts`, required for Puppeteer/Google Flow verbs like `status`, `resume`, `cancel`, `useapi:*`).
|
|
81
171
|
2. `src/video/` — the core domain. Each file is small and single-purpose, e.g. `artifacts.ts`, `artifact-store.ts`, `checkpoints.ts`, `workspace.ts`, `projects.ts`, `status.ts`, `doctor.ts`, `doctor-portfolio.ts`, `readiness.ts`, `execution-plan.ts`, `execute.ts`, `execution-runtime.ts`, `execution-status.ts`, `execution-cancel.ts`, `director-preflight.ts`, `report.ts`, `csv-export.ts`, `obsidian-export.ts`, `project-index.ts`, `metrics.ts`, `next-actions.ts`, `template-store.ts`, `provider-status.ts`, `native-seedance.ts`, `native-veo.ts`, `multi-shot-prompt.ts`, `storyboard-grid.ts`, `cinematography.ts` (detail-leveled quantified camera/lighting/grade/audio emitters — `--detail terse|standard|rich`), `prompt-rules.ts` (standing prompt rules: visual-descriptor-not-names, brand-neutral, no-face-morph, diegetic audio), `seedance-asset-library.ts` (Asset Library character/product consistency), `story-bible.ts` (deterministic continuity bible — cast/settings/props/scene-timeline from brief + storyboard + characters), `brand-definition.ts` (locked brand system — palette/voice/typography/theme map; `filmmaking-prompts` appends a prose BRAND line when present), `assemble/media-qc.ts` (post-stitch ffprobe QC of clips + master), `assemble/narration-fit.ts` (TTS-vs-video timing planner: atempo / loop-video fit). `src/video/studio/` is the planning front door and `src/video/preview-portal/` is the review/delivery portal (both described below).
|
|
82
172
|
3. `src/video/provider-platform/` — route descriptors (Veo / Seedance / Runway direct and useapi flavors).
|
|
83
173
|
4. `src/video/pipeline-manifests/` — built-in stage definitions for the two production modes.
|
|
@@ -87,7 +177,7 @@ npm run graph:full # rebuild the graphify knowledge graph
|
|
|
87
177
|
|
|
88
178
|
### Project lifecycle (per project, on disk)
|
|
89
179
|
|
|
90
|
-
After `vclaw video init <slug>`, a project lives at `projects/<slug>/` under the workspace root and is the unit of everything else
|
|
180
|
+
After `vclaw video init <slug>`, a project lives at `projects/<slug>/` under the workspace root and is the unit of everything else. **The workspace root is the ONE canonical home `~/videoclaw`** (`CANONICAL_WORKSPACE_ROOT` in `src/video/workspace-root.ts`), resolved as `--root` flag → `VCLAW_WORKSPACE` → `VIDEOCLAW_WORKSPACE` → `~/videoclaw` — this replaced the old per-invocation `process.cwd()` default that scattered projects wherever `vclaw` happened to run. `vclaw video migrate-home` consolidates scattered projects into the home (dry-run plan by default; `--confirm` moves each project and leaves a symlink at the old path so old absolute paths still resolve).
|
|
91
181
|
|
|
92
182
|
```
|
|
93
183
|
projects/<slug>/
|
|
@@ -103,7 +193,9 @@ projects/<slug>/
|
|
|
103
193
|
|
|
104
194
|
Canonical stage order: **init → brief → storyboard → assets → review → publish**. `readiness`, `plan`/`execution-plan`, `produce`/`execute`, `execute-status`, `execute-cancel` are the runtime-execution layer that sits between assets and review.
|
|
105
195
|
|
|
106
|
-
`produce`/`execute --auto-chain` (`src/video/execute-autochain.ts`, `runAutoChain`) is the whole-storyboard driver over the existing dormant chain-from-prev engine: it renders scenes sequentially, auto-selects each produced candidate (from `report.candidatesByScene`), sets `chainFromPrev` for every scene after the first, and bundles `continuityFeedback` — so each scene seeds from the previous scene's output video with zero manual `reroll-scene`. The engine itself (seed resolution, `referenceRole='keyframe'`, reference budget) is unchanged; the one supporting change is that a seedance scene now keeps BOTH its character `Asset://` identity refs AND the keyframe video, via the pure `resolveSceneReferencePaths` in `execution-runtime.ts` (formerly an either/or that dropped the chain seed when characters were locked). It is resumable (skips already-selected scenes) and fail-fast (`stoppedAt` on the first barren scene). Default-off → byte-identical to today. Because `executeProject` on async routes (e.g. `seedance-direct`) is SUBMIT-ONLY, the default per-scene runner calls `waitForSceneVideo` (loops `refreshExecutionStatus` until the scene's candidate gains a video output) BEFORE selecting + chaining — otherwise the next scene's chain seed resolves to a still-rendering, video-less candidate and `chain-from-prev-source-missing` fires. Injected test runners simulate completed renders and skip the poll.
|
|
196
|
+
`produce`/`execute --auto-chain` (`src/video/execute-autochain.ts`, `runAutoChain`) is the whole-storyboard driver over the existing dormant chain-from-prev engine: it renders scenes sequentially, auto-selects each produced candidate (from `report.candidatesByScene`), sets `chainFromPrev` for every scene after the first, and bundles `continuityFeedback` — so each scene seeds from the previous scene's output video with zero manual `reroll-scene`. The engine itself (seed resolution, `referenceRole='keyframe'`, reference budget) is unchanged; the one supporting change is that a seedance scene now keeps BOTH its character `Asset://` identity refs AND the keyframe video, via the pure `resolveSceneReferencePaths` in `execution-runtime.ts` (formerly an either/or that dropped the chain seed when characters were locked). It is resumable (skips already-selected scenes) and fail-fast (`stoppedAt` on the first barren scene). Default-off → byte-identical to today. Because `executeProject` on async routes (e.g. `seedance-direct`) is SUBMIT-ONLY, the default per-scene runner calls `waitForSceneVideo` (loops `refreshExecutionStatus` until the scene's candidate gains a video output) BEFORE selecting + chaining — otherwise the next scene's chain seed resolves to a still-rendering, video-less candidate and `chain-from-prev-source-missing` fires. Injected test runners simulate completed renders and skip the poll. Auto-chain also emits **continuation advisories** (`continuation-handoff.ts`, `analyzeChainContinuity`) — chain-depth drift warnings, present only when non-empty.
|
|
197
|
+
|
|
198
|
+
Auto-chain is one of **three resumable scene drivers**, all the same shape (a PURE scheduler + an injectable per-scene runner, offline-testable): `runAutoChain` (SEQUENTIAL + chained, above), `runScenePool` (`execute-pool.ts`, `vclaw video pool`) which keeps up to N INDEPENDENT scene renders in-flight and auto-refills as each completes (no chaining — productizes the hand-written pool-driver loops), and `runRenderScenes` (`execute-render-scenes.ts`, `vclaw video render-scenes`) which renders sequentially but walks a per-scene **fallback route ladder** — try route A, escalate to B then C on provider rejection, first success wins. Real runners + CLI handlers live in `src/cli/handlers/execution.ts`.
|
|
107
199
|
|
|
108
200
|
### Two production modes
|
|
109
201
|
|
|
@@ -127,14 +219,20 @@ The ops layer tracks a normalized `storyboardReviewState` of `missing | current
|
|
|
127
219
|
|
|
128
220
|
The portal generates the standardized HTML surfaces that used to be hand-written per project: `edit.html`/`review.html` (editor/operator human-in-the-loop, with approve/regenerate controls and `VIDEOCLAW_REVIEW_DECISIONS` copy output), `client-review.html` (lightweight client approve/decline/comment, `VIDEOCLAW_CLIENT_FEEDBACK` copy output), and `preview.html` (polished final showcase: every production image is lightbox-enabled for click-to-fullscreen, a soundtrack `<audio controls preload="none">` player renders when a soundtrack is discovered, plus downloads). The module is split into `discovery.ts` (find project assets), `generate.ts` + `templates.ts` + `shared-assets.ts` (render the surfaces), `render.ts`/`publish.ts` (emit/ship), and `audit.ts` (drift checks); `src/video/review-ui.ts` (`vclaw video review-ui`) serves the editor surface interactively. The decisions/feedback flow back through env-var copy blocks rather than a server round-trip, keeping the on-disk project the source of truth. See `docs/preview-portal-audit.md`.
|
|
129
221
|
|
|
222
|
+
### Mission Control (`vclaw video monitor`)
|
|
223
|
+
|
|
224
|
+
`src/video/monitor/` serves a read-only localhost cockpit (default port 8765): `monitor/discovery.ts` discovers every project across workspace roots (`--root` adds extra roots to scan) and the server renders a live overview from the on-disk artifacts. Never calls a provider, never spends.
|
|
225
|
+
|
|
130
226
|
### Storyboard grid & multi-shot prompt handoff
|
|
131
227
|
|
|
132
|
-
`src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → Last Frame suppression. See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
|
|
228
|
+
`src/video/multi-shot-prompt.ts` builds project-ready, provider-tuned multi-shot prompt packets (presets via `vclaw video multi-shot --presets`; see `references/video/multi-shot-framework.md`, especially its Anti-patterns section). `multi-shot --plan` can render through alternate composers via `--format default|seedance-paragraph|per-shot` (default = the original `{ preset, shots[] }` JSON, unchanged) and wrap the rendered text bilingually via `--lang en|zh|en+zh` (offline identity translator — the flag surfaces the two-block `en+zh` structure, not live translation); `--category <id>` drives the composed prose. On a non-`default` `--format`, `--hook <patternId>` (named `HOOK_PATTERNS` opening directive from `cinematography.ts`) prepends an `Opening hook — ...` line and `--dialogue "<speaker>: <line> [|| <speaker>: <line>]"` appends spoken dialogue to the opening via `withDialogue` — both are post-render text transforms (composers stay pure), default off / unchanged output. `--dialogue` parses a trailing `[emotion]` per speaker, and `--emotion-cues` rewrites those named emotions into physical-cue descriptors (`rewriteEmotionAsPhysical`/`EMOTION_PHYSICAL_CUE_MAP` in `emotion-cues.ts`) — advisory/additive, extremes left named, default off / byte-identical. `filmmaking-prompts --phase storyboard|video` gates the heavy video `seedancePackets` to `[]` in the `storyboard` phase (lock-the-grid step) while keeping the storyboard/camera-language portion. Joey cinematic-adaptation opt-in flags (all additive — omit = byte-identical legacy output) route through these same commands: `filmmaking-prompts` takes `--sheet 8-shot|6-panel` (`characterSheetSixPanelPrompt`), `--realism`/`--wet`/`--haze thin|light|heavy` (the `captureRealismBlock` keystone + `volumetricHaze`, at `--detail rich`), `--background mid-gray|white|black` (`backgroundPlate`), and `--lighting <id>`/`--grade <id>` (rich cinematography-suffix registers, e.g. `night-fire`/`bleach-bypass`); `multi-shot` takes `--genre <id>` (`resolveStyleLine`, Nolan fallback) and `--vfx <id>` (physical-VFX effects register, `src/video/vfx-register.ts`). Operator trigger-word map: mid-gray → `backgroundPlate`; haze → `volumetricHaze`; anti-plastic → `captureRealismBlock`; wet → moisture clause; bleach-bypass/lifted-blacks → lift/gamma grade; no-on-screen-text → Last Frame suppression. See `docs/CLI_REFERENCE.md` ("Joey cinematic opt-in flags") and the framework Anti-patterns.
|
|
133
229
|
|
|
134
230
|
`src/video/storyboard-grid.ts` (`vclaw video storyboard-grid`, `renderStoryboardGrid`) renders a **deterministic shot-spec sheet** — a 3×3 SVG→PNG of CAM/MOVE/MOOD annotation panels — **not** a cinematic storyboard with character imagery. It is the *layout/intent contract*, not the finished reference image. The intended two-step is: (1) `storyboard-grid` to lock panel order + camera language, then (2) generate the real cinematic 3×3 grid via an image model (always `openai-gpt-image-2` for multi-panel composites) and re-attach it with `vclaw video filmmaking-prompts --storyboard-grid <path>`, which feeds it into the Seedance/Veo/Runway prompt packets.
|
|
135
231
|
|
|
136
232
|
Two production-learned gotchas baked into the generated packets (see the framework Anti-patterns): (a) grids passed as provider `reference_images` get **reproduced as a moving 9-panel split-screen** unless the prompt explicitly forces single-full-frame output — the packets now embed that guard; (b) real-person content filters (xskill/ARK Seedance) reject photoreal faces as `reference_images`, so use `filmmaking-prompts --no-faces` to render the grid prompt in a silhouette / no-face register.
|
|
137
233
|
|
|
234
|
+
`vclaw video prompt-lint` (`src/video/prompt-lint.ts`, pure/deterministic — the handler does the I/O) lints a filmmaking-prompts artifact BEFORE spend: Seedance 10-block order, the 280–600-words-per-packet window, brand/proper-name scrub leaks, the single-full-frame grid guard whenever a storyboard-grid reference is attached, SUBJECT LOCK / CAPTURE REALISM / CAMERA CAPTURE presence on video packets, grid-panel annotation style (advisory), the character-identity word budget (30–60 words target, >100 hard failure), and two newer advisories: the reference-transfer contract and allocation-model over-allocation. `--checklist` prints the route checklist. `vclaw video cinema-profile` persists per-project cinematography defaults onto the project manifest (`updateProjectManifestCinemaProfile` in `workspace.ts`) so the prompt/packet layer picks them up without re-typing flags. `vclaw video diagnose` (`src/video/output-diagnosis.ts`) is the companion for AFTER a render: an output-quality troubleshoot tree — `--symptom <text>` matches an observed defect to causes + fixes, `--retry-pattern` prints the conservative retry pattern.
|
|
235
|
+
|
|
138
236
|
### Provider routes and adapters
|
|
139
237
|
|
|
140
238
|
Live execution calls route-specific adapters. A custom adapter is set via one of:
|
|
@@ -154,6 +252,12 @@ For `seedance-direct`, `veo-useapi`, `runway-useapi`, and `dreamina-useapi`, `vc
|
|
|
154
252
|
|
|
155
253
|
**Seedance character consistency = the Asset Library, not raw URLs.** `ark/seedance-2.0` (the official Volcengine Ark Seedance 2.0, Standard = 1080p) locks character identity via managed **Asset Library avatars** (`Asset://` URIs), NOT raw photoreal image URLs (those trip the "real person" content filter and don't lock identity). `src/video/seedance-asset-library.ts` (`vclaw video seedance-register-assets`) registers character images as Assets, waits for international-profile sync, and writes `artifacts/seedance-assets.json` (canonical schema `schemas/video/artifacts/seedance-assets.schema.json`; shape `{ schemaVersion, projectSlug, groupName, generatedAt, assets:[{name, assetId, assetUri, intlAssetUri}] }`); `readSeedanceAssets(workspaceRoot, slug)` reads it back into a name→`Asset://`-URI map (graceful when absent). On the `seedance-direct` route only, `buildExecutionPayload` (`execution-runtime.ts`) auto-resolves each scene's `referencePaths` from that artifact by matching `scene.characters` names → their `Asset://` URIs (a project without the artifact behaves as before); `native-seedance.ts`'s `seedanceReferenceParams` then routes `Asset://` references into `reference_images`. References are capped at ≤9 image / ≤3 video / ≤3 audio per submission via `assertReferenceBudget`, preflighted across the whole payload in `submitSeedanceDirectNative` before any submit (fail-fast, no partial submission). Describe characters by visual descriptor (not proper names) in prompts — names don't survive across generations. (Validated 2026-05-29 against the same Ark endpoint the user's production project uses.) `@Name` tags in scene prompts (`resolveAssetTags` in `prompt-rules.ts`, lookup via `asset-tag-lookup.ts` `buildAssetTagLookup`) resolve at `buildExecutionPayload` time to the character's visual descriptor (text) + its saved reference (`Asset://`/image), merged through `resolveSceneReferencePaths`; unresolved tags strip the `@` and warn (never fatal), `@imageN` positional bindings are reserved, and it runs before `stripProperNames`. `@location` tags resolve via locked environment plates: `vclaw video environment-auto-create` (`src/video/environment-auto-create.ts`, mirrors `character-auto-create`) generates seamless no-people location plates and writes `artifacts/environment-assets.json` (own schema, like seedance-assets); `readEnvironmentAssets` (`environment-assets.ts`) feeds `buildAssetTagLookup`'s `environmentsByName` so `@tokyo-alley` resolves to the plate descriptor + ref (absent → graceful no-op).
|
|
156
254
|
|
|
255
|
+
**Flow identity is registered, not referenced.** The Flow-side counterpart of `seedance-register-assets`: `vclaw video flow-register-characters` / `flow-register-voices` (`src/video/flow-character-library.ts`, handlers in `provider-registration.ts`) register reusable Google Flow Characters/Voices via useapi and write `artifacts/flow-characters.json` / `flow-voices.json` (needs `USEAPI_API_TOKEN` + `USEAPI_ACCOUNT_EMAIL`). `vclaw video flow-r2v` (`src/video/native-flow-r2v.ts`) then submits reference-to-video against those registrations, running `applyR2vPromptHygiene` over the prompt first. This is what working-discipline rule 3 means by "locks identity on a registered Flow Character".
|
|
256
|
+
|
|
257
|
+
### Cartoon-show layer (show-bible → show-preflight → voice clones)
|
|
258
|
+
|
|
259
|
+
The repeatable cartoon-SHOW production system (from the Jack-Vs-AI workflow). `vclaw video show-bible` (`src/cli/handlers/show.ts`) is the show's asset-library index: it ties the project's characters + locations (environment plates) + voice clones into one reusable world and tracks the episode list — plan/derive by default, deterministic, no provider calls. `vclaw video show-preflight` (`src/video/show-preflight.ts`, `buildShowPreflight`) is the fail-fast, **route-aware** readiness gate that working-discipline rule 4 points at: given the show-bible + storyboard, it verifies every cast/speaking subject in every scene has what the CHOSEN route actually needs — Seedance-family routes (`seedance-direct`/`runway-useapi`/`dreamina-useapi`) require a resolvable character sheet per cast member (on `seedance-direct` it must additionally be a registered Asset Library avatar — a raw portrait trips the real-person filter), a location plate per scene, and a bound, resolvable voice clip per speaking character, with subjects described by full visual descriptor (never a bare generic noun); Flow (`veo-useapi`) requires a registered Flow Character per cast member (registration is out-of-band via `flow-characters.json`, so the gate enforces — it never fabricates). `vclaw video voice-clone` (`src/video/voice-clone.ts`) implements the production-learned voice lock: a raw MP3/WAV voice reference DRIFTS to a generic accent, but the same audio as the track of a **black-frame video** locks it — the command builds that black-frame+audio MP4 (shared `runFfmpeg`) and persists reusable voice-clone assets in `artifacts/voice-clones.json` (mirroring the seedance-assets/environment-assets pattern), bindable to characters.
|
|
260
|
+
|
|
157
261
|
### Overnight batch queue
|
|
158
262
|
|
|
159
263
|
`src/video/batch-queue.ts` + the `vclaw video batch-submit` / `batch-monitor` / `batch-status` commands queue many independent video jobs to run unattended overnight. The default route is the **free** `runway-useapi` explore mode (low-res, slow — backfill drafts); target `dreamina-useapi` (or `seedance-direct`) for paid hi-res. An operator-authored manifest (`schemas/video/artifacts/batch-queue-manifest.schema.json` — an input-only artifact, allowlisted in `check-artifact-schema-coverage.mjs`) compiles via the pure `buildBatchPayload()` into a single `VideoExecutionPayload` with N tasks, so it reuses the existing native route transports (`native-runway`/`native-dreamina`/`native-seedance`) and their job-state — no duplicate submit/poll logic. `batch-submit` persists `<dir>/batch-queue.json`; `batch-monitor` polls once (the transport downloads to `<dir>/scene-<i>.mp4`), copies each completed scene to `<dir>/clips/<jobId>.mp4`, and writes `<dir>/batch-status.json`. It is **resumable/idempotent**: re-running only advances pending→done/failed and never re-downloads completed clips, so `batch-monitor --out <dir> --once` is safe to schedule via launchd (one pass per tick). Opt-in wedge handling: `--stall-minutes <n>` (0=off) flags scenes the provider has left `submitted` past the stall window as **wedged** (`detectWedgedScenes`/`applyWedgeHandling` in `batch-queue.ts`), and `--fail-wedged` marks them `failed` so the queue reaches terminal and the monitor exits instead of polling a stuck job to the deadline. The monitor also backs off automatically when the explore queue is throttled (`isExploreThrottled`/`nextBackoffMs`), and the opt-in `--auto-resubmit` (with `--stall-minutes <n>`, bounded by `--max-resubmits <n>`, default 2) re-submits wedged scenes as fresh single-scene jobs (`planResubmits`/`runResubmitPass`) — **only on the free `runway-useapi` route** (refused on paid routes up front, and the resubmit path self-guards, so it never spends credits). See `docs/CLI_REFERENCE.md` ("Overnight batch video queue").
|
|
@@ -170,6 +274,10 @@ For `seedance-direct`, `veo-useapi`, `runway-useapi`, and `dreamina-useapi`, `vc
|
|
|
170
274
|
|
|
171
275
|
`narrate`, `dialogue`, `sfx`, and `soundtrack` are backend-pluggable audio commands over a backend registry (`registry.ts`): TTS via `gemini-tts`/`elevenlabs-tts`, SFX via ElevenLabs, music via `lyria` (Vertex), `lyria3` (Gemini API, key-based), `flowmusic` (Lyria 3 Pro vocals via useapi.net), and Suno. All spend-gated: without `--confirm-spend` they exit 3 with `spend_confirmation_required` (`--dry-run` to plan). `assemble` consumes their outputs via the mix-plan (dialogue + SFX mixed at stitch; `assemble/narration-fit.ts` handles TTS-vs-video timing).
|
|
172
276
|
|
|
277
|
+
### Media production & local post-production
|
|
278
|
+
|
|
279
|
+
Two handler families cover the finishing lane. `handlers/media-production.ts`: `assemble` (FFmpeg stitch, incl. `--from-clips`), `gen-image` (diegetic prop/screen/overlay stills; Flow image models via `gen-image-flow.ts`), `overlay` (graphic/alert/lower-third motion graphics with a drawtext preflight), `music-video` (vocal-synced beat-exact assembler, plan/dry by default), `title-card` (Pillow+RAQM title overlays), `stitch-ad`, `animation-styles` (shared `animation-styles.json` registry), `finish` (`src/video/finish.ts` — upscale a rendered cut to an HD/QHD master via hosted Topaz (spend-gated) or local Real-ESRGAN/Topaz CLI; the anti-plastic recipe is baked in: photoreal model, denoise/sharpen DISABLED, film grain kept, and Topaz `grain` clamps to 0.1 because the published schema overstates the range), and `lipsync` (OmniHuman, spend-gated). `assemble`'s stitch layer also supports opt-in **reading-holds** (`assemble/stitch.ts`, `readingHold`) — readable pre-roll holds on dense motion-comic segments. `handlers/media-ops.ts` is local-FFmpeg-only post-production on a finished cut — `make-vertical`/`make-square`/`make-loop`, `thumbnail`, `burn-subtitles`, `verify-final`, and `qc` (recursively scans `projects/<slug>/final/` + `outputs/` for clips and runs the assemble media-QC probe: missing-audio, nonstandard codec, duration drift; graceful `status: 'skipped'` when no clips) — real file I/O but NO provider calls and NO spend. Two adjacent quality/finishing tools: `vclaw video image-ops` (`src/video/image-ops.ts` + `native-magnific.ts`) is still-image post-processing, currently the Magnific precision-v2 image upscaler (pure planning core + injectable runner; `--dry-run` plans without spending; the IMAGE endpoint is live-verified, distinct from the flaky video upscaler), and `vclaw video consistency-audit` (`src/video/consistency-audit.ts`) is an automated character-consistency VISION audit across rendered scenes/keyframes — the engine-side forcing function that catches wardrobe/face drift on recurring characters BEFORE a render is presented as done.
|
|
280
|
+
|
|
173
281
|
### Gemini key pool
|
|
174
282
|
|
|
175
283
|
`src/video/gemini-key-pool.ts` provides round-robin selection with per-key cooldown across `GEMINI_API_KEYS`, `GOOGLE_API_KEYS`, `GOOGLE_API_KEY`. `analyze-template --auto` and `analyze --auto` use it via `src/video/gemini-analyze.ts`. `VCLAW_GEMINI_API_ENDPOINT` overrides the endpoint.
|
package/README.md
CHANGED
|
@@ -159,6 +159,10 @@ node dist/cli/vclaw.js video status --project demo
|
|
|
159
159
|
|
|
160
160
|
Add `--auto-chain` to `produce`/`execute` to render the whole storyboard sequentially, each scene seeded from the previous scene's output video (continuity chain, unattended).
|
|
161
161
|
|
|
162
|
+
`vclaw video pool --project <slug> [--max-concurrent <N>] [--scenes <csv>]` renders a project's pending scenes as independent units **in parallel** (no chaining, unlike `--auto-chain`), resumable (scenes with a selected candidate are skipped) and spend-gated (`--dry-run` to plan, `--confirm-spend` to render). `--max-concurrent` caps the number of scenes in flight (default 2) and the pool auto-refills a slot as each scene completes. Concurrent renders are lost-update-safe: each scene's `scene-candidates.json`/`scene-selection.json` read-modify-write runs under a shared artifact lock (re-read current → apply this scene's delta → write), so two scenes never clobber each other (no double-spend), while their slow provider submit/poll overlaps. The concurrency scheduler is built + adversarially tested.
|
|
163
|
+
|
|
164
|
+
`vclaw video render-scenes --project <slug> [--method <route>] [--fallback-chain] [--continue-from <i>] [--scenes <csv>]` is the **fallback-ladder** driver: it renders pending scenes **sequentially** and, per scene, walks a **fallback route ladder** — try the primary route; if the provider rejects it, escalate to the next route, and so on (the first route that succeeds wins). This productizes the hand-written `voice-render.mjs` / `chain.mjs` loops (render one scene, on rejection escalate to a fallback method, resumable across crashes). `--method` picks the primary route; `--fallback-chain` appends the project's `routePreference` / mode defaults as the fallback rungs (without it the ladder is just the primary — a plain sequential render). Resumable via `--continue-from <i>` (skips scenes below `i`) and already-selected scenes; spend-gated (`--dry-run` to plan, `--confirm-spend` to render). Contrast: `--auto-chain` = sequential + chained on one route; `pool` = parallel + independent on one route; `render-scenes` = sequential + per-scene route fallback.
|
|
165
|
+
|
|
162
166
|
**Or just run the packaged pre-flight that does build + tests + smokes + guardrails for you:**
|
|
163
167
|
|
|
164
168
|
```bash
|
|
@@ -259,7 +263,7 @@ flowchart TB
|
|
|
259
263
|
|
|
260
264
|
- **CLI layer** — argparse + dispatch only; no business logic.
|
|
261
265
|
- **Domain layer** (`src/video/*`) — small, single-purpose modules. Each file owns one concept (artifacts, checkpoints, readiness, execution-plan, execution-runtime, doctor, metrics, next-actions, project-index, obsidian-export, etc.).
|
|
262
|
-
- **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi`.
|
|
266
|
+
- **Provider platform** — route descriptors for `veo-useapi`, `seedance-direct`, `runway-useapi`, `dreamina-useapi`, `magnific-rest`.
|
|
263
267
|
- **Adapter layer** — three resolution strategies (custom binary → built-in adapter with command shim → native in-process transport). Explicit fall-through, never silent.
|
|
264
268
|
- **Schemas** — JSON Schema contracts under `schemas/video/` are the source of truth for every artifact shape.
|
|
265
269
|
|
|
@@ -373,6 +377,9 @@ flowchart TD
|
|
|
373
377
|
| `VCLAW_RUNWAY_USEAPI_ADAPTER` | runway-useapi | custom adapter binary override |
|
|
374
378
|
| `VCLAW_SEEDANCE_DIRECT_SUBMIT_CMD` · `_POLL_CMD` · `_CANCEL_CMD` | seedance-direct | command shim through built-in adapter |
|
|
375
379
|
| `SUTUI_API_KEY` | seedance-direct (native) | XSkill API credentials for in-process transport |
|
|
380
|
+
| `VCLAW_MAGNIFIC_REST_ADAPTER` · `_SUBMIT_CMD` · `_POLL_CMD` · `_CANCEL_CMD` | magnific-rest | custom adapter override / command shim |
|
|
381
|
+
| `MAGNIFIC_API_KEY` | magnific-rest (native) + `finish --backend magnific-precision` | Magnific/Freepik REST key (`x-magnific-api-key`) for video generation + upscale |
|
|
382
|
+
| `VCLAW_MAGNIFIC_MODEL` · `VCLAW_MAGNIFIC_API_URL` | magnific-rest | proxied model (default = cheapest catalog model fitting the op; premium incl. Seedance Pro 1080p opt-in) · API base override |
|
|
376
383
|
| `VIDEOCLAW_APPROVE_STORYBOARD` | director mode | `=1` to approve storyboard and allow provider submission |
|
|
377
384
|
| `DIRECTOR_AUTO_FIX_CONTENT` | director mode | `=1` to rewrite provider-risk phrases in storyboard |
|
|
378
385
|
| `SKIP_DIRECTOR_PREFLIGHT` | director mode | `=1` to bypass preflight (use sparingly) |
|
|
@@ -421,20 +428,39 @@ storyboard still candidates exist. It locks the best available stills, promotes
|
|
|
421
428
|
artifact-backed upscaled handoff assets, fills the reference and assembly gates,
|
|
422
429
|
and writes the same review artifacts as the browser station.
|
|
423
430
|
|
|
431
|
+
**Live run dashboard** (`vclaw video portal --surface run` → `run.html`) is the
|
|
432
|
+
operations view of a render: one card per generation (storyboard scene) with a
|
|
433
|
+
STATUS badge (`done`/`rendering`/`pending`/`failed`), the provider job id + error,
|
|
434
|
+
the input keyframe, a playable in-progress clip (`outputs/scene-N.mp4`), the exact
|
|
435
|
+
submit prompt + contract, a spend estimate, and an event log — auto-refreshing so
|
|
436
|
+
an open tab stays current. It paints a RED **diff-vs-contract alarm** when the
|
|
437
|
+
payload that was actually submitted has diverged from the current contract (the
|
|
438
|
+
class of bug where an `@tag` silently hijacks the references), backed by a frozen
|
|
439
|
+
`artifacts/run-contract.json` snapshot that `produce`/`execute` persists at submit
|
|
440
|
+
time. `run.html` is part of the default `vclaw video portal` surface set and is
|
|
441
|
+
regenerated automatically on every `produce`/`execute` and `execute-status` poll
|
|
442
|
+
(`VCLAW_NO_RUN_SURFACE=1` opts out).
|
|
443
|
+
|
|
424
444
|
### Templates · cloning · storyboard templates
|
|
425
445
|
`analyze` · `analyze-template` · `template-create` · `template-save` · `template-list` · `template-show` · `template-validate` · `clone-plan` · `clone-init` · `clone-ad` · `clone-execute` · `storyboard-from-clone` · `storyboard-template-list` · `storyboard-template-show`
|
|
426
446
|
|
|
427
447
|
### Character subsystem
|
|
428
|
-
`character-add` · `character-list` · `character-show` · `character-consistency` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `voice-clone` · `show-bible`
|
|
448
|
+
`character-add` · `character-list` · `character-show` · `character-consistency` · `consistency-audit` · `character-auto-create` · `environment-auto-create` · `character-import-library` · `find-library` · `library find` · `library clean` · `list-library` · `seedance-register-assets` · `flow-register-characters` · `flow-register-voices` · `voice-clone` · `show-bible` · `show-preflight`
|
|
449
|
+
|
|
450
|
+
`consistency-audit` is the **automated character identity/costume vision audit**: for each rendered scene it extracts a representative mid-frame and asks an (injectable, Gemini-backed) vision client whether each registered scene character still matches its locked reference face/hair AND costume/colours, plus a deterministic dark-border check and an extra-figure flag — catching wardrobe/identity drift (a dhoti rendering crimson in one scene and tan in another) BEFORE a render is presented as done. It writes `consistency-audit.json` and also runs advisory/non-fatal at the end of a real `produce`/`execute` run when a Gemini key is configured.
|
|
429
451
|
|
|
430
452
|
### Portfolio · ops · reporting
|
|
431
453
|
`list` · `index` · `metrics` · `workload` · `next-actions` · `dependencies` · `status` · `doctor-project` · `doctor-portfolio` · `report` · `report-snapshot` · `report-history` · `report-diff` · `trends` · `export-csv` · `artifact-history` · `verify-env` · `cost-estimate`
|
|
432
454
|
|
|
455
|
+
### Mission Control
|
|
456
|
+
- `vclaw video monitor` — Mission Control: a live localhost cockpit across every project and provider.
|
|
457
|
+
- `vclaw video migrate-home [--confirm] [--root <home>]` — consolidate scattered projects (`~/.videoclaw-*` roots) into the one canonical workspace home (`~/videoclaw`) via `mv` + a symlink left at the old path. Dry-run by default; `--confirm` performs the moves. Collision-safe and idempotent.
|
|
458
|
+
|
|
433
459
|
### Metadata
|
|
434
460
|
`set-meta` · `set-execution-profile` · `import-legacy`
|
|
435
461
|
|
|
436
462
|
### Post-production
|
|
437
|
-
`remix-narrated` · `verify-final` · `make-vertical` · `make-square` · `make-loop` · `thumbnail` · `archive-project` · `motion-overlay` · subtitle burn-in
|
|
463
|
+
`remix-narrated` · `verify-final` · `qc` · `make-vertical` · `make-square` · `make-loop` · `thumbnail` · `archive-project` · `motion-overlay` · subtitle burn-in
|
|
438
464
|
|
|
439
465
|
### Obsidian
|
|
440
466
|
`export-obsidian` · `sync-obsidian` · `scaffold-obsidian-vault`
|
|
@@ -460,6 +486,7 @@ Two recent additions are worth calling out because they fix the two things that
|
|
|
460
486
|
- **Narration / TTS** (`vclaw video narrate`) — synthesize a narration clip from a script via a **TTS backend** (`gemini-tts`, the Gemini API `gemini-2.5-flash-preview-tts` model — API-key product, resolves a key from `GEMINI_API_KEYS` / `GOOGLE_API_KEYS` / `GOOGLE_API_KEY`) to `artifacts/audio/narration.wav` + a typed `narration.json`. `--video-duration-ms` embeds a narration-fit timing plan; `--dry-run` estimates duration with no keys. Full guide: [`docs/ASSEMBLE.md`](https://videoclaw-docs.vercel.app/reference/ASSEMBLE).
|
|
461
487
|
- **Cartoon-show voice clone** (`vclaw video voice-clone`) — build the **"blank video with audio" voice reference** (the production-learned voice-cloning trick) so a target voice — including **your own** — locks into a Seedance/Veo generation. A raw MP3/WAV reference drifts to a generic accent; a **black-frame video carrying the same audio** locks the voice. Renders that clip from `--audio` (local ffmpeg, no spend) and persists it in `voice-clones.json`; `--character` binds it so the character's scene `@Name` tags auto-route the clip into Seedance `reference_videos`. Plan-only by default; `--execute` renders + persists. `--slice-seconds` splits the recording per line for drift control. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
462
488
|
- **Cartoon-show bible** (`vclaw video show-bible`) — the repeatable cartoon-SHOW **asset-library index** (`show-bible.json`): tie the project's characters + locations + voice clones into one reusable world and track the episode list, so a solo creator can make many consistent episodes. Derives the bible from existing artifacts (auto-binding each character's voice clone), or `--from-json` to persist an authored one; `--add-episode "id|title|logline"` merges episodes by id; `--show` prints without writing. Deterministic, no spend — distinct from `story-bible` (continuity) and `director-blueprint` (visual direction). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
489
|
+
- **Cartoon-show method, ENFORCED** — once a project has a `show-bible`, `produce`/`execute` **auto-attach the route-correct references per scene** (Seedance routes: each scene cast member's character sheet + the matched location plate as image refs + each speaking character's bound voice clip as a video ref; Flow/`veo-useapi`: scene cast → registered Flow Characters) and **refuse to render if a piece is missing**. The gate is `vclaw video show-preflight --project <slug>` — a read-only fail-fast check that exits `3` with a JSON blocker report when a cast sheet, Asset-Library registration, location plate, bound voice clip, Flow Character, or specific descriptor (never "the man") is missing for the resolved route; `produce`/`execute` run the same gate (skip with `SKIP_SHOW_PREFLIGHT=1`). Projects with no `show-bible` are unaffected (opt-in).
|
|
463
490
|
- **Diegetic stills** (`vclaw video gen-image`) — generate an in-world **prop**, on-screen **screen** (UI/dashboard), or **overlay** graphic (e.g. a "SYSTEM COMPROMISED" alert) into `assets/props/`. Three backends via `--backend`: **gobananas** (default, `GO_BANANAS_API_KEY`, no OpenAI key), **openai** (gpt-image), and **flow** — Google Flow via useapi.net (`USEAPI_API_TOKEN` + `USEAPI_ACCOUNT_EMAIL`): `imagen-4` / `nano-banana` / `nano-banana-pro` auto-selected by reference count, repeated `--ref` (`reference_1..10`, local paths upload first) + `--character` (`character_1..7`, names resolve via `flow-characters.json`) slots, `--count`/`--seed`, and inline `@reference_N`/`@character_N` prompt markers validated **before any upload or spend**. Per-kind render directives (screens/overlays keep text, props suppress it); `--dry-run` prints the composed request with no spend. Composite it onto footage with the assemble overlay builders. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
464
491
|
- **Motion-graphics overlays** (`vclaw video overlay`) — composite a graphic onto a clip (time-gated, faded, positioned — pairs with `gen-image` to drop a generated screen/alert onto footage, **font-free + real-render validated**), or burn a pulsing `--alert` / boxed `--lower-third` caption (FFmpeg `drawtext`, needs a libfreetype build). `--dry-run` prints the planned ffmpeg command. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
465
492
|
- **Motion-overlay reels** (`vclaw video motion-overlay`) — turn an existing **talking-head video** into a reel with **motion-graphics overlays synced to the speech** via Google Flow's **Omni Flash V2V** (kinetic typography / icons / metaphors painted on the footage, original voice preserved). Plan/dry by default — ingest → Gemini STT (or `--transcript`) → sentence-boundary slice into ≤10s takes → per-take overlay-prompt composition → work folder + manifest + `--preview` review surface, **no spend**. `--execute --confirm-spend` renders each take (V2V → audio-restore → clip-stitch). Four layouts (`split` / `overlay` / `motion-only` / `avatar-host`); the `avatar-host` layout fills the frame with an **identity-locked character host** (go-bananas `generate_with_character` → Veo I2V) and needs `--gb-character <Name:ID>`. Full guide: [`docs/MOTION_OVERLAY.md`](https://videoclaw-docs.vercel.app/reference/MOTION_OVERLAY).
|
|
@@ -468,7 +495,8 @@ Two recent additions are worth calling out because they fix the two things that
|
|
|
468
495
|
|
|
469
496
|
- **Music-video titles** (`vclaw video title-card`) — burn the **titles you see in music videos** (a faded **lower-third** + a centred **end card** that holds to EOF) onto a finished cut. Text is rasterized via **Pillow + RAQM**, so it works on **any ffmpeg build** (no libfreetype) and **any script** — including **Devanagari/Arabic** (vowel marks shape + stack correctly). Each card is a looped PNG input so delayed alpha fades animate. Fully local, no spend; `--dry-run` plans, omit to render. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
470
497
|
|
|
471
|
-
- **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill aggregator, or a local Topaz CLI). The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY
|
|
498
|
+
- **HD finish / upscale** (`vclaw video finish`) — upscale a rendered cut to a clean HD master via **Topaz** (hosted Proteus/Gaia/Starlight through the apiz/xskill aggregator, or a local Topaz CLI) or **Magnific Video Upscaler Precision** (`--backend magnific-precision`, direct Magnific REST, `--target-resolution 1k|2k|4k`). Magnific accepts MP4/MOV/AVI/WebM/MKV and ffprobe-preflights every input against its limits (≤15 s / ≤450 frames / ≤150 MB / ≤4K), failing fast unless `--normalize` re-encodes to fit. The **anti-plastic** "detail-not-sharp" recipe (denoise + halo off, film grain kept + clamped to the real 0.1 cap, detail recovery high) avoids waxy skin. Hosted backends are **paid** → refuses without `--confirm-spend` (`--dry-run` plans free); `topaz-local` is free. Hosted needs `APIZ_API_KEY`/`XSKILL_API_KEY` (Topaz) or `MAGNIFIC_API_KEY` (Magnific). Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
499
|
+
- **Image upscale** (`vclaw video image-ops --op upscale`) — still-image upscaling 2×–16× via **Magnific's image upscaler** (`image-upscaler-precision-v2`, live-verified). Local image is base64-encoded inline; an `http(s)` URL is passed through. `--logo-safe` keeps flat graphics/text crisp without hallucinated texture. **Paid** → `--confirm-spend` (`--dry-run` plans free); needs `MAGNIFIC_API_KEY`.
|
|
472
500
|
|
|
473
501
|
- **Audio-driven lip-sync** (`vclaw video lipsync`) — a **still/keyframe + a vocal track** → a **lip-synced talking-head clip** via **OmniHuman v1.5** (apiz/xskill). Uploads image+audio → submits → awaits → downloads → **normalizes** to CFR fps + even dims (OmniHuman's 25fps/odd dims otherwise break frame-accurate seeking). Drives an **external** vocal (a rapper's verse, a singer's hook) — the lane's way to put a performer's real vocal on their face. Audio cap enforced up front (1080p≤30s, 720p≤60s). **Paid** → refuses without `--confirm-spend` (`--dry-run` plans free); needs `APIZ_API_KEY`/`XSKILL_API_KEY`. Full guide: [`docs/CLI_REFERENCE.md`](https://videoclaw-docs.vercel.app/reference/CLI_REFERENCE).
|
|
474
502
|
|
|
@@ -588,6 +616,7 @@ Every stage writes a canonical JSON artifact under `projects/<slug>/artifacts/`.
|
|
|
588
616
|
- **publish report** → `publish-report.json`
|
|
589
617
|
- **analyze output** → `analyze-output.json`
|
|
590
618
|
- **character consistency** → `character-consistency.json`
|
|
619
|
+
- **consistency audit** → `consistency-audit.json`
|
|
591
620
|
|
|
592
621
|
Artifacts are append-only via `artifacts/history/` and every write emits a machine-readable event to `events/events.jsonl`.
|
|
593
622
|
|
package/dist/cli/args.d.ts
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
export declare function validateInitSlug(value: string): void;
|
|
2
2
|
export declare function parseFlagValue(args: string[], flag: string): string | undefined;
|
|
3
|
+
/**
|
|
4
|
+
* The ONE workspace-root resolver for CLI handlers. Precedence:
|
|
5
|
+
* 1. an explicit `--workspace-root` / `--root` flag value, else
|
|
6
|
+
* 2. the environment (`VCLAW_WORKSPACE` / `VIDEOCLAW_WORKSPACE`), else
|
|
7
|
+
* 3. the canonical home (`~/videoclaw`).
|
|
8
|
+
*
|
|
9
|
+
* Replaces the old `parseFlagValue(args, '--root') ?? process.cwd()` fallback
|
|
10
|
+
* every handler used, so a bare `vclaw video ...` (no --root, run from any
|
|
11
|
+
* directory) operates on the single canonical home instead of whatever cwd the
|
|
12
|
+
* shell happened to be in. Pass the handler's `args` to honor the flags; call
|
|
13
|
+
* with no args for the env-or-home default.
|
|
14
|
+
*/
|
|
15
|
+
export declare function resolveWorkspaceRoot(args?: string[]): string;
|
|
3
16
|
/**
|
|
4
17
|
* Parse `--project <slug>` (or another slug-bearing flag) and validate the
|
|
5
18
|
* value against `isProjectSlug`, so a flag-looking token (`--project --json`)
|
package/dist/cli/args.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"args.d.ts","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"AAqCA,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAuCpD;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAI/E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,MAAM,CAM5D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,SAAc,GAAG,MAAM,GAAG,SAAS,CAoB3F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAQ1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQzF;AAED,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAQ5F;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAU1D;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAkB1E;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAgBzE;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAa1E;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAavE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAajE;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,MAAM,EAAE,EACd,MAAM,EAAE,OAAO,EACf,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,IAAI,CAON;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAWlF;AAED,wBAAgB,qCAAqC,CACnD,QAAQ,EAAE,MAAM,GAAG,SAAS,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC/B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC3C,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAa1B"}
|
package/dist/cli/args.js
CHANGED
|
@@ -14,10 +14,12 @@
|
|
|
14
14
|
* `GRADE_FILTER_IDS` list, and the `parseExecutionProfileInput` normalizer (none
|
|
15
15
|
* of which import the CLI, so there is no import cycle).
|
|
16
16
|
*/
|
|
17
|
+
import { resolve } from 'node:path';
|
|
17
18
|
import { VclawError } from '../video/errors.js';
|
|
18
19
|
import { isProjectSlug } from '../video/projects.js';
|
|
19
20
|
import { GRADE_FILTER_IDS } from '../video/assemble/stitch.js';
|
|
20
21
|
import { parseExecutionProfileInput } from '../video/execution-profile.js';
|
|
22
|
+
import { resolveWorkspaceRootFromEnv } from '../video/workspace-root.js';
|
|
21
23
|
const RESERVED_SLUG_NAMES = new Set([
|
|
22
24
|
'history',
|
|
23
25
|
'artifacts',
|
|
@@ -57,6 +59,26 @@ export function parseFlagValue(args, flag) {
|
|
|
57
59
|
return undefined;
|
|
58
60
|
return args[index + 1];
|
|
59
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* The ONE workspace-root resolver for CLI handlers. Precedence:
|
|
64
|
+
* 1. an explicit `--workspace-root` / `--root` flag value, else
|
|
65
|
+
* 2. the environment (`VCLAW_WORKSPACE` / `VIDEOCLAW_WORKSPACE`), else
|
|
66
|
+
* 3. the canonical home (`~/videoclaw`).
|
|
67
|
+
*
|
|
68
|
+
* Replaces the old `parseFlagValue(args, '--root') ?? process.cwd()` fallback
|
|
69
|
+
* every handler used, so a bare `vclaw video ...` (no --root, run from any
|
|
70
|
+
* directory) operates on the single canonical home instead of whatever cwd the
|
|
71
|
+
* shell happened to be in. Pass the handler's `args` to honor the flags; call
|
|
72
|
+
* with no args for the env-or-home default.
|
|
73
|
+
*/
|
|
74
|
+
export function resolveWorkspaceRoot(args) {
|
|
75
|
+
if (args) {
|
|
76
|
+
const flag = parseFlagValue(args, '--workspace-root') ?? parseFlagValue(args, '--root');
|
|
77
|
+
if (flag)
|
|
78
|
+
return resolve(flag);
|
|
79
|
+
}
|
|
80
|
+
return resolveWorkspaceRootFromEnv();
|
|
81
|
+
}
|
|
60
82
|
/**
|
|
61
83
|
* Parse `--project <slug>` (or another slug-bearing flag) and validate the
|
|
62
84
|
* value against `isProjectSlug`, so a flag-looking token (`--project --json`)
|
package/dist/cli/args.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"args.js","sourceRoot":"","sources":["../../src/cli/args.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,12 @@
|
|
|
1
1
|
export declare function handleVideoAnalyze(args: string[]): Promise<void>;
|
|
2
2
|
export declare function handleVideoBrandExtract(args: string[]): Promise<void>;
|
|
3
|
+
/**
|
|
4
|
+
* `vclaw video consistency-audit` — run the automated character identity/costume
|
|
5
|
+
* vision audit over the project's rendered scenes and persist
|
|
6
|
+
* `artifacts/consistency-audit.json`. Uses the default Gemini-backed vision
|
|
7
|
+
* client; errors fail-fast when no vision key is configured so the operator
|
|
8
|
+
* knows the audit could not actually look at the frames. `--json` keeps the same
|
|
9
|
+
* machine-readable output (it always emits JSON).
|
|
10
|
+
*/
|
|
11
|
+
export declare function handleVideoConsistencyAudit(args: string[]): Promise<void>;
|
|
3
12
|
//# sourceMappingURL=analysis.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"analysis.d.ts","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"AA4BA,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAuEtE;AAED,wBAAsB,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB3E;AAED;;;;;;;GAOG;AACH,wBAAsB,2BAA2B,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CA+B/E"}
|
|
@@ -6,24 +6,26 @@
|
|
|
6
6
|
* the Gemini key pool) and `brand-extract` (scrape a website -> brand-DNA
|
|
7
7
|
* artifact for `brief --from-brand-dna`). Dispatch stays in `vclaw.ts`.
|
|
8
8
|
*/
|
|
9
|
-
import { basename } from 'node:path';
|
|
10
|
-
import { parseFlagValue, parseProjectSlugFlag, parseRepeatableFlag } from '../args.js';
|
|
9
|
+
import { basename, join } from 'node:path';
|
|
10
|
+
import { parseFlagValue, parseProjectSlugFlag, parseRepeatableFlag, resolveWorkspaceRoot } from '../args.js';
|
|
11
11
|
import { VclawError } from '../../video/errors.js';
|
|
12
12
|
import { ensureProjectWorkspace, updateProjectManifestState } from '../../video/workspace.js';
|
|
13
13
|
import { writeArtifact } from '../../video/artifact-store.js';
|
|
14
|
+
import { writeTextFileAtomic } from '../../video/atomic-write.js';
|
|
14
15
|
import { appendProjectEvent } from '../../video/events.js';
|
|
15
16
|
import { writeStageCheckpoint } from '../../video/checkpoints.js';
|
|
16
17
|
import { createAnalyzeOutput } from '../../video/analyze-output.js';
|
|
17
18
|
import { generateAnalyzeOutputWithGemini } from '../../video/gemini-analyze.js';
|
|
18
19
|
import { appendVideoContextChangelog } from '../../video/video-context.js';
|
|
19
20
|
import { scrapeSite, runBrandExtraction, createBrandDnaArtifact, writeBrandDnaArtifact, } from '../../video/brand-dna.js';
|
|
21
|
+
import { auditProjectConsistency, hasVisionKey } from '../../video/consistency-audit.js';
|
|
20
22
|
export async function handleVideoAnalyze(args) {
|
|
21
23
|
const slug = parseProjectSlugFlag(args);
|
|
22
24
|
const source = parseFlagValue(args, '--source');
|
|
23
25
|
if (!slug || !source) {
|
|
24
26
|
throw new VclawError('missing_required_flag', 'video analyze requires --project <slug> and --source <path-or-url>');
|
|
25
27
|
}
|
|
26
|
-
const root =
|
|
28
|
+
const root = resolveWorkspaceRoot(args);
|
|
27
29
|
const workspace = await ensureProjectWorkspace(slug, root);
|
|
28
30
|
const title = parseFlagValue(args, '--title') ?? basename(source);
|
|
29
31
|
const durationRaw = parseFlagValue(args, '--duration');
|
|
@@ -98,7 +100,7 @@ export async function handleVideoBrandExtract(args) {
|
|
|
98
100
|
missing.push('--url');
|
|
99
101
|
throw new VclawError('missing_required_flag', 'video brand-extract requires --project <slug> and --url <website>', { missing });
|
|
100
102
|
}
|
|
101
|
-
const root =
|
|
103
|
+
const root = resolveWorkspaceRoot(args);
|
|
102
104
|
const endpoint = parseFlagValue(args, '--gemini-endpoint') ?? undefined;
|
|
103
105
|
const workspace = await ensureProjectWorkspace(slug, root);
|
|
104
106
|
const scraped = await scrapeSite(url);
|
|
@@ -108,4 +110,33 @@ export async function handleVideoBrandExtract(args) {
|
|
|
108
110
|
await appendVideoContextChangelog(root, `${artifact.createdAt} brand-extract: captured brand DNA for project ${slug} from ${url}.`);
|
|
109
111
|
process.stdout.write(`${JSON.stringify({ workspace, artifactPath, artifact }, null, 2)}\n`);
|
|
110
112
|
}
|
|
113
|
+
/**
|
|
114
|
+
* `vclaw video consistency-audit` — run the automated character identity/costume
|
|
115
|
+
* vision audit over the project's rendered scenes and persist
|
|
116
|
+
* `artifacts/consistency-audit.json`. Uses the default Gemini-backed vision
|
|
117
|
+
* client; errors fail-fast when no vision key is configured so the operator
|
|
118
|
+
* knows the audit could not actually look at the frames. `--json` keeps the same
|
|
119
|
+
* machine-readable output (it always emits JSON).
|
|
120
|
+
*/
|
|
121
|
+
export async function handleVideoConsistencyAudit(args) {
|
|
122
|
+
const slug = parseProjectSlugFlag(args);
|
|
123
|
+
if (!slug) {
|
|
124
|
+
throw new VclawError('missing_required_flag', 'video consistency-audit requires --project <slug>', { missing: ['--project'] });
|
|
125
|
+
}
|
|
126
|
+
const root = resolveWorkspaceRoot(args);
|
|
127
|
+
if (!hasVisionKey()) {
|
|
128
|
+
throw new VclawError('env_var_missing', 'video consistency-audit needs a Gemini vision key to inspect rendered frames. Set GEMINI_API_KEYS (or GOOGLE_API_KEY).', { env: ['GEMINI_API_KEYS', 'GOOGLE_API_KEY'] });
|
|
129
|
+
}
|
|
130
|
+
const workspace = await ensureProjectWorkspace(slug, root);
|
|
131
|
+
const report = await auditProjectConsistency(slug, root);
|
|
132
|
+
const artifactPath = join(workspace.artifactsDir, 'consistency-audit.json');
|
|
133
|
+
await writeTextFileAtomic(artifactPath, `${JSON.stringify(report, null, 2)}\n`);
|
|
134
|
+
await appendProjectEvent(workspace, {
|
|
135
|
+
type: 'artifact.consistency-audit.written',
|
|
136
|
+
recordedAt: report.generatedAt,
|
|
137
|
+
payload: { artifactPath, ok: report.ok, findings: report.findings.length },
|
|
138
|
+
});
|
|
139
|
+
await appendVideoContextChangelog(root, `${report.generatedAt} consistency-audit: ${report.ok ? 'ok' : `${report.findings.length} finding(s)`} for project ${slug}.`);
|
|
140
|
+
process.stdout.write(`${JSON.stringify({ workspace, artifactPath, report }, null, 2)}\n`);
|
|
141
|
+
}
|
|
111
142
|
//# sourceMappingURL=analysis.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"analysis.js","sourceRoot":"","sources":["../../../src/cli/handlers/analysis.ts"],"names":[],"mappings":"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"}
|