{#if loaded} { if (importFiles && importFiles.length > 0) { const file = importFiles[0]; const ext = file.name.split('.').pop()?.toLowerCase(); if (ext === 'json') { // JSON import: create skills via API const reader = new FileReader(); reader.onload = async (event) => { try { const content = event.target?.result; if (typeof content !== 'string') return; const parsedSkills = JSON.parse(content); const items = Array.isArray(parsedSkills) ? parsedSkills : [parsedSkills]; for (const skill of items) { await createNewSkill(localStorage.token, skill).catch((error) => { toast.error(`${error}`); }); } toast.success($i18n.t('Skill imported successfully')); page = 1; loadSkillItems(); _skills.set(await getSkills(localStorage.token)); } catch (e) { toast.error($i18n.t('Invalid JSON file')); } }; reader.readAsText(file); } else { // Markdown import: parse frontmatter and open in editor const reader = new FileReader(); reader.onload = (event) => { const mdContent = event.target?.result; if (typeof mdContent === 'string') { const fm = parseFrontmatter(mdContent); const fileName = file.name.replace(/\.md$/, ''); const rawName = fm.name || fileName; const displayName = formatSkillName(rawName); sessionStorage.skill = JSON.stringify({ name: displayName, id: fm.name || '', description: fm.description || '', content: mdContent, is_active: true, access_grants: [] }); goto('/workspace/skills/create'); } }; reader.readAsText(file); } importInputElement.value = ''; } }} />