@aswless_854771076/ai_short_studio_cli 0.1.98 → 0.1.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (405) hide show
  1. package/README.md +15 -313
  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/update.d.ts +0 -1
  60. package/dist/commands/skill/install.d.ts +0 -1
  61. package/dist/commands/skill/install.js +0 -1
  62. package/dist/commands/skill/path.d.ts +0 -1
  63. package/dist/commands/skill/path.js +0 -1
  64. package/dist/commands/skill/status.d.ts +0 -1
  65. package/dist/commands/skill/status.js +0 -1
  66. package/dist/commands/task/cancel.d.ts +0 -1
  67. package/dist/commands/task/get.d.ts +0 -1
  68. package/dist/commands/task/wait.d.ts +0 -2
  69. package/dist/commands/task/wait.js +1 -6
  70. package/dist/domain/vvicat-api.d.ts +3 -63
  71. package/dist/domain/vvicat-api.js +9 -74
  72. package/dist/output/formatter.d.ts +0 -11
  73. package/dist/output/formatter.js +0 -20
  74. package/dist/preflight.d.ts +0 -1
  75. package/dist/preflight.js +1 -14
  76. package/dist/skill/command-flags.js +4 -7
  77. package/dist/skill/skill-manager.d.ts +2 -75
  78. package/dist/skill/skill-manager.js +15 -60
  79. package/package.json +3 -4
  80. package/scripts/postinstall.mjs +12 -7
  81. package/skills/using-vvicat-ai-short-studio-cli/SKILL.md +67 -27
  82. package/skills/using-vvicat-ai-short-studio-cli/references/commands/canvas.md +4 -3
  83. package/skills/using-vvicat-ai-short-studio-cli/references/commands/project.md +2 -26
  84. package/skills/using-vvicat-ai-short-studio-cli/references/commands.md +2 -2
  85. package/skills/using-vvicat-ai-short-studio-cli/references/editing-delivery.md +1 -1
  86. package/skills/using-vvicat-ai-short-studio-cli/references/h3-video-delivery.md +1 -1
  87. package/skills/using-vvicat-ai-short-studio-cli/references/humanizer/humanizer.md +9 -0
  88. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/SKILL.md +447 -0
  89. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/brief.md +93 -0
  90. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/project-files.md +246 -0
  91. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/reference-video.md +266 -0
  92. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/script-and-time.md +253 -0
  93. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/creation/transformations.md +141 -0
  94. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/distribution.md +176 -0
  95. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/local-tools.md +411 -0
  96. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/model-and-provider.md +275 -0
  97. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/environment/profile.md +286 -0
  98. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/asset-and-shot-preproduction.md +193 -0
  99. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/b-roll.md +94 -0
  100. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/caption-tracking.md +125 -0
  101. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/captions.md +252 -0
  102. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/conversation-images.md +218 -0
  103. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-base-prompt-writing.md +222 -0
  104. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/h3-reference-prompt-writing.md +341 -0
  105. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/examples/image-direction.md +123 -0
  106. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/generated-dependencies.md +38 -0
  107. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/graphic-compositions.md +85 -0
  108. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/h3-prompt-writing.md +54 -0
  109. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/image-direction.md +95 -0
  110. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/motion-graphics.md +68 -0
  111. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/recreation-policy.md +51 -0
  112. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/screen-demonstrations.md +51 -0
  113. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/shot-production-contracts.md +161 -0
  114. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/sound-mix.md +76 -0
  115. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/video-direction.md +433 -0
  116. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-and-performance.md +224 -0
  117. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/craft/voice-direction.md +99 -0
  118. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/narration-led-demo.md +87 -0
  119. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/presenter-led-explainer.md +160 -0
  120. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/ranking-listicle.md +71 -0
  121. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/reference-recreation-canvas.md +8 -0
  122. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama-workflow.md +165 -0
  123. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/short-drama.md +88 -0
  124. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/street-interview.md +92 -0
  125. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/talking-head.md +82 -0
  126. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/formats/two-person-podcast.md +101 -0
  127. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/playbooks/index.md +77 -0
  128. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/audio-presentation.md +49 -0
  129. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/authoring.md +228 -0
  130. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/browser-capture.md +112 -0
  131. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/builds.md +330 -0
  132. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-authoring.md +156 -0
  133. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/caption-presentation.md +66 -0
  134. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-design.md +217 -0
  135. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-sharing.md +150 -0
  136. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/component-visuals.md +152 -0
  137. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/detail.svrun +8 -0
  138. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/direction.svs +14 -0
  139. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/look.svs +6 -0
  140. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/material.svrun +5 -0
  141. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svml +73 -0
  142. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/production.svrun +5 -0
  143. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/examples/visuals.ts +62 -0
  144. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/fonts-and-text.md +138 -0
  145. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/image-operations.md +102 -0
  146. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/index.md +73 -0
  147. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media-presentation.md +111 -0
  148. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/media.md +246 -0
  149. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/performance.md +114 -0
  150. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/prompt-kits.md +165 -0
  151. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/rendering.md +141 -0
  152. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/review.md +211 -0
  153. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/runs.md +151 -0
  154. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/script-syntax.md +236 -0
  155. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/snapshots.md +90 -0
  156. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/sound.md +75 -0
  157. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/source-syntax.md +163 -0
  158. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/spatial.md +189 -0
  159. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio-companions.md +186 -0
  160. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/studio.md +249 -0
  161. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/system.md +169 -0
  162. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timeline.md +74 -0
  163. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/timing.md +96 -0
  164. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/track-authoring.md +215 -0
  165. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/tracks.md +67 -0
  166. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/video-downloads.md +47 -0
  167. package/skills/using-vvicat-ai-short-studio-cli/references/hypit/production/vocabulary.md +119 -0
  168. package/skills/using-vvicat-ai-short-studio-cli/references/project-and-canvas.md +1 -1
  169. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/README.md +11 -0
  170. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/SKILL.md +102 -0
  171. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/art-styles.json +585 -0
  172. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-images.md +11 -0
  173. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles/character-profile-output.schema.json +99 -0
  174. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-character-profiles.md +7 -0
  175. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-drama-art-style.md +9 -0
  176. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-prop-assets.md +11 -0
  177. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/generate-scene-assets.md +13 -0
  178. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-art-styles.md +9 -0
  179. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/manage-drama-assets.md +9 -0
  180. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.en.txt +24 -0
  181. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/analyze-drama-source/prompts/source_analysis.zh.txt +24 -0
  182. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.en.txt +61 -0
  183. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_acting_direction.zh.txt +79 -0
  184. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.en.txt +101 -0
  185. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_cinematographer.zh.txt +150 -0
  186. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.en.txt +114 -0
  187. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_detail.zh.txt +89 -0
  188. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.en.txt +114 -0
  189. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/agent_storyboard_plan.zh.txt +389 -0
  190. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.en.txt +40 -0
  191. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/build-drama-storyboard/prompts/professional_storyboard.zh.txt +40 -0
  192. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.en.txt +24 -0
  193. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/define-drama-brief/prompts/drama_brief.zh.txt +24 -0
  194. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.en.txt +19 -0
  195. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_description.zh.txt +19 -0
  196. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.en.txt +26 -0
  197. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/character_voice_recommend.zh.txt +26 -0
  198. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.en.txt +33 -0
  199. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/music_track_design.zh.txt +33 -0
  200. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.en.txt +36 -0
  201. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-audio/prompts/voice_analysis.zh.txt +36 -0
  202. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.en.txt +33 -0
  203. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/design-drama-bible/prompts/ai_story_expand.zh.txt +33 -0
  204. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.en.txt +26 -0
  205. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/agent_character_visual.zh.txt +26 -0
  206. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.en.txt +21 -0
  207. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_asset_sheet.zh.txt +21 -0
  208. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.en.txt +12 -0
  209. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_create.zh.txt +12 -0
  210. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.en.txt +13 -0
  211. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_description_update.zh.txt +13 -0
  212. 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
  213. 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
  214. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.en.txt +15 -0
  215. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_modify.zh.txt +15 -0
  216. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.en.txt +14 -0
  217. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-images/prompts/character_regenerate.zh.txt +14 -0
  218. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.en.txt +50 -0
  219. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-character-profiles/prompts/agent_character_profile.zh.txt +50 -0
  220. 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
  221. 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
  222. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.en.txt +67 -0
  223. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-drama-art-style/prompts/config_generation.zh.txt +67 -0
  224. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.en.txt +14 -0
  225. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_description_update.zh.txt +14 -0
  226. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.en.txt +16 -0
  227. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/prop_generate.zh.txt +16 -0
  228. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.en.txt +17 -0
  229. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-prop-assets/prompts/select_prop.zh.txt +17 -0
  230. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.en.txt +11 -0
  231. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_create.zh.txt +11 -0
  232. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.en.txt +14 -0
  233. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_description_update.zh.txt +14 -0
  234. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.en.txt +13 -0
  235. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_modify.zh.txt +13 -0
  236. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.en.txt +12 -0
  237. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/location_regenerate.zh.txt +12 -0
  238. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.en.txt +19 -0
  239. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/scene_asset_sheet.zh.txt +19 -0
  240. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.en.txt +18 -0
  241. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-scene-assets/prompts/select_location.zh.txt +17 -0
  242. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.en.txt +29 -0
  243. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_enhance.zh.txt +29 -0
  244. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.en.txt +77 -0
  245. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_grid_image.zh.txt +77 -0
  246. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.en.txt +109 -0
  247. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/generate-storyboard-images/prompts/panel_storyboard_image.zh.txt +109 -0
  248. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.en.txt +23 -0
  249. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/ideate-drama-from-market/prompts/market_inspiration.zh.txt +23 -0
  250. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.en.txt +42 -0
  251. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/outline-drama-series/prompts/episode_split.zh.txt +42 -0
  252. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.en.txt +55 -0
  253. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-assets/prompts/asset_analysis.zh.txt +55 -0
  254. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.en.txt +49 -0
  255. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-drama-production/prompts/production_plan.zh.txt +52 -0
  256. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.en.txt +37 -0
  257. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/plan-shot-continuity/prompts/continuity_plan.zh.txt +37 -0
  258. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.en.txt +28 -0
  259. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/review-drama-script/prompts/review_drama_script.zh.txt +28 -0
  260. 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
  261. 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
  262. 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
  263. 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
  264. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.en.txt +34 -0
  265. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/agent_storyboard_insert.zh.txt +34 -0
  266. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.en.txt +18 -0
  267. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/revise-drama-storyboards/prompts/storyboard_edit.zh.txt +13 -0
  268. 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
  269. 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
  270. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.en.txt +28 -0
  271. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/transform-drama-media/prompts/image_prompt_modify.zh.txt +42 -0
  272. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.en.txt +35 -0
  273. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-director-book/prompts/director_book.zh.txt +35 -0
  274. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.en.txt +21 -0
  275. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/agent_clip.zh.txt +21 -0
  276. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.en.txt +39 -0
  277. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-episode/prompts/screenplay_conversion.zh.txt +39 -0
  278. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.en.txt +49 -0
  279. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/h3_video.zh.txt +48 -0
  280. 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
  281. 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
  282. 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
  283. 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
  284. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.en.txt +48 -0
  285. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/modules/write-drama-video-prompts/prompts/seedance2_video.zh.txt +46 -0
  286. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/assets/plan-drama-assets.md +7 -0
  287. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/codex-contracts.md +14 -0
  288. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/comfly-provider.md +12 -0
  289. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/controlled-vocabulary.json +115 -0
  290. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/analyze-drama-source.md +7 -0
  291. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/define-drama-brief.md +8 -0
  292. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/design-drama-bible.md +5 -0
  293. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/humanizer.md +9 -0
  294. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/outline-drama-series.md +5 -0
  295. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/short-drama.md +13 -0
  296. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-director-book.md +6 -0
  297. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/creation/write-drama-episode.md +6 -0
  298. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/director-composition.md +794 -0
  299. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-deliver-drama.md +5 -0
  300. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/edit-drama-timeline.md +22 -0
  301. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing/remotion-best-practices.md +12 -0
  302. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/editing-workflow.md +56 -0
  303. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/feature-completeness.md +111 -0
  304. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/configure-generation-providers.md +17 -0
  305. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/design-drama-audio.md +11 -0
  306. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/drama-generation-service.md +13 -0
  307. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-drama-videos.md +9 -0
  308. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/generate-storyboard-images.md +11 -0
  309. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/monitor-drama-tasks.md +15 -0
  310. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/transform-drama-media.md +9 -0
  311. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/generation/write-drama-video-prompts.md +50 -0
  312. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/market-report.schema.json +46 -0
  313. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market/methodology.md +24 -0
  314. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/analyze-drama-market.md +47 -0
  315. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market/market-inspiration.schema.json +109 -0
  316. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/market/ideate-drama-from-market.md +15 -0
  317. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/module-map.json +595 -0
  318. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/music-catalog-providers.md +16 -0
  319. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/manage-drama-projects.md +11 -0
  320. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/orchestrate-short-drama.md +20 -0
  321. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/recover-drama-pipeline.md +5 -0
  322. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/short-drama-skill-index.md +29 -0
  323. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/operations/use-short-drama-studio.md +15 -0
  324. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/pipeline.md +85 -0
  325. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/project-spec-v1.md +217 -0
  326. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/prompt-skill-index.md +62 -0
  327. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/recreation/publish-drama-references/litterbox.md +5 -0
  328. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-script.md +7 -0
  329. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/review/review-drama-shots.md +39 -0
  330. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/runninghub-provider.md +33 -0
  331. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/starrouter-provider.md +53 -0
  332. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/build-drama-storyboard.md +13 -0
  333. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/design-fight-video.md +19 -0
  334. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/action-previz.md +39 -0
  335. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/direction-contract.md +96 -0
  336. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz/weapons-vfx.md +23 -0
  337. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/direct-blender-previz.md +15 -0
  338. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/generate-blender-previz.md +20 -0
  339. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-drama-production.md +21 -0
  340. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/plan-shot-continuity.md +15 -0
  341. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/storyboard/revise-drama-storyboards.md +5 -0
  342. package/skills/using-vvicat-ai-short-studio-cli/references/short-drama/usage-guide.md +107 -0
  343. package/skills/using-vvicat-ai-short-studio-cli/references/special-workflows.md +2 -8
  344. package/skills/using-vvicat-ai-short-studio-cli/references/troubleshooting.md +0 -1
  345. package/dist/auth/login-provider.d.ts +0 -2
  346. package/dist/auth/login-provider.js +0 -3
  347. package/dist/commands/canvas/node/quote.d.ts +0 -17
  348. package/dist/commands/canvas/node/quote.js +0 -13
  349. package/dist/commands/config/ai-provider/capabilities.d.ts +0 -60
  350. package/dist/commands/config/ai-provider/capabilities.js +0 -124
  351. package/dist/commands/config/ai-provider/get.d.ts +0 -22
  352. package/dist/commands/config/ai-provider/get.js +0 -21
  353. package/dist/commands/config/ai-provider/list.d.ts +0 -21
  354. package/dist/commands/config/ai-provider/list.js +0 -19
  355. package/dist/commands/config/ai-provider/models.d.ts +0 -22
  356. package/dist/commands/config/ai-provider/models.js +0 -21
  357. package/dist/commands/config/ai-provider/set.d.ts +0 -41
  358. package/dist/commands/config/ai-provider/set.js +0 -65
  359. package/dist/commands/config/ai-provider/test.d.ts +0 -25
  360. package/dist/commands/config/ai-provider/test.js +0 -24
  361. package/dist/commands/project/provider/get.d.ts +0 -15
  362. package/dist/commands/project/provider/get.js +0 -12
  363. package/dist/commands/project/provider/set.d.ts +0 -16
  364. package/dist/commands/project/provider/set.js +0 -18
  365. package/dist/commands/project/provider/test.d.ts +0 -15
  366. package/dist/commands/project/provider/test.js +0 -12
  367. package/dist/domain/ai-provider-capabilities.d.ts +0 -109
  368. package/dist/domain/ai-provider-capabilities.js +0 -180
  369. package/dist/domain/ai-provider-command-helpers.d.ts +0 -27
  370. package/dist/domain/ai-provider-command-helpers.js +0 -55
  371. package/skills/using-vvicat-ai-short-studio-cli/references/b-roll-and-screen.md +0 -9
  372. package/skills/using-vvicat-ai-short-studio-cli/references/caption-and-graphics-direction.md +0 -11
  373. package/skills/using-vvicat-ai-short-studio-cli/references/composition-and-shot-review.md +0 -17
  374. package/skills/using-vvicat-ai-short-studio-cli/references/craft-index.md +0 -20
  375. package/skills/using-vvicat-ai-short-studio-cli/references/drama-canvas.md +0 -19
  376. package/skills/using-vvicat-ai-short-studio-cli/references/format-relationships.md +0 -15
  377. package/skills/using-vvicat-ai-short-studio-cli/references/h3-prompts.md +0 -7
  378. package/skills/using-vvicat-ai-short-studio-cli/references/image-and-reference-direction.md +0 -9
  379. package/skills/using-vvicat-ai-short-studio-cli/references/licensed-music.md +0 -9
  380. package/skills/using-vvicat-ai-short-studio-cli/references/licenses/oh-my-short-drama-MIT.txt +0 -21
  381. package/skills/using-vvicat-ai-short-studio-cli/references/licenses/short-drama-MIT.txt +0 -21
  382. package/skills/using-vvicat-ai-short-studio-cli/references/media-provenance-and-review.md +0 -22
  383. package/skills/using-vvicat-ai-short-studio-cli/references/paid-plan.md +0 -7
  384. package/skills/using-vvicat-ai-short-studio-cli/references/production-specialties.md +0 -25
  385. package/skills/using-vvicat-ai-short-studio-cli/references/recreation.md +0 -21
  386. package/skills/using-vvicat-ai-short-studio-cli/references/reference-analysis-and-timing.md +0 -19
  387. package/skills/using-vvicat-ai-short-studio-cli/references/remotion-editing.md +0 -18
  388. package/skills/using-vvicat-ai-short-studio-cli/references/shot-production.md +0 -9
  389. package/skills/using-vvicat-ai-short-studio-cli/references/sound-and-captions.md +0 -7
  390. package/skills/using-vvicat-ai-short-studio-cli/references/sources.md +0 -6
  391. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/canvas-production.md +0 -9
  392. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/guide.md +0 -7
  393. package/skills/using-vvicat-ai-short-studio-cli/references/story-craft/index.md +0 -13
  394. package/skills/using-vvicat-ai-short-studio-cli/references/video-and-performance-direction.md +0 -9
  395. package/skills/using-vvicat-ai-short-studio-cli/references/voice-and-sound-direction.md +0 -9
  396. package/skills/using-vvicat-ai-short-studio-cli/references/writing-polish.md +0 -15
  397. /package/skills/using-vvicat-ai-short-studio-cli/references/{licenses/humanizer-MIT.txt → short-drama/assets/modules/humanizer/LICENSE} +0 -0
  398. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/compliance-checklist.md +0 -0
  399. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/genre-guide.md +0 -0
  400. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/hook-design.md +0 -0
  401. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/opening-rules.md +0 -0
  402. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/paywall-design.md +0 -0
  403. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/rhythm-curve.md +0 -0
  404. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/satisfaction-matrix.md +0 -0
  405. /package/skills/using-vvicat-ai-short-studio-cli/references/{story-craft → short-drama/writing}/villain-design.md +0 -0
