Skip to main content
Glama
requirement-handler.ts2.97 kB
import type { Services } from '../services.js'; import type { AddRequirementInput, GetRequirementInput, GetRequirementsInput, UpdateRequirementInput, ListRequirementsInput, DeleteRequirementInput, VoteForRequirementInput, UnvoteRequirementInput, ResetAllVotesInput, } from '../../domain/services/requirement-service.js'; import { ToolError, createSuccessResponse, type ToolResult } from './types.js'; import { VALID_REQUIREMENT_FIELDS, METADATA_FIELDS, SUMMARY_FIELDS, } from '../../domain/utils/field-filter.js'; interface RequirementArgs { action: string; [key: string]: unknown; } interface GetHistoryArgs { planId: string; requirementId: string; limit?: number; offset?: number; } interface DiffArgs { planId: string; requirementId: string; version1: number; version2: number; } export async function handleRequirement(args: RequirementArgs, services: Services): Promise<ToolResult> { const { requirementService } = services; const { action } = args; let result: unknown; switch (action) { case 'add': result = await requirementService.addRequirement(args as unknown as AddRequirementInput); break; case 'get': result = await requirementService.getRequirement(args as unknown as GetRequirementInput); break; case 'get_many': result = await requirementService.getRequirements(args as unknown as GetRequirementsInput); break; case 'update': result = await requirementService.updateRequirement(args as unknown as UpdateRequirementInput); break; case 'list': result = await requirementService.listRequirements(args as unknown as ListRequirementsInput); break; case 'delete': result = await requirementService.deleteRequirement(args as unknown as DeleteRequirementInput); break; case 'vote': result = await requirementService.voteForRequirement(args as unknown as VoteForRequirementInput); break; case 'unvote': result = await requirementService.unvoteRequirement(args as unknown as UnvoteRequirementInput); break; case 'get_history': result = await requirementService.getHistory(args as unknown as GetHistoryArgs); break; case 'diff': result = await requirementService.diff(args as unknown as DiffArgs); break; case 'reset_all_votes': result = await requirementService.resetAllVotes(args as unknown as ResetAllVotesInput); break; case 'list_fields': // Introspection: return field metadata for requirement entity result = { entity: 'requirement', summary: SUMMARY_FIELDS.requirement, all: Array.from(VALID_REQUIREMENT_FIELDS), metadata: METADATA_FIELDS, computed: [], // Requirements have no computed fields }; break; default: throw new ToolError('InvalidAction', `Unknown action for requirement: ${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