@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.
Files changed (401) hide show
  1. package/README.md +14 -312
  2. package/dist/base-command.d.ts +0 -6
  3. package/dist/base-command.js +1 -39
  4. package/dist/client/api-client.js +2 -19
  5. package/dist/commands/auth/login.d.ts +1 -2
  6. package/dist/commands/auth/login.js +2 -5
  7. package/dist/commands/auth/logout.d.ts +0 -1
  8. package/dist/commands/auth/signup.d.ts +0 -1
  9. package/dist/commands/auth/status.d.ts +0 -1
  10. package/dist/commands/canvas/apply.d.ts +0 -1
  11. package/dist/commands/canvas/asset/get.d.ts +0 -1
  12. package/dist/commands/canvas/asset/list.d.ts +0 -1
  13. package/dist/commands/canvas/asset/select.d.ts +1 -3
  14. package/dist/commands/canvas/asset/select.js +3 -22
  15. package/dist/commands/canvas/asset/upload.d.ts +0 -14
  16. package/dist/commands/canvas/asset/upload.js +3 -43
  17. package/dist/commands/canvas/continuity/analyze.d.ts +0 -1
  18. package/dist/commands/canvas/edge/connect.d.ts +0 -1
  19. package/dist/commands/canvas/edge/disconnect.d.ts +0 -1
  20. package/dist/commands/canvas/edge/list.d.ts +0 -1
  21. package/dist/commands/canvas/edge/list.js +1 -4
  22. package/dist/commands/canvas/episode/create.d.ts +0 -1
  23. package/dist/commands/canvas/episode/list.d.ts +0 -1
  24. package/dist/commands/canvas/folder/copy-cross-project.d.ts +0 -1
  25. package/dist/commands/canvas/folder/create.d.ts +0 -1
  26. package/dist/commands/canvas/folder/delete.d.ts +0 -1
  27. package/dist/commands/canvas/folder/list.d.ts +0 -1
  28. package/dist/commands/canvas/folder/move.d.ts +0 -1
  29. package/dist/commands/canvas/folder/rename.d.ts +0 -1
  30. package/dist/commands/canvas/folder/restore.d.ts +0 -1
  31. package/dist/commands/canvas/get.d.ts +0 -1
  32. package/dist/commands/canvas/inspect.d.ts +0 -1
  33. package/dist/commands/canvas/node/add.d.ts +1 -1
  34. package/dist/commands/canvas/node/add.js +2 -2
  35. package/dist/commands/canvas/node/delete.d.ts +0 -1
  36. package/dist/commands/canvas/node/edit-resource.d.ts +0 -2
  37. package/dist/commands/canvas/node/edit-resource.js +1 -9
  38. package/dist/commands/canvas/node/edit-shot.d.ts +0 -1
  39. package/dist/commands/canvas/node/get.d.ts +0 -1
  40. package/dist/commands/canvas/node/list.d.ts +0 -5
  41. package/dist/commands/canvas/node/list.js +2 -43
  42. package/dist/commands/canvas/node/run.d.ts +0 -15
  43. package/dist/commands/canvas/node/run.js +6 -142
  44. package/dist/commands/canvas/node/types.d.ts +0 -1
  45. package/dist/commands/canvas/node/update-many.d.ts +0 -1
  46. package/dist/commands/canvas/node/update.d.ts +0 -1
  47. package/dist/commands/canvas/settings/get.d.ts +0 -1
  48. package/dist/commands/canvas/settings/set.d.ts +0 -24
  49. package/dist/commands/canvas/settings/set.js +1 -60
  50. package/dist/commands/config/get.d.ts +0 -1
  51. package/dist/commands/config/set.d.ts +0 -2
  52. package/dist/commands/config/set.js +2 -55
  53. package/dist/commands/preflight.d.ts +0 -1
  54. package/dist/commands/preflight.js +1 -9
  55. package/dist/commands/project/create.d.ts +0 -1
  56. package/dist/commands/project/delete.d.ts +0 -1
  57. package/dist/commands/project/get.d.ts +0 -1
  58. package/dist/commands/project/list.d.ts +0 -1
  59. package/dist/commands/project/provider/get.d.ts +0 -1
  60. package/dist/commands/project/provider/set.d.ts +0 -1
  61. package/dist/commands/project/provider/test.d.ts +0 -1
  62. package/dist/commands/project/update.d.ts +0 -1
  63. package/dist/commands/skill/install.d.ts +0 -1
  64. package/dist/commands/skill/install.js +0 -1
  65. package/dist/commands/skill/path.d.ts +0 -1
  66. package/dist/commands/skill/path.js +0 -1
  67. package/dist/commands/skill/status.d.ts +0 -1
  68. package/dist/commands/skill/status.js +0 -1
  69. package/dist/commands/task/cancel.d.ts +0 -1
  70. package/dist/commands/task/get.d.ts +0 -1
  71. package/dist/commands/task/wait.d.ts +0 -2
  72. package/dist/commands/task/wait.js +1 -6
  73. package/dist/domain/vvicat-api.d.ts +3 -57
  74. package/dist/domain/vvicat-api.js +9 -65
  75. package/dist/output/formatter.d.ts +0 -11
  76. package/dist/output/formatter.js +0 -20
  77. package/dist/preflight.d.ts +0 -1
  78. package/dist/preflight.js +1 -14
  79. package/dist/skill/command-flags.js +4 -7
  80. package/dist/skill/skill-manager.d.ts +2 -75
  81. package/dist/skill/skill-manager.js +15 -60
  82. package/package.json +3 -4
  83. package/scripts/postinstall.mjs +12 -7
  84. package/skills/using-vvicat-ai-short-studio-cli/SKILL.md +68 -27
  85. package/skills/using-vvicat-ai-short-studio-cli/references/commands/canvas.md +4 -3
  86. package/skills/using-vvicat-ai-short-studio-cli/references/commands/project.md +2 -22
  87. package/skills/using-vvicat-ai-short-studio-cli/references/commands.md +1 -1
  88. package/skills/using-vvicat-ai-short-studio-cli/references/editing-delivery.md +1 -1
  89. package/skills/using-vvicat-ai-short-studio-cli/references/h3-video-delivery.md +1 -1
  90. package/skills/using-vvicat-ai-short-studio-cli/references/humanizer/humanizer.md +9 -0
  91. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/SKILL.md +447 -0
  92. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/brief.md +93 -0
  93. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/project-files.md +246 -0
  94. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/reference-video.md +266 -0
  95. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/script-and-time.md +253 -0
  96. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/transformations.md +141 -0
  97. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/distribution.md +176 -0
  98. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/local-tools.md +411 -0
  99. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/model-and-provider.md +275 -0
  100. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/profile.md +286 -0
  101. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/asset-and-shot-preproduction.md +193 -0
  102. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/b-roll.md +94 -0
  103. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/caption-tracking.md +125 -0
  104. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/captions.md +252 -0
  105. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/conversation-images.md +218 -0
  106. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-base-prompt-writing.md +222 -0
  107. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-reference-prompt-writing.md +341 -0
  108. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/image-direction.md +123 -0
  109. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/generated-dependencies.md +38 -0
  110. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/graphic-compositions.md +85 -0
  111. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/h3-prompt-writing.md +54 -0
  112. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/image-direction.md +95 -0
  113. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/motion-graphics.md +68 -0
  114. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/recreation-policy.md +51 -0
  115. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/screen-demonstrations.md +51 -0
  116. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/shot-production-contracts.md +161 -0
  117. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/sound-mix.md +76 -0
  118. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/video-direction.md +433 -0
  119. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-and-performance.md +224 -0
  120. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-direction.md +99 -0
  121. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/narration-led-demo.md +87 -0
  122. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/presenter-led-explainer.md +160 -0
  123. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/ranking-listicle.md +71 -0
  124. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/reference-recreation-canvas.md +8 -0
  125. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama-workflow.md +165 -0
  126. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama.md +88 -0
  127. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/street-interview.md +92 -0
  128. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/talking-head.md +82 -0
  129. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/two-person-podcast.md +101 -0
  130. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/index.md +77 -0
  131. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/audio-presentation.md +49 -0
  132. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/authoring.md +228 -0
  133. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/browser-capture.md +112 -0
  134. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/builds.md +330 -0
  135. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-authoring.md +156 -0
  136. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-presentation.md +66 -0
  137. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-design.md +217 -0
  138. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-sharing.md +150 -0
  139. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-visuals.md +152 -0
  140. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/detail.svrun +8 -0
  141. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/direction.svs +14 -0
  142. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/look.svs +6 -0
  143. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/material.svrun +5 -0
  144. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svml +73 -0
  145. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svrun +5 -0
  146. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/visuals.ts +62 -0
  147. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/fonts-and-text.md +138 -0
  148. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/image-operations.md +102 -0
  149. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/index.md +73 -0
  150. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media-presentation.md +111 -0
  151. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media.md +246 -0
  152. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/performance.md +114 -0
  153. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/prompt-kits.md +165 -0
  154. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/rendering.md +141 -0
  155. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/review.md +211 -0
  156. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/runs.md +151 -0
  157. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/script-syntax.md +236 -0
  158. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/snapshots.md +90 -0
  159. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/sound.md +75 -0
  160. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/source-syntax.md +163 -0
  161. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/spatial.md +189 -0
  162. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio-companions.md +186 -0
  163. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio.md +249 -0
  164. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/system.md +169 -0
  165. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timeline.md +74 -0
  166. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timing.md +96 -0
  167. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/track-authoring.md +215 -0
  168. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/tracks.md +67 -0
  169. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/video-downloads.md +47 -0
  170. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/vocabulary.md +119 -0
  171. package/skills/using-vvicat-ai-short-studio-cli/references/project-and-canvas.md +1 -1
  172. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/README.md +11 -0
  173. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/SKILL.md +102 -0
  174. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/art-styles.json +585 -0
  175. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-images.md +11 -0
  176. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles/character-profile-output.schema.json +99 -0
  177. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles.md +7 -0
  178. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-drama-art-style.md +9 -0
  179. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-prop-assets.md +11 -0
  180. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-scene-assets.md +13 -0
  181. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-art-styles.md +9 -0
  182. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-assets.md +9 -0
  183. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.en.txt +24 -0
  184. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.zh.txt +24 -0
  185. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.en.txt +61 -0
  186. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.zh.txt +79 -0
  187. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.en.txt +101 -0
  188. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.zh.txt +150 -0
  189. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.en.txt +114 -0
  190. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.zh.txt +89 -0
  191. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.en.txt +114 -0
  192. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.zh.txt +389 -0
  193. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.en.txt +40 -0
  194. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.zh.txt +40 -0
  195. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.en.txt +24 -0
  196. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.zh.txt +24 -0
  197. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.en.txt +19 -0
  198. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.zh.txt +19 -0
  199. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.en.txt +26 -0
  200. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.zh.txt +26 -0
  201. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.en.txt +33 -0
  202. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.zh.txt +33 -0
  203. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.en.txt +36 -0
  204. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.zh.txt +36 -0
  205. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.en.txt +33 -0
  206. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.zh.txt +33 -0
  207. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.en.txt +26 -0
  208. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.zh.txt +26 -0
  209. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.en.txt +21 -0
  210. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.zh.txt +21 -0
  211. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.en.txt +12 -0
  212. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.zh.txt +12 -0
  213. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.en.txt +13 -0
  214. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.zh.txt +13 -0
  215. 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
  216. 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
  217. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.en.txt +15 -0
  218. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.zh.txt +15 -0
  219. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.en.txt +14 -0
  220. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.zh.txt +14 -0
  221. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.en.txt +50 -0
  222. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.zh.txt +50 -0
  223. 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
  224. 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
  225. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.en.txt +67 -0
  226. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.zh.txt +67 -0
  227. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.en.txt +14 -0
  228. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.zh.txt +14 -0
  229. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.en.txt +16 -0
  230. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.zh.txt +16 -0
  231. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.en.txt +17 -0
  232. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.zh.txt +17 -0
  233. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.en.txt +11 -0
  234. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.zh.txt +11 -0
  235. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.en.txt +14 -0
  236. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.zh.txt +14 -0
  237. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.en.txt +13 -0
  238. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.zh.txt +13 -0
  239. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.en.txt +12 -0
  240. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.zh.txt +12 -0
  241. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.en.txt +19 -0
  242. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.zh.txt +19 -0
  243. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.en.txt +18 -0
  244. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.zh.txt +17 -0
  245. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.en.txt +29 -0
  246. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.zh.txt +29 -0
  247. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.en.txt +77 -0
  248. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.zh.txt +77 -0
  249. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.en.txt +109 -0
  250. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.zh.txt +109 -0
  251. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.en.txt +23 -0
  252. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.zh.txt +23 -0
  253. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.en.txt +42 -0
  254. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.zh.txt +42 -0
  255. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.en.txt +55 -0
  256. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.zh.txt +55 -0
  257. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.en.txt +49 -0
  258. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.zh.txt +52 -0
  259. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.en.txt +37 -0
  260. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.zh.txt +37 -0
  261. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.en.txt +28 -0
  262. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.zh.txt +28 -0
  263. 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
  264. 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
  265. 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
  266. 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
  267. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.en.txt +34 -0
  268. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.zh.txt +34 -0
  269. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.en.txt +18 -0
  270. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.zh.txt +13 -0
  271. 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
  272. 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
  273. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.en.txt +28 -0
  274. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.zh.txt +42 -0
  275. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.en.txt +35 -0
  276. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.zh.txt +35 -0
  277. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.en.txt +21 -0
  278. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.zh.txt +21 -0
  279. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.en.txt +39 -0
  280. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.zh.txt +39 -0
  281. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.en.txt +49 -0
  282. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.zh.txt +48 -0
  283. 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
  284. 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
  285. 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
  286. 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
  287. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.en.txt +48 -0
  288. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.zh.txt +46 -0
  289. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/plan-drama-assets.md +7 -0
  290. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/codex-contracts.md +14 -0
  291. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/comfly-provider.md +12 -0
  292. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/controlled-vocabulary.json +115 -0
  293. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/analyze-drama-source.md +7 -0
  294. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/define-drama-brief.md +8 -0
  295. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/design-drama-bible.md +5 -0
  296. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/humanizer.md +9 -0
  297. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/outline-drama-series.md +5 -0
  298. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/short-drama.md +13 -0
  299. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-director-book.md +6 -0
  300. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-episode.md +6 -0
  301. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/director-composition.md +794 -0
  302. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-deliver-drama.md +5 -0
  303. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-drama-timeline.md +22 -0
  304. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/remotion-best-practices.md +12 -0
  305. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing-workflow.md +56 -0
  306. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/feature-completeness.md +111 -0
  307. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/configure-generation-providers.md +17 -0
  308. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/design-drama-audio.md +11 -0
  309. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/drama-generation-service.md +13 -0
  310. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-drama-videos.md +9 -0
  311. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-storyboard-images.md +11 -0
  312. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/monitor-drama-tasks.md +15 -0
  313. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/transform-drama-media.md +9 -0
  314. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/write-drama-video-prompts.md +50 -0
  315. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/market-report.schema.json +46 -0
  316. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/methodology.md +24 -0
  317. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market.md +47 -0
  318. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market/market-inspiration.schema.json +109 -0
  319. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market.md +15 -0
  320. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/module-map.json +595 -0
  321. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/music-catalog-providers.md +16 -0
  322. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/manage-drama-projects.md +11 -0
  323. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/orchestrate-short-drama.md +20 -0
  324. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/recover-drama-pipeline.md +5 -0
  325. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/short-drama-skill-index.md +29 -0
  326. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/use-short-drama-studio.md +15 -0
  327. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/pipeline.md +85 -0
  328. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/project-spec-v1.md +217 -0
  329. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/prompt-skill-index.md +62 -0
  330. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/recreation/publish-drama-references/litterbox.md +5 -0
  331. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-script.md +7 -0
  332. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-shots.md +39 -0
  333. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/runninghub-provider.md +33 -0
  334. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/starrouter-provider.md +53 -0
  335. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/build-drama-storyboard.md +13 -0
  336. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/design-fight-video.md +19 -0
  337. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/action-previz.md +39 -0
  338. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/direction-contract.md +96 -0
  339. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/weapons-vfx.md +23 -0
  340. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz.md +15 -0
  341. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/generate-blender-previz.md +20 -0
  342. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-drama-production.md +21 -0
  343. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-shot-continuity.md +15 -0
  344. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/revise-drama-storyboards.md +5 -0
  345. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/usage-guide.md +107 -0
  346. package/skills/using-vvicat-ai-short-studio-cli/references/special-workflows.md +2 -2
  347. package/dist/auth/login-provider.d.ts +0 -2
  348. package/dist/auth/login-provider.js +0 -3
  349. package/dist/commands/canvas/node/quote.d.ts +0 -17
  350. package/dist/commands/canvas/node/quote.js +0 -13
  351. package/dist/commands/config/ai-provider/capabilities.d.ts +0 -60
  352. package/dist/commands/config/ai-provider/capabilities.js +0 -124
  353. package/dist/commands/config/ai-provider/get.d.ts +0 -22
  354. package/dist/commands/config/ai-provider/get.js +0 -21
  355. package/dist/commands/config/ai-provider/list.d.ts +0 -21
  356. package/dist/commands/config/ai-provider/list.js +0 -19
  357. package/dist/commands/config/ai-provider/models.d.ts +0 -22
  358. package/dist/commands/config/ai-provider/models.js +0 -21
  359. package/dist/commands/config/ai-provider/set.d.ts +0 -41
  360. package/dist/commands/config/ai-provider/set.js +0 -65
  361. package/dist/commands/config/ai-provider/test.d.ts +0 -25
  362. package/dist/commands/config/ai-provider/test.js +0 -24
  363. package/dist/domain/ai-provider-capabilities.d.ts +0 -109
  364. package/dist/domain/ai-provider-capabilities.js +0 -180
  365. package/dist/domain/ai-provider-command-helpers.d.ts +0 -27
  366. package/dist/domain/ai-provider-command-helpers.js +0 -55
  367. package/skills/using-vvicat-ai-short-studio-cli/references/b-roll-and-screen.md +0 -9
  368. package/skills/using-vvicat-ai-short-studio-cli/references/caption-and-graphics-direction.md +0 -11
  369. package/skills/using-vvicat-ai-short-studio-cli/references/composition-and-shot-review.md +0 -17
  370. package/skills/using-vvicat-ai-short-studio-cli/references/craft-index.md +0 -20
  371. package/skills/using-vvicat-ai-short-studio-cli/references/drama-canvas.md +0 -19
  372. package/skills/using-vvicat-ai-short-studio-cli/references/format-relationships.md +0 -15
  373. package/skills/using-vvicat-ai-short-studio-cli/references/h3-prompts.md +0 -7
  374. package/skills/using-vvicat-ai-short-studio-cli/references/image-and-reference-direction.md +0 -9
  375. package/skills/using-vvicat-ai-short-studio-cli/references/licensed-music.md +0 -9
  376. package/skills/using-vvicat-ai-short-studio-cli/references/licenses/oh-my-short-drama-MIT.txt +0 -21
  377. package/skills/using-vvicat-ai-short-studio-cli/references/licenses/short-drama-MIT.txt +0 -21
  378. package/skills/using-vvicat-ai-short-studio-cli/references/media-provenance-and-review.md +0 -22
  379. package/skills/using-vvicat-ai-short-studio-cli/references/paid-plan.md +0 -7
  380. package/skills/using-vvicat-ai-short-studio-cli/references/production-specialties.md +0 -25
  381. package/skills/using-vvicat-ai-short-studio-cli/references/recreation.md +0 -21
  382. package/skills/using-vvicat-ai-short-studio-cli/references/reference-analysis-and-timing.md +0 -19
  383. package/skills/using-vvicat-ai-short-studio-cli/references/remotion-editing.md +0 -18
  384. package/skills/using-vvicat-ai-short-studio-cli/references/shot-production.md +0 -9
  385. package/skills/using-vvicat-ai-short-studio-cli/references/sound-and-captions.md +0 -7
  386. package/skills/using-vvicat-ai-short-studio-cli/references/sources.md +0 -6
  387. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/canvas-production.md +0 -9
  388. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/guide.md +0 -7
  389. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/index.md +0 -13
  390. package/skills/using-vvicat-ai-short-studio-cli/references/video-and-performance-direction.md +0 -9
  391. package/skills/using-vvicat-ai-short-studio-cli/references/voice-and-sound-direction.md +0 -9
  392. package/skills/using-vvicat-ai-short-studio-cli/references/writing-polish.md +0 -15
  393. /package/skills/using-vvicat-ai-short-studio-cli/references/{licenses/humanizer-MIT.txt → short-drama/assets/modules/humanizer/LICENSE} +0 -0
  394. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/compliance-checklist.md +0 -0
  395. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/genre-guide.md +0 -0
  396. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/hook-design.md +0 -0
  397. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/opening-rules.md +0 -0
  398. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/paywall-design.md +0 -0
  399. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/rhythm-curve.md +0 -0
  400. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/satisfaction-matrix.md +0 -0
  401. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/villain-design.md +0 -0
