Skip to main content
Glama
solution-handler.ts2.65 kB
import type { Services } from '../services.js'; import type { ProposeSolutionInput, GetSolutionInput, GetSolutionsInput, UpdateSolutionInput, ListSolutionsInput, CompareSolutionsInput, SelectSolutionInput, DeleteSolutionInput, } from '../../domain/services/solution-service.js'; import { ToolError, createSuccessResponse, type ToolResult } from './types.js'; import { VALID_SOLUTION_FIELDS, METADATA_FIELDS, SUMMARY_FIELDS, } from '../../domain/utils/field-filter.js'; interface SolutionArgs { action: string; [key: string]: unknown; } interface GetHistoryArgs { planId: string; solutionId: string; limit?: number; offset?: number; } interface DiffArgs { planId: string; solutionId: string; version1: number; version2: number; } export async function handleSolution(args: SolutionArgs, services: Services): Promise<ToolResult> { const { solutionService } = services; const { action } = args; let result: unknown; switch (action) { case 'propose': result = await solutionService.proposeSolution(args as unknown as ProposeSolutionInput); break; case 'get': result = await solutionService.getSolution(args as unknown as GetSolutionInput); break; case 'get_many': result = await solutionService.getSolutions(args as unknown as GetSolutionsInput); break; case 'update': result = await solutionService.updateSolution(args as unknown as UpdateSolutionInput); break; case 'list': result = await solutionService.listSolutions(args as unknown as ListSolutionsInput); break; case 'compare': result = await solutionService.compareSolutions(args as unknown as CompareSolutionsInput); break; case 'select': result = await solutionService.selectSolution(args as unknown as SelectSolutionInput); break; case 'delete': result = await solutionService.deleteSolution(args as unknown as DeleteSolutionInput); break; case 'get_history': result = await solutionService.getHistory(args as unknown as GetHistoryArgs); break; case 'diff': result = await solutionService.diff(args as unknown as DiffArgs); break; case 'list_fields': // Introspection: return field metadata for solution entity result = { entity: 'solution', summary: SUMMARY_FIELDS.solution, all: Array.from(VALID_SOLUTION_FIELDS), metadata: METADATA_FIELDS, computed: [], }; break; default: throw new ToolError('InvalidAction', `Unknown action for solution: ${action}`); } return createSuccessResponse(result); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/cppmyjob/cpp-mcp-planner'

If you have feedback or need assistance with the MCP directory API, please join our Discord server