@@ -1,25 +1,6 @@
1
1
  import { Args, Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../../base-command.js';
3
3
  import { commandApi, mapConcurrent, projectFlag } from '../../../command-helpers.js';
4
- /**
5
- * P1-2 契约:调用方必须能从 stdout JSON 直接区分
6
- * 「已等待到终态」与「仅提交、仍在服务端排队」。
7
- * 因此每次输出都带 waited / pending / pendingNodeIds / reason,
8
- * 不再允许出现「空 tasks + exit 0」这种伪装成同步完成的输出。
9
- */
10
- export function withWaitState(payload, state) {
11
- const base = payload && typeof payload === 'object' && !Array.isArray(payload)
12
- ? payload
13
- : { result: payload };
14
- const pending = state.pendingNodeIds.length > 0;
15
- return {
16
- ...base,
17
- waited: state.waited,
18
- pending,
19
- ...(pending ? { pendingNodeIds: state.pendingNodeIds } : {}),
20
- ...(state.reason ? { reason: state.reason } : {}),
21
- };
22
- }
23
4
  export default class CanvasNodeRun extends BaseCommand {
24
5
  static args = { nodeId: Args.string({ required: false }) };
25
6
  static flags = {
@@ -29,18 +10,6 @@ export default class CanvasNodeRun extends BaseCommand {
29
10
  concurrency: Flags.integer({ description: '批量提交并发数', default: 4, min: 1, max: 16 }),
30
11
  wait: Flags.boolean({ default: false }),
31
12
  interval: Flags.integer({ default: 1000 }),
32
- 'max-wait-ms': Flags.integer({
33
- description: '单次 waitTask 最大等待毫秒数;0 表示不超时(保留旧行为)。例如 --wait --max-wait-ms 180000 表示 3 分钟超时。',
34
- default: 0,
35
- }),
36
- 'max-attempts': Flags.integer({
37
- description: 'retryable 失败时,最大重新执行节点次数。0=不重试;>0 时配合 --max-wait-ms 使用。',
38
- default: 0,
39
- }),
40
- 'auto-select-version': Flags.boolean({
41
- description: '节点跑完且 task.result 含 assetId/versionId 时,自动调 canvas asset select-version 让下游 cvd 拿到 profile。默认 false,避免误选。',
42
- default: false,
43
- }),
44
13
  };
45
14
  async run() {
46
15
  const { args, flags } = await this.parse(CanvasNodeRun);
@@ -48,126 +17,21 @@ export default class CanvasNodeRun extends BaseCommand {
48
17
  if (!nodeIds.length)
49
18
  throw new Error('请提供 nodeId 或至少一个 --node');
50
19
  const { api } = await commandApi(flags);
51
- // 简化:批量 + retry 的组合会让 race 复杂化。带 --node 多值 + --max-attempts > 0
52
- // 时只对第一个节点生效并打印警告,保持职责简单。
53
- if (flags.wait && flags['max-attempts'] > 0 && nodeIds.length > 1) {
54
- this.log('warn: --max-attempts 仅对单节点生效;批量模式下自动忽略');
55
- }
56
20
  const submissions = await mapConcurrent(nodeIds, flags.concurrency, async (nodeId) => ({
57
21
  nodeId,
58
22
  result: await api.runNode(flags.project, nodeId),
59
23
  }));
60
24
  if (!flags.wait) {
61
- const payload = nodeIds.length === 1 ? submissions[0].result : { submissions };
62
- this.print(withWaitState(payload, { waited: false, pendingNodeIds: nodeIds, reason: '未传 --wait,任务仅已提交,仍在服务端排队' }));
25
+ this.print(nodeIds.length === 1 ? submissions[0].result : { submissions });
63
26
  return;
64
27
  }
65
- const maxWaitMs = flags['max-wait-ms'] > 0 ? flags['max-wait-ms'] : Number.POSITIVE_INFINITY;
66
- // 病灶(P1-2):旧实现用 filter 静默丢掉没有 task.id 的提交项,
67
- // tasks 变成空数组后命令打印 {"tasks": []} 并 exit 0,agent 误以为已同步完成。
68
- // 现在缺 task.id 的节点必须进 pendingNodeIds 并让命令以非零码退出。
69
28
  const tasks = submissions.filter((item) => item.result.task?.id);
70
- const pendingNodeIds = submissions.filter((item) => !item.result.task?.id).map((item) => item.nodeId);
71
- const completed = await mapConcurrent(tasks, flags.concurrency, async (item) => {
72
- let currentSubmission = item.result;
73
- let attempt = 0;
74
- const maxAttempts = flags['max-attempts'] > 0 ? flags['max-attempts'] : 1;
75
- // 职责分离:
76
- // - waitTask 只负责按 interval 轮询并在 maxWaitMs 到达时抛 'wait timeout'。
77
- // - 本循环负责 retry 决策(task.error?.retryable && attempt < maxAttempts 时
78
- // cancel + 重新 runNode 并继续 wait)。
79
- // 关键点:'wait timeout' 不应该被外层 catch 当作任务失败,也不应该触发整批
80
- // mapConcurrent 的 reject(否则 agent 看到 exit 0 + 空输出)。这里把 timeout
81
- // 视为"还在跑",让 while 继续下一轮 wait;只在 task.status === 'failed' 时
82
- // 才根据 retryable 决定是否退。
83
- // eslint-disable-next-line no-constant-condition
84
- while (true) {
85
- attempt += 1;
86
- const taskId = currentSubmission.task?.id;
87
- if (!taskId)
88
- throw new Error(`节点 ${item.nodeId} 未返回 task id`);
89
- let task;
90
- try {
91
- task = (await api.waitTask(taskId, flags.interval, { maxWaitMs }));
92
- }
93
- catch (error) {
94
- if (error instanceof Error && error.message.startsWith('wait timeout')) {
95
- // wait 还没拿到终态:视为任务仍在跑,消耗一次 attempt 后重新 wait。
96
- // 即使 maxAttempts 已耗尽,只要不是真的 failed + retryable,就继续 wait,
97
- // 直到任务真的结束(completed / failed / canceled)。这样长任务在
98
- // 较小 maxWaitMs 下不会突然退出整批 mapConcurrent。
99
- if (attempt > maxAttempts * 8) {
100
- // 防御性兜底:避免无限循环(例如 waitTask 永远拿不到终态)。
101
- // 仅在 attempt 数远超 maxAttempts 时才退,并把 timeout 信息透出。
102
- const err = new Error(`节点 ${item.nodeId} 等待超时(attempt=${attempt})`);
103
- Object.assign(err, { taskId, attempts: attempt });
104
- throw err;
105
- }
106
- continue;
107
- }
108
- throw error;
109
- }
110
- if (task.status === 'completed') {
111
- return { nodeId: item.nodeId, task, attempts: attempt };
112
- }
113
- if (task.status === 'failed' && task.error?.retryable === true && attempt < maxAttempts) {
114
- // 取消旧任务后重新执行节点,再重新跑一次 wait。waitTask 不做 cancel/retry 决策。
115
- try {
116
- await api.cancelTask(taskId);
117
- }
118
- catch { /* 旧任务可能已终态,忽略 */ }
119
- const newSubmission = await api.runNode(flags.project, item.nodeId);
120
- currentSubmission = newSubmission;
121
- continue;
122
- }
123
- return { nodeId: item.nodeId, task, attempts: attempt };
124
- }
125
- });
126
- // 有节点缺 task.id:这些任务确实已提交但 CLI 无从轮询,不能装作等到了。
127
- const incomplete = completed.filter((item) => item.task.status !== 'completed');
128
- const payload = nodeIds.length === 1 && !pendingNodeIds.length
129
- ? completed[0]
130
- : { submissions, tasks: completed };
131
- const pendingReason = pendingNodeIds.length
132
- ? `服务端提交响应缺少 task id,无法轮询:${pendingNodeIds.join(', ')}`
133
- : '';
134
- this.print(withWaitState(payload, {
135
- waited: !pendingNodeIds.length,
136
- pendingNodeIds,
137
- reason: pendingReason,
29
+ const completed = await mapConcurrent(tasks, flags.concurrency, async (item) => ({
30
+ nodeId: item.nodeId,
31
+ task: await api.waitTask(item.result.task.id, flags.interval),
138
32
  }));
139
- if (pendingNodeIds.length)
140
- this.error(`部分节点未返回 task id,任务仍可能在服务端排队:${pendingReason}`, { exit: 8 });
141
- if (incomplete.length)
33
+ this.print(nodeIds.length === 1 ? completed[0]?.task ?? submissions[0].result : { submissions, tasks: completed });
34
+ if (completed.some((item) => item.task.status !== 'completed'))
142
35
  this.error('部分任务未成功完成', { exit: 8 });
143
- // --auto-select-version:节点成功跑完后,若 task.result 含 assetId + versionId,
144
- // 自动调 canvas asset select-version,让下游 cvd 节点能读到 character profile。
145
- // 服务端可能已经物化 resource,但 selectedOutputVersionId 不一定自动 set,所以
146
- // 这里走显式 PATCH;只对 completed 的任务生效,避免在 failed 任务上误选。
147
- if (flags['auto-select-version']) {
148
- const selectedVersions = [];
149
- for (const item of completed) {
150
- if (item.task.status !== 'completed')
151
- continue;
152
- const assetId = item.task.result?.assetId;
153
- const versionId = item.task.result?.versionId;
154
- if (!assetId || !versionId)
155
- continue;
156
- try {
157
- await api.selectAssetVersion(flags.project, assetId, versionId);
158
- selectedVersions.push({ nodeId: item.nodeId, assetId, versionId });
159
- }
160
- catch (error) {
161
- // 选版失败不阻塞主流程;仅 warn。
162
- this.log(`warn: 节点 ${item.nodeId} 自动 select-version 失败:${error instanceof Error ? error.message : String(error)}`);
163
- }
164
- }
165
- if (selectedVersions.length) {
166
- // 在已经 print 过的 completed 输出之外,额外把 selectedVersion 列表输出,
167
- // 让 agent 能立即知道哪个 nodeId 对应哪个 assetId/versionId。
168
- // 不影响默认行为,仅 --auto-select-version=true 时出现。
169
- this.log(`auto-selected versions: ${JSON.stringify(selectedVersions)}`);
170
- }
171
- }
172
36
  }
173
37
  }
@@ -10,7 +10,6 @@ export default class CanvasNodeTypes extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -9,7 +9,6 @@ export default class CanvasNodeUpdateMany extends BaseCommand {
9
9
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  run(): Promise<void>;
15
14
  }
@@ -16,7 +16,6 @@ export default class CanvasNodeUpdate extends BaseCommand {
16
16
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
17
17
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
18
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
19
  };
21
20
  run(): Promise<void>;
22
21
  }
@@ -7,7 +7,6 @@ export default class CanvasSettingsGet extends BaseCommand {
7
7
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
8
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
9
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
10
  };
12
11
  run(): Promise<void>;
13
12
  }
@@ -7,41 +7,17 @@ type CanvasSettingsFlags = {
7
7
  type ReadInput = (file?: string) => Promise<Record<string, unknown>>;
8
8
  export declare function parseSettingFlagValue(value: string): unknown;
9
9
  export declare function buildCanvasSettingsInput(flags: CanvasSettingsFlags, readInput?: ReadInput): Promise<Record<string, unknown>>;
10
- /**
11
- * 服务端把 productionCanvas.version 同时当作画布版本与 settings 乐观锁
12
- * (src/lib/freeform-canvas/settings.ts),而任何画布节点写入都会 +1 这个 version。
13
- * 因此 CLI 不能把「上一步读到的版本号」当成稳定基线:
14
- * - 未显式给 expectedVersion:写前重读一次当前版本,冲突后最多自动重试 1 次;
15
- * - 显式给 expectedVersion(含 --file/stdin 里自带该字段):保持严格乐观锁,
16
- * 绝不静默重试,否则用户主动声明的并发保护会被悄悄绕过。
17
- */
18
- export declare function isVersionConflict(error: unknown): boolean;
19
- export interface CanvasSettingsWriteApi {
20
- canvasSettings(projectId: string): Promise<Record<string, unknown>>;
21
- updateCanvasSettings(projectId: string, input: Record<string, unknown>): Promise<Record<string, unknown>>;
22
- }
23
- export declare function writeCanvasSettingsWithVersionGuard(input: {
24
- api: CanvasSettingsWriteApi;
25
- projectId: string;
26
- input: Record<string, unknown>;
27
- explicitVersion?: number;
28
- }): Promise<{
29
- response: Record<string, unknown>;
30
- retriedAfterConflict: boolean;
31
- }>;
32
10
  export default class CanvasSettingsSet extends BaseCommand {
33
11
  static flags: {
34
12
  project: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
35
13
  field: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
36
14
  value: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
37
15
  file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
38
- 'expected-version': import("@oclif/core/interfaces").OptionFlag<number | undefined, import("@oclif/core/interfaces").CustomOptions>;
39
16
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
40
17
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
41
18
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
42
19
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
43
20
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
44
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
45
21
  };
46
22
  run(): Promise<void>;
47
23
  }
@@ -1,6 +1,5 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../../base-command.js';
3
- import { CliApiError } from '../../../client/errors.js';
4
3
  import { commandApi, projectFlag, readJsonInput } from '../../../command-helpers.js';
5
4
  export function parseSettingFlagValue(value) {
6
5
  const input = value.trim();
@@ -40,49 +39,6 @@ export async function buildCanvasSettingsInput(flags, readInput = readJsonInput)
40
39
  return { values: { [flags.field]: parseSettingFlagValue(flags.value) } };
41
40
  return readInput(flags.file);
42
41
  }
43
- /**
44
- * 服务端把 productionCanvas.version 同时当作画布版本与 settings 乐观锁
45
- * (src/lib/freeform-canvas/settings.ts),而任何画布节点写入都会 +1 这个 version。
46
- * 因此 CLI 不能把「上一步读到的版本号」当成稳定基线:
47
- * - 未显式给 expectedVersion:写前重读一次当前版本,冲突后最多自动重试 1 次;
48
- * - 显式给 expectedVersion(含 --file/stdin 里自带该字段):保持严格乐观锁,
49
- * 绝不静默重试,否则用户主动声明的并发保护会被悄悄绕过。
50
- */
51
- export function isVersionConflict(error) {
52
- return error instanceof CliApiError && error.status === 409;
53
- }
54
- function readSettingsVersion(response) {
55
- const data = response?.data;
56
- const version = data && typeof data === 'object' && !Array.isArray(data)
57
- ? data.version
58
- : undefined;
59
- return typeof version === 'number' ? version : undefined;
60
- }
61
- export async function writeCanvasSettingsWithVersionGuard(input) {
62
- const { api, projectId } = input;
63
- // 显式版本:严格模式,不预读也不重试。
64
- if (input.explicitVersion !== undefined) {
65
- return {
66
- response: await api.updateCanvasSettings(projectId, { ...input.input, expectedVersion: input.explicitVersion }),
67
- retriedAfterConflict: false,
68
- };
69
- }
70
- let expectedVersion = readSettingsVersion(await api.canvasSettings(projectId));
71
- try {
72
- return {
73
- response: await api.updateCanvasSettings(projectId, { ...input.input, expectedVersion }),
74
- retriedAfterConflict: false,
75
- };
76
- }
77
- catch (error) {
78
- if (!isVersionConflict(error))
79
- throw error;
80
- // 写入与预读之间又有别的画布写入推进了版本:重读一次再重试,仅此一次。
81
- expectedVersion = readSettingsVersion(await api.canvasSettings(projectId));
82
- const response = await api.updateCanvasSettings(projectId, { ...input.input, expectedVersion });
83
- return { response, retriedAfterConflict: true };
84
- }
85
- }
86
42
  export default class CanvasSettingsSet extends BaseCommand {
87
43
  static flags = {
88
44
  ...BaseCommand.baseFlags,
@@ -90,25 +46,10 @@ export default class CanvasSettingsSet extends BaseCommand {
90
46
  field: Flags.string({ description: '要更新的设置字段;outputLanguage 支持 pt-BR 等 BCP 47 标签', dependsOn: ['value'], exclusive: ['file'] }),
91
47
  value: Flags.string({ description: '字段值', dependsOn: ['field'], exclusive: ['file'] }),
92
48
  file: Flags.string({ description: '设置 JSON 文件;省略时读取 stdin', exclusive: ['field', 'value'] }),
93
- 'expected-version': Flags.integer({
94
- description: 'settings 乐观锁版本号。省略时 CLI 先读取当前版本再写,遇版本冲突自动重读重试一次(输出中标注 retriedAfterConflict)。显式传入则保持严格乐观锁,不预读、不重试。',
95
- min: 0,
96
- }),
97
49
  };
98
50
  async run() {
99
51
  const { flags } = await this.parse(CanvasSettingsSet);
100
52
  const { api } = await commandApi(flags);
101
- const settingsInput = await buildCanvasSettingsInput(flags);
102
- const inputVersion = typeof settingsInput.expectedVersion === 'number'
103
- ? settingsInput.expectedVersion
104
- : undefined;
105
- const explicitVersion = flags['expected-version'] ?? inputVersion;
106
- const { response, retriedAfterConflict } = await writeCanvasSettingsWithVersionGuard({
107
- api,
108
- projectId: flags.project,
109
- input: settingsInput,
110
- explicitVersion,
111
- });
112
- this.print(retriedAfterConflict ? { ...response, retriedAfterConflict: true } : response);
53
+ this.print(await api.updateCanvasSettings(flags.project, await buildCanvasSettingsInput(flags)));
113
54
  }
114
55
  }
@@ -6,7 +6,6 @@ export default class ConfigGet extends BaseCommand {
6
6
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
7
7
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
9
  };
11
10
  run(): Promise<void>;
12
11
  }
@@ -2,13 +2,11 @@ import { BaseCommand } from '../../base-command.js';
2
2
  export default class ConfigSet extends BaseCommand {
3
3
  static flags: {
4
4
  file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
5
- verify: import("@oclif/core/interfaces").BooleanFlag<boolean>;
6
5
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
6
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
7
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
8
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
9
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
10
  };
13
11
  run(): Promise<void>;
14
12
  }
@@ -1,60 +1,7 @@
1
1
  import { Flags } from '@oclif/core';
2
2
  import { BaseCommand } from '../../base-command.js';
3
3
  import { commandApi, readJsonInput } from '../../command-helpers.js';
4
- // 服务端 GET /api/user/api-config 会自动"修复"无效的 defaultModels;客户端拿到
5
- // success=true 但实际配置可能被覆盖。--verify 在 set 成功后立刻 GET 一次,
6
- // 输出"用户请求值 vs 服务端实际值" diff,让 agent 能看到真相。
7
- // 不影响默认行为;只是给 agent 一个验证工具。
8
4
  export default class ConfigSet extends BaseCommand {
9
- static flags = {
10
- ...BaseCommand.baseFlags,
11
- file: Flags.string({ description: '配置 JSON;省略时读取 stdin' }),
12
- verify: Flags.boolean({
13
- description: 'set 成功后立刻 GET 一次,diff 用户请求值 vs 服务端实际值。默认 false。',
14
- default: false,
15
- }),
16
- };
17
- async run() {
18
- const { flags } = await this.parse(ConfigSet);
19
- const { api } = await commandApi(flags);
20
- const requested = await readJsonInput(flags.file);
21
- const result = await api.updateConfig(requested);
22
- if (!flags.verify) {
23
- this.print(result);
24
- return;
25
- }
26
- // --verify:再 GET 一次,把 effective vs requested diff 出来。
27
- // 服务端会修复 invalid defaultModels / capabilityDefaults,所以 effective
28
- // 可能 ≠ requested。这里**只递归遍历 requested 的 keys**,避免 effective
29
- // 中多出的 models / providers / capabilityDefaults 等造成噪声。
30
- const effective = (await api.config());
31
- const diff = diffJsonRequested(requested, effective, '');
32
- this.print({ requested, effective, diff });
33
- }
34
- }
35
- // 只递归遍历 requested 的 keys;effective 中多余 keys 不输出。
36
- // 这样客户端能直接看到"用户请求的字段"与"服务端实际值"的差异,不会被服务端
37
- // 补充的默认值 / 自动修复字段污染 diff。
38
- function diffJsonRequested(requested, effective, prefix) {
39
- const out = [];
40
- for (const key of Object.keys(requested ?? {})) {
41
- const path = prefix ? `${prefix}.${key}` : key;
42
- const r = (requested ?? {})[key];
43
- const e = (effective ?? {})[key];
44
- if (r === undefined)
45
- continue;
46
- if (e === undefined) {
47
- out.push(`${path}: requested=${JSON.stringify(r)}, effective=<missing>`);
48
- }
49
- else if (isPlainObject(r) && isPlainObject(e)) {
50
- out.push(...diffJsonRequested(r, e, path));
51
- }
52
- else if (JSON.stringify(r) !== JSON.stringify(e)) {
53
- out.push(`${path}: requested=${JSON.stringify(r)}, effective=${JSON.stringify(e)}`);
54
- }
55
- }
56
- return out;
57
- }
58
- function isPlainObject(value) {
59
- return !!value && typeof value === 'object' && !Array.isArray(value);
5
+ static flags = { ...BaseCommand.baseFlags, file: Flags.string({ description: '配置 JSON;省略时读取 stdin' }) };
6
+ async run() { const { flags } = await this.parse(ConfigSet); const { api } = await commandApi(flags); this.print(await api.updateConfig(await readJsonInput(flags.file))); }
60
7
  }
@@ -8,7 +8,6 @@ export default class Preflight extends BaseCommand {
8
8
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
9
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  };
13
12
  run(): Promise<void>;
14
13
  }
@@ -18,15 +18,7 @@ export default class Preflight extends BaseCommand {
18
18
  const bootstrap = await fetchBootstrap(baseUrl);
19
19
  const current = await readCurrentPackageIdentity();
20
20
  const hasUpdate = compareStableVersions(current.version, bootstrap.cli.latestVersion) < 0;
21
- // 服务端声明的最低兼容版本(Phase 1.7 SC3 / D-12/D-13)。
22
- // 低于该版本即说明当前 CLI 与服务端契约不兼容 —— 强制升级(不可跳过,
23
- // 与 hasUpdate 的软提示本质不同)。bump 时机由 cli-contract-gate 与
24
- // CLI-Impact trailer 联动控制(verified-none 无需 bump;deferred 补
25
- // 适配时随适配 PR bump)。
26
- const minimum = bootstrap.cli.minCliVersion;
27
- const forcedUpdate = minimum !== undefined && compareStableVersions(current.version, minimum) < 0;
28
- const shouldUpdate = flags.update || forcedUpdate;
29
- const version = shouldUpdate
21
+ const version = flags.update
30
22
  ? updateCliPackage({ current, latest: bootstrap.cli })
31
23
  : {
32
24
  updated: false,
@@ -8,7 +8,6 @@ export default class ProjectCreate extends BaseCommand {
8
8
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
9
9
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
10
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  };
13
12
  run(): Promise<void>;
14
13
  }
@@ -10,7 +10,6 @@ export default class ProjectDelete extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -9,7 +9,6 @@ export default class ProjectGet extends BaseCommand {
9
9
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  run(): Promise<void>;
15
14
  }
@@ -10,7 +10,6 @@ export default class ProjectList extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -11,7 +11,6 @@ export default class ProjectUpdate extends BaseCommand {
11
11
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
12
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  };
16
15
  run(): Promise<void>;
17
16
  }
@@ -11,7 +11,6 @@ export default class SkillInstall extends BaseCommand {
11
11
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
12
12
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
13
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  };
16
15
  run(): Promise<void>;
17
16
  }
@@ -7,7 +7,6 @@ export default class SkillInstall extends BaseCommand {
7
7
  async run() {
8
8
  const { flags } = await this.parse(SkillInstall);
9
9
  if (flags.directory) {
10
- selectedSkillNames(flags.skill);
11
10
  this.print(await installSkill({ target: flags.directory, force: flags.force }));
12
11
  return;
13
12
  }
@@ -10,7 +10,6 @@ export default class SkillPath extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -7,7 +7,6 @@ export default class SkillPath extends BaseCommand {
7
7
  async run() {
8
8
  const { flags } = await this.parse(SkillPath);
9
9
  if (flags.directory) {
10
- selectedSkillNames(flags.skill);
11
10
  this.print({ path: bundledSkillPath(), target: flags.directory });
12
11
  return;
13
12
  }
@@ -10,7 +10,6 @@ export default class SkillStatus extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -6,7 +6,6 @@ export default class SkillStatus extends BaseCommand {
6
6
  async run() {
7
7
  const { flags } = await this.parse(SkillStatus);
8
8
  if (flags.directory) {
9
- selectedSkillNames(flags.skill);
10
9
  this.print(await skillStatus(flags.directory));
11
10
  return;
12
11
  }
@@ -10,7 +10,6 @@ export default class TaskCancel extends BaseCommand {
10
10
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
11
11
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
12
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
14
13
  };
15
14
  run(): Promise<void>;
16
15
  }
@@ -9,7 +9,6 @@ export default class TaskGet extends BaseCommand {
9
9
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
10
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
11
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
13
12
  };
14
13
  run(): Promise<void>;
15
14
  }
@@ -7,13 +7,11 @@ export default class TaskWait extends BaseCommand {
7
7
  task: import("@oclif/core/interfaces").OptionFlag<string[] | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
8
  concurrency: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
9
9
  interval: import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
10
- 'max-wait-ms': import("@oclif/core/interfaces").OptionFlag<number, import("@oclif/core/interfaces").CustomOptions>;
11
10
  'base-url': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
11
  json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
13
12
  locale: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
14
13
  profile: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
15
14
  episode: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
16
- output: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
17
15
  };
18
16
  run(): Promise<void>;
19
17
  }
@@ -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 });