@@ -8,10 +8,6 @@ export default class TaskWait extends BaseCommand {
8
8
  task: Flags.string({ description: '任务 ID,可重复指定以批量等待', multiple: true }),
9
9
  concurrency: Flags.integer({ description: '批量轮询并发数', default: 4, min: 1, max: 16 }),
10
10
  interval: Flags.integer({ default: 1000 }),
11
- 'max-wait-ms': Flags.integer({
12
- description: '单次 waitTask 最大等待毫秒数;0 表示不超时(保留旧行为)。',
13
- default: 0,
14
- }),
15
11
  };
16
12
  async run() {
17
13
  const { args, flags } = await this.parse(TaskWait);
@@ -19,8 +15,7 @@ export default class TaskWait extends BaseCommand {
19
15
  if (!taskIds.length)
20
16
  throw new Error('请提供 taskId 或至少一个 --task');
21
17
  const { api } = await commandApi(flags);
22
- const maxWaitMs = flags['max-wait-ms'] > 0 ? flags['max-wait-ms'] : Number.POSITIVE_INFINITY;
23
- const tasks = await mapConcurrent(taskIds, flags.concurrency, async (taskId) => await api.waitTask(taskId, flags.interval, { maxWaitMs }));
18
+ const tasks = await mapConcurrent(taskIds, flags.concurrency, async (taskId) => await api.waitTask(taskId, flags.interval));
24
19
  this.print(tasks.length === 1 ? tasks[0] : { tasks });
25
20
  if (tasks.some((task) => task.status !== 'completed'))
26
21
  this.error('部分任务未成功完成', { exit: 8 });
@@ -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;
@@ -118,6 +113,7 @@ export declare class VvicatApi {
118
113
  x?: number;
119
114
  y?: number;
120
115
  title?: string;
116
+ assetId?: string;
121
117
  config?: JsonObject;
122
118
  }): Promise<JsonObject>;
123
119
  updateNode(projectId: string, nodeId: string, config: JsonObject): Promise<JsonObject>;
@@ -131,25 +127,10 @@ export declare class VvicatApi {
131
127
  targetHandle: string;
132
128
  }): Promise<JsonObject>;
