genusamblyrhynchusbrunooftoul602/dsh-attachment-formats
Extend DeepSeek Harness composer to accept PDFs and more attachment formats Codex-style, with zero core changes and native pipeline reuse.
Install
dsh-attachment-formats/
├── lib/
│ ├── index.js # host half: POST /api/attach-formats/convert + engine routing
│ ├── client.js # browser half: button/drop interception/synthetic drop/text injection/status bar
│ ├── cache.js # workspace .dsh-attachments spill/manifest/INDEX.md/cleanup
│ ├── py/pymupdf4llm_convert.py # venv high-fidelity engine (subprocess call)
│ └── convert/
│ ├── util.js # magic-byte sniffing (pdf/tiff/OLE/rtf/zip), base64, truncation
│ ├── provider.js # engine/binary detection (venv python, pandoc, LibreOffice) + subprocess bridges
│ ├── pdftext.js # pdfjs text-layer extraction: line assembly/header-footer dedup/bookmark TOC
│ ├── outline.js # md heading outline, JSON first-level key tree
│ ├── ocr.js # tesseract.js OCR (traineddata download cache/confidence)
│ ├── pdf.js # pdfjs-dist + @napi-rs/canvas → PNG/JPEG pages
│ ├── docx.js # mammoth HTML → turndown+GFM → Markdown (tables preserved)
│ ├── xlsx.js # exceljs → tab-separated text
│ ├── pptx.js # jszip + a:t text runs → per-slide text
│ ├── tiff.js # sharp (libvips) → PNG pages
│ ├── pandoc.js # pandoc → Markdown + epub/odt zip fallback
│ └── libreoffice.js # legacy .doc/.xls/.ppt → modern OOXML
├── .venv/ # (optional) pymupdf4llm engine (generated by setup, not committed)
├── vendor/tessdata/ # OCR language-data cache (downloaded on first use, not committed)
├── docs/ # design-longdoc.md / alternatives.md / upgrade-v6.md
├── scripts/smoke-*.mjs # five offline smoke suites (converters/router/client/OCR/P0)
└── cordis.patch.yml
Add genusamblyrhynchusbrunooftoul602/dsh-attachment-formats to your DSH config (web profile) to enable.
README
Expand full README Collapse
README is empty.
tt-a1i/archify
zhu1090093659/dsh-web-ui
strukto-ai/mirage
liustack/modlens
omdsh-dev/DSH-better-sidebar
ccch1mneyyy/dsh-TUI
agentrq/agentrq
GanyuanRan/Aegis