@aswless_854771076/ai_short_studio_cli 0.1.98 → 0.1.100
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -313
- package/dist/base-command.d.ts +0 -6
- package/dist/base-command.js +1 -39
- package/dist/client/api-client.js +2 -19
- package/dist/commands/auth/login.d.ts +1 -2
- package/dist/commands/auth/login.js +2 -5
- package/dist/commands/auth/logout.d.ts +0 -1
- package/dist/commands/auth/signup.d.ts +0 -1
- package/dist/commands/auth/status.d.ts +0 -1
- package/dist/commands/canvas/apply.d.ts +0 -1
- package/dist/commands/canvas/asset/get.d.ts +0 -1
- package/dist/commands/canvas/asset/list.d.ts +0 -1
- package/dist/commands/canvas/asset/select.d.ts +1 -3
- package/dist/commands/canvas/asset/select.js +3 -22
- package/dist/commands/canvas/asset/upload.d.ts +0 -14
- package/dist/commands/canvas/asset/upload.js +3 -43
- package/dist/commands/canvas/continuity/analyze.d.ts +0 -1
- package/dist/commands/canvas/edge/connect.d.ts +0 -1
- package/dist/commands/canvas/edge/disconnect.d.ts +0 -1
- package/dist/commands/canvas/edge/list.d.ts +0 -1
- package/dist/commands/canvas/edge/list.js +1 -4
- package/dist/commands/canvas/episode/create.d.ts +0 -1
- package/dist/commands/canvas/episode/list.d.ts +0 -1
- package/dist/commands/canvas/folder/copy-cross-project.d.ts +0 -1
- package/dist/commands/canvas/folder/create.d.ts +0 -1
- package/dist/commands/canvas/folder/delete.d.ts +0 -1
- package/dist/commands/canvas/folder/list.d.ts +0 -1
- package/dist/commands/canvas/folder/move.d.ts +0 -1
- package/dist/commands/canvas/folder/rename.d.ts +0 -1
- package/dist/commands/canvas/folder/restore.d.ts +0 -1
- package/dist/commands/canvas/get.d.ts +0 -1
- package/dist/commands/canvas/inspect.d.ts +0 -1
- package/dist/commands/canvas/node/add.d.ts +1 -1
- package/dist/commands/canvas/node/add.js +2 -2
- package/dist/commands/canvas/node/delete.d.ts +0 -1
- package/dist/commands/canvas/node/edit-resource.d.ts +0 -2
- package/dist/commands/canvas/node/edit-resource.js +1 -9
- package/dist/commands/canvas/node/edit-shot.d.ts +0 -1
- package/dist/commands/canvas/node/get.d.ts +0 -1
- package/dist/commands/canvas/node/list.d.ts +0 -5
- package/dist/commands/canvas/node/list.js +2 -43
- package/dist/commands/canvas/node/run.d.ts +0 -15
- package/dist/commands/canvas/node/run.js +6 -142
- package/dist/commands/canvas/node/types.d.ts +0 -1
- package/dist/commands/canvas/node/update-many.d.ts +0 -1
- package/dist/commands/canvas/node/update.d.ts +0 -1
- package/dist/commands/canvas/settings/get.d.ts +0 -1
- package/dist/commands/canvas/settings/set.d.ts +0 -24
- package/dist/commands/canvas/settings/set.js +1 -60
- package/dist/commands/config/get.d.ts +0 -1
- package/dist/commands/config/set.d.ts +0 -2
- package/dist/commands/config/set.js +2 -55
- package/dist/commands/preflight.d.ts +0 -1
- package/dist/commands/preflight.js +1 -9
- package/dist/commands/project/create.d.ts +0 -1
- package/dist/commands/project/delete.d.ts +0 -1
- package/dist/commands/project/get.d.ts +0 -1
- package/dist/commands/project/list.d.ts +0 -1
- package/dist/commands/project/update.d.ts +0 -1
- package/dist/commands/skill/install.d.ts +0 -1
- package/dist/commands/skill/install.js +0 -1
- package/dist/commands/skill/path.d.ts +0 -1
- package/dist/commands/skill/path.js +0 -1
- package/dist/commands/skill/status.d.ts +0 -1
- package/dist/commands/skill/status.js +0 -1
- package/dist/commands/task/cancel.d.ts +0 -1
- package/dist/commands/task/get.d.ts +0 -1
- package/dist/commands/task/wait.d.ts +0 -2
- package/dist/commands/task/wait.js +1 -6
- package/dist/domain/vvicat-api.d.ts +3 -63
- package/dist/domain/vvicat-api.js +9 -74
- package/dist/output/formatter.d.ts +0 -11
- package/dist/output/formatter.js +0 -20
- package/dist/preflight.d.ts +0 -1
- package/dist/preflight.js +1 -14
- package/dist/skill/command-flags.js +4 -7
- package/dist/skill/skill-manager.d.ts +2 -75
- package/dist/skill/skill-manager.js +15 -60
- package/package.json +3 -4
- package/scripts/postinstall.mjs +12 -7
- package/skills/using-vvicat-ai-short-studio-cli/SKILL.md +67 -27
- package/skills/using-vvicat-ai-short-studio-cli/references/commands/canvas.md +4 -3
- package/skills/using-vvicat-ai-short-studio-cli/references/commands/project.md +2 -26
- package/skills/using-vvicat-ai-short-studio-cli/references/commands.md +2 -2
- package/skills/using-vvicat-ai-short-studio-cli/references/editing-delivery.md +1 -1
- package/skills/using-vvicat-ai-short-studio-cli/references/h3-video-delivery.md +1 -1
- package/skills/using-vvicat-ai-short-studio-cli/references/humanizer/humanizer.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/SKILL.md +447 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/brief.md +93 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/project-files.md +246 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/reference-video.md +266 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/script-and-time.md +253 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/transformations.md +141 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/distribution.md +176 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/local-tools.md +411 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/model-and-provider.md +275 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/profile.md +286 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/asset-and-shot-preproduction.md +193 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/b-roll.md +94 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/caption-tracking.md +125 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/captions.md +252 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/conversation-images.md +218 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-base-prompt-writing.md +222 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-reference-prompt-writing.md +341 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/image-direction.md +123 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/generated-dependencies.md +38 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/graphic-compositions.md +85 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/h3-prompt-writing.md +54 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/image-direction.md +95 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/motion-graphics.md +68 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/recreation-policy.md +51 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/screen-demonstrations.md +51 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/shot-production-contracts.md +161 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/sound-mix.md +76 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/video-direction.md +433 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-and-performance.md +224 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-direction.md +99 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/narration-led-demo.md +87 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/presenter-led-explainer.md +160 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/ranking-listicle.md +71 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/reference-recreation-canvas.md +8 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama-workflow.md +165 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama.md +88 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/street-interview.md +92 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/talking-head.md +82 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/two-person-podcast.md +101 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/index.md +77 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/audio-presentation.md +49 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/authoring.md +228 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/browser-capture.md +112 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/builds.md +330 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-authoring.md +156 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-presentation.md +66 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-design.md +217 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-sharing.md +150 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-visuals.md +152 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/detail.svrun +8 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/direction.svs +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/look.svs +6 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/material.svrun +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svml +73 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svrun +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/visuals.ts +62 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/fonts-and-text.md +138 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/image-operations.md +102 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/index.md +73 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media-presentation.md +111 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media.md +246 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/performance.md +114 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/prompt-kits.md +165 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/rendering.md +141 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/review.md +211 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/runs.md +151 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/script-syntax.md +236 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/snapshots.md +90 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/sound.md +75 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/source-syntax.md +163 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/spatial.md +189 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio-companions.md +186 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio.md +249 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/system.md +169 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timeline.md +74 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timing.md +96 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/track-authoring.md +215 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/tracks.md +67 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/video-downloads.md +47 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/vocabulary.md +119 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/project-and-canvas.md +1 -1
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/README.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/SKILL.md +102 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/art-styles.json +585 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-images.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles/character-profile-output.schema.json +99 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles.md +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-drama-art-style.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-prop-assets.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-scene-assets.md +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-art-styles.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-assets.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.en.txt +24 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.zh.txt +24 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.en.txt +61 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.zh.txt +79 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.en.txt +101 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.zh.txt +150 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.en.txt +114 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.zh.txt +89 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.en.txt +114 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.zh.txt +389 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.en.txt +40 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.zh.txt +40 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.en.txt +24 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.zh.txt +24 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.en.txt +19 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.zh.txt +19 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.en.txt +26 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.zh.txt +26 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.en.txt +33 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.zh.txt +33 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.en.txt +36 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.zh.txt +36 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.en.txt +33 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.zh.txt +33 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.en.txt +26 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.zh.txt +26 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.en.txt +21 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.zh.txt +21 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.en.txt +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.zh.txt +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.en.txt +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.zh.txt +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_image_to_description.en.txt +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_image_to_description.zh.txt +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.en.txt +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.zh.txt +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.en.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.zh.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.en.txt +50 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.zh.txt +50 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/art_style_decision.en.txt +18 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/art_style_decision.zh.txt +18 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.en.txt +67 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.zh.txt +67 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.en.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.zh.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.en.txt +16 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.zh.txt +16 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.en.txt +17 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.zh.txt +17 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.en.txt +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.zh.txt +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.en.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.zh.txt +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.en.txt +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.zh.txt +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.en.txt +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.zh.txt +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.en.txt +19 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.zh.txt +19 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.en.txt +18 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.zh.txt +17 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.en.txt +29 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.zh.txt +29 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.en.txt +77 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.zh.txt +77 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.en.txt +109 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.zh.txt +109 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.en.txt +23 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.zh.txt +23 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.en.txt +42 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.zh.txt +42 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.en.txt +55 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.zh.txt +55 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.en.txt +49 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.zh.txt +52 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.en.txt +37 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.zh.txt +37 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.en.txt +28 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.zh.txt +28 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_shot_variant_analysis.en.txt +57 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_shot_variant_analysis.zh.txt +169 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_shot_variant_generate.en.txt +64 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_shot_variant_generate.zh.txt +117 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.en.txt +34 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.zh.txt +34 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.en.txt +18 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.zh.txt +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/2d_to_live_action.en.txt +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/2d_to_live_action.zh.txt +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.en.txt +28 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.zh.txt +42 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.en.txt +35 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.zh.txt +35 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.en.txt +21 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.zh.txt +21 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.en.txt +39 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.zh.txt +39 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.en.txt +49 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.zh.txt +48 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/panel_grid_video.en.txt +51 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/panel_grid_video.zh.txt +51 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/panel_storyboard_video.en.txt +50 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/panel_storyboard_video.zh.txt +50 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.en.txt +48 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.zh.txt +46 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/plan-drama-assets.md +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/codex-contracts.md +14 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/comfly-provider.md +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/controlled-vocabulary.json +115 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/analyze-drama-source.md +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/define-drama-brief.md +8 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/design-drama-bible.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/humanizer.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/outline-drama-series.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/short-drama.md +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-director-book.md +6 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-episode.md +6 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/director-composition.md +794 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-deliver-drama.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-drama-timeline.md +22 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/remotion-best-practices.md +12 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing-workflow.md +56 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/feature-completeness.md +111 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/configure-generation-providers.md +17 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/design-drama-audio.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/drama-generation-service.md +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-drama-videos.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-storyboard-images.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/monitor-drama-tasks.md +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/transform-drama-media.md +9 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/write-drama-video-prompts.md +50 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/market-report.schema.json +46 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/methodology.md +24 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market.md +47 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market/market-inspiration.schema.json +109 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market.md +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/module-map.json +595 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/music-catalog-providers.md +16 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/manage-drama-projects.md +11 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/orchestrate-short-drama.md +20 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/recover-drama-pipeline.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/short-drama-skill-index.md +29 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/use-short-drama-studio.md +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/pipeline.md +85 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/project-spec-v1.md +217 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/prompt-skill-index.md +62 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/recreation/publish-drama-references/litterbox.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-script.md +7 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-shots.md +39 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/runninghub-provider.md +33 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/starrouter-provider.md +53 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/build-drama-storyboard.md +13 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/design-fight-video.md +19 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/action-previz.md +39 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/direction-contract.md +96 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/weapons-vfx.md +23 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz.md +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/generate-blender-previz.md +20 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-drama-production.md +21 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-shot-continuity.md +15 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/revise-drama-storyboards.md +5 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/usage-guide.md +107 -0
- package/skills/using-vvicat-ai-short-studio-cli/references/special-workflows.md +2 -8
- package/skills/using-vvicat-ai-short-studio-cli/references/troubleshooting.md +0 -1
- package/dist/auth/login-provider.d.ts +0 -2
- package/dist/auth/login-provider.js +0 -3
- package/dist/commands/canvas/node/quote.d.ts +0 -17
- package/dist/commands/canvas/node/quote.js +0 -13
- package/dist/commands/config/ai-provider/capabilities.d.ts +0 -60
- package/dist/commands/config/ai-provider/capabilities.js +0 -124
- package/dist/commands/config/ai-provider/get.d.ts +0 -22
- package/dist/commands/config/ai-provider/get.js +0 -21
- package/dist/commands/config/ai-provider/list.d.ts +0 -21
- package/dist/commands/config/ai-provider/list.js +0 -19
- package/dist/commands/config/ai-provider/models.d.ts +0 -22
- package/dist/commands/config/ai-provider/models.js +0 -21
- package/dist/commands/config/ai-provider/set.d.ts +0 -41
- package/dist/commands/config/ai-provider/set.js +0 -65
- package/dist/commands/config/ai-provider/test.d.ts +0 -25
- package/dist/commands/config/ai-provider/test.js +0 -24
- package/dist/commands/project/provider/get.d.ts +0 -15
- package/dist/commands/project/provider/get.js +0 -12
- package/dist/commands/project/provider/set.d.ts +0 -16
- package/dist/commands/project/provider/set.js +0 -18
- package/dist/commands/project/provider/test.d.ts +0 -15
- package/dist/commands/project/provider/test.js +0 -12
- package/dist/domain/ai-provider-capabilities.d.ts +0 -109
- package/dist/domain/ai-provider-capabilities.js +0 -180
- package/dist/domain/ai-provider-command-helpers.d.ts +0 -27
- package/dist/domain/ai-provider-command-helpers.js +0 -55
- package/skills/using-vvicat-ai-short-studio-cli/references/b-roll-and-screen.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/caption-and-graphics-direction.md +0 -11
- package/skills/using-vvicat-ai-short-studio-cli/references/composition-and-shot-review.md +0 -17
- package/skills/using-vvicat-ai-short-studio-cli/references/craft-index.md +0 -20
- package/skills/using-vvicat-ai-short-studio-cli/references/drama-canvas.md +0 -19
- package/skills/using-vvicat-ai-short-studio-cli/references/format-relationships.md +0 -15
- package/skills/using-vvicat-ai-short-studio-cli/references/h3-prompts.md +0 -7
- package/skills/using-vvicat-ai-short-studio-cli/references/image-and-reference-direction.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/licensed-music.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/licenses/oh-my-short-drama-MIT.txt +0 -21
- package/skills/using-vvicat-ai-short-studio-cli/references/licenses/short-drama-MIT.txt +0 -21
- package/skills/using-vvicat-ai-short-studio-cli/references/media-provenance-and-review.md +0 -22
- package/skills/using-vvicat-ai-short-studio-cli/references/paid-plan.md +0 -7
- package/skills/using-vvicat-ai-short-studio-cli/references/production-specialties.md +0 -25
- package/skills/using-vvicat-ai-short-studio-cli/references/recreation.md +0 -21
- package/skills/using-vvicat-ai-short-studio-cli/references/reference-analysis-and-timing.md +0 -19
- package/skills/using-vvicat-ai-short-studio-cli/references/remotion-editing.md +0 -18
- package/skills/using-vvicat-ai-short-studio-cli/references/shot-production.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/sound-and-captions.md +0 -7
- package/skills/using-vvicat-ai-short-studio-cli/references/sources.md +0 -6
- package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/canvas-production.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/guide.md +0 -7
- package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/index.md +0 -13
- package/skills/using-vvicat-ai-short-studio-cli/references/video-and-performance-direction.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/voice-and-sound-direction.md +0 -9
- package/skills/using-vvicat-ai-short-studio-cli/references/writing-polish.md +0 -15
- /package/skills/using-vvicat-ai-short-studio-cli/references/{licenses/humanizer-MIT.txt → short-drama/assets/modules/humanizer/LICENSE} +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/compliance-checklist.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/genre-guide.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/hook-design.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/opening-rules.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/paywall-design.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/rhythm-curve.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/satisfaction-matrix.md +0 -0
- /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/villain-design.md +0 -0
|
@@ -19,11 +19,6 @@ interface CanvasDto extends JsonObject {
|
|
|
19
19
|
edges: JsonObject[];
|
|
20
20
|
nodeTypesByVersionId?: Record<string, NodeType>;
|
|
21
21
|
}
|
|
22
|
-
interface CanvasNodeRunResponse extends JsonObject {
|
|
23
|
-
task: JsonObject & {
|
|
24
|
-
id?: string;
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
22
|
interface NodeType extends JsonObject {
|
|
28
23
|
kind: string;
|
|
29
24
|
title: string;
|
|
@@ -64,12 +59,6 @@ export declare class VvicatApi {
|
|
|
64
59
|
name?: string;
|
|
65
60
|
description?: string | null;
|
|
66
61
|
}): Promise<JsonObject>;
|
|
67
|
-
projectMaterialProvider(projectId: string): Promise<JsonObject>;
|
|
68
|
-
updateProjectMaterialProvider(projectId: string, input: {
|
|
69
|
-
apiKey?: string;
|
|
70
|
-
enabled: boolean;
|
|
71
|
-
}): Promise<JsonObject>;
|
|
72
|
-
testProjectMaterialProvider(projectId: string): Promise<JsonObject>;
|
|
73
62
|
deleteProject(projectId: string): Promise<JsonObject>;
|
|
74
63
|
canvas(projectId: string): Promise<CanvasDto>;
|
|
75
64
|
listCanvasEpisodes(projectId: string): Promise<JsonObject[]>;
|
|
@@ -118,6 +107,7 @@ export declare class VvicatApi {
|
|
|
118
107
|
x?: number;
|
|
119
108
|
y?: number;
|
|
120
109
|
title?: string;
|
|
110
|
+
assetId?: string;
|
|
121
111
|
config?: JsonObject;
|
|
122
112
|
}): Promise<JsonObject>;
|
|
123
113
|
updateNode(projectId: string, nodeId: string, config: JsonObject): Promise<JsonObject>;
|
|
@@ -131,25 +121,10 @@ export declare class VvicatApi {
|
|
|
131
121
|
targetHandle: string;
|
|
132
122
|
}): Promise<JsonObject>;
|
|
133
123
|
disconnect(projectId: string, edgeId: string): Promise<JsonObject>;
|
|
134
|
-
runNode(projectId: string, nodeId: string): Promise<
|
|
135
|
-
quoteNode(projectId: string, nodeId: string): Promise<{
|
|
136
|
-
quote: JsonObject;
|
|
137
|
-
}>;
|
|
124
|
+
runNode(projectId: string, nodeId: string): Promise<JsonObject>;
|
|
138
125
|
listAssets(projectId: string, query?: string): Promise<JsonObject>;
|
|
139
126
|
asset(projectId: string, assetId: string): Promise<JsonObject>;
|
|
140
127
|
selectAssetVersion(projectId: string, assetId: string, versionId: string): Promise<JsonObject>;
|
|
141
|
-
/**
|
|
142
|
-
* 画布资产上传 —— 端点为 `/api/assets/upload`(资产域 SSOT 单一入口)。
|
|
143
|
-
*
|
|
144
|
-
* 迁移背景:原 `/api/asset-hub/creative-assets/upload` 已由后端 commit 9a55588c
|
|
145
|
-
* (asset-core P3 收口,41 路由 → 16 路由)合并进 `/api/assets/upload` 并删除。
|
|
146
|
-
* 此前 CLI 侧留有「Phase C 再迁移」的注释,其前提(旧路由仍在)已失效,运行时必 404。
|
|
147
|
-
*
|
|
148
|
-
* 契约要点(见 src/app/api/assets/upload/route.ts 头部注释):后端按 `kind` 分发到
|
|
149
|
-
* 不同资产域——voice → GlobalVoice,image/video/audio → GlobalCreativeAsset;
|
|
150
|
-
* 若要写入既有形象/场景图则用 `target=appearance|image` + `id`。此处保持「新建画布资产」
|
|
151
|
-
* 语义,故要求调用方提供 `kind`。
|
|
152
|
-
*/
|
|
153
128
|
uploadAsset(projectId: string, formData: FormData): Promise<JsonObject>;
|
|
154
129
|
task(taskId: string): Promise<{
|
|
155
130
|
task: JsonObject & {
|
|
@@ -157,46 +132,11 @@ export declare class VvicatApi {
|
|
|
157
132
|
};
|
|
158
133
|
}>;
|
|
159
134
|
cancelTask(taskId: string): Promise<JsonObject>;
|
|
160
|
-
waitTask(taskId: string, interval?: number
|
|
161
|
-
maxWaitMs?: number;
|
|
162
|
-
signal?: AbortSignal;
|
|
163
|
-
}): Promise<JsonObject & {
|
|
135
|
+
waitTask(taskId: string, interval?: number): Promise<JsonObject & {
|
|
164
136
|
status: string;
|
|
165
137
|
}>;
|
|
166
138
|
config(): Promise<JsonObject>;
|
|
167
139
|
updateConfig(input: JsonObject): Promise<JsonObject>;
|
|
168
|
-
listAiProviders(): Promise<{
|
|
169
|
-
items: JsonObject[];
|
|
170
|
-
total: number;
|
|
171
|
-
}>;
|
|
172
|
-
getAiProvider(providerId: string): Promise<{
|
|
173
|
-
item: JsonObject;
|
|
174
|
-
}>;
|
|
175
|
-
createAiProvider(input: JsonObject): Promise<{
|
|
176
|
-
item: JsonObject;
|
|
177
|
-
}>;
|
|
178
|
-
updateAiProvider(providerId: string, input: JsonObject): Promise<{
|
|
179
|
-
item: JsonObject;
|
|
180
|
-
}>;
|
|
181
|
-
testAiProvider(providerId: string): Promise<JsonObject>;
|
|
182
|
-
fetchAiProviderModels(providerId: string): Promise<{
|
|
183
|
-
item: {
|
|
184
|
-
providerId: string;
|
|
185
|
-
upstreamModelsSyncedAt: string | null;
|
|
186
|
-
models: JsonObject[];
|
|
187
|
-
};
|
|
188
|
-
}>;
|
|
189
|
-
clearAiProviderSecret(providerId: string): Promise<{
|
|
190
|
-
success: boolean;
|
|
191
|
-
}>;
|
|
192
|
-
seedAiProviderFromPreset(presetType: string, options?: {
|
|
193
|
-
baseUrl?: string;
|
|
194
|
-
apiKey?: string;
|
|
195
|
-
sortOrder?: number;
|
|
196
|
-
}): Promise<{
|
|
197
|
-
item: JsonObject;
|
|
198
|
-
preset: JsonObject;
|
|
199
|
-
}>;
|
|
200
140
|
raw(path: string, options?: ApiRequestOptions): Promise<unknown>;
|
|
201
141
|
}
|
|
202
142
|
export {};
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from 'node:crypto';
|
|
2
|
+
const ASSET_BOUND_NODE_KINDS = new Set(['image', 'video', 'audio']);
|
|
2
3
|
function validateConfigSchema(nodeType, config, requiredValues = config ?? {}) {
|
|
3
4
|
const values = config ?? {};
|
|
4
5
|
if (nodeType.kind === 'storyboard-breakdown' && requiredValues.storyboardPipelineVersion === 2) {
|
|
@@ -86,15 +87,6 @@ export class VvicatApi {
|
|
|
86
87
|
updateProject(projectId, input) {
|
|
87
88
|
return this.client.request(`/api/projects/${projectId}`, { method: 'PATCH', body: input });
|
|
88
89
|
}
|
|
89
|
-
projectMaterialProvider(projectId) {
|
|
90
|
-
return this.client.request(`/api/projects/${projectId}/material-providers/pexels`);
|
|
91
|
-
}
|
|
92
|
-
updateProjectMaterialProvider(projectId, input) {
|
|
93
|
-
return this.client.request(`/api/projects/${projectId}/material-providers/pexels`, { method: 'PUT', body: input });
|
|
94
|
-
}
|
|
95
|
-
testProjectMaterialProvider(projectId) {
|
|
96
|
-
return this.client.request(`/api/projects/${projectId}/material-providers/pexels`, { method: 'POST' });
|
|
97
|
-
}
|
|
98
90
|
deleteProject(projectId) {
|
|
99
91
|
return this.client.request(`/api/projects/${projectId}`, { method: 'DELETE' });
|
|
100
92
|
}
|
|
@@ -219,12 +211,16 @@ export class VvicatApi {
|
|
|
219
211
|
throw new Error(`未知节点类型:${input.kind}`);
|
|
220
212
|
const config = { ...definition.defaultConfig, ...input.config };
|
|
221
213
|
validateConfigSchema(definition, input.config, config);
|
|
214
|
+
if (input.assetId && !ASSET_BOUND_NODE_KINDS.has(definition.kind)) {
|
|
215
|
+
throw new Error('--asset-id 仅适用于 image、video、audio 节点');
|
|
216
|
+
}
|
|
222
217
|
const node = {
|
|
223
218
|
id: randomUUID(),
|
|
224
219
|
kind: input.kind,
|
|
225
220
|
title: input.title || definition.title,
|
|
226
221
|
x: input.x ?? 0,
|
|
227
222
|
y: input.y ?? 0,
|
|
223
|
+
...(input.assetId ? { refType: 'GlobalCreativeAsset', refId: input.assetId } : {}),
|
|
228
224
|
data: { schemaVersion: 1, config },
|
|
229
225
|
};
|
|
230
226
|
return this.patchCanvas(projectId, {
|
|
@@ -305,9 +301,6 @@ export class VvicatApi {
|
|
|
305
301
|
runNode(projectId, nodeId) {
|
|
306
302
|
return this.client.request(`/api/projects/${projectId}/canvas/nodes/${nodeId}/execute`, { method: 'POST' });
|
|
307
303
|
}
|
|
308
|
-
quoteNode(projectId, nodeId) {
|
|
309
|
-
return this.client.request(`/api/projects/${projectId}/canvas/nodes/${nodeId}/quote`);
|
|
310
|
-
}
|
|
311
304
|
listAssets(projectId, query = '') {
|
|
312
305
|
return this.client.request(`/api/projects/${projectId}/canvas/assets${query ? `?${query}` : ''}`);
|
|
313
306
|
}
|
|
@@ -319,21 +312,9 @@ export class VvicatApi {
|
|
|
319
312
|
method: 'PATCH', body: { selectedVersionId: versionId },
|
|
320
313
|
});
|
|
321
314
|
}
|
|
322
|
-
/**
|
|
323
|
-
* 画布资产上传 —— 端点为 `/api/assets/upload`(资产域 SSOT 单一入口)。
|
|
324
|
-
*
|
|
325
|
-
* 迁移背景:原 `/api/asset-hub/creative-assets/upload` 已由后端 commit 9a55588c
|
|
326
|
-
* (asset-core P3 收口,41 路由 → 16 路由)合并进 `/api/assets/upload` 并删除。
|
|
327
|
-
* 此前 CLI 侧留有「Phase C 再迁移」的注释,其前提(旧路由仍在)已失效,运行时必 404。
|
|
328
|
-
*
|
|
329
|
-
* 契约要点(见 src/app/api/assets/upload/route.ts 头部注释):后端按 `kind` 分发到
|
|
330
|
-
* 不同资产域——voice → GlobalVoice,image/video/audio → GlobalCreativeAsset;
|
|
331
|
-
* 若要写入既有形象/场景图则用 `target=appearance|image` + `id`。此处保持「新建画布资产」
|
|
332
|
-
* 语义,故要求调用方提供 `kind`。
|
|
333
|
-
*/
|
|
334
315
|
uploadAsset(projectId, formData) {
|
|
335
316
|
formData.set('sourceProjectId', projectId);
|
|
336
|
-
return this.client.request('/api/assets/upload', { method: 'POST', body: formData });
|
|
317
|
+
return this.client.request('/api/asset-hub/creative-assets/upload', { method: 'POST', body: formData });
|
|
337
318
|
}
|
|
338
319
|
task(taskId) {
|
|
339
320
|
return this.client.request(`/api/tasks/${taskId}`);
|
|
@@ -342,26 +323,11 @@ export class VvicatApi {
|
|
|
342
323
|
cancelTask(taskId) {
|
|
343
324
|
return this.client.request(`/api/tasks/${taskId}`, { method: 'DELETE' });
|
|
344
325
|
}
|
|
345
|
-
|
|
346
|
-
// (canvas node run)根据 task.error?.retryable / task.attempt 自行决定。
|
|
347
|
-
async waitTask(taskId, interval = 1_000, options = {}) {
|
|
348
|
-
const maxWaitMs = options.maxWaitMs ?? Number.POSITIVE_INFINITY;
|
|
349
|
-
const startedAt = Date.now();
|
|
326
|
+
async waitTask(taskId, interval = 1_000) {
|
|
350
327
|
while (true) {
|
|
351
|
-
if (options.signal?.aborted) {
|
|
352
|
-
throw new Error('wait aborted');
|
|
353
|
-
}
|
|
354
328
|
const { task } = await this.task(taskId);
|
|
355
329
|
if (['completed', 'failed', 'canceled', 'dismissed'].includes(task.status))
|
|
356
330
|
return task;
|
|
357
|
-
const elapsed = Date.now() - startedAt;
|
|
358
|
-
if (elapsed >= maxWaitMs) {
|
|
359
|
-
// 抛出时附带最新 task 状态,让调用方(canvas node run)可以决定是
|
|
360
|
-
// cancel 后重试还是直接退出。
|
|
361
|
-
const err = new Error(`wait timeout after ${maxWaitMs}ms`);
|
|
362
|
-
Object.assign(err, { taskId, status: task.status, attempt: task.attempt });
|
|
363
|
-
throw err;
|
|
364
|
-
}
|
|
365
331
|
await this.sleep(interval);
|
|
366
332
|
}
|
|
367
333
|
}
|
|
@@ -370,41 +336,10 @@ export class VvicatApi {
|
|
|
370
336
|
return this.client.request('/api/user/api-config?redactSecrets=1');
|
|
371
337
|
}
|
|
372
338
|
updateConfig(input) {
|
|
373
|
-
if (Object.hasOwn(input, 'providers') || Object.hasOwn(input, 'models')
|
|
374
|
-
throw new Error('
|
|
375
|
-
}
|
|
339
|
+
if (Object.hasOwn(input, 'providers') || Object.hasOwn(input, 'models'))
|
|
340
|
+
throw new Error('供应商和模型目录只能由管理员维护');
|
|
376
341
|
return this.client.request('/api/user/api-config', { method: 'PUT', body: input });
|
|
377
342
|
}
|
|
378
|
-
// ===== admin AI provider commands(服务端 requireAdminAuth)=====
|
|
379
|
-
// 仓库级供应商目录(不是用户私有配置)。
|
|
380
|
-
// agent 用这些方法查询当前可用的 provider / model,再决定任务里用哪个 modelKey。
|
|
381
|
-
listAiProviders() {
|
|
382
|
-
return this.client.request('/api/admin/ai-providers');
|
|
383
|
-
}
|
|
384
|
-
getAiProvider(providerId) {
|
|
385
|
-
return this.client.request(`/api/admin/ai-providers/${providerId}`);
|
|
386
|
-
}
|
|
387
|
-
createAiProvider(input) {
|
|
388
|
-
return this.client.request('/api/admin/ai-providers', { method: 'POST', body: input });
|
|
389
|
-
}
|
|
390
|
-
updateAiProvider(providerId, input) {
|
|
391
|
-
return this.client.request(`/api/admin/ai-providers/${providerId}`, { method: 'PATCH', body: input });
|
|
392
|
-
}
|
|
393
|
-
testAiProvider(providerId) {
|
|
394
|
-
return this.client.request(`/api/admin/ai-providers/${providerId}/test`, { method: 'POST' });
|
|
395
|
-
}
|
|
396
|
-
fetchAiProviderModels(providerId) {
|
|
397
|
-
return this.client.request(`/api/admin/ai-providers/${providerId}/fetch-models`, { method: 'POST' });
|
|
398
|
-
}
|
|
399
|
-
clearAiProviderSecret(providerId) {
|
|
400
|
-
return this.client.request(`/api/admin/ai-providers/${providerId}/secret`, { method: 'DELETE' });
|
|
401
|
-
}
|
|
402
|
-
seedAiProviderFromPreset(presetType, options = {}) {
|
|
403
|
-
return this.client.request('/api/admin/ai-providers/seed-from-preset', {
|
|
404
|
-
method: 'POST',
|
|
405
|
-
body: { presetType, options },
|
|
406
|
-
});
|
|
407
|
-
}
|
|
408
343
|
raw(path, options) {
|
|
409
344
|
return this.client.request(path, options);
|
|
410
345
|
}
|
|
@@ -1,12 +1 @@
|
|
|
1
1
|
export declare function formatJson(value: unknown): string;
|
|
2
|
-
/**
|
|
3
|
-
* P0-4(应用层旁路):Windows 控制台 chcp=437 时,进程启动那一刻 stdout 句柄
|
|
4
|
-
* 已按旧代码页打开,进程内改 Console.OutputEncoding 无效——UTF-8 字节被按
|
|
5
|
-
* CP437 解码,中文变希腊字母。环境层只能靠 chcp 65001(须在启动 Node 前设置),
|
|
6
|
-
* 应用层可靠的做法是绕开终端句柄:由 Node 直接以 utf-8 写文件。
|
|
7
|
-
*
|
|
8
|
-
* 优先级:--output flag > CLI_OUTPUT_FILE 环境变量 > 不启用(保持原有 stdout 行为)。
|
|
9
|
-
*/
|
|
10
|
-
export declare function resolveOutputFile(flagValue: string | undefined, env?: NodeJS.ProcessEnv): string | undefined;
|
|
11
|
-
/** 以 utf-8 无 BOM 落盘,保证字节级可核对(中文不被转义、不受终端代码页影响)。 */
|
|
12
|
-
export declare function writeCliOutput(file: string, value: unknown): Promise<void>;
|
package/dist/output/formatter.js
CHANGED
|
@@ -1,23 +1,3 @@
|
|
|
1
|
-
import { writeFile } from 'node:fs/promises';
|
|
2
1
|
export function formatJson(value) {
|
|
3
2
|
return JSON.stringify(value, null, 2);
|
|
4
3
|
}
|
|
5
|
-
/**
|
|
6
|
-
* P0-4(应用层旁路):Windows 控制台 chcp=437 时,进程启动那一刻 stdout 句柄
|
|
7
|
-
* 已按旧代码页打开,进程内改 Console.OutputEncoding 无效——UTF-8 字节被按
|
|
8
|
-
* CP437 解码,中文变希腊字母。环境层只能靠 chcp 65001(须在启动 Node 前设置),
|
|
9
|
-
* 应用层可靠的做法是绕开终端句柄:由 Node 直接以 utf-8 写文件。
|
|
10
|
-
*
|
|
11
|
-
* 优先级:--output flag > CLI_OUTPUT_FILE 环境变量 > 不启用(保持原有 stdout 行为)。
|
|
12
|
-
*/
|
|
13
|
-
export function resolveOutputFile(flagValue, env = process.env) {
|
|
14
|
-
const flag = flagValue?.trim();
|
|
15
|
-
if (flag)
|
|
16
|
-
return flag;
|
|
17
|
-
const fromEnv = env.CLI_OUTPUT_FILE?.trim();
|
|
18
|
-
return fromEnv || undefined;
|
|
19
|
-
}
|
|
20
|
-
/** 以 utf-8 无 BOM 落盘,保证字节级可核对(中文不被转义、不受终端代码页影响)。 */
|
|
21
|
-
export async function writeCliOutput(file, value) {
|
|
22
|
-
await writeFile(file, formatJson(value), { encoding: 'utf8' });
|
|
23
|
-
}
|
package/dist/preflight.d.ts
CHANGED
package/dist/preflight.js
CHANGED
|
@@ -18,18 +18,9 @@ export async function fetchBootstrap(baseUrl, fetcher = fetch) {
|
|
|
18
18
|
});
|
|
19
19
|
}
|
|
20
20
|
catch {
|
|
21
|
-
// root cause: undici fetch close + @napi-rs/keyring handle race;
|
|
22
|
-
// setImmediate alone not enough, need real delay.
|
|
23
|
-
//
|
|
24
|
-
// 让 fetch 内部句柄先收尾再 throw,避免在 @napi-rs/keyring 仍持有句柄时立刻
|
|
25
|
-
// 关闭 libuv handle 导致 Windows 上 `UV_HANDLE_CLOSING assertion failed`。
|
|
26
|
-
// Node 21+ 配合 undici 的 fetch 实现,未 sleep 真实时间就 throw 会让
|
|
27
|
-
// 尚未 close 的 handle 留给 GC,最终触发崩溃(退出码 3221226505)。
|
|
28
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
29
21
|
throw new Error(`无法连接 VVICAT 服务,请检查 API base URL:${normalizedBaseUrl}`);
|
|
30
22
|
}
|
|
31
23
|
if (!response.ok) {
|
|
32
|
-
await new Promise((resolve) => setTimeout(resolve, 50));
|
|
33
24
|
throw new Error(`VVICAT 服务预检失败:HTTP ${response.status};请检查 API base URL:${normalizedBaseUrl}`);
|
|
34
25
|
}
|
|
35
26
|
const payload = await response.json().catch(() => null);
|
|
@@ -44,11 +35,7 @@ export async function fetchBootstrap(baseUrl, fetcher = fetch) {
|
|
|
44
35
|
throw new Error('VVICAT 服务返回的 bootstrap 配置无效');
|
|
45
36
|
compareStableVersions(cli.latestVersion, cli.latestVersion);
|
|
46
37
|
return {
|
|
47
|
-
cli: {
|
|
48
|
-
packageName: cli.packageName,
|
|
49
|
-
latestVersion: cli.latestVersion,
|
|
50
|
-
...(typeof cli.minCliVersion === 'string' ? { minCliVersion: cli.minCliVersion } : {}),
|
|
51
|
-
},
|
|
38
|
+
cli: { packageName: cli.packageName, latestVersion: cli.latestVersion },
|
|
52
39
|
supabase: { url: supabase.url, publishableKey: supabase.publishableKey },
|
|
53
40
|
};
|
|
54
41
|
}
|
|
@@ -1,17 +1,14 @@
|
|
|
1
1
|
import { Flags } from '@oclif/core';
|
|
2
|
-
import { BUNDLED_SKILL_NAMES,
|
|
2
|
+
import { BUNDLED_SKILL_NAMES, defaultSkillsRoot, normalizeSkillsRoot, } from './skill-manager.js';
|
|
3
3
|
export const skillFlags = {
|
|
4
4
|
target: Flags.string({ options: ['codex', 'agents'], default: 'codex', description: 'Agent 类型' }),
|
|
5
5
|
directory: Flags.string({ description: '兼容旧版:主 Skill 的精确安装目录', exclusive: ['root'] }),
|
|
6
|
-
root: Flags.string({ description: '
|
|
7
|
-
skill: Flags.string({ options: ['all', ...BUNDLED_SKILL_NAMES
|
|
6
|
+
root: Flags.string({ description: '全部内置 Skills 的根目录', exclusive: ['directory'] }),
|
|
7
|
+
skill: Flags.string({ options: ['all', ...BUNDLED_SKILL_NAMES], default: 'all', description: '要管理的内置 Skill' }),
|
|
8
8
|
};
|
|
9
9
|
export function resolveSkillsRoot(flags) {
|
|
10
10
|
return normalizeSkillsRoot(flags.root || defaultSkillsRoot(flags.target));
|
|
11
11
|
}
|
|
12
12
|
export function selectedSkillNames(skill) {
|
|
13
|
-
|
|
14
|
-
process.stderr.write(`--skill ${skill} 已弃用;改为使用 ${BUNDLED_SKILL_NAMES[0]}。\n`);
|
|
15
|
-
}
|
|
16
|
-
return BUNDLED_SKILL_NAMES;
|
|
13
|
+
return skill === 'all' ? BUNDLED_SKILL_NAMES : [skill];
|
|
17
14
|
}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
export declare const BUNDLED_SKILL_NAMES: readonly ["using-vvicat-ai-short-studio-cli"];
|
|
2
|
-
export declare const LEGACY_SKILL_NAMES: readonly ["short-drama", "humanizer"];
|
|
3
2
|
export type BundledSkillName = typeof BUNDLED_SKILL_NAMES[number];
|
|
4
3
|
export type SkillTarget = 'codex' | 'agents';
|
|
5
4
|
export declare function bundledSkillPath(name?: BundledSkillName): string;
|
|
@@ -7,15 +6,6 @@ export declare function defaultSkillsRoot(target: SkillTarget): string;
|
|
|
7
6
|
export declare function defaultSkillTarget(target: SkillTarget): string;
|
|
8
7
|
export declare function normalizeSkillsRoot(path: string): string;
|
|
9
8
|
export declare function skillStatus(target: string): Promise<{
|
|
10
|
-
legacySkills: {
|
|
11
|
-
name: "short-drama" | "humanizer";
|
|
12
|
-
target: string;
|
|
13
|
-
installed: boolean;
|
|
14
|
-
managed: boolean;
|
|
15
|
-
modified: boolean;
|
|
16
|
-
action: string;
|
|
17
|
-
requiresAttention: boolean;
|
|
18
|
-
}[];
|
|
19
9
|
name: "using-vvicat-ai-short-studio-cli";
|
|
20
10
|
target: string;
|
|
21
11
|
installed: boolean;
|
|
@@ -63,15 +53,6 @@ export declare function installSkills(input: {
|
|
|
63
53
|
installedVersion: string | null;
|
|
64
54
|
modified: boolean;
|
|
65
55
|
})[];
|
|
66
|
-
legacySkills: {
|
|
67
|
-
name: "short-drama" | "humanizer";
|
|
68
|
-
target: string;
|
|
69
|
-
installed: boolean;
|
|
70
|
-
managed: boolean;
|
|
71
|
-
modified: boolean;
|
|
72
|
-
action: string;
|
|
73
|
-
requiresAttention: boolean;
|
|
74
|
-
}[];
|
|
75
56
|
}>;
|
|
76
57
|
export declare function autoInstallSkills(root: string): Promise<{
|
|
77
58
|
root: string;
|
|
@@ -107,15 +88,6 @@ export declare function autoInstallSkills(root: string): Promise<{
|
|
|
107
88
|
installedVersion: string | null;
|
|
108
89
|
modified: boolean;
|
|
109
90
|
})[];
|
|
110
|
-
legacySkills: {
|
|
111
|
-
name: "short-drama" | "humanizer";
|
|
112
|
-
target: string;
|
|
113
|
-
installed: boolean;
|
|
114
|
-
managed: boolean;
|
|
115
|
-
modified: boolean;
|
|
116
|
-
action: string;
|
|
117
|
-
requiresAttention: boolean;
|
|
118
|
-
}[];
|
|
119
91
|
}>;
|
|
120
92
|
export declare function skillStatuses(rootInput: string): Promise<{
|
|
121
93
|
root: string;
|
|
@@ -130,29 +102,11 @@ export declare function skillStatuses(rootInput: string): Promise<{
|
|
|
130
102
|
installedVersion: string | null;
|
|
131
103
|
modified: boolean;
|
|
132
104
|
}[];
|
|
133
|
-
legacySkills: {
|
|
134
|
-
name: "short-drama" | "humanizer";
|
|
135
|
-
target: string;
|
|
136
|
-
installed: boolean;
|
|
137
|
-
managed: boolean;
|
|
138
|
-
modified: boolean;
|
|
139
|
-
action: string;
|
|
140
|
-
requiresAttention: boolean;
|
|
141
|
-
}[];
|
|
142
105
|
}>;
|
|
143
106
|
export declare function installSkill(input: {
|
|
144
107
|
target: string;
|
|
145
108
|
force?: boolean;
|
|
146
109
|
}): Promise<{
|
|
147
|
-
legacySkills: {
|
|
148
|
-
name: "short-drama" | "humanizer";
|
|
149
|
-
target: string;
|
|
150
|
-
installed: boolean;
|
|
151
|
-
managed: boolean;
|
|
152
|
-
modified: boolean;
|
|
153
|
-
action: string;
|
|
154
|
-
requiresAttention: boolean;
|
|
155
|
-
}[];
|
|
156
110
|
name: "using-vvicat-ai-short-studio-cli";
|
|
157
111
|
target: string;
|
|
158
112
|
installed: boolean;
|
|
@@ -163,15 +117,6 @@ export declare function installSkill(input: {
|
|
|
163
117
|
modified: boolean;
|
|
164
118
|
}>;
|
|
165
119
|
export declare function autoInstallSkill(target: string): Promise<{
|
|
166
|
-
legacySkills: {
|
|
167
|
-
name: "short-drama" | "humanizer";
|
|
168
|
-
target: string;
|
|
169
|
-
installed: boolean;
|
|
170
|
-
managed: boolean;
|
|
171
|
-
modified: boolean;
|
|
172
|
-
action: string;
|
|
173
|
-
requiresAttention: boolean;
|
|
174
|
-
}[];
|
|
175
120
|
name: "using-vvicat-ai-short-studio-cli";
|
|
176
121
|
target: string;
|
|
177
122
|
installed: boolean;
|
|
@@ -180,17 +125,8 @@ export declare function autoInstallSkill(target: string): Promise<{
|
|
|
180
125
|
packageVersion: string;
|
|
181
126
|
installedVersion: string | null;
|
|
182
127
|
modified: boolean;
|
|
183
|
-
action: "
|
|
128
|
+
action: "unchanged";
|
|
184
129
|
} | {
|
|
185
|
-
legacySkills: {
|
|
186
|
-
name: "short-drama" | "humanizer";
|
|
187
|
-
target: string;
|
|
188
|
-
installed: boolean;
|
|
189
|
-
managed: boolean;
|
|
190
|
-
modified: boolean;
|
|
191
|
-
action: string;
|
|
192
|
-
requiresAttention: boolean;
|
|
193
|
-
}[];
|
|
194
130
|
name: "using-vvicat-ai-short-studio-cli";
|
|
195
131
|
target: string;
|
|
196
132
|
installed: boolean;
|
|
@@ -199,17 +135,8 @@ export declare function autoInstallSkill(target: string): Promise<{
|
|
|
199
135
|
packageVersion: string;
|
|
200
136
|
installedVersion: string | null;
|
|
201
137
|
modified: boolean;
|
|
202
|
-
action: "
|
|
138
|
+
action: "skipped";
|
|
203
139
|
} | {
|
|
204
|
-
legacySkills: {
|
|
205
|
-
name: "short-drama" | "humanizer";
|
|
206
|
-
target: string;
|
|
207
|
-
installed: boolean;
|
|
208
|
-
managed: boolean;
|
|
209
|
-
modified: boolean;
|
|
210
|
-
action: string;
|
|
211
|
-
requiresAttention: boolean;
|
|
212
|
-
}[];
|
|
213
140
|
name: "using-vvicat-ai-short-studio-cli";
|
|
214
141
|
target: string;
|
|
215
142
|
installed: boolean;
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { createHash } from 'node:crypto';
|
|
2
|
-
import { cp,
|
|
2
|
+
import { cp, mkdir, readFile, readdir, rename, rm, stat, writeFile } from 'node:fs/promises';
|
|
3
3
|
import { homedir } from 'node:os';
|
|
4
4
|
import { basename, dirname, join, relative } from 'node:path';
|
|
5
5
|
import { fileURLToPath } from 'node:url';
|
|
6
6
|
export const BUNDLED_SKILL_NAMES = ['using-vvicat-ai-short-studio-cli'];
|
|
7
|
-
export const LEGACY_SKILL_NAMES = ['short-drama', 'humanizer'];
|
|
8
7
|
const PACKAGE_JSON = fileURLToPath(new URL('../../package.json', import.meta.url));
|
|
9
8
|
const MANIFEST = '.vvicat-skill.json';
|
|
10
9
|
export function bundledSkillPath(name = BUNDLED_SKILL_NAMES[0]) {
|
|
@@ -23,60 +22,17 @@ async function statusFor(name, target) {
|
|
|
23
22
|
const packageVersion = await readPackageVersion();
|
|
24
23
|
const bundledChecksum = await directoryChecksum(bundledSkillPath(name));
|
|
25
24
|
const installed = await exists(target);
|
|
26
|
-
const
|
|
27
|
-
const
|
|
28
|
-
const installedChecksum = directDirectory ? await directoryChecksum(target) : null;
|
|
29
|
-
const extraEntries = directDirectory ? await hasUnhashedEntries(target) : false;
|
|
25
|
+
const manifest = installed ? await readManifest(target) : null;
|
|
26
|
+
const installedChecksum = installed ? await directoryChecksum(target) : null;
|
|
30
27
|
return {
|
|
31
28
|
name, target, installed, managed: Boolean(manifest),
|
|
32
|
-
current: Boolean(manifest &&
|
|
33
|
-
&& installedChecksum === manifest.checksum && installedChecksum === bundledChecksum),
|
|
29
|
+
current: Boolean(manifest && manifest.packageVersion === packageVersion && installedChecksum === bundledChecksum),
|
|
34
30
|
packageVersion, installedVersion: manifest?.packageVersion ?? null,
|
|
35
|
-
modified: Boolean(manifest &&
|
|
31
|
+
modified: Boolean(manifest && installedChecksum !== manifest.checksum),
|
|
36
32
|
};
|
|
37
33
|
}
|
|
38
|
-
async function legacyStatuses(root, cleanup) {
|
|
39
|
-
const results = [];
|
|
40
|
-
for (const name of LEGACY_SKILL_NAMES) {
|
|
41
|
-
const target = join(root, name);
|
|
42
|
-
const installed = await exists(target);
|
|
43
|
-
const manifest = installed ? await readManifest(target) : null;
|
|
44
|
-
const skillHeader = installed ? await readFile(join(target, 'SKILL.md'), 'utf8').catch(() => '') : '';
|
|
45
|
-
const directDirectory = installed && (await lstat(target)).isDirectory();
|
|
46
|
-
const managed = Boolean(directDirectory && manifest?.checksum && manifest?.packageVersion && skillHeader.startsWith(`---\nname: ${name}\n`));
|
|
47
|
-
let modified = installed;
|
|
48
|
-
if (managed && manifest) {
|
|
49
|
-
try {
|
|
50
|
-
modified = await directoryChecksum(target) !== manifest.checksum || await hasUnhashedEntries(target);
|
|
51
|
-
}
|
|
52
|
-
catch {
|
|
53
|
-
// 无法完整读取旧目录时,按用户修改处理,避免安装主 Skill 后误删。
|
|
54
|
-
modified = true;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
const removed = cleanup && installed && managed && !modified;
|
|
58
|
-
if (removed)
|
|
59
|
-
await rm(target, { recursive: true });
|
|
60
|
-
results.push({ name, target, installed: installed && !removed, managed, modified, action: removed ? 'removed' : installed ? 'retained' : 'absent', requiresAttention: installed && !removed });
|
|
61
|
-
}
|
|
62
|
-
return results;
|
|
63
|
-
}
|
|
64
|
-
async function hasUnhashedEntries(root) {
|
|
65
|
-
// 旧版校验值只计普通文件;额外的空目录或符号链接也可能是用户修改,不能清理。
|
|
66
|
-
const entries = await readdir(root, { withFileTypes: true });
|
|
67
|
-
for (const entry of entries) {
|
|
68
|
-
if (entry.isDirectory()) {
|
|
69
|
-
const nested = join(root, entry.name);
|
|
70
|
-
if ((await readdir(nested)).length === 0 || await hasUnhashedEntries(nested))
|
|
71
|
-
return true;
|
|
72
|
-
}
|
|
73
|
-
else if (!entry.isFile())
|
|
74
|
-
return true;
|
|
75
|
-
}
|
|
76
|
-
return false;
|
|
77
|
-
}
|
|
78
34
|
export async function skillStatus(target) {
|
|
79
|
-
return
|
|
35
|
+
return statusFor(BUNDLED_SKILL_NAMES[0], target);
|
|
80
36
|
}
|
|
81
37
|
async function installOne(name, target) {
|
|
82
38
|
const checksum = await directoryChecksum(bundledSkillPath(name));
|
|
@@ -119,8 +75,7 @@ export async function installSkills(input) {
|
|
|
119
75
|
}
|
|
120
76
|
results.push({ ...await installOne(name, target), action: current.installed ? 'updated' : 'installed' });
|
|
121
77
|
}
|
|
122
|
-
|
|
123
|
-
return { root, current, skills: results, legacySkills: await legacyStatuses(root, current) };
|
|
78
|
+
return { root, current: results.every((item) => item.current), skills: results };
|
|
124
79
|
}
|
|
125
80
|
export function autoInstallSkills(root) {
|
|
126
81
|
return installSkills({ root });
|
|
@@ -128,7 +83,7 @@ export function autoInstallSkills(root) {
|
|
|
128
83
|
export async function skillStatuses(rootInput) {
|
|
129
84
|
const root = normalizeSkillsRoot(rootInput);
|
|
130
85
|
const skills = await Promise.all(BUNDLED_SKILL_NAMES.map((name) => statusFor(name, join(root, name))));
|
|
131
|
-
return { root, current: skills.every((item) => item.current), skills
|
|
86
|
+
return { root, current: skills.every((item) => item.current), skills };
|
|
132
87
|
}
|
|
133
88
|
export async function installSkill(input) {
|
|
134
89
|
const name = BUNDLED_SKILL_NAMES[0];
|
|
@@ -139,19 +94,19 @@ export async function installSkill(input) {
|
|
|
139
94
|
if (current.modified)
|
|
140
95
|
throw new Error('已安装 Skill 已被修改;使用 --force 才能替换');
|
|
141
96
|
}
|
|
142
|
-
|
|
143
|
-
return { ...result, legacySkills: await legacyStatuses(dirname(input.target), result.current) };
|
|
97
|
+
return installOne(name, input.target);
|
|
144
98
|
}
|
|
145
99
|
export async function autoInstallSkill(target) {
|
|
146
100
|
const name = BUNDLED_SKILL_NAMES[0];
|
|
147
101
|
const current = await statusFor(name, target);
|
|
102
|
+
if (current.current)
|
|
103
|
+
return { action: 'unchanged', ...current };
|
|
148
104
|
if (current.installed && (!current.managed || current.modified))
|
|
149
|
-
return { action: 'skipped', ...current
|
|
150
|
-
|
|
151
|
-
return { ...result, legacySkills: await legacyStatuses(dirname(target), result.current) };
|
|
105
|
+
return { action: 'skipped', ...current };
|
|
106
|
+
return { action: current.installed ? 'updated' : 'installed', ...await installOne(name, target) };
|
|
152
107
|
}
|
|
153
108
|
export function withLegacySkillFields(result) {
|
|
154
|
-
return { ...result.skills[0],
|
|
109
|
+
return { ...result.skills[0], root: result.root, allCurrent: result.current, skills: result.skills };
|
|
155
110
|
}
|
|
156
111
|
async function directoryChecksum(root) {
|
|
157
112
|
const files = await filesBelow(root);
|
|
@@ -189,5 +144,5 @@ async function readPackageVersion() {
|
|
|
189
144
|
return JSON.parse(await readFile(PACKAGE_JSON, 'utf8')).version;
|
|
190
145
|
}
|
|
191
146
|
async function exists(path) {
|
|
192
|
-
return
|
|
147
|
+
return stat(path).then(() => true, () => false);
|
|
193
148
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aswless_854771076/ai_short_studio_cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.100",
|
|
4
4
|
"description": "VVICAT 无限画布项目命令行工具",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"private": false,
|
|
@@ -33,12 +33,11 @@
|
|
|
33
33
|
"prepack": "npm run build",
|
|
34
34
|
"release:dry-run": "node scripts/publish.mjs --dry-run",
|
|
35
35
|
"release:test": "node scripts/publish.mjs --name @aswless_854771076/ai_short_studio_cli --tag beta",
|
|
36
|
-
"release:ci:test": "npm test && npm run typecheck && node scripts/publish.mjs --name @aswless_854771076/ai_short_studio_cli --tag beta --verify
|
|
37
|
-
"release:ci": "npm test && npm run typecheck && node scripts/publish.mjs --tag latest --verify
|
|
36
|
+
"release:ci:test": "npm test && npm run typecheck && node scripts/publish.mjs --name @aswless_854771076/ai_short_studio_cli --tag beta --verify",
|
|
37
|
+
"release:ci": "npm test && npm run typecheck && node scripts/publish.mjs --tag latest --verify",
|
|
38
38
|
"release": "node scripts/publish.mjs --tag latest",
|
|
39
39
|
"test": "vitest run",
|
|
40
40
|
"test:local-e2e": "npm run build && node scripts/local-e2e.mjs",
|
|
41
|
-
"test:smoke": "node scripts/smoke-remote.mjs",
|
|
42
41
|
"typecheck": "tsc -p tsconfig.json --noEmit"
|
|
43
42
|
},
|
|
44
43
|
"dependencies": {
|