133
129
  disconnect(projectId: string, edgeId: string): Promise<JsonObject>;
134
- runNode(projectId: string, nodeId: string): Promise<CanvasNodeRunResponse>;
135
- quoteNode(projectId: string, nodeId: string): Promise<{
136
- quote: JsonObject;
137
- }>;
130
+ runNode(projectId: string, nodeId: string): Promise<JsonObject>;
138
131
  listAssets(projectId: string, query?: string): Promise<JsonObject>;
139
132
  asset(projectId: string, assetId: string): Promise<JsonObject>;
140
133
  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
134
  uploadAsset(projectId: string, formData: FormData): Promise<JsonObject>;
154
135
  task(taskId: string): Promise<{
155
136
  task: JsonObject & {
@@ -157,46 +138,11 @@ export declare class VvicatApi {
157
138
  };
158
139
  }>;
159
140
  cancelTask(taskId: string): Promise<JsonObject>;
160
- waitTask(taskId: string, interval?: number, options?: {
161
- maxWaitMs?: number;
162
- signal?: AbortSignal;
163
- }): Promise<JsonObject & {
141
+ waitTask(taskId: string, interval?: number): Promise<JsonObject & {
164
142
  status: string;
165
143
  }>;
166
144
  config(): Promise<JsonObject>;
167
145
  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
146
  raw(path: string, options?: ApiRequestOptions): Promise<unknown>;
201
147
  }
202
148
  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) {
@@ -219,12 +220,16 @@ export class VvicatApi {
219
220
  throw new Error(`未知节点类型:${input.kind}`);
220
221
  const config = { ...definition.defaultConfig, ...input.config };
221
222
  validateConfigSchema(definition, input.config, config);
223
+ if (input.assetId && !ASSET_BOUND_NODE_KINDS.has(definition.kind)) {
224
+ throw new Error('--asset-id 仅适用于 image、video、audio 节点');
225
+ }
222
226
  const node = {
223
227
  id: randomUUID(),
224
228
  kind: input.kind,
225
229
  title: input.title || definition.title,
226
230
  x: input.x ?? 0,
227
231
  y: input.y ?? 0,
232
+ ...(input.assetId ? { refType: 'GlobalCreativeAsset', refId: input.assetId } : {}),
228
233
  data: { schemaVersion: 1, config },
229
234
  };
230
235
  return this.patchCanvas(projectId, {
@@ -305,9 +310,6 @@ export class VvicatApi {
305
310
  runNode(projectId, nodeId) {
306
311
  return this.client.request(`/api/projects/${projectId}/canvas/nodes/${nodeId}/execute`, { method: 'POST' });
307
312
  }
308
- quoteNode(projectId, nodeId) {
309
- return this.client.request(`/api/projects/${projectId}/canvas/nodes/${nodeId}/quote`);
310
- }
311
313
  listAssets(projectId, query = '') {
312
314
  return this.client.request(`/api/projects/${projectId}/canvas/assets${query ? `?${query}` : ''}`);
313
315
  }
@@ -319,21 +321,9 @@ export class VvicatApi {
319
321
  method: 'PATCH', body: { selectedVersionId: versionId },
320
322
  });
321
323
  }
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
324
  uploadAsset(projectId, formData) {
335
325
  formData.set('sourceProjectId', projectId);
336
- return this.client.request('/api/assets/upload', { method: 'POST', body: formData });
326
+ return this.client.request('/api/asset-hub/creative-assets/upload', { method: 'POST', body: formData });
337
327
  }
338
328
  task(taskId) {
339
329
  return this.client.request(`/api/tasks/${taskId}`);
@@ -342,26 +332,11 @@ export class VvicatApi {
342
332
  cancelTask(taskId) {
343
333
  return this.client.request(`/api/tasks/${taskId}`, { method: 'DELETE' });
344
334
  }
345
- // waitTask 只负责轮询,不做任何重试 / cancel 决策。retry 与 cancel 由调用方
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();
335
+ async waitTask(taskId, interval = 1_000) {
350
336
  while (true) {
351
- if (options.signal?.aborted) {
352
- throw new Error('wait aborted');
353
- }
354
337
  const { task } = await this.task(taskId);
355
338
  if (['completed', 'failed', 'canceled', 'dismissed'].includes(task.status))
356
339
  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
340
  await this.sleep(interval);
366
341
  }
367
342
  }
@@ -370,41 +345,10 @@ export class VvicatApi {
370
345
  return this.client.request('/api/user/api-config?redactSecrets=1');
371
346
  }
372
347
  updateConfig(input) {
373
- if (Object.hasOwn(input, 'providers') || Object.hasOwn(input, 'models') || Object.hasOwn(input, 'workflowConcurrency')) {
374
- throw new Error('供应商、模型目录和工作流并发只能由管理员维护');
375
- }
348
+ if (Object.hasOwn(input, 'providers') || Object.hasOwn(input, 'models'))
349
+ throw new Error('供应商和模型目录只能由管理员维护');
376
350
  return this.client.request('/api/user/api-config', { method: 'PUT', body: input });
377
351
  }
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
352
  raw(path, options) {
409
353
  return this.client.request(path, options);
410
354
  }
@@ -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>;
@@ -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
- }
@@ -2,7 +2,6 @@ export interface BootstrapConfig {
2
2
  cli: {
3
3
  packageName: string;
4
4
  latestVersion: string;
5
- minCliVersion?: string;
6
5
  };
7
6
  supabase: {
8
7
  url: string;
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, LEGACY_SKILL_NAMES, defaultSkillsRoot, normalizeSkillsRoot, } from './skill-manager.js';
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: '主 Skill 的根目录', exclusive: ['directory'] }),
7
- skill: Flags.string({ options: ['all', ...BUNDLED_SKILL_NAMES, ...LEGACY_SKILL_NAMES], default: 'all', description: '要管理的 Skill;short-drama/humanizer 为弃用别名' }),
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
- if (LEGACY_SKILL_NAMES.includes(skill)) {
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: "skipped";
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: "unchanged";
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, lstat, mkdir, readFile, readdir, rename, rm, writeFile } from 'node:fs/promises';
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 directDirectory = installed && (await lstat(target)).isDirectory();
27
- const manifest = directDirectory ? await readManifest(target) : null;
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 && !extraEntries && manifest.packageVersion === packageVersion
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 && (extraEntries || installedChecksum !== manifest.checksum)),
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 { ...await statusFor(BUNDLED_SKILL_NAMES[0], target), legacySkills: await legacyStatuses(dirname(target), false) };
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
- const current = results.every((item) => item.current);
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, legacySkills: await legacyStatuses(root, false) };
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
- const result = await installOne(name, input.target);
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, legacySkills: await legacyStatuses(dirname(target), false) };
150
- const result = current.current ? { action: 'unchanged', ...current } : { action: current.installed ? 'updated' : 'installed', ...await installOne(name, target) };
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], ...result, allCurrent: result.current };
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 lstat(path).then(() => true, () => false);
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.97",
3
+ "version": "0.1.99",
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 && node scripts/smoke-remote.mjs",
37
- "release:ci": "npm test && npm run typecheck && node scripts/publish.mjs --tag latest --verify && node scripts/smoke-remote.mjs",
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": {