feat: Support custom response language (#510)
* feat: Support custom response language * fix: Add default values for response language in config-manager.js * chore: Update configuration file and add default response language settings * feat: Support MCP/CLI custom response language * chore: Update test comments to English for consistency * docs: Auto-update and format models.md * chore: fix format --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Ralph Khreish <35776126+Crunchyman-ralph@users.noreply.github.com>
This commit is contained in:
40
mcp-server/src/core/direct-functions/response-language.js
Normal file
40
mcp-server/src/core/direct-functions/response-language.js
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* response-language.js
|
||||
* Direct function for managing response language via MCP
|
||||
*/
|
||||
|
||||
import { setResponseLanguage } from '../../../../scripts/modules/task-manager.js';
|
||||
import {
|
||||
enableSilentMode,
|
||||
disableSilentMode
|
||||
} from '../../../../scripts/modules/utils.js';
|
||||
import { createLogWrapper } from '../../tools/utils.js';
|
||||
|
||||
export async function responseLanguageDirect(args, log, context = {}) {
|
||||
const { projectRoot, language } = args;
|
||||
const mcpLog = createLogWrapper(log);
|
||||
|
||||
log.info(
|
||||
`Executing response-language_direct with args: ${JSON.stringify(args)}`
|
||||
);
|
||||
log.info(`Using project root: ${projectRoot}`);
|
||||
|
||||
try {
|
||||
enableSilentMode();
|
||||
return setResponseLanguage(language, {
|
||||
mcpLog,
|
||||
projectRoot
|
||||
});
|
||||
} catch (error) {
|
||||
return {
|
||||
success: false,
|
||||
error: {
|
||||
code: 'DIRECT_FUNCTION_ERROR',
|
||||
message: error.message,
|
||||
details: error.stack
|
||||
}
|
||||
};
|
||||
} finally {
|
||||
disableSilentMode();
|
||||
}
|
||||
}
|
||||
@@ -29,6 +29,7 @@ import { registerRemoveTaskTool } from './remove-task.js';
|
||||
import { registerInitializeProjectTool } from './initialize-project.js';
|
||||
import { registerModelsTool } from './models.js';
|
||||
import { registerMoveTaskTool } from './move-task.js';
|
||||
import { registerResponseLanguageTool } from './response-language.js';
|
||||
import { registerAddTagTool } from './add-tag.js';
|
||||
import { registerDeleteTagTool } from './delete-tag.js';
|
||||
import { registerListTagsTool } from './list-tags.js';
|
||||
@@ -83,6 +84,7 @@ export function registerTaskMasterTools(server) {
|
||||
registerRemoveDependencyTool(server);
|
||||
registerValidateDependenciesTool(server);
|
||||
registerFixDependenciesTool(server);
|
||||
registerResponseLanguageTool(server);
|
||||
|
||||
// Group 7: Tag Management
|
||||
registerListTagsTool(server);
|
||||
|
||||
46
mcp-server/src/tools/response-language.js
Normal file
46
mcp-server/src/tools/response-language.js
Normal file
@@ -0,0 +1,46 @@
|
||||
import { z } from 'zod';
|
||||
import {
|
||||
createErrorResponse,
|
||||
handleApiResult,
|
||||
withNormalizedProjectRoot
|
||||
} from './utils.js';
|
||||
import { responseLanguageDirect } from '../core/direct-functions/response-language.js';
|
||||
|
||||
export function registerResponseLanguageTool(server) {
|
||||
server.addTool({
|
||||
name: 'response-language',
|
||||
description: 'Get or set the response language for the project',
|
||||
parameters: z.object({
|
||||
projectRoot: z
|
||||
.string()
|
||||
.describe(
|
||||
'The root directory for the project. ALWAYS SET THIS TO THE PROJECT ROOT DIRECTORY. IF NOT SET, THE TOOL WILL NOT WORK.'
|
||||
),
|
||||
language: z
|
||||
.string()
|
||||
.describe(
|
||||
'The new response language to set. like "中文" "English" or "español".'
|
||||
)
|
||||
}),
|
||||
execute: withNormalizedProjectRoot(async (args, { log, session }) => {
|
||||
try {
|
||||
log.info(
|
||||
`Executing response-language tool with args: ${JSON.stringify(args)}`
|
||||
);
|
||||
|
||||
const result = await responseLanguageDirect(
|
||||
{
|
||||
...args,
|
||||
projectRoot: args.projectRoot
|
||||
},
|
||||
log,
|
||||
{ session }
|
||||
);
|
||||
return handleApiResult(result, log, 'Error setting response language');
|
||||
} catch (error) {
|
||||
log.error(`Error in response-language tool: ${error.message}`);
|
||||
return createErrorResponse(error.message);
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
Reference in New Issue
Block a user