deepresearch-flow 0.4.1__tar.gz → 0.5.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (464) hide show
  1. {deepresearch_flow-0.4.1/python/deepresearch_flow.egg-info → deepresearch_flow-0.5.0}/PKG-INFO +62 -2
  2. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/README.md +61 -1
  3. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/pyproject.toml +1 -1
  4. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/db.py +34 -0
  5. deepresearch_flow-0.5.0/python/deepresearch_flow/paper/web/app.py +199 -0
  6. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/constants.py +1 -0
  7. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/handlers/__init__.py +2 -1
  8. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/handlers/api.py +55 -0
  9. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/handlers/pages.py +105 -25
  10. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/markdown.py +60 -0
  11. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.html +57 -5
  12. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.js +5 -1
  13. deepresearch_flow-0.5.0/python/deepresearch_flow/paper/web/static/js/detail.js +775 -0
  14. deepresearch_flow-0.5.0/python/deepresearch_flow/paper/web/static/js/outline.js +72 -0
  15. deepresearch_flow-0.5.0/python/deepresearch_flow/paper/web/static_assets.py +289 -0
  16. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/templates/detail.html +43 -66
  17. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/templates.py +7 -4
  18. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0/python/deepresearch_flow.egg-info}/PKG-INFO +62 -2
  19. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow.egg-info/SOURCES.txt +1 -0
  20. deepresearch_flow-0.4.1/python/deepresearch_flow/paper/web/app.py +0 -94
  21. deepresearch_flow-0.4.1/python/deepresearch_flow/paper/web/static/js/detail.js +0 -406
  22. deepresearch_flow-0.4.1/python/deepresearch_flow/paper/web/static/js/outline.js +0 -58
  23. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/LICENSE +0 -0
  24. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/MANIFEST.in +0 -0
  25. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/__init__.py +0 -0
  26. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/__main__.py +0 -0
  27. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/cli.py +0 -0
  28. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/__init__.py +0 -0
  29. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/cli.py +0 -0
  30. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/config.py +0 -0
  31. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/db_ops.py +0 -0
  32. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/extract.py +0 -0
  33. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/llm.py +0 -0
  34. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/__init__.py +0 -0
  35. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/deep_read_system.j2 +0 -0
  36. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/deep_read_user.j2 +0 -0
  37. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/eight_questions_system.j2 +0 -0
  38. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/eight_questions_user.j2 +0 -0
  39. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/simple_system.j2 +0 -0
  40. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/simple_user.j2 +0 -0
  41. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/three_pass_system.j2 +0 -0
  42. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompt_templates/three_pass_user.j2 +0 -0
  43. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/prompts.py +0 -0
  44. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/__init__.py +0 -0
  45. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/azure_openai.py +0 -0
  46. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/base.py +0 -0
  47. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/claude.py +0 -0
  48. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/dashscope.py +0 -0
  49. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/gemini.py +0 -0
  50. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/ollama.py +0 -0
  51. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/providers/openai_compatible.py +0 -0
  52. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/render.py +0 -0
  53. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schema.py +0 -0
  54. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schemas/__init__.py +0 -0
  55. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schemas/deep_read_schema.json +0 -0
  56. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schemas/default_paper_schema.json +0 -0
  57. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schemas/eight_questions_schema.json +0 -0
  58. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/schemas/three_pass_schema.json +0 -0
  59. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/template_registry.py +0 -0
  60. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/templates/__init__.py +0 -0
  61. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/templates/deep_read.md.j2 +0 -0
  62. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/templates/default_paper.md.j2 +0 -0
  63. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/templates/eight_questions.md.j2 +0 -0
  64. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/templates/three_pass.md.j2 +0 -0
  65. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/utils.py +0 -0
  66. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/__init__.py +0 -0
  67. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/filters.py +0 -0
  68. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/LICENSE +0 -0
  69. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.js +0 -0
  70. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.js.map +0 -0
  71. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.sandbox.js +0 -0
  72. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.sandbox.js.map +0 -0
  73. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.worker.js +0 -0
  74. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.worker.js.map +0 -0
  75. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-EUC-H.bcmap +0 -0
  76. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-EUC-V.bcmap +0 -0
  77. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-H.bcmap +0 -0
  78. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap +0 -0
  79. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap +0 -0
  80. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-V.bcmap +0 -0
  81. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
  82. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
  83. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
  84. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
  85. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
  86. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
  87. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
  88. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
  89. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
  90. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-H.bcmap +0 -0
  91. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap +0 -0
  92. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap +0 -0
  93. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-V.bcmap +0 -0
  94. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
  95. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
  96. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
  97. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
  98. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
  99. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
  100. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
  101. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  102. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap +0 -0
  103. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap +0 -0
  104. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap +0 -0
  105. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap +0 -0
  106. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap +0 -0
  107. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap +0 -0
  108. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  109. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
  110. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
  111. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
  112. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
  113. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
  114. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
  115. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
  116. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  117. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
  118. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
  119. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
  120. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  121. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5-H.bcmap +0 -0
  122. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5-V.bcmap +0 -0
  123. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5pc-H.bcmap +0 -0
  124. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5pc-V.bcmap +0 -0
  125. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap +0 -0
  126. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap +0 -0
  127. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS1-H.bcmap +0 -0
  128. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS1-V.bcmap +0 -0
  129. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS2-H.bcmap +0 -0
  130. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS2-V.bcmap +0 -0
  131. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap +0 -0
  132. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap +0 -0
  133. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETen-B5-H.bcmap +0 -0
  134. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETen-B5-V.bcmap +0 -0
  135. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap +0 -0
  136. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap +0 -0
  137. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/EUC-H.bcmap +0 -0
  138. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/EUC-V.bcmap +0 -0
  139. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-H.bcmap +0 -0
  140. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
  141. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
  142. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-V.bcmap +0 -0
  143. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-EUC-H.bcmap +0 -0
  144. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-EUC-V.bcmap +0 -0
  145. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-H.bcmap +0 -0
  146. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-V.bcmap +0 -0
  147. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap +0 -0
  148. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap +0 -0
  149. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK2K-H.bcmap +0 -0
  150. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK2K-V.bcmap +0 -0
  151. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap +0 -0
  152. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap +0 -0
  153. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap +0 -0
  154. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap +0 -0
  155. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-H.bcmap +0 -0
  156. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-V.bcmap +0 -0
  157. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
  158. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
  159. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap +0 -0
  160. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap +0 -0
  161. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/H.bcmap +0 -0
  162. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap +0 -0
  163. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap +0 -0
  164. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap +0 -0
  165. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap +0 -0
  166. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap +0 -0
  167. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap +0 -0
  168. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap +0 -0
  169. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap +0 -0
  170. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap +0 -0
  171. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap +0 -0
  172. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap +0 -0
  173. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap +0 -0
  174. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Hankaku.bcmap +0 -0
  175. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Hiragana.bcmap +0 -0
  176. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap +0 -0
  177. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap +0 -0
  178. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-H.bcmap +0 -0
  179. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap +0 -0
  180. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap +0 -0
  181. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-V.bcmap +0 -0
  182. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap +0 -0
  183. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  184. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  185. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap +0 -0
  186. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
  187. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
  188. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Katakana.bcmap +0 -0
  189. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/LICENSE +0 -0
  190. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/NWP-H.bcmap +0 -0
  191. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/NWP-V.bcmap +0 -0
  192. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/RKSJ-H.bcmap +0 -0
  193. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/RKSJ-V.bcmap +0 -0
  194. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Roman.bcmap +0 -0
  195. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  196. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  197. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  198. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  199. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  200. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  201. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  202. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  203. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
  204. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
  205. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
  206. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
  207. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
  208. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
  209. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
  210. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
  211. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  212. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  213. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  214. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  215. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  216. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  217. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  218. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  219. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  220. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  221. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  222. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  223. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  224. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  225. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  226. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  227. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  228. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  229. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  230. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  231. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  232. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  233. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  234. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
  235. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
  236. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
  237. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
  238. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
  239. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
  240. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
  241. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
  242. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/V.bcmap +0 -0
  243. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/WP-Symbol.bcmap +0 -0
  244. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/compressed.tracemonkey-pldi-09.pdf +0 -0
  245. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/debugger.css +0 -0
  246. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/debugger.js +0 -0
  247. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/altText_add.svg +0 -0
  248. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/altText_done.svg +0 -0
  249. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-check.svg +0 -0
  250. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-comment.svg +0 -0
  251. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-help.svg +0 -0
  252. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-insert.svg +0 -0
  253. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-key.svg +0 -0
  254. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-newparagraph.svg +0 -0
  255. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-noicon.svg +0 -0
  256. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-note.svg +0 -0
  257. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-paperclip.svg +0 -0
  258. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-paragraph.svg +0 -0
  259. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-pushpin.svg +0 -0
  260. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/cursor-editorFreeText.svg +0 -0
  261. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/cursor-editorInk.svg +0 -0
  262. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/findbarButton-next.svg +0 -0
  263. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/findbarButton-previous.svg +0 -0
  264. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/gv-toolbarButton-download.svg +0 -0
  265. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/gv-toolbarButton-openinapp.svg +0 -0
  266. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading-dark.svg +0 -0
  267. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading-icon.gif +0 -0
  268. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading.svg +0 -0
  269. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +0 -0
  270. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +0 -0
  271. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-handTool.svg +0 -0
  272. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +0 -0
  273. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +0 -0
  274. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +0 -0
  275. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +0 -0
  276. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg +0 -0
  277. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +0 -0
  278. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +0 -0
  279. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +0 -0
  280. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +0 -0
  281. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +0 -0
  282. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +0 -0
  283. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-bookmark.svg +0 -0
  284. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +0 -0
  285. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-download.svg +0 -0
  286. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorFreeText.svg +0 -0
  287. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorInk.svg +0 -0
  288. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorStamp.svg +0 -0
  289. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-menuArrow.svg +0 -0
  290. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-openFile.svg +0 -0
  291. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-pageDown.svg +0 -0
  292. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-pageUp.svg +0 -0
  293. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-presentationMode.svg +0 -0
  294. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-print.svg +0 -0
  295. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-search.svg +0 -0
  296. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +0 -0
  297. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-sidebarToggle.svg +0 -0
  298. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewAttachments.svg +0 -0
  299. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewLayers.svg +0 -0
  300. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewOutline.svg +0 -0
  301. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewThumbnail.svg +0 -0
  302. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-zoomIn.svg +0 -0
  303. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-zoomOut.svg +0 -0
  304. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/treeitem-collapsed.svg +0 -0
  305. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/images/treeitem-expanded.svg +0 -0
  306. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ach/viewer.properties +0 -0
  307. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/af/viewer.properties +0 -0
  308. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/an/viewer.properties +0 -0
  309. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ar/viewer.properties +0 -0
  310. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ast/viewer.properties +0 -0
  311. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/az/viewer.properties +0 -0
  312. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/be/viewer.properties +0 -0
  313. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bg/viewer.properties +0 -0
  314. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bn/viewer.properties +0 -0
  315. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bo/viewer.properties +0 -0
  316. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/br/viewer.properties +0 -0
  317. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/brx/viewer.properties +0 -0
  318. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bs/viewer.properties +0 -0
  319. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ca/viewer.properties +0 -0
  320. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cak/viewer.properties +0 -0
  321. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ckb/viewer.properties +0 -0
  322. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cs/viewer.properties +0 -0
  323. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cy/viewer.properties +0 -0
  324. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/da/viewer.properties +0 -0
  325. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/de/viewer.properties +0 -0
  326. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/dsb/viewer.properties +0 -0
  327. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/el/viewer.properties +0 -0
  328. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-CA/viewer.properties +0 -0
  329. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-GB/viewer.properties +0 -0
  330. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-US/viewer.properties +0 -0
  331. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/eo/viewer.properties +0 -0
  332. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-AR/viewer.properties +0 -0
  333. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-CL/viewer.properties +0 -0
  334. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-ES/viewer.properties +0 -0
  335. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-MX/viewer.properties +0 -0
  336. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/et/viewer.properties +0 -0
  337. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/eu/viewer.properties +0 -0
  338. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fa/viewer.properties +0 -0
  339. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ff/viewer.properties +0 -0
  340. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fi/viewer.properties +0 -0
  341. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fr/viewer.properties +0 -0
  342. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fur/viewer.properties +0 -0
  343. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fy-NL/viewer.properties +0 -0
  344. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ga-IE/viewer.properties +0 -0
  345. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gd/viewer.properties +0 -0
  346. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gl/viewer.properties +0 -0
  347. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gn/viewer.properties +0 -0
  348. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gu-IN/viewer.properties +0 -0
  349. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/he/viewer.properties +0 -0
  350. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hi-IN/viewer.properties +0 -0
  351. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hr/viewer.properties +0 -0
  352. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hsb/viewer.properties +0 -0
  353. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hu/viewer.properties +0 -0
  354. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hy-AM/viewer.properties +0 -0
  355. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hye/viewer.properties +0 -0
  356. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ia/viewer.properties +0 -0
  357. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/id/viewer.properties +0 -0
  358. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/is/viewer.properties +0 -0
  359. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/it/viewer.properties +0 -0
  360. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ja/viewer.properties +0 -0
  361. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ka/viewer.properties +0 -0
  362. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kab/viewer.properties +0 -0
  363. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kk/viewer.properties +0 -0
  364. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/km/viewer.properties +0 -0
  365. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kn/viewer.properties +0 -0
  366. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ko/viewer.properties +0 -0
  367. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lij/viewer.properties +0 -0
  368. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lo/viewer.properties +0 -0
  369. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/locale.properties +0 -0
  370. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lt/viewer.properties +0 -0
  371. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ltg/viewer.properties +0 -0
  372. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lv/viewer.properties +0 -0
  373. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/meh/viewer.properties +0 -0
  374. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/mk/viewer.properties +0 -0
  375. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/mr/viewer.properties +0 -0
  376. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ms/viewer.properties +0 -0
  377. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/my/viewer.properties +0 -0
  378. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nb-NO/viewer.properties +0 -0
  379. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ne-NP/viewer.properties +0 -0
  380. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nl/viewer.properties +0 -0
  381. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nn-NO/viewer.properties +0 -0
  382. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/oc/viewer.properties +0 -0
  383. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pa-IN/viewer.properties +0 -0
  384. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pl/viewer.properties +0 -0
  385. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pt-BR/viewer.properties +0 -0
  386. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pt-PT/viewer.properties +0 -0
  387. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/rm/viewer.properties +0 -0
  388. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ro/viewer.properties +0 -0
  389. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ru/viewer.properties +0 -0
  390. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sat/viewer.properties +0 -0
  391. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sc/viewer.properties +0 -0
  392. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/scn/viewer.properties +0 -0
  393. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sco/viewer.properties +0 -0
  394. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/si/viewer.properties +0 -0
  395. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sk/viewer.properties +0 -0
  396. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/skr/viewer.properties +0 -0
  397. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sl/viewer.properties +0 -0
  398. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/son/viewer.properties +0 -0
  399. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sq/viewer.properties +0 -0
  400. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sr/viewer.properties +0 -0
  401. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sv-SE/viewer.properties +0 -0
  402. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/szl/viewer.properties +0 -0
  403. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ta/viewer.properties +0 -0
  404. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/te/viewer.properties +0 -0
  405. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tg/viewer.properties +0 -0
  406. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/th/viewer.properties +0 -0
  407. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tl/viewer.properties +0 -0
  408. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tr/viewer.properties +0 -0
  409. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/trs/viewer.properties +0 -0
  410. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/uk/viewer.properties +0 -0
  411. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ur/viewer.properties +0 -0
  412. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/uz/viewer.properties +0 -0
  413. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/vi/viewer.properties +0 -0
  414. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/wo/viewer.properties +0 -0
  415. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/xh/viewer.properties +0 -0
  416. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/zh-CN/viewer.properties +0 -0
  417. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/locale/zh-TW/viewer.properties +0 -0
  418. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitDingbats.pfb +0 -0
  419. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixed.pfb +0 -0
  420. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedBold.pfb +0 -0
  421. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  422. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
  423. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerif.pfb +0 -0
  424. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifBold.pfb +0 -0
  425. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  426. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
  427. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSymbol.pfb +0 -0
  428. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LICENSE_FOXIT +0 -0
  429. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LICENSE_LIBERATION +0 -0
  430. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
  431. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  432. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
  433. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
  434. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.css +0 -0
  435. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.js.map +0 -0
  436. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/query.py +0 -0
  437. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/static/css/main.css +0 -0
  438. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/static/js/index.js +0 -0
  439. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/static/js/stats.js +0 -0
  440. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/templates/base.html +0 -0
  441. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/templates/index.html +0 -0
  442. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/templates/stats.html +0 -0
  443. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/paper/web/text.py +0 -0
  444. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/__init__.py +0 -0
  445. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/cli.py +0 -0
  446. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/katex_check.js +0 -0
  447. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/markdown.py +0 -0
  448. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/math.py +0 -0
  449. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/mermaid.py +0 -0
  450. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/recognize/organize.py +0 -0
  451. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/__init__.py +0 -0
  452. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/cli.py +0 -0
  453. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/config.py +0 -0
  454. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/engine.py +0 -0
  455. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/fixers.py +0 -0
  456. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/placeholder.py +0 -0
  457. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/prompts.py +0 -0
  458. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/protector.py +0 -0
  459. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow/translator/segment.py +0 -0
  460. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow.egg-info/dependency_links.txt +0 -0
  461. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow.egg-info/entry_points.txt +0 -0
  462. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow.egg-info/requires.txt +0 -0
  463. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/python/deepresearch_flow.egg-info/top_level.txt +0 -0
  464. {deepresearch_flow-0.4.1 → deepresearch_flow-0.5.0}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepresearch-flow
