@aswless_854771076/ai_short_studio_cli 0.1.97 → 0.1.99
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 +14 -312
- 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/provider/get.d.ts +0 -1
- package/dist/commands/project/provider/set.d.ts +0 -1
- package/dist/commands/project/provider/test.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 -57
- package/dist/domain/vvicat-api.js +9 -65
- 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 +68 -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 -22
- package/skills/using-vvicat-ai-short-studio-cli/references/commands.md +1 -1
- 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 -2
- 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/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
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider capabilities
|
|
4
|
-
*
|
|
5
|
-
* 聚合视图:agent 视角的「当前能跑什么 / 缺什么」。
|
|
6
|
-
*
|
|
7
|
-
* 数据来源:
|
|
8
|
-
* - GET /api/admin/ai-providers → 仓库 provider 目录
|
|
9
|
-
* - GET /api/user/api-config → catalog + defaultModels + capabilityDefaults
|
|
10
|
-
* - POST /api/admin/ai-providers/{id}/test (每个 enabled provider) → reachability
|
|
11
|
-
*
|
|
12
|
-
* 输出 CapabilitiesReport JSON(schema 见 src/domain/ai-provider-capabilities.ts)。
|
|
13
|
-
*/
|
|
14
|
-
export default class ConfigAiProviderCapabilities extends BaseCommand {
|
|
15
|
-
static description: string;
|
|
16
|
-
static flags: {
|
|
17
|
-
'no-reachability': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
18
|
-
'reachability-concurrency': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
21
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
24
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
25
|
-
};
|
|
26
|
-
run(): Promise<void>;
|
|
27
|
-
}
|
|
28
|
-
type ProbeOutcome = 'ok' | 'unknown' | 'failed';
|
|
29
|
-
/**
|
|
30
|
-
* 探测结果判定(2026-10-09 · ERR-20261009-004 · 报告 P0-6)。
|
|
31
|
-
*
|
|
32
|
-
* 服务端对 **RunningHub 协议**的 provider 返回 `{ success: false, reason:
|
|
33
|
-
* 'comfyui-runninghub-protocol', hint: 'RunningHub 协议无法做连通性测试…',
|
|
34
|
-
* steps: [{ status: 'skip', httpStatus: 200 }] }` —— 这是「**不可探测**」,不是
|
|
35
|
-
* 「探测失败」。旧实现只看 `success === true`,把它一律压成 `ok: false`,于是
|
|
36
|
-
* reachability 报 `failed` 而 detail 是 `skip/200`,读起来自相矛盾
|
|
37
|
-
* (端到端测试报告记录的就是这个现象)。
|
|
38
|
-
*
|
|
39
|
-
* 代价不是「不好看」而是**误导决策**:agent/运维看到 failed 就判定 provider 不可用,
|
|
40
|
-
* 于是去补环境变量配置、跳过该模型 —— 而真实故障在别处(凭据通道走错,见同 ERR 的
|
|
41
|
-
* video.ts / adapter.ts 修复)。
|
|
42
|
-
*
|
|
43
|
-
* 修法:`skip` 与该 reason **不算失败**,映射为 unknown(与 `--no-reachability` 时同义),
|
|
44
|
-
* 并把服务端给的 hint 带进 detail,让「为什么不可探测」在报告里直接可读。
|
|
45
|
-
*/
|
|
46
|
-
declare function classifyProbe(result: {
|
|
47
|
-
success?: boolean;
|
|
48
|
-
reason?: string;
|
|
49
|
-
hint?: string;
|
|
50
|
-
steps?: Array<{
|
|
51
|
-
status?: string;
|
|
52
|
-
httpStatus?: number;
|
|
53
|
-
}>;
|
|
54
|
-
}): {
|
|
55
|
-
outcome: ProbeOutcome;
|
|
56
|
-
detail: string;
|
|
57
|
-
};
|
|
58
|
-
/** 测试出口:与 classifyProbe 同函数,仅供单测直接断言三态映射。 */
|
|
59
|
-
export declare const classifyProbeForTest: typeof classifyProbe;
|
|
60
|
-
export {};
|
|
@@ -1,124 +0,0 @@
|
|
|
1
|
-
import { Flags } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
3
|
-
import { commandApi } from '../../../command-helpers.js';
|
|
4
|
-
import { buildCapabilitiesReport } from '../../../domain/ai-provider-capabilities.js';
|
|
5
|
-
import { extractCapabilityDefaults, extractCatalogModels, extractDefaultModels } from '../../../domain/ai-provider-command-helpers.js';
|
|
6
|
-
/**
|
|
7
|
-
* vvicat config ai-provider capabilities
|
|
8
|
-
*
|
|
9
|
-
* 聚合视图:agent 视角的「当前能跑什么 / 缺什么」。
|
|
10
|
-
*
|
|
11
|
-
* 数据来源:
|
|
12
|
-
* - GET /api/admin/ai-providers → 仓库 provider 目录
|
|
13
|
-
* - GET /api/user/api-config → catalog + defaultModels + capabilityDefaults
|
|
14
|
-
* - POST /api/admin/ai-providers/{id}/test (每个 enabled provider) → reachability
|
|
15
|
-
*
|
|
16
|
-
* 输出 CapabilitiesReport JSON(schema 见 src/domain/ai-provider-capabilities.ts)。
|
|
17
|
-
*/
|
|
18
|
-
export default class ConfigAiProviderCapabilities extends BaseCommand {
|
|
19
|
-
static description = '聚合视图:当前能跑哪些模型,缺什么配置';
|
|
20
|
-
static flags = {
|
|
21
|
-
...BaseCommand.baseFlags,
|
|
22
|
-
'no-reachability': Flags.boolean({
|
|
23
|
-
description: '跳过连通性探测(更快,但 reachability 全部为 unknown)',
|
|
24
|
-
default: false,
|
|
25
|
-
}),
|
|
26
|
-
'reachability-concurrency': Flags.integer({
|
|
27
|
-
description: '并发探测 provider 数(默认 4)',
|
|
28
|
-
default: 4,
|
|
29
|
-
}),
|
|
30
|
-
};
|
|
31
|
-
async run() {
|
|
32
|
-
const { flags } = await this.parse(ConfigAiProviderCapabilities);
|
|
33
|
-
const { api } = await commandApi(flags);
|
|
34
|
-
const [providersPayload, config] = await Promise.all([
|
|
35
|
-
api.listAiProviders(),
|
|
36
|
-
api.config(),
|
|
37
|
-
]);
|
|
38
|
-
const providerRows = (providersPayload.items ?? []);
|
|
39
|
-
const reachability = {};
|
|
40
|
-
if (!flags['no-reachability']) {
|
|
41
|
-
const enabled = providerRows.filter((p) => p.enabled);
|
|
42
|
-
const concurrency = Math.max(1, Math.min(flags['reachability-concurrency'], enabled.length || 1));
|
|
43
|
-
const results = await probeConcurrently(enabled, concurrency, api.testAiProvider.bind(api));
|
|
44
|
-
for (const [id, result] of results)
|
|
45
|
-
reachability[id] = result;
|
|
46
|
-
}
|
|
47
|
-
const report = buildCapabilitiesReport({
|
|
48
|
-
baseUrl: flags['base-url'] ?? '',
|
|
49
|
-
providers: providerRows.map((p) => ({
|
|
50
|
-
id: p.id,
|
|
51
|
-
name: p.name,
|
|
52
|
-
type: p.type,
|
|
53
|
-
enabled: p.enabled,
|
|
54
|
-
baseUrl: p.baseUrl,
|
|
55
|
-
apiKeyMask: p.apiKeyMask,
|
|
56
|
-
hasApiKey: p.hasApiKey,
|
|
57
|
-
protocolMode: p.protocolMode,
|
|
58
|
-
lastTestResult: p.lastTestResult,
|
|
59
|
-
lastResponseMs: p.lastResponseMs,
|
|
60
|
-
upstreamModels: p.upstreamModels,
|
|
61
|
-
upstreamModelsSyncedAt: p.upstreamModelsSyncedAt,
|
|
62
|
-
})),
|
|
63
|
-
catalogModels: extractCatalogModels(config),
|
|
64
|
-
defaultModels: extractDefaultModels(config),
|
|
65
|
-
capabilityDefaults: extractCapabilityDefaults(config),
|
|
66
|
-
reachability,
|
|
67
|
-
});
|
|
68
|
-
this.print(report);
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* 探测结果判定(2026-10-09 · ERR-20261009-004 · 报告 P0-6)。
|
|
73
|
-
*
|
|
74
|
-
* 服务端对 **RunningHub 协议**的 provider 返回 `{ success: false, reason:
|
|
75
|
-
* 'comfyui-runninghub-protocol', hint: 'RunningHub 协议无法做连通性测试…',
|
|
76
|
-
* steps: [{ status: 'skip', httpStatus: 200 }] }` —— 这是「**不可探测**」,不是
|
|
77
|
-
* 「探测失败」。旧实现只看 `success === true`,把它一律压成 `ok: false`,于是
|
|
78
|
-
* reachability 报 `failed` 而 detail 是 `skip/200`,读起来自相矛盾
|
|
79
|
-
* (端到端测试报告记录的就是这个现象)。
|
|
80
|
-
*
|
|
81
|
-
* 代价不是「不好看」而是**误导决策**:agent/运维看到 failed 就判定 provider 不可用,
|
|
82
|
-
* 于是去补环境变量配置、跳过该模型 —— 而真实故障在别处(凭据通道走错,见同 ERR 的
|
|
83
|
-
* video.ts / adapter.ts 修复)。
|
|
84
|
-
*
|
|
85
|
-
* 修法:`skip` 与该 reason **不算失败**,映射为 unknown(与 `--no-reachability` 时同义),
|
|
86
|
-
* 并把服务端给的 hint 带进 detail,让「为什么不可探测」在报告里直接可读。
|
|
87
|
-
*/
|
|
88
|
-
function classifyProbe(result) {
|
|
89
|
-
const steps = result.steps ?? [];
|
|
90
|
-
const skipped = steps.length > 0 && steps.every((step) => step.status === 'skip');
|
|
91
|
-
const stepDetail = steps.map((step) => `${step.status ?? 'unknown'}/${step.httpStatus ?? '?'}`).join(', ');
|
|
92
|
-
if (skipped || result.reason === 'comfyui-runninghub-protocol') {
|
|
93
|
-
return { outcome: 'unknown', detail: [stepDetail, result.hint].filter(Boolean).join(' · ') };
|
|
94
|
-
}
|
|
95
|
-
return { outcome: result.success === true ? 'ok' : 'failed', detail: stepDetail };
|
|
96
|
-
}
|
|
97
|
-
/** 测试出口:与 classifyProbe 同函数,仅供单测直接断言三态映射。 */
|
|
98
|
-
export const classifyProbeForTest = classifyProbe;
|
|
99
|
-
async function probeConcurrently(providers, concurrency, probe) {
|
|
100
|
-
const out = [];
|
|
101
|
-
let cursor = 0;
|
|
102
|
-
const workers = Array.from({ length: Math.min(concurrency, Math.max(providers.length, 1)) }, async () => {
|
|
103
|
-
while (cursor < providers.length) {
|
|
104
|
-
const index = cursor++;
|
|
105
|
-
const provider = providers[index];
|
|
106
|
-
try {
|
|
107
|
-
const result = await probe(provider.id);
|
|
108
|
-
const { outcome, detail } = classifyProbe(result);
|
|
109
|
-
// resolveReachability 只读 sample.ok,故 unknown 也用 ok:true 承载,
|
|
110
|
-
// 并在 detail 加 unknown 前缀让下游(CLI 输出/人读报告)能直接分辨三态。
|
|
111
|
-
out.push([provider.id, {
|
|
112
|
-
ok: outcome !== 'failed',
|
|
113
|
-
detail: outcome === 'unknown' ? `unknown · ${detail}` : detail,
|
|
114
|
-
durationMs: result.durationMs,
|
|
115
|
-
}]);
|
|
116
|
-
}
|
|
117
|
-
catch (error) {
|
|
118
|
-
out.push([provider.id, { ok: false, detail: error instanceof Error ? error.message : String(error) }]);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
});
|
|
122
|
-
await Promise.all(workers);
|
|
123
|
-
return out;
|
|
124
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider get <providerId>
|
|
4
|
-
*
|
|
5
|
-
* 查看单个 provider 的 baseUrl / enabled / protocol / apiKey 状态。
|
|
6
|
-
* 服务端 serializeExtendedProvider 已脱敏(apiKeyMask='••••••••'),CLI 不再多处理。
|
|
7
|
-
*/
|
|
8
|
-
export default class ConfigAiProviderGet extends BaseCommand {
|
|
9
|
-
static description: string;
|
|
10
|
-
static args: {
|
|
11
|
-
providerId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
12
|
-
};
|
|
13
|
-
static flags: {
|
|
14
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
-
};
|
|
21
|
-
run(): Promise<void>;
|
|
22
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Args } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
3
|
-
import { commandApi } from '../../../command-helpers.js';
|
|
4
|
-
/**
|
|
5
|
-
* vvicat config ai-provider get <providerId>
|
|
6
|
-
*
|
|
7
|
-
* 查看单个 provider 的 baseUrl / enabled / protocol / apiKey 状态。
|
|
8
|
-
* 服务端 serializeExtendedProvider 已脱敏(apiKeyMask='••••••••'),CLI 不再多处理。
|
|
9
|
-
*/
|
|
10
|
-
export default class ConfigAiProviderGet extends BaseCommand {
|
|
11
|
-
static description = '查看单个 AI provider 详情';
|
|
12
|
-
static args = {
|
|
13
|
-
providerId: Args.string({ required: true, description: 'provider ID(如 comfyui / runninghub)' }),
|
|
14
|
-
};
|
|
15
|
-
static flags = BaseCommand.baseFlags;
|
|
16
|
-
async run() {
|
|
17
|
-
const { args, flags } = await this.parse(ConfigAiProviderGet);
|
|
18
|
-
const { api } = await commandApi(flags);
|
|
19
|
-
this.print(await api.getAiProvider(args.providerId));
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider list
|
|
4
|
-
*
|
|
5
|
-
* 列出仓库中所有 AI provider(comfly / comfyui / runninghub / openai / ...),
|
|
6
|
-
* 含 enabled/protocol/baseUrl/apiKey 状态(apiKey 脱敏)。
|
|
7
|
-
*
|
|
8
|
-
* 服务端要求 admin 鉴权。
|
|
9
|
-
*/
|
|
10
|
-
export default class ConfigAiProviderList extends BaseCommand {
|
|
11
|
-
static description: string;
|
|
12
|
-
static flags: {
|
|
13
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
14
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
15
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
16
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
-
};
|
|
20
|
-
run(): Promise<void>;
|
|
21
|
-
}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
import { commandApi } from '../../../command-helpers.js';
|
|
3
|
-
/**
|
|
4
|
-
* vvicat config ai-provider list
|
|
5
|
-
*
|
|
6
|
-
* 列出仓库中所有 AI provider(comfly / comfyui / runninghub / openai / ...),
|
|
7
|
-
* 含 enabled/protocol/baseUrl/apiKey 状态(apiKey 脱敏)。
|
|
8
|
-
*
|
|
9
|
-
* 服务端要求 admin 鉴权。
|
|
10
|
-
*/
|
|
11
|
-
export default class ConfigAiProviderList extends BaseCommand {
|
|
12
|
-
static description = '列出仓库中所有 AI provider(apiKey 脱敏)';
|
|
13
|
-
static flags = BaseCommand.baseFlags;
|
|
14
|
-
async run() {
|
|
15
|
-
const { flags } = await this.parse(ConfigAiProviderList);
|
|
16
|
-
const { api } = await commandApi(flags);
|
|
17
|
-
this.print(await api.listAiProviders());
|
|
18
|
-
}
|
|
19
|
-
}
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider models <providerId>
|
|
4
|
-
*
|
|
5
|
-
* 拉取 provider 远端真实模型清单(GET baseUrl/models)。
|
|
6
|
-
* 服务端会把结果缓存到 ai_providers.upstreamModels,可重复调用观察同步状态。
|
|
7
|
-
*/
|
|
8
|
-
export default class ConfigAiProviderModels extends BaseCommand {
|
|
9
|
-
static description: string;
|
|
10
|
-
static args: {
|
|
11
|
-
providerId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
12
|
-
};
|
|
13
|
-
static flags: {
|
|
14
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
15
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
16
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
17
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
19
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
-
};
|
|
21
|
-
run(): Promise<void>;
|
|
22
|
-
}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { Args } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
3
|
-
import { commandApi } from '../../../command-helpers.js';
|
|
4
|
-
/**
|
|
5
|
-
* vvicat config ai-provider models <providerId>
|
|
6
|
-
*
|
|
7
|
-
* 拉取 provider 远端真实模型清单(GET baseUrl/models)。
|
|
8
|
-
* 服务端会把结果缓存到 ai_providers.upstreamModels,可重复调用观察同步状态。
|
|
9
|
-
*/
|
|
10
|
-
export default class ConfigAiProviderModels extends BaseCommand {
|
|
11
|
-
static description = '拉取 provider 远端真实模型清单(GET /models)';
|
|
12
|
-
static args = {
|
|
13
|
-
providerId: Args.string({ required: true, description: 'provider ID' }),
|
|
14
|
-
};
|
|
15
|
-
static flags = BaseCommand.baseFlags;
|
|
16
|
-
async run() {
|
|
17
|
-
const { args, flags } = await this.parse(ConfigAiProviderModels);
|
|
18
|
-
const { api } = await commandApi(flags);
|
|
19
|
-
this.print(await api.fetchAiProviderModels(args.providerId));
|
|
20
|
-
}
|
|
21
|
-
}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider set <providerId> [...flags]
|
|
4
|
-
*
|
|
5
|
-
* 写入 provider 配置。两类使用方式:
|
|
6
|
-
*
|
|
7
|
-
* 1. 命令行 flag(最常见):
|
|
8
|
-
* vvicat config ai-provider set comfyui \
|
|
9
|
-
* --base-url http://127.0.0.1:8188 \
|
|
10
|
-
* --enabled true \
|
|
11
|
-
* --protocol comfyui-official
|
|
12
|
-
*
|
|
13
|
-
* 2. JSON 文件(复杂场景,如 openai-compat 协议全套字段):
|
|
14
|
-
* vvicat config ai-provider set openai --file openai-config.json
|
|
15
|
-
* cat openai-config.json | vvicat config ai-provider set openai --file -
|
|
16
|
-
*
|
|
17
|
-
* `--file` 模式时:JSON 内容会作为完整 body 提交,要求含 `type` + `name`;CLI 不再叠加 flag。
|
|
18
|
-
*/
|
|
19
|
-
export default class ConfigAiProviderSet extends BaseCommand {
|
|
20
|
-
static description: string;
|
|
21
|
-
static args: {
|
|
22
|
-
providerId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
23
|
-
};
|
|
24
|
-
static flags: {
|
|
25
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
26
|
-
'api-key': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
27
|
-
'api-mode': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
28
|
-
name: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
29
|
-
protocol: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
30
|
-
enabled: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
31
|
-
'sort-order': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
32
|
-
file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
33
|
-
create: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
34
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
35
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
36
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
37
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
38
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
39
|
-
};
|
|
40
|
-
run(): Promise<void>;
|
|
41
|
-
}
|
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
import { Args, Flags } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
3
|
-
import { commandApi, readJsonInput } from '../../../command-helpers.js';
|
|
4
|
-
import { composeBodyFromFlags } from '../../../domain/ai-provider-command-helpers.js';
|
|
5
|
-
/**
|
|
6
|
-
* vvicat config ai-provider set <providerId> [...flags]
|
|
7
|
-
*
|
|
8
|
-
* 写入 provider 配置。两类使用方式:
|
|
9
|
-
*
|
|
10
|
-
* 1. 命令行 flag(最常见):
|
|
11
|
-
* vvicat config ai-provider set comfyui \
|
|
12
|
-
* --base-url http://127.0.0.1:8188 \
|
|
13
|
-
* --enabled true \
|
|
14
|
-
* --protocol comfyui-official
|
|
15
|
-
*
|
|
16
|
-
* 2. JSON 文件(复杂场景,如 openai-compat 协议全套字段):
|
|
17
|
-
* vvicat config ai-provider set openai --file openai-config.json
|
|
18
|
-
* cat openai-config.json | vvicat config ai-provider set openai --file -
|
|
19
|
-
*
|
|
20
|
-
* `--file` 模式时:JSON 内容会作为完整 body 提交,要求含 `type` + `name`;CLI 不再叠加 flag。
|
|
21
|
-
*/
|
|
22
|
-
export default class ConfigAiProviderSet extends BaseCommand {
|
|
23
|
-
static description = '配置 AI provider 的 baseUrl / apiKey / 协议 / enabled 等字段';
|
|
24
|
-
static args = {
|
|
25
|
-
providerId: Args.string({ required: true, description: 'provider ID' }),
|
|
26
|
-
};
|
|
27
|
-
static flags = {
|
|
28
|
-
...BaseCommand.baseFlags,
|
|
29
|
-
'base-url': Flags.string({ description: 'provider 服务地址(如 http://127.0.0.1:8188)' }),
|
|
30
|
-
'api-key': Flags.string({ description: 'provider API key(仅写入;不会回显)' }),
|
|
31
|
-
'api-mode': Flags.string({ description: 'apiMode(gateway 协议族字段,如 openai / comfyui-official)' }),
|
|
32
|
-
name: Flags.string({ description: 'provider 展示名(默认沿用 providerId)' }),
|
|
33
|
-
protocol: Flags.string({ description: 'protocolMode(openai / comfyui-official / runninghub)' }),
|
|
34
|
-
enabled: Flags.boolean({ description: 'true 启用;false 禁用', allowNo: true }),
|
|
35
|
-
'sort-order': Flags.integer({ description: '排序权重(数字越小越靠前)' }),
|
|
36
|
-
file: Flags.string({ description: '完整 JSON body;省略时从 stdin 读取' }),
|
|
37
|
-
create: Flags.boolean({ description: '强制走 POST 创建(默认 PATCH 404 时自动回退到 create)', default: false }),
|
|
38
|
-
};
|
|
39
|
-
async run() {
|
|
40
|
-
const { args, flags } = await this.parse(ConfigAiProviderSet);
|
|
41
|
-
const { api } = await commandApi(flags);
|
|
42
|
-
const body = flags.file !== undefined
|
|
43
|
-
? await readJsonInput(flags.file === '-' ? undefined : flags.file)
|
|
44
|
-
: composeBodyFromFlags(args.providerId, flags);
|
|
45
|
-
if (typeof body.type !== 'string' || !body.type.trim()) {
|
|
46
|
-
this.error('set 请求 body 必须包含 type 字段(provider 类型,如 comfyui / openai)');
|
|
47
|
-
}
|
|
48
|
-
if (flags.create) {
|
|
49
|
-
this.print(await api.createAiProvider(body));
|
|
50
|
-
return;
|
|
51
|
-
}
|
|
52
|
-
try {
|
|
53
|
-
this.print(await api.updateAiProvider(args.providerId, body));
|
|
54
|
-
}
|
|
55
|
-
catch (error) {
|
|
56
|
-
// PATCH 404 → 不存在,自动回退到 create(更友好的 UX)
|
|
57
|
-
const status = error.status;
|
|
58
|
-
if (status === 404) {
|
|
59
|
-
this.print(await api.createAiProvider(body));
|
|
60
|
-
return;
|
|
61
|
-
}
|
|
62
|
-
throw error;
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
2
|
-
/**
|
|
3
|
-
* vvicat config ai-provider test <providerId>
|
|
4
|
-
*
|
|
5
|
-
* 触发服务端连通性探测:
|
|
6
|
-
* - comfyui: GET baseUrl/system_stats
|
|
7
|
-
* - 其他 OpenAI 兼容: GET baseUrl/models 带 Bearer token
|
|
8
|
-
*
|
|
9
|
-
* 返回 { success, steps, durationMs }。CLI 原样转发。
|
|
10
|
-
*/
|
|
11
|
-
export default class ConfigAiProviderTest extends BaseCommand {
|
|
12
|
-
static description: string;
|
|
13
|
-
static args: {
|
|
14
|
-
providerId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
15
|
-
};
|
|
16
|
-
static flags: {
|
|
17
|
-
'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
18
|
-
json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
19
|
-
locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
|
|
20
|
-
profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
21
|
-
episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
22
|
-
output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
23
|
-
};
|
|
24
|
-
run(): Promise<void>;
|
|
25
|
-
}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { Args } from '@oclif/core';
|
|
2
|
-
import { BaseCommand } from '../../../base-command.js';
|
|
3
|
-
import { commandApi } from '../../../command-helpers.js';
|
|
4
|
-
/**
|
|
5
|
-
* vvicat config ai-provider test <providerId>
|
|
6
|
-
*
|
|
7
|
-
* 触发服务端连通性探测:
|
|
8
|
-
* - comfyui: GET baseUrl/system_stats
|
|
9
|
-
* - 其他 OpenAI 兼容: GET baseUrl/models 带 Bearer token
|
|
10
|
-
*
|
|
11
|
-
* 返回 { success, steps, durationMs }。CLI 原样转发。
|
|
12
|
-
*/
|
|
13
|
-
export default class ConfigAiProviderTest extends BaseCommand {
|
|
14
|
-
static description = '触发服务端连通性探测(GET /models 或 /system_stats)';
|
|
15
|
-
static args = {
|
|
16
|
-
providerId: Args.string({ required: true, description: 'provider ID' }),
|
|
17
|
-
};
|
|
18
|
-
static flags = BaseCommand.baseFlags;
|
|
19
|
-
async run() {
|
|
20
|
-
const { args, flags } = await this.parse(ConfigAiProviderTest);
|
|
21
|
-
const { api } = await commandApi(flags);
|
|
22
|
-
this.print(await api.testAiProvider(args.providerId));
|
|
23
|
-
}
|
|
24
|
-
}
|
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* vvicat config ai-provider capabilities 命令的聚合视图:
|
|
3
|
-
* 把服务端返回的 providers / catalog / user-config / reachability
|
|
4
|
-
* 合并成一张 agent 可读的"我能跑什么 / 缺什么"结构。
|
|
5
|
-
*
|
|
6
|
-
* 设计目标:
|
|
7
|
-
* - 单一入口;agent 一次拿到所有决策所需信息。
|
|
8
|
-
* - 畸形输入不抛错(catalogModels / defaultModels 可能因为网络/服务端 bug 缺数据)。
|
|
9
|
-
* - 字段命名稳定(生产数据契约);JSON 字段不要随意改名。
|
|
10
|
-
*/
|
|
11
|
-
export type ReachabilityState = 'ok' | 'failed' | 'skipped' | 'unknown';
|
|
12
|
-
export interface ProviderCapabilityRow {
|
|
13
|
-
id: string;
|
|
14
|
-
name: string;
|
|
15
|
-
type: string;
|
|
16
|
-
enabled: boolean;
|
|
17
|
-
baseUrl: string | null;
|
|
18
|
-
apiKeyMask: string | null;
|
|
19
|
-
hasApiKey: boolean;
|
|
20
|
-
protocolMode: string | null;
|
|
21
|
-
lastTestResult: 'pass' | 'fail' | null;
|
|
22
|
-
lastResponseMs: number | null;
|
|
23
|
-
upstreamModels?: unknown[];
|
|
24
|
-
upstreamModelsCount: number;
|
|
25
|
-
upstreamModelsSyncedAt: string | null;
|
|
26
|
-
reachability: ReachabilityState;
|
|
27
|
-
reachabilityDetail?: string;
|
|
28
|
-
}
|
|
29
|
-
export interface ModelCapabilityRow {
|
|
30
|
-
modelKey: string;
|
|
31
|
-
provider: string;
|
|
32
|
-
type: 'image' | 'video' | 'audio' | 'llm' | 'tts';
|
|
33
|
-
enabled: boolean;
|
|
34
|
-
capabilityOptions: Record<string, unknown>;
|
|
35
|
-
}
|
|
36
|
-
export interface MissingPiece {
|
|
37
|
-
capability: string;
|
|
38
|
-
modelKey?: string;
|
|
39
|
-
reason: string;
|
|
40
|
-
fixHint?: string;
|
|
41
|
-
}
|
|
42
|
-
export interface CapabilitiesReport {
|
|
43
|
-
generatedAt: string;
|
|
44
|
-
baseUrl: string;
|
|
45
|
-
summary: {
|
|
46
|
-
totalProviders: number;
|
|
47
|
-
enabledProviders: number;
|
|
48
|
-
reachableProviders: number;
|
|
49
|
-
catalogModelCount: number;
|
|
50
|
-
capabilityCount: number;
|
|
51
|
-
};
|
|
52
|
-
providers: ProviderCapabilityRow[];
|
|
53
|
-
capabilities: {
|
|
54
|
-
imageModel: ModelCapabilityRow[];
|
|
55
|
-
videoModel: ModelCapabilityRow[];
|
|
56
|
-
audioModel: ModelCapabilityRow[];
|
|
57
|
-
analysisModel: ModelCapabilityRow[];
|
|
58
|
-
characterModel: ModelCapabilityRow[];
|
|
59
|
-
locationModel: ModelCapabilityRow[];
|
|
60
|
-
storyboardModel: ModelCapabilityRow[];
|
|
61
|
-
};
|
|
62
|
-
userDefaults: {
|
|
63
|
-
imageModel: string | null;
|
|
64
|
-
videoModel: string | null;
|
|
65
|
-
audioModel: string | null;
|
|
66
|
-
analysisModel: string | null;
|
|
67
|
-
characterModel: string | null;
|
|
68
|
-
locationModel: string | null;
|
|
69
|
-
storyboardModel: string | null;
|
|
70
|
-
};
|
|
71
|
-
reachability: Record<string, {
|
|
72
|
-
ok: boolean;
|
|
73
|
-
detail?: string;
|
|
74
|
-
durationMs?: number;
|
|
75
|
-
}>;
|
|
76
|
-
missingPieces: MissingPiece[];
|
|
77
|
-
}
|
|
78
|
-
export interface ProviderCapabilitiesInput {
|
|
79
|
-
baseUrl: string;
|
|
80
|
-
providers: Array<{
|
|
81
|
-
id: string;
|
|
82
|
-
name: string;
|
|
83
|
-
type: string;
|
|
84
|
-
enabled: boolean;
|
|
85
|
-
baseUrl: string | null;
|
|
86
|
-
apiKeyMask: string | null;
|
|
87
|
-
hasApiKey: boolean;
|
|
88
|
-
protocolMode: string | null;
|
|
89
|
-
lastTestResult: 'pass' | 'fail' | null;
|
|
90
|
-
lastResponseMs: number | null;
|
|
91
|
-
upstreamModels?: unknown[];
|
|
92
|
-
upstreamModelsSyncedAt: string | null;
|
|
93
|
-
}>;
|
|
94
|
-
catalogModels: Array<{
|
|
95
|
-
modelKey: string;
|
|
96
|
-
provider: string;
|
|
97
|
-
type: 'image' | 'video' | 'audio' | 'llm' | 'tts';
|
|
98
|
-
enabled?: boolean;
|
|
99
|
-
capabilities?: Record<string, Record<string, unknown>>;
|
|
100
|
-
}> | null;
|
|
101
|
-
defaultModels: Record<string, string> | null;
|
|
102
|
-
capabilityDefaults: Record<string, Record<string, unknown>> | null;
|
|
103
|
-
reachability: Record<string, {
|
|
104
|
-
ok: boolean;
|
|
105
|
-
detail?: string;
|
|
106
|
-
durationMs?: number;
|
|
107
|
-
}>;
|
|
108
|
-
}
|
|
109
|
-
export declare function buildCapabilitiesReport(input: ProviderCapabilitiesInput): CapabilitiesReport;
|