mirror of
https://github.com/hanzoai/code.git
synced 2026-09-30 20:53:35 +00:00
misc
This commit is contained in:
@@ -101,7 +101,7 @@ class MCPService extends Disposable implements IMCPService {
|
||||
console.log('MCP Config file created:', mcpConfigUri.toString());
|
||||
}
|
||||
|
||||
await this._updateStateWithCurrentConfigFile();
|
||||
await this._refreshMCPServers();
|
||||
|
||||
// Add a watcher to the MCP config file
|
||||
await this._addMCPConfigFileWatcher();
|
||||
@@ -179,7 +179,7 @@ class MCPService extends Disposable implements IMCPService {
|
||||
|
||||
this._register(this.fileService.onDidFilesChange(async e => {
|
||||
if (!e.contains(mcpConfigUri)) return
|
||||
await this._updateStateWithCurrentConfigFile();
|
||||
await this._refreshMCPServers();
|
||||
}));
|
||||
}
|
||||
|
||||
@@ -225,10 +225,10 @@ class MCPService extends Disposable implements IMCPService {
|
||||
return allTools;
|
||||
}
|
||||
|
||||
// toggle MCP server and update isOn in void settings
|
||||
public async toggleServer(serverName: string, isOn: boolean): Promise<void> {
|
||||
this.channel.call('toggleServer', { serverName, isOn })
|
||||
// Update the server state in the local mcpServers list
|
||||
await this.voidSettingsService.setMCPServerState(serverName, isOn);
|
||||
await this.voidSettingsService.setMCPServerState(serverName, { isOn });
|
||||
}
|
||||
|
||||
// utility functions
|
||||
@@ -250,33 +250,34 @@ class MCPService extends Disposable implements IMCPService {
|
||||
}
|
||||
|
||||
// Handle server state changes
|
||||
private async _updateStateWithCurrentConfigFile(): Promise<void> {
|
||||
private async _refreshMCPServers(): Promise<void> {
|
||||
|
||||
this._setHasError(undefined)
|
||||
// TODO!!! set is loading
|
||||
|
||||
const mcpConfigFile = await this._parseMCPConfigFile();
|
||||
if (!mcpConfigFile) { console.log(`Not setting state: MCP config file not found`); return }
|
||||
if (!mcpConfigFile?.mcpServers) { console.log(`Not setting state: MCP config file did not have an 'mcpServers' field`); return }
|
||||
|
||||
const savedServerStates = this.voidSettingsService.state.mcpServerStateOfName;
|
||||
const currMCPStateOfName = this.voidSettingsService.state.mcpServerStateOfName;
|
||||
const availableServers = Object.keys(mcpConfigFile.mcpServers);
|
||||
|
||||
// Handle added servers
|
||||
const addedServers = availableServers.filter(serverName => !savedServerStates[serverName]);
|
||||
const addedServers = availableServers.filter(serverName => !currMCPStateOfName[serverName].isOn);
|
||||
const addedServersObject = addedServers.reduce((acc, serverName) => {
|
||||
acc[serverName] = { isOn: true };
|
||||
return acc;
|
||||
}, {} as MCPServerStateOfName);
|
||||
await this.voidSettingsService.addMCPServers(addedServersObject);
|
||||
await this.voidSettingsService.addMCPServerStateOfName(addedServersObject);
|
||||
|
||||
// Handle removed servers
|
||||
const removedServers = Object.keys(savedServerStates).filter(serverName => availableServers.indexOf(serverName) === -1);
|
||||
await this.voidSettingsService.removeMCPServers(removedServers);
|
||||
const removedServers = Object.keys(currMCPStateOfName).filter(serverName => availableServers.indexOf(serverName) === -1);
|
||||
await this.voidSettingsService.removeMCPServerStateNames(removedServers);
|
||||
|
||||
// Compile the updated server list as MCPServerStates
|
||||
const updatedServers = Object.keys(savedServerStates).reduce((acc, serverName) => {
|
||||
const updatedServers = Object.keys(currMCPStateOfName).reduce((acc, serverName) => {
|
||||
if (availableServers.includes(serverName)) {
|
||||
acc[serverName] = savedServerStates[serverName];
|
||||
acc[serverName] = currMCPStateOfName[serverName];
|
||||
}
|
||||
return acc;
|
||||
}, {} as MCPServerStateOfName);
|
||||
|
||||
@@ -13,7 +13,7 @@ import { IStorageService, StorageScope, StorageTarget } from '../../../../platfo
|
||||
import { IMetricsService } from './metricsService.js';
|
||||
import { defaultProviderSettings, getModelCapabilities, ModelOverrides } from './modelCapabilities.js';
|
||||
import { VOID_SETTINGS_STORAGE_KEY } from './storageKeys.js';
|
||||
import { defaultSettingsOfProvider, FeatureName, ProviderName, ModelSelectionOfFeature, SettingsOfProvider, SettingName, providerNames, ModelSelection, modelSelectionsEqual, featureNames, VoidStatefulModelInfo, GlobalSettings, GlobalSettingName, defaultGlobalSettings, ModelSelectionOptions, OptionsOfModelSelection, ChatMode, OverridesOfModel, defaultOverridesOfModel, MCPServerStateOfName } from './voidSettingsTypes.js';
|
||||
import { defaultSettingsOfProvider, FeatureName, ProviderName, ModelSelectionOfFeature, SettingsOfProvider, SettingName, providerNames, ModelSelection, modelSelectionsEqual, featureNames, VoidStatefulModelInfo, GlobalSettings, GlobalSettingName, defaultGlobalSettings, ModelSelectionOptions, OptionsOfModelSelection, ChatMode, OverridesOfModel, defaultOverridesOfModel, MCPServerStateOfName, MCPServerState } from './voidSettingsTypes.js';
|
||||
|
||||
|
||||
// name is the name in the dropdown
|
||||
@@ -76,9 +76,9 @@ export interface IVoidSettingsService {
|
||||
addModel(providerName: ProviderName, modelName: string): void;
|
||||
deleteModel(providerName: ProviderName, modelName: string): boolean;
|
||||
|
||||
addMCPServers(newMCPStates: MCPServerStateOfName): Promise<void>;
|
||||
removeMCPServers(serverNames: string[]): Promise<void>;
|
||||
setMCPServerState(serverName: string, newIsOn: boolean): Promise<void>;
|
||||
addMCPServerStateOfName(serverStateOfName: MCPServerStateOfName): Promise<void>;
|
||||
removeMCPServerStateNames(serverNames: string[]): Promise<void>;
|
||||
setMCPServerState(serverName: string, state: MCPServerState): Promise<void>;
|
||||
}
|
||||
|
||||
|
||||
@@ -541,7 +541,7 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
|
||||
}
|
||||
|
||||
// MCP Server State
|
||||
private _setMCPServerStates = async (newStates: MCPServerStateOfName) => {
|
||||
private _setMCPServerStateOfName = async (newStates: MCPServerStateOfName) => {
|
||||
const newState: VoidSettingsState = {
|
||||
...this.state,
|
||||
mcpServerStateOfName: {
|
||||
@@ -555,17 +555,17 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
|
||||
this._metricsService.capture('Set MCP Server States', { newStates });
|
||||
}
|
||||
|
||||
addMCPServers = async (newMCPStates: MCPServerStateOfName) => {
|
||||
addMCPServerStateOfName = async (newMCPStates: MCPServerStateOfName) => {
|
||||
const { mcpServerStateOfName: mcpServerStates } = this.state
|
||||
const newMCPServerStates = {
|
||||
...mcpServerStates,
|
||||
...newMCPStates,
|
||||
}
|
||||
await this._setMCPServerStates(newMCPServerStates)
|
||||
await this._setMCPServerStateOfName(newMCPServerStates)
|
||||
this._metricsService.capture('Add MCP Server', { servers: Object.keys(newMCPStates).join(', ') });
|
||||
}
|
||||
|
||||
removeMCPServers = async (serverNames: string[]) => {
|
||||
removeMCPServerStateNames = async (serverNames: string[]) => {
|
||||
const { mcpServerStateOfName: mcpServerStates } = this.state
|
||||
const newMCPServerStates = {
|
||||
...mcpServerStates,
|
||||
@@ -575,21 +575,19 @@ class VoidSettingsService extends Disposable implements IVoidSettingsService {
|
||||
delete newMCPServerStates[serverName]
|
||||
}
|
||||
})
|
||||
await this._setMCPServerStates(newMCPServerStates)
|
||||
await this._setMCPServerStateOfName(newMCPServerStates)
|
||||
this._metricsService.capture('Remove MCP Server', { servers: serverNames.join(', ') });
|
||||
}
|
||||
|
||||
setMCPServerState = async (serverName: string, newIsOn: boolean) => {
|
||||
setMCPServerState = async (serverName: string, state: MCPServerState) => {
|
||||
const { mcpServerStateOfName: mcpServerStates } = this.state
|
||||
if (!(serverName in mcpServerStates)) return // if not in list, do nothing
|
||||
const newMCPServerStates = {
|
||||
...mcpServerStates,
|
||||
[serverName]: {
|
||||
isOn: newIsOn,
|
||||
},
|
||||
[serverName]: state,
|
||||
}
|
||||
await this._setMCPServerStates(newMCPServerStates)
|
||||
this._metricsService.capture('Update MCP Server State', { serverName, newIsOn });
|
||||
await this._setMCPServerStateOfName(newMCPServerStates)
|
||||
this._metricsService.capture('Update MCP Server State', { serverName, state });
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user