3
- Version: 0.4.1
3
+ Version: 0.5.0
4
4
  Summary: Workflow tools for paper extraction, review, and research automation.
5
5
  Author-email: DengQi <dengqi935@gmail.com>
6
6
  License: MIT License
@@ -87,7 +87,7 @@ Dynamic: license-file
87
87
  <a href="https://hub.docker.com/r/nerdneils/deepresearch-flow">
88
88
  <img src="https://img.shields.io/docker/v/nerdneils/deepresearch-flow?style=flat-square" />
89
89
  </a>
90
- <a href="https://ghcr.io/nerdneilsfield/deepresearch-flow">
90
+ <a href="https://github.com/nerdneilsfield/ai-deepresearch-flow/pkgs/container/deepresearch-flow">
91
91
  <img src="https://img.shields.io/badge/ghcr.io-nerdneilsfield%2Fdeepresearch-flow-0f172a?style=flat-square" />
92
92
  </a>
93
93
  <a href="https://github.com/nerdneilsfield/ai-deepresearch-flow/blob/main/LICENSE">
@@ -216,6 +216,66 @@ uv run deepresearch-flow paper db serve \
216
216
 
217
217
  ---
218
218
 
219
+ ## Deployment (Static CDN)
220
+
221
+ Use a separate static server (CDN) for PDFs/Markdown/images and keep the API/UI on another host.
222
+
223
+ ### 1) Export static assets
224
+
225
+ ```bash
226
+ uv run deepresearch-flow paper db serve \
227
+ --input paper_infos.json \
228
+ --md-root ./docs \
229
+ --md-translated-root ./docs \
230
+ --pdf-root ./pdfs \
231
+ --static-mode prod \
232
+ --static-base-url https://static.example.com \
233
+ --static-export-dir /data/paper-static
234
+ ```
235
+
236
+ Notes:
237
+ - The API host must be able to read the original PDF/Markdown roots to build the index and hashes.
238
+ - The CDN host only needs the exported directory (e.g. `/data/paper-static`).
239
+
240
+ ### 2) Serve the export directory with CORS + cache headers (Caddy example)
241
+
242
+ ```caddyfile
243
+ :8002 {
244
+ root * /data/paper-static
245
+ encode zstd gzip
246
+
247
+ @static path /pdf/* /md/* /md_translate/* /images/*
248
+ header @static {
249
+ Access-Control-Allow-Origin *
250
+ Access-Control-Allow-Methods GET,HEAD,OPTIONS
251
+ Access-Control-Allow-Headers *
252
+ Cache-Control "public, max-age=31536000, immutable"
253
+ }
254
+
255
+ @options method OPTIONS
256
+ respond @options 204
257
+
258
+ file_server
259
+ }
260
+ ```
261
+
262
+ ### 3) Start the API/UI with static base
263
+
264
+ ```bash
265
+ export PAPER_DB_STATIC_BASE_URL="https://static.example.com"
266
+ export PAPER_DB_STATIC_MODE="prod"
267
+ export PAPER_DB_STATIC_EXPORT_DIR="/data/paper-static"
268
+ export PAPER_DB_PDFJS_CDN_BASE_URL="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379"
269
+
270
+ uv run deepresearch-flow paper db serve \
271
+ --input paper_infos.json \
272
+ --md-root ./docs \
273
+ --md-translated-root ./docs \
274
+ --pdf-root ./pdfs
275
+ ```
276
+
277
+ ---
278
+
219
279
  ## Comprehensive Guide
