@infimind/video-mcp-cli 1.0.12 → 1.0.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +40 -28
- package/dist/auth/credentialWriter.js +2 -1
- package/dist/auth/exchange.js +8 -2
- package/dist/auth/installationId.js +1 -1
- package/dist/auth/login.js +2 -2
- package/dist/auth/loopback.js +6 -4
- package/dist/auth/profile.js +1 -1
- package/dist/auth/status.js +5 -1
- package/dist/creativeTools.js +413 -79
- package/dist/index.js +3 -3
- package/dist/server.js +619 -170
- package/dist/videoRules.js +81 -17
- package/package.json +3 -3
package/dist/videoRules.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export const MCP_SERVER_VERSION = "1.0.
|
|
1
|
+
export const MCP_SERVER_VERSION = "1.0.13";
|
|
2
2
|
export const MCP_VIDEO_STATUS_HINT = "任务已创建后,使用 get_video_status 并传入 taskId 查询生成进度和视频链接。";
|
|
3
3
|
export const MCP_VIDEO_DRY_RUN_HINT = "dryRun 仅完成参数、权限、积分和素材规则预检,不会创建任务或扣费。";
|
|
4
4
|
export const MCP_VIDEO_ENGINES = {
|
|
@@ -12,7 +12,7 @@ export const MCP_VIDEO_ENGINES = {
|
|
|
12
12
|
engineName: "极睿SD专业版",
|
|
13
13
|
model: "doubao-seedance-2-0-260128",
|
|
14
14
|
defaultTaskMode: "allinone",
|
|
15
|
-
taskModes: ["allinone", "firstlast"],
|
|
15
|
+
taskModes: ["allinone", "firstlast", "edit"],
|
|
16
16
|
},
|
|
17
17
|
S6: {
|
|
18
18
|
engineName: "极睿HA专业版",
|
|
@@ -30,14 +30,34 @@ export const MCP_VIDEO_ENGINES = {
|
|
|
30
30
|
engineName: "极睿SD2.5专业版",
|
|
31
31
|
model: "doubao-seedance-2-5-260628",
|
|
32
32
|
defaultTaskMode: "allinone",
|
|
33
|
-
taskModes: ["allinone", "firstlast"],
|
|
33
|
+
taskModes: ["allinone", "firstlast", "edit"],
|
|
34
|
+
},
|
|
35
|
+
S9: {
|
|
36
|
+
engineName: "极睿WA专业版",
|
|
37
|
+
model: "wan3.0-video",
|
|
38
|
+
defaultTaskMode: "allinone",
|
|
39
|
+
taskModes: ["allinone", "firstlast", "edit"],
|
|
40
|
+
},
|
|
41
|
+
S10: {
|
|
42
|
+
engineName: "极睿SA专业版",
|
|
43
|
+
model: "sora-2",
|
|
44
|
+
defaultTaskMode: "standard",
|
|
45
|
+
taskModes: ["standard"],
|
|
34
46
|
},
|
|
35
47
|
};
|
|
36
48
|
export function isMcpRoute(value) {
|
|
37
|
-
return value === "S2" ||
|
|
49
|
+
return (value === "S2" ||
|
|
50
|
+
value === "S5" ||
|
|
51
|
+
value === "S6" ||
|
|
52
|
+
value === "S7" ||
|
|
53
|
+
value === "S8" ||
|
|
54
|
+
value === "S9" ||
|
|
55
|
+
value === "S10");
|
|
38
56
|
}
|
|
39
57
|
export function getMcpEngineName(route) {
|
|
40
|
-
return isMcpRoute(route)
|
|
58
|
+
return isMcpRoute(route)
|
|
59
|
+
? MCP_VIDEO_ENGINES[route].engineName
|
|
60
|
+
: MCP_VIDEO_ENGINES.S9.engineName;
|
|
41
61
|
}
|
|
42
62
|
export function getMcpTaskModel(route) {
|
|
43
63
|
return MCP_VIDEO_ENGINES[route].model;
|
|
@@ -51,18 +71,58 @@ export function getMcpDefaultTaskMode(route, isFirstLastMode) {
|
|
|
51
71
|
export function isValidMcpTaskMode(route, taskMode) {
|
|
52
72
|
return MCP_VIDEO_ENGINES[route].taskModes.includes(taskMode);
|
|
53
73
|
}
|
|
74
|
+
/**
|
|
75
|
+
* 面向 MCP 客户端的可选模型短码(工具 schema 只暴露这一组):
|
|
76
|
+
* WA = S9(极睿WA专业版,wan3.0-video;默认模型)
|
|
77
|
+
* SD = S5(极睿SD专业版,Seedance 2.0)
|
|
78
|
+
* SD25 = S8(极睿SD2.5专业版,Seedance 2.5 独立通道;480p/720p/1080p,支持 Edit)
|
|
79
|
+
* HA = S6(极睿HA专业版,HappyHorse 1.1)
|
|
80
|
+
* H3 = S7(极睿H3专业版,MiniMax-H3 视频生成 V2;2K 输出,多模态参考生视频 r2va)
|
|
81
|
+
*/
|
|
82
|
+
export const MCP_PUBLIC_MODELS = ["WA", "SD", "SD25", "HA", "H3"];
|
|
54
83
|
export const MCP_VIDEO_MODELS = {
|
|
84
|
+
// 已下线:保留映射只为识别旧请求并拒绝,不在 MCP_PUBLIC_MODELS 中暴露。
|
|
55
85
|
SA: { route: "S2", engineName: "极睿SA专业版", providerModel: "sora-2" },
|
|
56
|
-
SD: {
|
|
57
|
-
|
|
58
|
-
|
|
86
|
+
SD: {
|
|
87
|
+
route: "S5",
|
|
88
|
+
engineName: "极睿SD专业版",
|
|
89
|
+
providerModel: "doubao-seedance-2-0-260128",
|
|
90
|
+
},
|
|
91
|
+
SD25: {
|
|
92
|
+
route: "S8",
|
|
93
|
+
engineName: "极睿SD2.5专业版",
|
|
94
|
+
providerModel: "doubao-seedance-2-5-260628",
|
|
95
|
+
},
|
|
96
|
+
HA: {
|
|
97
|
+
route: "S6",
|
|
98
|
+
engineName: "极睿HA专业版",
|
|
99
|
+
providerModel: "happyhorse-1.1",
|
|
100
|
+
},
|
|
59
101
|
H3: { route: "S7", engineName: "极睿H3专业版", providerModel: "MiniMax-H3" },
|
|
102
|
+
WA: {
|
|
103
|
+
route: "S9",
|
|
104
|
+
engineName: "极睿WA专业版",
|
|
105
|
+
providerModel: "wan3.0-video",
|
|
106
|
+
},
|
|
60
107
|
};
|
|
61
108
|
export function isMcpModel(value) {
|
|
62
|
-
return value === "SA" ||
|
|
109
|
+
return (value === "SA" ||
|
|
110
|
+
value === "SD" ||
|
|
111
|
+
value === "SD25" ||
|
|
112
|
+
value === "HA" ||
|
|
113
|
+
value === "H3" ||
|
|
114
|
+
value === "WA");
|
|
115
|
+
}
|
|
116
|
+
/** SA(sora-2)已下线,只用于返回明确的 MODEL_RETIRED。 */
|
|
117
|
+
export function isRetiredSaModel(value) {
|
|
118
|
+
return value === "SA";
|
|
119
|
+
}
|
|
120
|
+
/** S2/S10 是 SA 的历史路由,创建接口不再接受;仅保留用于历史任务查询。 */
|
|
121
|
+
export function isRetiredSaRoute(value) {
|
|
122
|
+
return value === "S2" || value === "S10";
|
|
63
123
|
}
|
|
64
124
|
export function getMcpModelForRoute(route) {
|
|
65
|
-
if (route === "S2")
|
|
125
|
+
if (route === "S2" || route === "S10")
|
|
66
126
|
return "SA";
|
|
67
127
|
if (route === "S5")
|
|
68
128
|
return "SD";
|
|
@@ -72,21 +132,25 @@ export function getMcpModelForRoute(route) {
|
|
|
72
132
|
return "H3";
|
|
73
133
|
if (route === "S8")
|
|
74
134
|
return "SD25";
|
|
75
|
-
|
|
135
|
+
if (route === "S9")
|
|
136
|
+
return "WA";
|
|
137
|
+
return "WA"; // 默认回退
|
|
76
138
|
}
|
|
77
139
|
/**
|
|
78
140
|
* 把客户端传入的 model / route 值解析成内部 route。
|
|
79
141
|
* - 如果 model 有效,直接用对应的内部 route。
|
|
80
142
|
* - 否则如果 route 是有效 McpRoute,返回该 route。
|
|
81
|
-
* - 否则返回 "SA
|
|
143
|
+
* - 否则返回 "WA"(默认模型;SA 已下线不再作为回退)。
|
|
82
144
|
*
|
|
83
145
|
* 第二返回值 true 表示 route 走的是 deprecated alias(仅使用 route 而非 model)。
|
|
84
146
|
*/
|
|
85
|
-
export function resolveMcpEngine(args) {
|
|
147
|
+
export function resolveMcpEngine(args, options = {}) {
|
|
86
148
|
if (isMcpModel(args.model)) {
|
|
87
149
|
const entry = MCP_VIDEO_MODELS[args.model];
|
|
88
150
|
return {
|
|
89
|
-
route:
|
|
151
|
+
route: args.model === "SA" && options.videoProviderMode === "sandbase"
|
|
152
|
+
? "S10"
|
|
153
|
+
: entry.route,
|
|
90
154
|
model: args.model,
|
|
91
155
|
engineName: entry.engineName,
|
|
92
156
|
providerModel: entry.providerModel,
|
|
@@ -105,11 +169,11 @@ export function resolveMcpEngine(args) {
|
|
|
105
169
|
usedRouteAlias: true,
|
|
106
170
|
};
|
|
107
171
|
}
|
|
108
|
-
// 默认 SA
|
|
109
|
-
const entry = MCP_VIDEO_MODELS.
|
|
172
|
+
// 默认 WA(SA/sora-2 上游已停服;WA 已对非 VIP 开放)
|
|
173
|
+
const entry = MCP_VIDEO_MODELS.WA;
|
|
110
174
|
return {
|
|
111
175
|
route: entry.route,
|
|
112
|
-
model: "
|
|
176
|
+
model: "WA",
|
|
113
177
|
engineName: entry.engineName,
|
|
114
178
|
providerModel: entry.providerModel,
|
|
115
179
|
usedRouteAlias: false,
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@infimind/video-mcp-cli",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"description": "MCP Server / WorkBuddy CLI for Sora AI Video Generator (1.0.
|
|
3
|
+
"version": "1.0.13",
|
|
4
|
+
"description": "MCP Server / WorkBuddy CLI for Sora AI Video Generator (1.0.13 with browser-based OAuth).",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
|
-
"sora-mcp": "
|
|
8
|
+
"sora-mcp": "dist/index.js"
|
|
9
9
|
},
|
|
10
10
|
"files": [
|
|
11
11
|
"dist/index.js",
|