@remixmate/cli 0.9.19 → 0.9.21

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.
@@ -2,6 +2,6 @@
2
2
  "skillName": "gen-video",
3
3
  "repoName": "agent-skill-media-maker",
4
4
  "skillId": "339",
5
- "version": "V8",
6
- "skillDescription": "AI video generation skill: produce a short clip from a text prompt. Backed by ab-api's `/model/genVideo` (Seedance and Veo families).\n\nUse this skill immediately whenever the user asks for any of:\n- Text-to-video, AI-generated clip, \"make a short video of ...\"\n- Generate video with Doubao / Seedance / Veo / Google\n- Image-to-video, first-frame / last-frame, reference-image-to-video\n\nEven without an explicit \"use AI\", any request that turns a description into a moving clip should route here."
5
+ "version": "V9",
6
+ "skillDescription": "AI video generation skill: produce a short clip from a text prompt. Backed by ab-api's `/model/genVideo` (Seedance 2.0 family).\n\nUse this skill immediately whenever the user asks for any of:\n- Text-to-video, AI-generated clip, \"make a short video of ...\"\n- Generate video with Doubao / Seedance\n- Image-to-video, first-frame / last-frame, reference-image-to-video\n\nEven without an explicit \"use AI\", any request that turns a description into a moving clip should route here."
7
7
  }
@@ -183,6 +183,16 @@ def build_binding(template: dict, dsl: dict) -> dict:
183
183
  motion = template.get("defaultMotionPreset", "smooth")
184
184
  colors = template.get("defaultColorScheme", [])
185
185
 
186
+ # 用户选中的字体(DSL 的 global.font)。这里只是把不透明 key 折进 typography,
187
+ # 真正的解析(uniqId → 排印家族名 + 字重文件)在 ab-render 侧完成。
188
+ #
189
+ # 优先级见 ab-platform/docs/font-selection-design.md §13.3:
190
+ # 用户选择 > variant.defaultFontId(预留档位,当前恒为空)
191
+ # > template.defaultTypography.bodyFont(现状裸 family 名)> 模板 theme 字栈
192
+ # 下面的 variant 合并在此之后执行,所以 fontId 单独在合并后再写回,
193
+ # 避免被 variant 的 defaultTypography 覆盖掉。
194
+ user_font_id = ((dsl.get("global", {}) or {}).get("font", {}) or {}).get("fontId")
195
+
186
196
  # --- variant selection(确定性)---
187
197
  # 优先级:
188
198
  # 1) DSL 显式声明 — meta.templateVariant / meta.variant / renderHints.templateVariant
@@ -268,6 +278,10 @@ def build_binding(template: dict, dsl: dict) -> dict:
268
278
  if vcolors:
269
279
  colors = vcolors
270
280
 
281
+ # 用户的字体选择压过 variant 默认值(§13.3 的优先级第一档),所以写在合并之后。
282
+ if isinstance(user_font_id, str) and user_font_id.strip():
283
+ typography = {**typography, "fontId": user_font_id.strip()}
284
+
271
285
  result = {
272
286
  "version": "v1alpha1",
273
287
  "templateId": template.get("templateId", ""),
@@ -105,6 +105,17 @@
105
105
  "url": { "type": "string" },
106
106
  "volume": { "type": "number", "default": 0.15, "minimum": 0, "maximum": 1 }
107
107
  }
108
+ },
109
+ "font": {
110
+ "type": "object",
111
+ "description": "全局字体选择。省略 = 跟随模板自带的字体搭配。match_template 会把它折进 binding 的 globalOverrides.typography。",
112
+ "properties": {
113
+ "fontId": {
114
+ "type": "string",
115
+ "description": "字体库的不透明 key(font.uniq_id)。**不要在这里写 CSS family 名**:family 名是渲染细节,由 ab-render 调 /font/resolve 解析;写成 family 名一旦拼错就静默退回默认字体,没有任何报错。见 ab-platform/docs/font-selection-design.md §8.1。"
116
+ },
117
+ "fontName": { "type": "string", "description": "展示名,仅供人读与日志,渲染不使用" }
118
+ }
108
119
  }
109
120
  }
110
121
  },