220
280
 
221
281
  <details>
@@ -25,7 +25,7 @@
25
25
  <a href="https://hub.docker.com/r/nerdneils/deepresearch-flow">
26
26
  <img src="https://img.shields.io/docker/v/nerdneils/deepresearch-flow?style=flat-square" />
27
27
  </a>
28
- <a href="https://ghcr.io/nerdneilsfield/deepresearch-flow">
28
+ <a href="https://github.com/nerdneilsfield/ai-deepresearch-flow/pkgs/container/deepresearch-flow">
29
29
  <img src="https://img.shields.io/badge/ghcr.io-nerdneilsfield%2Fdeepresearch-flow-0f172a?style=flat-square" />
30
30
  </a>
31
31
  <a href="https://github.com/nerdneilsfield/ai-deepresearch-flow/blob/main/LICENSE">
@@ -154,6 +154,66 @@ uv run deepresearch-flow paper db serve \
154
154
 
155
155
  ---
156
156
 
157
+ ## Deployment (Static CDN)
158
+
159
+ Use a separate static server (CDN) for PDFs/Markdown/images and keep the API/UI on another host.
160
+
161
+ ### 1) Export static assets
162
+
163
+ ```bash
164
+ uv run deepresearch-flow paper db serve \
165
+ --input paper_infos.json \
166
+ --md-root ./docs \
167
+ --md-translated-root ./docs \
168
+ --pdf-root ./pdfs \
169
+ --static-mode prod \
170
+ --static-base-url https://static.example.com \
171
+ --static-export-dir /data/paper-static
172
+ ```
173
+
174
+ Notes:
175
+ - The API host must be able to read the original PDF/Markdown roots to build the index and hashes.
176
+ - The CDN host only needs the exported directory (e.g. `/data/paper-static`).
177
+
178
+ ### 2) Serve the export directory with CORS + cache headers (Caddy example)
179
+
180
+ ```caddyfile
181
+ :8002 {
182
+ root * /data/paper-static
183
+ encode zstd gzip
184
+
185
+ @static path /pdf/* /md/* /md_translate/* /images/*
186
+ header @static {
187
+ Access-Control-Allow-Origin *
188
+ Access-Control-Allow-Methods GET,HEAD,OPTIONS
189
+ Access-Control-Allow-Headers *
190
+ Cache-Control "public, max-age=31536000, immutable"
191
+ }
192
+
193
+ @options method OPTIONS
194
+ respond @options 204
195
+
196
+ file_server
197
+ }
198
+ ```
199
+
200
+ ### 3) Start the API/UI with static base
201
+
202
+ ```bash
203
+ export PAPER_DB_STATIC_BASE_URL="https://static.example.com"
204
+ export PAPER_DB_STATIC_MODE="prod"
205
+ export PAPER_DB_STATIC_EXPORT_DIR="/data/paper-static"
206
+ export PAPER_DB_PDFJS_CDN_BASE_URL="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/4.0.379"
207
+
208
+ uv run deepresearch-flow paper db serve \
209
+ --input paper_infos.json \
210
+ --md-root ./docs \
211
+ --md-translated-root ./docs \
212
+ --pdf-root ./pdfs
213
+ ```
214
+
215
+ ---
216
+
157
217
  ## Comprehensive Guide
