coder-link 0.0.9
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 +200 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +684 -0
- package/dist/cli.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/amp-manager.d.ts +24 -0
- package/dist/lib/amp-manager.d.ts.map +1 -0
- package/dist/lib/amp-manager.js +46 -0
- package/dist/lib/amp-manager.js.map +1 -0
- package/dist/lib/claude-code-manager.d.ts +55 -0
- package/dist/lib/claude-code-manager.d.ts.map +1 -0
- package/dist/lib/claude-code-manager.js +408 -0
- package/dist/lib/claude-code-manager.js.map +1 -0
- package/dist/lib/crush-manager.d.ts +31 -0
- package/dist/lib/crush-manager.d.ts.map +1 -0
- package/dist/lib/crush-manager.js +262 -0
- package/dist/lib/crush-manager.js.map +1 -0
- package/dist/lib/factory-droid-manager.d.ts +36 -0
- package/dist/lib/factory-droid-manager.d.ts.map +1 -0
- package/dist/lib/factory-droid-manager.js +387 -0
- package/dist/lib/factory-droid-manager.js.map +1 -0
- package/dist/lib/kimi-manager.d.ts +34 -0
- package/dist/lib/kimi-manager.d.ts.map +1 -0
- package/dist/lib/kimi-manager.js +316 -0
- package/dist/lib/kimi-manager.js.map +1 -0
- package/dist/lib/opencode-manager.d.ts +31 -0
- package/dist/lib/opencode-manager.d.ts.map +1 -0
- package/dist/lib/opencode-manager.js +315 -0
- package/dist/lib/opencode-manager.js.map +1 -0
- package/dist/lib/pi-manager.d.ts +30 -0
- package/dist/lib/pi-manager.d.ts.map +1 -0
- package/dist/lib/pi-manager.js +196 -0
- package/dist/lib/pi-manager.js.map +1 -0
- package/dist/lib/tool-manager.d.ts +51 -0
- package/dist/lib/tool-manager.d.ts.map +1 -0
- package/dist/lib/tool-manager.js +113 -0
- package/dist/lib/tool-manager.js.map +1 -0
- package/dist/locales/en_US.json +49 -0
- package/dist/locales/zh_CN.json +49 -0
- package/dist/mcp-services.d.ts +3 -0
- package/dist/mcp-services.d.ts.map +1 -0
- package/dist/mcp-services.js +26 -0
- package/dist/mcp-services.js.map +1 -0
- package/dist/menu.d.ts +2 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +1226 -0
- package/dist/menu.js.map +1 -0
- package/dist/utils/api-test.d.ts +32 -0
- package/dist/utils/api-test.d.ts.map +1 -0
- package/dist/utils/api-test.js +163 -0
- package/dist/utils/api-test.js.map +1 -0
- package/dist/utils/brand.d.ts +39 -0
- package/dist/utils/brand.d.ts.map +1 -0
- package/dist/utils/brand.js +195 -0
- package/dist/utils/brand.js.map +1 -0
- package/dist/utils/config.d.ts +100 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +483 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/exec.d.ts +5 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +145 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/i18n.d.ts +56 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +42 -0
- package/dist/utils/i18n.js.map +1 -0
- package/dist/utils/keyboard.d.ts +32 -0
- package/dist/utils/keyboard.d.ts.map +1 -0
- package/dist/utils/keyboard.js +109 -0
- package/dist/utils/keyboard.js.map +1 -0
- package/dist/utils/logger.d.ts +14 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +55 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/output.d.ts +58 -0
- package/dist/utils/output.d.ts.map +1 -0
- package/dist/utils/output.js +93 -0
- package/dist/utils/output.js.map +1 -0
- package/dist/wizard.d.ts +2 -0
- package/dist/wizard.d.ts.map +1 -0
- package/dist/wizard.js +114 -0
- package/dist/wizard.js.map +1 -0
- package/package.json +65 -0
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'fs';
|
|
2
|
+
import { join, dirname } from 'path';
|
|
3
|
+
import { homedir } from 'os';
|
|
4
|
+
import { logger } from '../utils/logger.js';
|
|
5
|
+
export class FactoryDroidManager {
|
|
6
|
+
static instance = null;
|
|
7
|
+
configPath;
|
|
8
|
+
mcpConfigPath;
|
|
9
|
+
constructor() {
|
|
10
|
+
// Factory Droid 配置文件路径
|
|
11
|
+
this.configPath = join(homedir(), '.factory', 'settings.json');
|
|
12
|
+
// Factory Droid MCP 配置文件路径 (单独文件)
|
|
13
|
+
this.mcpConfigPath = join(homedir(), '.factory', 'mcp.json');
|
|
14
|
+
}
|
|
15
|
+
static getInstance() {
|
|
16
|
+
if (!FactoryDroidManager.instance) {
|
|
17
|
+
FactoryDroidManager.instance = new FactoryDroidManager();
|
|
18
|
+
}
|
|
19
|
+
return FactoryDroidManager.instance;
|
|
20
|
+
}
|
|
21
|
+
ensureConfigDir() {
|
|
22
|
+
const dir = dirname(this.configPath);
|
|
23
|
+
if (!existsSync(dir)) {
|
|
24
|
+
mkdirSync(dir, { recursive: true });
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
getConfig() {
|
|
28
|
+
try {
|
|
29
|
+
if (existsSync(this.configPath)) {
|
|
30
|
+
const content = readFileSync(this.configPath, 'utf-8');
|
|
31
|
+
return JSON.parse(content);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
console.warn('Failed to read Factory Droid config:', error);
|
|
36
|
+
logger.logError('FactoryDroidManager.getConfig', error);
|
|
37
|
+
}
|
|
38
|
+
return {};
|
|
39
|
+
}
|
|
40
|
+
saveConfig(config) {
|
|
41
|
+
try {
|
|
42
|
+
this.ensureConfigDir();
|
|
43
|
+
writeFileSync(this.configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
throw new Error(`Failed to save Factory Droid config: ${error}`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getMCPConfig() {
|
|
50
|
+
try {
|
|
51
|
+
if (existsSync(this.mcpConfigPath)) {
|
|
52
|
+
const content = readFileSync(this.mcpConfigPath, 'utf-8');
|
|
53
|
+
return JSON.parse(content);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.warn('Failed to read Factory Droid MCP config:', error);
|
|
58
|
+
logger.logError('FactoryDroidManager.getMCPConfig', error);
|
|
59
|
+
}
|
|
60
|
+
return {};
|
|
61
|
+
}
|
|
62
|
+
saveMCPConfig(config) {
|
|
63
|
+
try {
|
|
64
|
+
this.ensureConfigDir();
|
|
65
|
+
writeFileSync(this.mcpConfigPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
throw new Error(`Failed to save Factory Droid MCP config: ${error}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
getBaseUrl(plan, protocol, options) {
|
|
72
|
+
if (options?.baseUrl?.trim()) {
|
|
73
|
+
const url = options.baseUrl.trim();
|
|
74
|
+
// If user provided a base URL, they might want to use it for both protocols,
|
|
75
|
+
// but usually the generic-chat-completion-api works best with OpenAI-like paths.
|
|
76
|
+
return url;
|
|
77
|
+
}
|
|
78
|
+
if (plan === 'kimi') {
|
|
79
|
+
return 'https://api.moonshot.ai/v1';
|
|
80
|
+
}
|
|
81
|
+
if (protocol === 'anthropic') {
|
|
82
|
+
return plan === 'glm_coding_plan_global'
|
|
83
|
+
? 'https://api.z.ai/api/anthropic'
|
|
84
|
+
: 'https://open.bigmodel.cn/api/anthropic';
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
return plan === 'glm_coding_plan_global'
|
|
88
|
+
? 'https://api.z.ai/api/coding/paas/v4'
|
|
89
|
+
: 'https://open.bigmodel.cn/api/coding/paas/v4';
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
getDisplayName(plan, protocol, options) {
|
|
93
|
+
// For kimi-like providers, use the actual source for the display name
|
|
94
|
+
if (plan === 'kimi' || plan === 'openrouter' || plan === 'nvidia') {
|
|
95
|
+
const source = (options?.source || '').toString().trim().toLowerCase();
|
|
96
|
+
const providerName = source === 'openrouter' ? 'OpenRouter'
|
|
97
|
+
: source === 'nvidia' ? 'NVIDIA NIM'
|
|
98
|
+
: 'Kimi';
|
|
99
|
+
const protocolName = protocol === 'anthropic' ? 'Anthropic' : 'OpenAI';
|
|
100
|
+
return `${providerName} - ${protocolName}`;
|
|
101
|
+
}
|
|
102
|
+
const planName = plan === 'glm_coding_plan_global' ? 'GLM Coding Plan Global' : 'GLM Coding Plan China';
|
|
103
|
+
const protocolName = protocol === 'anthropic' ? 'Anthropic' : 'OpenAI';
|
|
104
|
+
return `${planName} - ${protocolName}`;
|
|
105
|
+
}
|
|
106
|
+
toCustomModelId(displayName, index) {
|
|
107
|
+
const slug = displayName
|
|
108
|
+
.trim()
|
|
109
|
+
.replace(/\s/g, '-');
|
|
110
|
+
return `custom:${slug}-${index}`;
|
|
111
|
+
}
|
|
112
|
+
async loadConfig(plan, apiKey, options) {
|
|
113
|
+
const currentConfig = this.getConfig();
|
|
114
|
+
const targetModel = options?.model?.trim() || (plan === 'kimi' ? 'moonshotai/kimi-k2.5' : 'glm-4-coder');
|
|
115
|
+
// For Kimi/NVIDIA/OpenRouter, we use the provided/detected baseUrl.
|
|
116
|
+
// For GLM, we might still want to use the dual-protocol endpoints if no override is provided.
|
|
117
|
+
const baseUrl = options?.baseUrl?.trim() || (plan === 'kimi' ? 'https://api.moonshot.ai/v1' : this.getBaseUrl(plan, 'openai', options));
|
|
118
|
+
// Filter out old GLM/Kimi/OpenRouter/NVIDIA Coding Plan configurations (by displayName)
|
|
119
|
+
// This ensures refresh properly updates the config
|
|
120
|
+
const existingModels = (currentConfig.customModels || []).filter((m) => !m.displayName.includes('GLM Coding Plan')
|
|
121
|
+
&& !m.displayName.includes('Kimi')
|
|
122
|
+
&& !m.displayName.includes('OpenRouter')
|
|
123
|
+
&& !m.displayName.includes('NVIDIA'));
|
|
124
|
+
// Kimi (Moonshot / OpenRouter / NVIDIA NIM) is OpenAI Chat Completions compatible.
|
|
125
|
+
// Don't write an Anthropic entry for Kimi, and keep provider values within Factory's supported set.
|
|
126
|
+
if (plan === 'kimi') {
|
|
127
|
+
const source = (options?.source || '').toString().trim().toLowerCase();
|
|
128
|
+
// Only the native Moonshot API supports extended thinking / reasoning mode.
|
|
129
|
+
const supportsThinking = (source === '' || source === 'moonshot');
|
|
130
|
+
const displayName = this.getDisplayName(plan, 'openai', options);
|
|
131
|
+
const openaiModel = {
|
|
132
|
+
displayName,
|
|
133
|
+
model: targetModel,
|
|
134
|
+
baseUrl: baseUrl,
|
|
135
|
+
apiKey,
|
|
136
|
+
provider: 'generic-chat-completion-api',
|
|
137
|
+
maxOutputTokens: 131072,
|
|
138
|
+
maxContextSize: options?.maxContextSize || 262144,
|
|
139
|
+
};
|
|
140
|
+
if (!supportsThinking) {
|
|
141
|
+
openaiModel.thinking = false;
|
|
142
|
+
openaiModel.reasoning = false;
|
|
143
|
+
}
|
|
144
|
+
const customModels = [...existingModels, openaiModel];
|
|
145
|
+
const modelIndex = customModels.length - 1;
|
|
146
|
+
const newConfig = {
|
|
147
|
+
...currentConfig,
|
|
148
|
+
// Ensure droid uses BYOK by default (prevents falling back to Factory-hosted models).
|
|
149
|
+
model: 'custom-model',
|
|
150
|
+
// Avoid requiring a Factory web login just to start sessions.
|
|
151
|
+
cloudSessionSync: false,
|
|
152
|
+
// Best-effort: select the injected custom model as the default.
|
|
153
|
+
sessionDefaultSettings: {
|
|
154
|
+
...(currentConfig.sessionDefaultSettings || {}),
|
|
155
|
+
model: this.toCustomModelId(openaiModel.displayName, modelIndex)
|
|
156
|
+
},
|
|
157
|
+
customModels
|
|
158
|
+
};
|
|
159
|
+
this.saveConfig(newConfig);
|
|
160
|
+
return;
|
|
161
|
+
}
|
|
162
|
+
// Create Anthropic protocol configuration
|
|
163
|
+
const anthropicModel = {
|
|
164
|
+
displayName: this.getDisplayName(plan, 'anthropic', options),
|
|
165
|
+
model: targetModel,
|
|
166
|
+
baseUrl: this.getBaseUrl(plan, 'anthropic', options),
|
|
167
|
+
apiKey,
|
|
168
|
+
provider: 'anthropic',
|
|
169
|
+
maxOutputTokens: 131072
|
|
170
|
+
};
|
|
171
|
+
// Create OpenAI Chat Completion protocol configuration
|
|
172
|
+
const openaiModel = {
|
|
173
|
+
displayName: this.getDisplayName(plan, 'openai', options),
|
|
174
|
+
model: targetModel,
|
|
175
|
+
baseUrl: this.getBaseUrl(plan, 'openai', options),
|
|
176
|
+
apiKey,
|
|
177
|
+
provider: 'generic-chat-completion-api',
|
|
178
|
+
maxOutputTokens: 131072
|
|
179
|
+
};
|
|
180
|
+
const customModels = [...existingModels, anthropicModel, openaiModel];
|
|
181
|
+
const openaiModelIndex = customModels.length - 1;
|
|
182
|
+
const newConfig = {
|
|
183
|
+
...currentConfig,
|
|
184
|
+
model: 'custom-model',
|
|
185
|
+
cloudSessionSync: false,
|
|
186
|
+
sessionDefaultSettings: {
|
|
187
|
+
...(currentConfig.sessionDefaultSettings || {}),
|
|
188
|
+
model: this.toCustomModelId(openaiModel.displayName, openaiModelIndex)
|
|
189
|
+
},
|
|
190
|
+
customModels
|
|
191
|
+
};
|
|
192
|
+
this.saveConfig(newConfig);
|
|
193
|
+
}
|
|
194
|
+
async unloadConfig() {
|
|
195
|
+
const currentConfig = this.getConfig();
|
|
196
|
+
// Filter out GLM/Kimi Coding Plan configurations
|
|
197
|
+
if (currentConfig.customModels) {
|
|
198
|
+
currentConfig.customModels = currentConfig.customModels.filter((m) => !m.displayName.includes('GLM Coding Plan') && !m.displayName.includes('Kimi'));
|
|
199
|
+
// If customModels is empty, delete field
|
|
200
|
+
if (currentConfig.customModels.length === 0) {
|
|
201
|
+
delete currentConfig.customModels;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
this.saveConfig(currentConfig);
|
|
205
|
+
}
|
|
206
|
+
async detectCurrentConfig() {
|
|
207
|
+
try {
|
|
208
|
+
const config = this.getConfig();
|
|
209
|
+
if (!config.customModels || config.customModels.length === 0) {
|
|
210
|
+
return { plan: null, apiKey: null };
|
|
211
|
+
}
|
|
212
|
+
// Find GLM/Kimi/OpenRouter/NVIDIA Coding Plan configuration
|
|
213
|
+
const glmModel = config.customModels.find((m) => m.displayName.includes('GLM Coding Plan')
|
|
214
|
+
|| m.displayName.includes('Kimi')
|
|
215
|
+
|| m.displayName.includes('OpenRouter')
|
|
216
|
+
|| m.displayName.includes('NVIDIA'));
|
|
217
|
+
if (!glmModel) {
|
|
218
|
+
return { plan: null, apiKey: null };
|
|
219
|
+
}
|
|
220
|
+
const apiKey = glmModel.apiKey || null;
|
|
221
|
+
const baseUrl = glmModel.baseUrl;
|
|
222
|
+
const model = glmModel.model || undefined;
|
|
223
|
+
let plan = null;
|
|
224
|
+
if (baseUrl === 'https://api.z.ai/api/coding/paas/v4' || baseUrl === 'https://api.z.ai/api/anthropic') {
|
|
225
|
+
plan = 'glm_coding_plan_global';
|
|
226
|
+
}
|
|
227
|
+
else if (baseUrl === 'https://open.bigmodel.cn/api/coding/paas/v4' || baseUrl === 'https://open.bigmodel.cn/api/anthropic') {
|
|
228
|
+
plan = 'glm_coding_plan_china';
|
|
229
|
+
}
|
|
230
|
+
else if (baseUrl?.includes('openrouter.ai')) {
|
|
231
|
+
plan = 'openrouter';
|
|
232
|
+
}
|
|
233
|
+
else if (baseUrl?.includes('nvidia.com')) {
|
|
234
|
+
plan = 'nvidia';
|
|
235
|
+
}
|
|
236
|
+
else if (baseUrl) {
|
|
237
|
+
plan = 'kimi';
|
|
238
|
+
}
|
|
239
|
+
return { plan, apiKey, model };
|
|
240
|
+
}
|
|
241
|
+
catch {
|
|
242
|
+
return { plan: null, apiKey: null };
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
isMCPInstalled(mcpId) {
|
|
246
|
+
try {
|
|
247
|
+
const config = this.getMCPConfig();
|
|
248
|
+
if (!config.mcpServers) {
|
|
249
|
+
return false;
|
|
250
|
+
}
|
|
251
|
+
return mcpId in config.mcpServers;
|
|
252
|
+
}
|
|
253
|
+
catch {
|
|
254
|
+
return false;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
async installMCP(mcp, apiKey, plan) {
|
|
258
|
+
try {
|
|
259
|
+
const config = this.getMCPConfig();
|
|
260
|
+
if (!config.mcpServers) {
|
|
261
|
+
config.mcpServers = {};
|
|
262
|
+
}
|
|
263
|
+
let mcpConfig;
|
|
264
|
+
if (mcp.protocol === 'stdio') {
|
|
265
|
+
// Determine environment variables
|
|
266
|
+
let env = {};
|
|
267
|
+
if (mcp.envTemplate && plan) {
|
|
268
|
+
env = { ...(mcp.envTemplate[plan] || {}) };
|
|
269
|
+
}
|
|
270
|
+
else if (mcp.env) {
|
|
271
|
+
env = { ...mcp.env };
|
|
272
|
+
}
|
|
273
|
+
// Add API key if required
|
|
274
|
+
if (mcp.requiresAuth && apiKey) {
|
|
275
|
+
env.Z_AI_API_KEY = apiKey;
|
|
276
|
+
}
|
|
277
|
+
mcpConfig = {
|
|
278
|
+
type: 'stdio',
|
|
279
|
+
command: mcp.command || 'npx',
|
|
280
|
+
args: mcp.command === 'npx' && !mcp.args?.includes('--silent')
|
|
281
|
+
? ['--silent', ...(mcp.args || [])]
|
|
282
|
+
: (mcp.args || []),
|
|
283
|
+
env,
|
|
284
|
+
disabled: false
|
|
285
|
+
};
|
|
286
|
+
}
|
|
287
|
+
else if (mcp.protocol === 'sse' || mcp.protocol === 'streamable-http') {
|
|
288
|
+
// Determine URL based on plan
|
|
289
|
+
let url = '';
|
|
290
|
+
if (mcp.urlTemplate && plan) {
|
|
291
|
+
url = mcp.urlTemplate[plan];
|
|
292
|
+
}
|
|
293
|
+
else if (mcp.url) {
|
|
294
|
+
url = mcp.url;
|
|
295
|
+
}
|
|
296
|
+
else {
|
|
297
|
+
throw new Error(`MCP ${mcp.id} missing url or urlTemplate`);
|
|
298
|
+
}
|
|
299
|
+
// Factory Droid uses http type
|
|
300
|
+
mcpConfig = {
|
|
301
|
+
type: 'http',
|
|
302
|
+
url: url,
|
|
303
|
+
headers: {
|
|
304
|
+
...(mcp.headers || {})
|
|
305
|
+
},
|
|
306
|
+
disabled: false
|
|
307
|
+
};
|
|
308
|
+
// Add API key to headers if required
|
|
309
|
+
if (mcp.requiresAuth && apiKey) {
|
|
310
|
+
mcpConfig.headers = {
|
|
311
|
+
...mcpConfig.headers,
|
|
312
|
+
'Authorization': `Bearer ${apiKey}`
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
else {
|
|
317
|
+
throw new Error(`Unsupported protocol: ${mcp.protocol}`);
|
|
318
|
+
}
|
|
319
|
+
config.mcpServers[mcp.id] = mcpConfig;
|
|
320
|
+
this.saveMCPConfig(config);
|
|
321
|
+
}
|
|
322
|
+
catch (error) {
|
|
323
|
+
throw new Error(`Failed to install MCP ${mcp.name}: ${error}`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
async uninstallMCP(mcpId) {
|
|
327
|
+
try {
|
|
328
|
+
const config = this.getMCPConfig();
|
|
329
|
+
if (!config.mcpServers) {
|
|
330
|
+
return;
|
|
331
|
+
}
|
|
332
|
+
delete config.mcpServers[mcpId];
|
|
333
|
+
this.saveMCPConfig(config);
|
|
334
|
+
}
|
|
335
|
+
catch (error) {
|
|
336
|
+
throw new Error(`Failed to uninstall MCP ${mcpId}: ${error}`);
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
getInstalledMCPs() {
|
|
340
|
+
try {
|
|
341
|
+
const config = this.getMCPConfig();
|
|
342
|
+
if (!config.mcpServers) {
|
|
343
|
+
return [];
|
|
344
|
+
}
|
|
345
|
+
return Object.keys(config.mcpServers);
|
|
346
|
+
}
|
|
347
|
+
catch {
|
|
348
|
+
return [];
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
getMCPStatus(mcpServices) {
|
|
352
|
+
const status = new Map();
|
|
353
|
+
for (const mcp of mcpServices) {
|
|
354
|
+
status.set(mcp.id, this.isMCPInstalled(mcp.id));
|
|
355
|
+
}
|
|
356
|
+
return status;
|
|
357
|
+
}
|
|
358
|
+
getOtherMCPs(builtinIds) {
|
|
359
|
+
try {
|
|
360
|
+
const config = this.getMCPConfig();
|
|
361
|
+
if (!config.mcpServers) {
|
|
362
|
+
return [];
|
|
363
|
+
}
|
|
364
|
+
const otherMCPs = [];
|
|
365
|
+
for (const [id, mcpConfig] of Object.entries(config.mcpServers)) {
|
|
366
|
+
if (!builtinIds.includes(id)) {
|
|
367
|
+
otherMCPs.push({ id, config: mcpConfig });
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
return otherMCPs;
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
return [];
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
getAllMCPServers() {
|
|
377
|
+
try {
|
|
378
|
+
const config = this.getMCPConfig();
|
|
379
|
+
return config.mcpServers || {};
|
|
380
|
+
}
|
|
381
|
+
catch {
|
|
382
|
+
return {};
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
export const factoryDroidManager = FactoryDroidManager.getInstance();
|
|
387
|
+
//# sourceMappingURL=factory-droid-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"factory-droid-manager.js","sourceRoot":"","sources":["../../src/lib/factory-droid-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MCPService } from './tool-manager.js';
|
|
2
|
+
import type { ProviderOptions } from './tool-manager.js';
|
|
3
|
+
export declare class KimiManager {
|
|
4
|
+
static instance: KimiManager | null;
|
|
5
|
+
private configPath;
|
|
6
|
+
constructor();
|
|
7
|
+
static getInstance(): KimiManager;
|
|
8
|
+
private ensureConfigDir;
|
|
9
|
+
private readConfigText;
|
|
10
|
+
private readConfig;
|
|
11
|
+
private writeConfig;
|
|
12
|
+
private ensureMcpSilent;
|
|
13
|
+
private ensureProvider;
|
|
14
|
+
private ensureModel;
|
|
15
|
+
detectCurrentConfig(): Promise<{
|
|
16
|
+
plan: string | null;
|
|
17
|
+
apiKey: string | null;
|
|
18
|
+
model?: string;
|
|
19
|
+
}>;
|
|
20
|
+
loadConfig(plan: string, apiKey: string, options?: ProviderOptions): Promise<void>;
|
|
21
|
+
unloadConfig(): Promise<void>;
|
|
22
|
+
isMCPInstalled(mcpId: string): boolean;
|
|
23
|
+
getInstalledMCPs(): string[];
|
|
24
|
+
getAllMCPServers(): Record<string, any>;
|
|
25
|
+
getOtherMCPs(builtinIds: string[]): Array<{
|
|
26
|
+
id: string;
|
|
27
|
+
config: any;
|
|
28
|
+
}>;
|
|
29
|
+
getMCPStatus(mcpServices: MCPService[]): Map<string, boolean>;
|
|
30
|
+
installMCP(mcp: MCPService, apiKey: string, plan: string): Promise<void>;
|
|
31
|
+
uninstallMCP(mcpId: string): Promise<void>;
|
|
32
|
+
}
|
|
33
|
+
export declare const kimiManager: KimiManager;
|
|
34
|
+
//# sourceMappingURL=kimi-manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi-manager.d.ts","sourceRoot":"","sources":["../../src/lib/kimi-manager.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAezD,qBAAa,WAAW;IACtB,MAAM,CAAC,QAAQ,EAAE,WAAW,GAAG,IAAI,CAAQ;IAC3C,OAAO,CAAC,UAAU,CAAS;;IAM3B,MAAM,CAAC,WAAW,IAAI,WAAW;IAOjC,OAAO,CAAC,eAAe;IAOvB,OAAO,CAAC,cAAc;IAKtB,OAAO,CAAC,UAAU;IAalB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,cAAc;IAmBtB,OAAO,CAAC,WAAW;IAiBb,mBAAmB,IAAI,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAgD9F,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAoBlF,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAenC,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAYtC,gBAAgB,IAAI,MAAM,EAAE;IAY5B,gBAAgB,IAAI,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAYvC,YAAY,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,GAAG,CAAA;KAAE,CAAC;IAWtE,YAAY,CAAC,WAAW,EAAE,UAAU,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC;IAQvD,UAAU,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0DxE,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAWjD;AAED,eAAO,MAAM,WAAW,aAA4B,CAAC"}
|