feat(tools): 2.0 phase 5 wave 4 - office, ebooks, data, archives (14 tools) (#224)

This commit is contained in:
SnapOtter
2026-06-13 10:19:11 +08:00
parent 638288e196
commit fc7c1f850e
93 changed files with 7636 additions and 817 deletions
+162 -3
View File
@@ -1141,6 +1141,51 @@ export const TOOLS: Tool[] = [
acceptedInputs: [".pdf"],
executionHint: "fast",
},
{
id: "convert-document",
name: "Convert Document",
description: "Convert between Word, OpenDocument, RTF, and plain text formats",
category: "documents",
icon: "FileType2",
route: "/convert-document",
modality: "document",
acceptedInputs: [".docx", ".doc", ".odt", ".rtf", ".txt"],
executionHint: "long",
},
{
id: "convert-presentation",
name: "Convert Presentation",
description: "Convert between PowerPoint and OpenDocument presentation formats",
category: "documents",
icon: "Presentation",
route: "/convert-presentation",
modality: "document",
acceptedInputs: [".pptx", ".ppt", ".odp"],
executionHint: "long",
},
{
id: "convert-spreadsheet",
name: "Convert Spreadsheet",
description:
"Convert between Excel, OpenDocument, and CSV formats. Multi-sheet workbooks export the first sheet to CSV.",
category: "documents",
icon: "Grid3x3",
route: "/convert-spreadsheet",
modality: "document",
acceptedInputs: [".xlsx", ".xls", ".ods", ".csv"],
executionHint: "long",
},
{
id: "excel-to-pdf",
name: "Excel to PDF",
description: "Convert spreadsheets to PDF. Wide sheets may paginate across multiple pages.",
category: "documents",
icon: "Table",
route: "/excel-to-pdf",
modality: "document",
acceptedInputs: [".xlsx", ".xls", ".ods", ".csv"],
executionHint: "long",
},
{
id: "word-to-pdf",
name: "Word to PDF",
@@ -1361,6 +1406,17 @@ export const TOOLS: Tool[] = [
acceptedInputs: [".pdf"],
executionHint: "fast",
},
{
id: "powerpoint-to-pdf",
name: "PowerPoint to PDF",
description: "Convert presentations to PDF",
category: "documents",
icon: "Presentation",
route: "/powerpoint-to-pdf",
modality: "document",
acceptedInputs: [".pptx", ".ppt", ".odp"],
executionHint: "long",
},
{
id: "html-to-pdf",
name: "HTML to PDF",
@@ -1372,6 +1428,29 @@ export const TOOLS: Tool[] = [
acceptedInputs: [".html", ".htm"],
executionHint: "long",
},
{
id: "markdown-to-docx",
name: "Markdown to Word",
description: "Convert a Markdown file to a Word document (DOCX)",
category: "documents",
icon: "FileType",
route: "/markdown-to-docx",
modality: "document",
acceptedInputs: [".md", ".markdown"],
executionHint: "fast",
},
{
id: "markdown-to-html",
name: "Markdown to HTML",
description:
"Convert a Markdown file to a standalone HTML page. Remote images in the source are left as-is in the output.",
category: "documents",
icon: "FileCode",
route: "/markdown-to-html",
modality: "document",
acceptedInputs: [".md", ".markdown"],
executionHint: "fast",
},
{
id: "markdown-to-pdf",
name: "Markdown to PDF",
@@ -1384,6 +1463,29 @@ export const TOOLS: Tool[] = [
acceptedInputs: [".md", ".markdown"],
executionHint: "long",
},
{
id: "epub-convert",
name: "Convert EPUB",
description:
"Convert an EPUB to PDF, DOCX, HTML, or Markdown. Remote resources inside the book are not fetched.",
category: "documents",
icon: "BookOpen",
route: "/epub-convert",
modality: "document",
acceptedInputs: [".epub"],
executionHint: "long",
},
{
id: "to-epub",
name: "Convert to EPUB",
description: "Convert Word, Markdown, HTML, or plain text files to EPUB",
category: "documents",
icon: "Book",
route: "/to-epub",
modality: "document",
acceptedInputs: [".docx", ".md", ".html", ".txt"],
executionHint: "long",
},
// Data Files
{
id: "csv-excel",
@@ -1393,7 +1495,7 @@ export const TOOLS: Tool[] = [
icon: "Table",
route: "/csv-excel",
modality: "file",
acceptedInputs: [".csv", ".xlsx"],
acceptedInputs: [".csv", ".tsv", ".xlsx"],
executionHint: "fast",
},
{
@@ -1404,7 +1506,7 @@ export const TOOLS: Tool[] = [
icon: "Braces",
route: "/csv-json",
modality: "file",
acceptedInputs: [".csv", ".json"],
acceptedInputs: [".csv", ".tsv", ".json"],
executionHint: "fast",
},
{
@@ -1426,7 +1528,64 @@ export const TOOLS: Tool[] = [
icon: "Split",
route: "/split-csv",
modality: "file",
acceptedInputs: [".csv"],
acceptedInputs: [".csv", ".tsv"],
executionHint: "fast",
},
{
id: "merge-csvs",
name: "Merge CSVs",
description: "Combine multiple CSV or TSV files with matching columns into one",
category: "data",
icon: "Combine",
route: "/merge-csvs",
modality: "file",
acceptedInputs: [".csv", ".tsv"],
executionHint: "fast",
},
{
id: "yaml-json",
name: "YAML / JSON",
description: "Convert between YAML and JSON, both directions",
category: "data",
icon: "Braces",
route: "/yaml-json",
modality: "file",
acceptedInputs: [".yaml", ".yml", ".json"],
executionHint: "fast",
},
{
id: "xml-to-csv",
name: "XML to CSV",
description: "Extract repeating elements from XML into a CSV table",
category: "data",
icon: "Grid3x3",
route: "/xml-to-csv",
modality: "file",
acceptedInputs: [".xml"],
executionHint: "fast",
},
// Archives
{
id: "create-zip",
name: "Create ZIP",
description: "Bundle multiple files into a single ZIP archive",
category: "data",
icon: "FolderArchive",
route: "/create-zip",
modality: "file",
acceptedInputs: [],
executionHint: "fast",
},
{
id: "extract-zip",
name: "Extract ZIP",
description:
"Safely extract files from a ZIP archive with bomb protection. Single-file archives return the file directly.",
category: "data",
icon: "FolderOpen",
route: "/extract-zip",
modality: "file",
acceptedInputs: [".zip"],
executionHint: "fast",
},
];