Skip to main content
Glama
artifact-handler.ts2.19 kB
import type { Services } from '../services.js'; import type { AddArtifactInput, GetArtifactInput, UpdateArtifactInput, ListArtifactsInput, DeleteArtifactInput, } from '../../domain/services/artifact-service.js'; import { ToolError, createSuccessResponse, type ToolResult } from './types.js'; import { VALID_ARTIFACT_FIELDS, METADATA_FIELDS, SUMMARY_FIELDS, } from '../../domain/utils/field-filter.js'; interface ArtifactArgs { action: string; [key: string]: unknown; } interface GetHistoryArgs { planId: string; artifactId: string; limit?: number; offset?: number; } interface DiffArgs { planId: string; artifactId: string; version1: number; version2: number; } export async function handleArtifact(args: ArtifactArgs, services: Services): Promise<ToolResult> { const { artifactService } = services; const { action } = args; let result: unknown; switch (action) { case 'add': result = await artifactService.addArtifact(args as unknown as AddArtifactInput); break; case 'get': result = await artifactService.getArtifact(args as unknown as GetArtifactInput); break; case 'update': result = await artifactService.updateArtifact(args as unknown as UpdateArtifactInput); break; case 'list': result = await artifactService.listArtifacts(args as unknown as ListArtifactsInput); break; case 'delete': result = await artifactService.deleteArtifact(args as unknown as DeleteArtifactInput); break; case 'get_history': result = await artifactService.getHistory(args as unknown as GetHistoryArgs); break; case 'diff': result = await artifactService.diff(args as unknown as DiffArgs); break; case 'list_fields': // Introspection: return field metadata for artifact entity result = { entity: 'artifact', summary: SUMMARY_FIELDS.artifact, all: Array.from(VALID_ARTIFACT_FIELDS), metadata: METADATA_FIELDS, computed: [], }; break; default: throw new ToolError('Invalid Action', `Unknown action for artifact: ${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