Office documents were dropped server-side: .docx fell through to "[Attached document file]", .xlsx/.pptx weren't recognized at all, and the personal-docs RAG index only covered txt/md/json/pdf. Wire the optional markitdown dependency (MIT, Microsoft) into both the chat-attachment path (build_user_content) and the RAG indexer (personal_docs), converting .docx/.xlsx/.pptx/.xls/.epub to Markdown. It is lazy-imported with graceful fallback (mirrors src/pdf_runtime.py): without it those formats show an "install to extract" banner and the MIT core is unaffected. pypdf stays the default PDF path. - src/markitdown_runtime.py: optional-dep loader + convert_to_markdown - upload_handler: recognize Office/EPUB extensions + MIME types - document_processor: extract Office docs in the chat else-branch - personal_docs: index Office docs (DEFAULT_EXTENSIONS + dispatch) - requirements-optional.txt + ACKNOWLEDGMENTS.md: pinned markitdown 0.1.5 - tests: markitdown_runtime + office index coverage Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
37 lines
2.0 KiB
Plaintext
37 lines
2.0 KiB
Plaintext
# Optional dependencies — install only if you use the corresponding feature.
|
|
# The app handles their absence gracefully (clear error message on first use).
|
|
#
|
|
# Note: chromadb-client + fastembed moved to requirements.txt — RAG, semantic
|
|
# memory, and tool selection are core paths, so they ship by default now.
|
|
|
|
# Local speech-to-text (microphone -> text) via faster-whisper, for the
|
|
# "local" STT provider. Runs on CPU out of the box (CTranslate2 backend, no
|
|
# torch needed). Install if you want to dictate/transcribe with the mic
|
|
# without sending audio to an external endpoint.
|
|
# Optional extra: install `torch` too if you have a CUDA GPU and want
|
|
# GPU-accelerated transcription — it's auto-detected, CPU is used otherwise.
|
|
faster-whisper
|
|
|
|
# DuckDuckGo as a search provider option.
|
|
# Install if you want DDG in the search-provider dropdown.
|
|
# Alternatives: SearXNG, Brave, Tavily, Serper, Google PSE.
|
|
duckduckgo-search
|
|
|
|
# PDF form-filling feature (fillable AcroForm detection, field extraction,
|
|
# value/annotation/signature stamping, page rendering for the form overlay).
|
|
# NOTE: PyMuPDF is AGPL-3.0. Installing it brings AGPL obligations for a
|
|
# network-served app — see ACKNOWLEDGMENTS.md. The MIT core (PDF *text*
|
|
# extraction via pypdf) works without it; this only unlocks form-filling.
|
|
PyMuPDF
|
|
|
|
# Office / EPUB document text extraction (chat attachments + the personal-docs
|
|
# RAG index). markitdown (MIT, Microsoft) converts .docx/.xlsx/.pptx/.xls/.epub
|
|
# to Markdown — more token-efficient and model-legible than a raw dump. Optional
|
|
# and lazy-imported via src/markitdown_runtime.py; without it those formats fall
|
|
# back to a friendly "install to extract" banner and the core stays pure-MIT.
|
|
# Extras pull mammoth/lxml/python-pptx/pandas/openpyxl/xlrd; the base also pulls
|
|
# magika (onnxruntime), already a core dep via fastembed. We avoid the
|
|
# [all]/Azure/audio extras (cloud + heavy). Pinned to a release >30 days old per
|
|
# the dependency-age discussion in issue #485.
|
|
markitdown[docx,pptx,xlsx,xls]==0.1.5
|