flowchart TD
%% Main user input
User[User Command] --> Orchestrator
%% Core orchestration
Orchestrator[BookBuilderOrchestrator] --> OptionHandler
Orchestrator --> LoggerSetup
Orchestrator --> MetaHandler
Orchestrator --> DirSetup
%% Setup and configuration components
OptionHandler[OptionHandler] -->|build options| Orchestrator
LoggerSetup[LoggerSetup] -->|logger instance| Orchestrator
MetaHandler[MetadataHandler] -->|book metadata| Orchestrator
DirSetup[FileStructureSetup] -->|directory paths| Orchestrator
%% Book building components with dependencies
Orchestrator -->|if not pdf_only| EB
Orchestrator -->|if not pdf_only| MB
Orchestrator -->|if not skip_quality| QC
%% Input files
MetaYAML[meta.yaml] -->|input| MetaHandler
ManuscriptTex[manuscript.tex] -->|input| PDF
CoverImage[cover image] -->|input| EB
%% PDF Builder flow
Orchestrator --> PDF
PDF[PDFBuilder] -->|compiles| PDFOutput[PDF File]
%% Ebook Builder flow
EB[EbookBuilder] --> HTML
HTML[BuildHTML] -->|output| HTMLFiles[HTML Files]
HTMLFiles -->|input| MOBI
EB --> MOBI[BuildMOBI]
EB --> EPUB[BuildEPUB]
EB --> Kindle[BuildKindleFormats]
MOBI -->|output| MOBIFile[MOBI File]
EPUB -->|output| EPUBFile[EPUB File]
Kindle -->|output| KFXFile[KFX File]
ManuscriptTex -->|input| EPUB
ManuscriptTex -->|input| HTML
%% Markdown Builder flow
MB[MarkdownBuilder] -->|creates| MDFile[Markdown Files]
PDFOutput -->|input| MB
%% WikiJS Builder flow
MB --> WB[WikiJSBuilder]
WB -->|creates| WikiJSFiles[WikiJS Files]
CoverImage -->|input| WB
MDFile -->|input| WB
EPUBFile -->|link in index| WB
MOBIFile -->|link in index| WB
KFXFile -->|link in index| WB
PDFOutput -->|link in index| WB
%% Quality Checker flow
QC[QualityChecker] --> EPUBCheck
QC --> ACECheck
QC --> PDFDiff
EPUBFile -->|input| EPUBCheck[CheckEPUB]
EPUBFile -->|input| ACECheck[RunACE]
PDFOutput -->|input| PDFDiff[CreatePDFDiff]
EPUBCheck -->|output| EPUBReport[EPUB Check Report]
ACECheck -->|output| ACEReport[Accessibility Report]
PDFDiff -->|output| DiffFile[PDF Difference File]
%% Outputs section highlighting final deliverables
subgraph Outputs
PDFOutput
EPUBFile
MOBIFile
KFXFile
MDFile
WikiJSFiles
EPUBReport
ACEReport
DiffFile
end
%% Style definitions
classDef algorithm fill:#f9f,stroke:#333,stroke-width:2px;
classDef input fill:#bbf,stroke:#33f,stroke-width:1px;
classDef output fill:#bfb,stroke:#3b3,stroke-width:1px;
class Orchestrator,OptionHandler,LoggerSetup,MetaHandler,DirSetup,PDF,EB,HTML,EPUB,MOBI,Kindle,MB,WB,QC,EPUBCheck,ACECheck,PDFDiff algorithm;
class MetaYAML,ManuscriptTex,CoverImage input;
class PDFOutput,EPUBFile,MOBIFile,KFXFile,MDFile,WikiJSFiles,EPUBReport,ACEReport,DiffFile output;