multi-model-flow 0.1.1 → 0.1.3
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/dist/cli.js +59 -22
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -37,9 +37,11 @@ async function askOptional(label, defaultVal) {
|
|
|
37
37
|
function copyDir(src, dest) {
|
|
38
38
|
if (!existsSync(src))
|
|
39
39
|
return 0;
|
|
40
|
+
// Skip if src and dest are the same (running from project dir)
|
|
41
|
+
if (path.resolve(src) === path.resolve(dest))
|
|
42
|
+
return countFiles(src);
|
|
40
43
|
mkdirSync(dest, { recursive: true });
|
|
41
44
|
cpSync(src, dest, { recursive: true, force: true });
|
|
42
|
-
// Count files copied
|
|
43
45
|
let count = 0;
|
|
44
46
|
const entries = readdirSync(src, { withFileTypes: true });
|
|
45
47
|
for (const e of entries) {
|
|
@@ -76,6 +78,24 @@ function saveJson(filePath, data) {
|
|
|
76
78
|
function getServerEntryPath() {
|
|
77
79
|
return path.join(PKG_ROOT, "dist", "index.js").replace(/\\/g, "/");
|
|
78
80
|
}
|
|
81
|
+
// ============================================================
|
|
82
|
+
// API Config Prompt
|
|
83
|
+
// ============================================================
|
|
84
|
+
async function promptApiConfig() {
|
|
85
|
+
console.log(" 步骤 1/2: 配置 Codex (OpenAI)");
|
|
86
|
+
console.log(" ─────────────────────────────────");
|
|
87
|
+
const codexKey = await askRequired("API Key");
|
|
88
|
+
const codexUrl = await askOptional("接口地址", "https://api.openai.com/v1");
|
|
89
|
+
const codexModel = await askWithDefault("模型名称", "gpt-5.4");
|
|
90
|
+
console.log();
|
|
91
|
+
console.log(" 步骤 2/2: 配置 Gemini");
|
|
92
|
+
console.log(" ─────────────────────────────────");
|
|
93
|
+
const geminiKey = await askRequired("API Key");
|
|
94
|
+
const geminiUrl = await askOptional("接口地址", "https://generativelanguage.googleapis.com/v1beta/openai/");
|
|
95
|
+
const geminiModel = await askWithDefault("模型名称", "gemini-3.1-pro-preview");
|
|
96
|
+
console.log();
|
|
97
|
+
return { codexKey, codexUrl, codexModel, geminiKey, geminiUrl, geminiModel };
|
|
98
|
+
}
|
|
79
99
|
// PLACEHOLDER_FOR_APPEND_2
|
|
80
100
|
// ============================================================
|
|
81
101
|
// Main
|
|
@@ -92,24 +112,43 @@ async function main() {
|
|
|
92
112
|
console.log(" ║ MMFlow - 多模型协作工作流 ║");
|
|
93
113
|
console.log(" ╚══════════════════════════════════════╝");
|
|
94
114
|
console.log();
|
|
95
|
-
// ── Step 1: Codex ──────────────────────────────────────
|
|
96
|
-
console.log(" 步骤 1/3: 配置 Codex (OpenAI)");
|
|
97
|
-
console.log(" ─────────────────────────────────");
|
|
98
|
-
const codexKey = await askRequired("API Key");
|
|
99
|
-
const codexUrl = await askOptional("接口地址", "https://api.openai.com/v1");
|
|
100
|
-
const codexModel = await askWithDefault("模型名称", "gpt-5.4");
|
|
101
|
-
console.log();
|
|
102
|
-
// ── Step 2: Gemini ─────────────────────────────────────
|
|
103
|
-
console.log(" 步骤 2/3: 配置 Gemini");
|
|
104
|
-
console.log(" ─────────────────────────────────");
|
|
105
|
-
const geminiKey = await askRequired("API Key");
|
|
106
|
-
const geminiUrl = await askOptional("接口地址", "https://generativelanguage.googleapis.com/v1beta/openai/");
|
|
107
|
-
const geminiModel = await askWithDefault("模型名称", "gemini-3.1-pro-preview");
|
|
108
|
-
console.log();
|
|
109
|
-
// ── Step 3: Install ────────────────────────────────────
|
|
110
|
-
console.log(" 步骤 3/3: 安装中...");
|
|
111
|
-
console.log(" ─────────────────────────────────");
|
|
112
115
|
const projectRoot = process.cwd();
|
|
116
|
+
const mcpPath = path.join(projectRoot, ".mcp.json");
|
|
117
|
+
const mcpConfig = loadJson(mcpPath);
|
|
118
|
+
const existingServer = mcpConfig.mcpServers?.["diy-workflow"];
|
|
119
|
+
let codexKey;
|
|
120
|
+
let codexUrl;
|
|
121
|
+
let codexModel;
|
|
122
|
+
let geminiKey;
|
|
123
|
+
let geminiUrl;
|
|
124
|
+
let geminiModel;
|
|
125
|
+
if (existingServer?.env?.OPENAI_API_KEY) {
|
|
126
|
+
// MCP already configured — skip API config
|
|
127
|
+
console.log(" 检测到已有 MCP 配置,跳过 API 配置");
|
|
128
|
+
console.log(` Codex: ${existingServer.env.OPENAI_MODEL ?? "gpt-5.4"} @ ${existingServer.env.OPENAI_BASE_URL ?? "默认"}`);
|
|
129
|
+
console.log(` Gemini: ${existingServer.env.GEMINI_MODEL ?? "gemini-3.1-pro-preview"} @ ${existingServer.env.GEMINI_BASE_URL ?? "默认"}`);
|
|
130
|
+
console.log();
|
|
131
|
+
const reconfig = await ask(" ? 是否重新配置 API?(y/N): ");
|
|
132
|
+
if (reconfig.toLowerCase() === "y") {
|
|
133
|
+
({ codexKey, codexUrl, codexModel, geminiKey, geminiUrl, geminiModel } =
|
|
134
|
+
await promptApiConfig());
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
codexKey = existingServer.env.OPENAI_API_KEY;
|
|
138
|
+
codexUrl = existingServer.env.OPENAI_BASE_URL ?? "https://api.openai.com/v1";
|
|
139
|
+
codexModel = existingServer.env.OPENAI_MODEL ?? "gpt-5.4";
|
|
140
|
+
geminiKey = existingServer.env.GEMINI_API_KEY ?? "";
|
|
141
|
+
geminiUrl = existingServer.env.GEMINI_BASE_URL ?? "https://generativelanguage.googleapis.com/v1beta/openai/";
|
|
142
|
+
geminiModel = existingServer.env.GEMINI_MODEL ?? "gemini-3.1-pro-preview";
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
({ codexKey, codexUrl, codexModel, geminiKey, geminiUrl, geminiModel } =
|
|
147
|
+
await promptApiConfig());
|
|
148
|
+
}
|
|
149
|
+
// ── Install ────────────────────────────────────────────
|
|
150
|
+
console.log(" 安装中...");
|
|
151
|
+
console.log(" ─────────────────────────────────");
|
|
113
152
|
const claudeDir = path.join(projectRoot, ".claude");
|
|
114
153
|
// Copy commands
|
|
115
154
|
const cmdSrc = path.join(PKG_ROOT, ".claude", "commands");
|
|
@@ -122,8 +161,6 @@ async function main() {
|
|
|
122
161
|
const skillCount = copyDir(skillSrc, skillDest);
|
|
123
162
|
console.log(` ✓ 已安装 ${skillCount} 个技能到 .claude/skills/`);
|
|
124
163
|
// Register MCP server in .mcp.json
|
|
125
|
-
const mcpPath = path.join(projectRoot, ".mcp.json");
|
|
126
|
-
const mcpConfig = loadJson(mcpPath);
|
|
127
164
|
if (!mcpConfig.mcpServers)
|
|
128
165
|
mcpConfig.mcpServers = {};
|
|
129
166
|
mcpConfig.mcpServers["diy-workflow"] = {
|
|
@@ -144,11 +181,11 @@ async function main() {
|
|
|
144
181
|
// Copy CLAUDE.md
|
|
145
182
|
const claudeMdSrc = path.join(PKG_ROOT, "CLAUDE.md");
|
|
146
183
|
const claudeMdDest = path.join(claudeDir, "CLAUDE.md");
|
|
147
|
-
if (existsSync(claudeMdSrc)) {
|
|
184
|
+
if (existsSync(claudeMdSrc) && path.resolve(claudeMdSrc) !== path.resolve(claudeMdDest)) {
|
|
148
185
|
// Append to existing or create new
|
|
149
186
|
if (existsSync(claudeMdDest)) {
|
|
150
187
|
const existing = readFileSync(claudeMdDest, "utf-8");
|
|
151
|
-
if (!existing.includes("
|
|
188
|
+
if (!existing.includes("MMF")) {
|
|
152
189
|
const content = readFileSync(claudeMdSrc, "utf-8");
|
|
153
190
|
writeFileSync(claudeMdDest, existing + "\n\n" + content, "utf-8");
|
|
154
191
|
console.log(" ✓ 已追加工作流配置到 .claude/CLAUDE.md");
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAClG,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAE/C,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;AAE7E,SAAS,GAAG,CAAC,QAAgB;IAC3B,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC7F,CAAC;AAED,KAAK,UAAU,cAAc,CAAC,KAAa,EAAE,UAAkB;IAC7D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,KAAK,SAAS,UAAU,KAAK,CAAC,CAAC;IAC/D,OAAO,MAAM,IAAI,UAAU,CAAC;AAC9B,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa;IACtC,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,OAAO,CAAC,MAAM,EAAE,CAAC;QACf,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,KAAK,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,MAAM;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,KAAK,UAAU,WAAW,CAAC,KAAa,EAAE,UAAkB;IAC1D,MAAM,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3D,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,KAAK,CAAC,CAAC;IACrD,OAAO,MAAM,IAAI,UAAU,CAAC;AAC9B,CAAC;AAED,2BAA2B;AAE3B,+DAA+D;AAC/D,4BAA4B;AAC5B,+DAA+D;AAE/D,SAAS,OAAO,CAAC,GAAW,EAAE,IAAY;IACxC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACrC,MAAM,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|