skill-save-payload.ts
1 import type { Skill } from '@/types' 2 3 export type SkillScope = 'global' | 'agent' 4 5 export interface SkillDraftInput { 6 name: string 7 filename: string 8 description: string 9 content: string 10 scope: SkillScope 11 agentIds: string[] 12 } 13 14 export function buildSkillSavePayload(draft: SkillDraftInput, metadataPreview?: Partial<Skill> | null) { 15 return { 16 name: draft.name.trim() || 'Unnamed Skill', 17 filename: draft.filename.trim() || `${draft.name.trim().toLowerCase().replace(/\s+/g, '-')}.md`, 18 description: draft.description, 19 content: draft.content, 20 scope: draft.scope, 21 agentIds: draft.scope === 'agent' ? draft.agentIds : [], 22 sourceUrl: metadataPreview?.sourceUrl, 23 sourceFormat: metadataPreview?.sourceFormat, 24 author: metadataPreview?.author, 25 tags: metadataPreview?.tags, 26 version: metadataPreview?.version, 27 homepage: metadataPreview?.homepage, 28 primaryEnv: metadataPreview?.primaryEnv, 29 skillKey: metadataPreview?.skillKey, 30 always: metadataPreview?.always, 31 installOptions: metadataPreview?.installOptions, 32 skillRequirements: metadataPreview?.skillRequirements, 33 detectedEnvVars: metadataPreview?.detectedEnvVars, 34 security: metadataPreview?.security, 35 frontmatter: metadataPreview?.frontmatter, 36 } 37 }