158
218
 
159
219
  <details>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deepresearch-flow"
3
- version = "0.4.1"
3
+ version = "0.5.0"
4
4
  description = "Workflow tools for paper extraction, review, and research automation."
5
5
  readme = { file = "README.md", content-type = "text/markdown" }
6
6
  license = { file = "LICENSE" }
@@ -600,6 +600,32 @@ def register_db_commands(db_group: click.Group) -> None:
600
600
  )
601
601
  @click.option("--cache-dir", "cache_dir", default=None, help="Cache directory for merged inputs")
602
602
  @click.option("--no-cache", "no_cache", is_flag=True, help="Disable cache for db serve")
603
+ @click.option(
604
+ "--static-base-url",
605
+ "static_base_url",
606
+ default=None,
607
+ help="Static asset base URL (e.g. https://static.example.com)",
608
+ )
609
+ @click.option(
610
+ "--static-mode",
611
+ "static_mode",
612
+ type=click.Choice(["auto", "dev", "prod"]),
613
+ default="auto",
614
+ show_default=True,
615
+ help="Static asset mode (dev uses local assets, prod uses static base URL)",
616
+ )
617
+ @click.option(
618
+ "--static-export-dir",
619
+ "static_export_dir",
620
+ default=None,
621
+ help="Optional export directory for hashed static assets",
622
+ )
623
+ @click.option(
624
+ "--pdfjs-cdn-base-url",
625
+ "pdfjs_cdn_base_url",
626
+ default=None,
627
+ help="PDF.js CDN base URL (defaults to jsDelivr)",
628
+ )
603
629
  @click.option("--host", default="127.0.0.1", show_default=True, help="Bind host")
