feat: add ZIP skill import with client-side extraction

Add import skill modal that accepts .zip files via drag-and-drop or
file picker, extracts them client-side using fflate, validates structure
and security constraints, then batch uploads via presigned URLs.

- Add fflate dependency for browser-side ZIP decompression
- Create zip-extract.ts with fflate filter API for validation
- Create zip-to-upload-tree.ts for BatchUploadNodeInput tree building
- Create import-skill-modal.tsx with drag-and-drop support
- Lazy-load ImportSkillModal via next/dynamic for bundle optimization
- Add en-US and zh-Hans i18n keys for import modal
This commit is contained in:
yyh
2026-01-30 21:49:45 +08:00
parent ea91f96924
commit ea88bcfbd2
8 changed files with 476 additions and 4 deletions

View File

@@ -104,6 +104,7 @@
"emoji-mart": "5.6.0",
"es-toolkit": "1.43.0",
"fast-deep-equal": "3.1.3",
"fflate": "0.8.2",
"foxact": "0.2.52",
"html-entities": "2.6.0",
"html-to-image": "1.11.13",