604
630
  @click.option("--port", default=8000, type=int, show_default=True, help="Bind port")
605
631
  @click.option(
@@ -617,6 +643,10 @@ def register_db_commands(db_group: click.Group) -> None:
617
643
  pdf_roots: tuple[str, ...],
618
644
  cache_dir: str | None,
619
645
  no_cache: bool,
646
+ static_base_url: str | None,
647
+ static_mode: str,
648
+ static_export_dir: str | None,
649
+ pdfjs_cdn_base_url: str | None,
620
650
  host: str,
621
651
  port: int,
622
652
  fallback_language: str,
@@ -635,6 +665,10 @@ def register_db_commands(db_group: click.Group) -> None:
635
665
  pdf_roots=[Path(root) for root in pdf_roots],
636
666
  cache_dir=Path(cache_dir) if cache_dir else None,
637
667
  use_cache=not no_cache,
668
+ static_base_url=static_base_url,
669
+ static_mode=static_mode,
670
+ static_export_dir=Path(static_export_dir) if static_export_dir else None,
671
+ pdfjs_cdn_base_url=pdfjs_cdn_base_url,
638
672
  )
639
673
  except Exception as exc:
640
674
  raise click.ClickException(str(exc)) from exc
@@ -0,0 +1,199 @@
1
+ from __future__ import annotations
2
+
3
+ import logging
4
+ import os
5
+ from pathlib import Path
6
+
7
+ from starlette.applications import Starlette
8
+ from starlette.middleware.base import BaseHTTPMiddleware
9
+ from starlette.requests import Request
10
+ from starlette.routing import Mount, Route
11
+ from starlette.staticfiles import StaticFiles
12
+
13
+ from deepresearch_flow.paper.db_ops import build_index, load_and_merge_papers
14
+ from deepresearch_flow.paper.web.constants import DEFAULT_PDFJS_CDN_BASE_URL, PDFJS_STATIC_DIR, STATIC_DIR
15
+ from deepresearch_flow.paper.web.handlers import (
16
+ api_markdown,
17
+ api_papers,
18
+ api_pdf,
19
+ api_stats,
20
+ index_page,
21
+ paper_detail,
22
+ robots_txt,
23
+ stats_page,
24
+ )
25
+ from deepresearch_flow.paper.web.markdown import create_md_renderer
26
+ from deepresearch_flow.paper.web.static_assets import build_static_assets
27
+
28
+ logger = logging.getLogger(__name__)
29
+
30
+
31
+ class _NoIndexMiddleware(BaseHTTPMiddleware):
32
+ async def dispatch(self, request: Request, call_next): # type: ignore[override]
33
+ response = await call_next(request)
34
+ response.headers["X-Robots-Tag"] = "noindex, nofollow, noarchive, nosnippet, noai, noimageai"
35
+ return response
36
+
37
+
38
+ class _StaticAssetFiles(StaticFiles):
39
+ def __init__(self, *args, cache_control: str | None = None, **kwargs) -> None:
40
+ super().__init__(*args, **kwargs)
41
+ self._cache_control = cache_control
42
+
43
+ async def get_response(self, path: str, scope): # type: ignore[override]
44
+ response = await super().get_response(path, scope)
45
+ if self._cache_control and response.status_code == 200:
46
+ response.headers.setdefault("Cache-Control", self._cache_control)
47
+ return response
48
+
49
+
50
+ def _normalize_static_mode(value: str | None) -> str:
51
+ if not value:
52
+ return "auto"
53
+ normalized = value.strip().lower()
54
+ if normalized in {"dev", "development"}:
55
+ return "dev"
56
+ if normalized in {"prod", "production"}:
57
+ return "prod"
58
+ return "auto"
59
+
60
+
61
+ def _resolve_static_mode(value: str, static_base_url: str | None) -> str:
62
+ if value == "auto":
63
+ return "prod" if static_base_url else "dev"
64
+ return value
65
+
66
+
67
+ def create_app(
68
+ *,
69
+ db_paths: list[Path],
70
+ fallback_language: str = "en",
71
+ bibtex_path: Path | None = None,
72
+ md_roots: list[Path] | None = None,
73
+ md_translated_roots: list[Path] | None = None,
74
+ pdf_roots: list[Path] | None = None,
75
+ cache_dir: Path | None = None,
76
+ use_cache: bool = True,
77
+ static_base_url: str | None = None,
78
+ static_mode: str | None = None,
79
+ static_export_dir: Path | None = None,
80
+ pdfjs_cdn_base_url: str | None = None,
81
+ ) -> Starlette:
82
+ papers = load_and_merge_papers(db_paths, bibtex_path, cache_dir, use_cache, pdf_roots=pdf_roots)
83
+
84
+ md_roots = md_roots or []
85
+ md_translated_roots = md_translated_roots or []
86
+ pdf_roots = pdf_roots or []
87
+ index = build_index(
88
+ papers,
89
+ md_roots=md_roots,
90
+ md_translated_roots=md_translated_roots,
91
+ pdf_roots=pdf_roots,
92
+ )
93
+ md = create_md_renderer()
94
+ static_base_url = static_base_url or os.getenv("PAPER_DB_STATIC_BASE_URL")
95
+ static_mode = _normalize_static_mode(static_mode or os.getenv("PAPER_DB_STATIC_MODE"))
96
+ resolved_mode = _resolve_static_mode(static_mode, static_base_url)
97
+ export_dir_value = static_export_dir or os.getenv("PAPER_DB_STATIC_EXPORT_DIR")
98
+ export_dir = Path(export_dir_value) if export_dir_value else None
99
+ pdfjs_cdn_base_url = (
100
+ pdfjs_cdn_base_url
101
+ or os.getenv("PAPER_DB_PDFJS_CDN_BASE_URL")
102
+ or DEFAULT_PDFJS_CDN_BASE_URL
103
+ )
104
+ if pdfjs_cdn_base_url:
105
+ lowered = pdfjs_cdn_base_url.strip().lower()
106
+ if lowered in {"none", "off", "local"}:
107
+ pdfjs_cdn_base_url = None
108
+ else:
109
+ pdfjs_cdn_base_url = pdfjs_cdn_base_url.rstrip("/")
110
+
111
+ asset_config = None
112
+ if resolved_mode == "prod":
113
+ if not static_base_url:
114
+ logger.warning("Static mode set to prod without base URL; falling back to dev asset routes.")
115
+ resolved_mode = "dev"
116
+ else:
117
+ asset_config = build_static_assets(
118
+ index,
119
+ static_base_url=static_base_url,
120
+ static_export_dir=export_dir,
121
+ )
122
+ if resolved_mode == "dev" and export_dir:
123
+ asset_config = build_static_assets(
124
+ index,
125
+ static_base_url="",
126
+ static_export_dir=export_dir,
127
+ allow_empty_base=True,
128
+ )
129
+ if asset_config is None:
130
+ asset_config = build_static_assets(index, static_base_url=None)
131
+
132
+ routes = [
133
+ Route("/", index_page, methods=["GET"]),
134
+ Route("/robots.txt", robots_txt, methods=["GET"]),
135
+ Route("/stats", stats_page, methods=["GET"]),
136
+ Route("/paper/{source_hash:str}", paper_detail, methods=["GET"]),
137
+ Route("/api/papers", api_papers, methods=["GET"]),
138
+ Route("/api/stats", api_stats, methods=["GET"]),
139
+ Route("/api/pdf/{source_hash:str}", api_pdf, methods=["GET"]),
140
+ Route("/api/dev/markdown/{source_hash:str}", api_markdown, methods=["GET"]),
141
+ ]
142
+ if PDFJS_STATIC_DIR.exists():
143
+ routes.append(
144
+ Mount(
145
+ "/pdfjs",
146
+ app=StaticFiles(directory=str(PDFJS_STATIC_DIR), html=True),
147
+ name="pdfjs",
148
+ )
149
+ )
150
+ elif pdf_roots:
151
+ logger.warning(
152
+ "PDF.js viewer assets not found at %s; PDF Viewer mode will be unavailable.",
153
+ PDFJS_STATIC_DIR,
154
+ )
155
+ if STATIC_DIR.exists():
156
+ routes.append(
157
+ Mount(
158
+ "/static",
159
+ app=StaticFiles(directory=str(STATIC_DIR)),
160
+ name="static",
161
+ )
162
+ )
163
+ if export_dir and export_dir.exists() and asset_config.enabled and not asset_config.base_url:
164
+ cache_header = "public, max-age=31536000, immutable"
165
+ routes.extend(
166
+ [
167
+ Mount(
168
+ "/pdf",
169
+ app=_StaticAssetFiles(directory=str(export_dir / "pdf"), cache_control=cache_header),
170
+ name="static_pdf",
171
+ ),
172
+ Mount(
173
+ "/images",
174
+ app=_StaticAssetFiles(directory=str(export_dir / "images"), cache_control=cache_header),
175
+ name="static_images",
176
+ ),
177
+ Mount(
178
+ "/md",
179
+ app=_StaticAssetFiles(directory=str(export_dir / "md"), cache_control=cache_header),
180
+ name="static_md",
181
+ ),
182
+ Mount(
183
+ "/md_translate",
184
+ app=_StaticAssetFiles(directory=str(export_dir / "md_translate"), cache_control=cache_header),
185
+ name="static_md_translate",
186
+ ),
187
+ ]
188
+ )
189
+ app = Starlette(routes=routes)
190
+ app.add_middleware(_NoIndexMiddleware)
191
+ app.state.index = index
192
+ app.state.md = md
193
+ app.state.fallback_language = fallback_language
194
+ app.state.pdf_roots = pdf_roots
195
+ app.state.static_mode = resolved_mode
196
+ app.state.asset_config = asset_config
197
+ app.state.static_export_dir = export_dir
198
+ app.state.pdfjs_cdn_base_url = pdfjs_cdn_base_url
199
+ return app
@@ -12,6 +12,7 @@ CDN_KATEX_AUTO = "https://cdn.jsdelivr.net/npm/katex@0.16.27/dist/contrib/auto-r
12
12
  # Use legacy builds to ensure `pdfjsLib` is available as a global.
13
13
  CDN_PDFJS = "https://cdn.jsdelivr.net/npm/pdfjs-dist@3.11.174/legacy/build/pdf.min.js"
14
14
  CDN_PDFJS_WORKER = "https://cdn.jsdelivr.net/npm/pdfjs-dist@3.11.174/legacy/build/pdf.worker.min.js"
15
+ DEFAULT_PDFJS_CDN_BASE_URL = "https://cdn.jsdelivr.net/npm/pdfjs-dist@3.11.174"
15
16
 
16
17
  # PDF.js viewer configuration
17
18
  PDFJS_VIEWER_PATH = "/pdfjs/web/viewer.html"
@@ -1,12 +1,13 @@
1
1
  """Route handlers for paper web UI."""
2
2
 
3
- from .api import api_papers, api_pdf, api_stats
3
+ from .api import api_markdown, api_papers, api_pdf, api_stats
4
4
  from .pages import index_page, paper_detail, robots_txt, stats_page
5
5
 
6
6
  __all__ = [
7
7
  "api_papers",
8
8
  "api_pdf",
9
9
  "api_stats",
10
+ "api_markdown",
10
11
  "index_page",
11
12
  "paper_detail",
12
13
  "robots_txt",
@@ -19,6 +19,8 @@ from deepresearch_flow.paper.web.filters import (
19
19
  presence_filter,
20
20
  sorted_ids,
21
21
  )
22
+ from deepresearch_flow.paper.web.markdown import normalize_markdown_images
23
+ from deepresearch_flow.paper.web.static_assets import resolve_asset_urls
22
24
  from deepresearch_flow.paper.web.text import extract_summary_snippet, normalize_title, normalize_venue
23
25
  from deepresearch_flow.paper.web.query import Query, QueryTerm, parse_query
24
26
 
@@ -92,9 +94,18 @@ def _apply_query(index: PaperIndex, query: Query) -> set[int]:
92
94
  return result
93
95
 
94
96
 
97
+ def _safe_read_text(path: Path) -> str:
98
+ try:
99
+ return path.read_text(encoding="utf-8")
100
+ except UnicodeDecodeError:
101
+ return path.read_text(encoding="latin-1")
102
+
103
+
95
104
  async def api_papers(request: Request) -> JSONResponse:
96
105
  """API endpoint for paper list with filtering, sorting, and pagination."""
97
106
  index: PaperIndex = request.app.state.index
107
+ asset_config = request.app.state.asset_config
108
+ prefer_local = request.app.state.static_mode == "dev"
98
109
  filters = parse_filters(request)
99
110
  page = int(filters["page"])
100
111
  page_size = int(filters["page_size"])
@@ -165,6 +176,7 @@ async def api_papers(request: Request) -> JSONResponse:
165
176
  source_hash = str(paper.get("source_hash") or stable_hash(str(paper.get("source_path") or idx)))
166
177
  translations = index.translated_md_by_hash.get(source_hash, {})
167
178
  translation_languages = sorted(translations.keys(), key=str.lower)
179
+ asset_urls = resolve_asset_urls(index, source_hash, asset_config, prefer_local=prefer_local)
168
180
  items.append(
169
181
  {
170
182
  "source_hash": source_hash,
@@ -183,6 +195,10 @@ async def api_papers(request: Request) -> JSONResponse:
183
195
  "has_summary": bool(paper.get("_has_summary")),
184
196
  "is_pdf_only": bool(paper.get("_is_pdf_only")),
185
197
  "translation_languages": translation_languages,
198
+ "pdf_url": asset_urls["pdf_url"],
199
+ "md_url": asset_urls["md_url"],
200
+ "md_translated_url": asset_urls["md_translated_url"],
201
+ "images_base_url": asset_urls["images_base_url"],
186
202
  }
187
203
  )
188
204
 
@@ -215,3 +231,42 @@ async def api_pdf(request: Request) -> Response:
215
231
  if allowed_roots and not _ensure_under_roots(pdf_path, allowed_roots):
216
232
  return Response("Forbidden", status_code=403)
217
233
  return FileResponse(pdf_path)
234
+
235
+
236
+ async def api_markdown(request: Request) -> Response:
237
+ """Dev-only API endpoint to serve raw markdown content."""
238
+ if request.app.state.static_mode != "dev":
239
+ return Response("Not Found", status_code=404)
240
+ index: PaperIndex = request.app.state.index
241
+ asset_config = request.app.state.asset_config
242
+ export_dir = request.app.state.static_export_dir
243
+ source_hash = request.path_params["source_hash"]
244
+ lang = request.query_params.get("lang")
245
+ md_path = None
246
+ if export_dir and asset_config and asset_config.enabled and (asset_config.base_url or "") == "":
247
+ if lang:
248
+ translated_url = asset_config.translated_md_urls.get(source_hash, {}).get(lang.lower())
249
+ if translated_url:
250
+ rel_path = translated_url.lstrip("/")
251
+ export_path = export_dir / rel_path
252
+ if export_path.exists():
253
+ raw = _safe_read_text(export_path)
254
+ return Response(raw, media_type="text/markdown")
255
+ else:
256
+ md_url = asset_config.md_urls.get(source_hash)
257
+ if md_url:
258
+ rel_path = md_url.lstrip("/")
259
+ export_path = export_dir / rel_path
260
+ if export_path.exists():
261
+ raw = _safe_read_text(export_path)
262
+ return Response(raw, media_type="text/markdown")
263
+ if lang:
264
+ md_path = index.translated_md_by_hash.get(source_hash, {}).get(lang.lower())
265
+ else:
266
+ md_path = index.md_path_by_hash.get(source_hash)
267
+ if not md_path:
268
+ return Response("Markdown not found", status_code=404)
269
+ raw = _safe_read_text(md_path)
270
+ if lang:
271
+ raw = normalize_markdown_images(raw)
272
+ return Response(raw, media_type="text/markdown")