deepresearch-flow 0.7.1__tar.gz → 0.7.3__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 (482) hide show
  1. {deepresearch_flow-0.7.1/python/deepresearch_flow.egg-info → deepresearch_flow-0.7.3}/PKG-INFO +25 -6
  2. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/README.md +24 -5
  3. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/pyproject.toml +1 -1
  4. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/api.py +4 -3
  5. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/mcp_server.py +84 -45
  6. deepresearch_flow-0.7.3/python/deepresearch_flow/paper/snapshot/tests/test_mcp_server_schema_compat.py +184 -0
  7. deepresearch_flow-0.7.3/python/deepresearch_flow/paper/snapshot/tests/test_mcp_transport.py +52 -0
  8. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3/python/deepresearch_flow.egg-info}/PKG-INFO +25 -6
  9. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow.egg-info/SOURCES.txt +2 -0
  10. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/LICENSE +0 -0
  11. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/MANIFEST.in +0 -0
  12. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/__init__.py +0 -0
  13. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/__main__.py +0 -0
  14. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/cli.py +0 -0
  15. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/__init__.py +0 -0
  16. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/cli.py +0 -0
  17. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/config.py +0 -0
  18. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/db.py +0 -0
  19. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/db_ops.py +0 -0
  20. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/extract.py +0 -0
  21. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/llm.py +0 -0
  22. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/__init__.py +0 -0
  23. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/deep_read_phi_system.j2 +0 -0
  24. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/deep_read_phi_user.j2 +0 -0
  25. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/deep_read_system.j2 +0 -0
  26. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/deep_read_user.j2 +0 -0
  27. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/eight_questions_phi_system.j2 +0 -0
  28. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/eight_questions_phi_user.j2 +0 -0
  29. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/eight_questions_system.j2 +0 -0
  30. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/eight_questions_user.j2 +0 -0
  31. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/simple_phi_system.j2 +0 -0
  32. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/simple_phi_user.j2 +0 -0
  33. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/simple_system.j2 +0 -0
  34. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/simple_user.j2 +0 -0
  35. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/three_pass_system.j2 +0 -0
  36. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompt_templates/three_pass_user.j2 +0 -0
  37. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/prompts.py +0 -0
  38. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/__init__.py +0 -0
  39. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/azure_openai.py +0 -0
  40. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/base.py +0 -0
  41. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/claude.py +0 -0
  42. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/dashscope.py +0 -0
  43. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/gemini.py +0 -0
  44. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/ollama.py +0 -0
  45. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/providers/openai_compatible.py +0 -0
  46. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/render.py +0 -0
  47. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schema.py +0 -0
  48. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/__init__.py +0 -0
  49. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/deep_read_phi_schema.json +0 -0
  50. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/deep_read_schema.json +0 -0
  51. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/default_paper_schema.json +0 -0
  52. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/eight_questions_schema.json +0 -0
  53. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/schemas/three_pass_schema.json +0 -0
  54. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/__init__.py +0 -0
  55. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/builder.py +0 -0
  56. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/common.py +0 -0
  57. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/identity.py +0 -0
  58. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/schema.py +0 -0
  59. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/tests/__init__.py +0 -0
  60. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/tests/test_identity.py +0 -0
  61. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/text.py +0 -0
  62. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/snapshot/unpacker.py +0 -0
  63. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/template_registry.py +0 -0
  64. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/__init__.py +0 -0
  65. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/deep_read.md.j2 +0 -0
  66. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/deep_read_phi.md.j2 +0 -0
  67. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/default_paper.md.j2 +0 -0
  68. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/eight_questions.md.j2 +0 -0
  69. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/templates/three_pass.md.j2 +0 -0
  70. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/utils.py +0 -0
  71. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/__init__.py +0 -0
  72. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/app.py +0 -0
  73. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/constants.py +0 -0
  74. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/filters.py +0 -0
  75. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/handlers/__init__.py +0 -0
  76. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/handlers/api.py +0 -0
  77. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/handlers/pages.py +0 -0
  78. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/markdown.py +0 -0
  79. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/LICENSE +0 -0
  80. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.js +0 -0
  81. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.js.map +0 -0
  82. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.sandbox.js +0 -0
  83. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.sandbox.js.map +0 -0
  84. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.worker.js +0 -0
  85. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/build/pdf.worker.js.map +0 -0
  86. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-EUC-H.bcmap +0 -0
  87. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-EUC-V.bcmap +0 -0
  88. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-H.bcmap +0 -0
  89. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-RKSJ-H.bcmap +0 -0
  90. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-RKSJ-V.bcmap +0 -0
  91. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78-V.bcmap +0 -0
  92. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78ms-RKSJ-H.bcmap +0 -0
  93. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/78ms-RKSJ-V.bcmap +0 -0
  94. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/83pv-RKSJ-H.bcmap +0 -0
  95. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90ms-RKSJ-H.bcmap +0 -0
  96. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90ms-RKSJ-V.bcmap +0 -0
  97. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90msp-RKSJ-H.bcmap +0 -0
  98. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90msp-RKSJ-V.bcmap +0 -0
  99. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90pv-RKSJ-H.bcmap +0 -0
  100. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/90pv-RKSJ-V.bcmap +0 -0
  101. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-H.bcmap +0 -0
  102. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-RKSJ-H.bcmap +0 -0
  103. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-RKSJ-V.bcmap +0 -0
  104. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Add-V.bcmap +0 -0
  105. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-0.bcmap +0 -0
  106. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-1.bcmap +0 -0
  107. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-2.bcmap +0 -0
  108. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-3.bcmap +0 -0
  109. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-4.bcmap +0 -0
  110. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-5.bcmap +0 -0
  111. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-6.bcmap +0 -0
  112. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-CNS1-UCS2.bcmap +0 -0
  113. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-0.bcmap +0 -0
  114. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-1.bcmap +0 -0
  115. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-2.bcmap +0 -0
  116. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-3.bcmap +0 -0
  117. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-4.bcmap +0 -0
  118. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-5.bcmap +0 -0
  119. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-GB1-UCS2.bcmap +0 -0
  120. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-0.bcmap +0 -0
  121. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-1.bcmap +0 -0
  122. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-2.bcmap +0 -0
  123. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-3.bcmap +0 -0
  124. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-4.bcmap +0 -0
  125. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-5.bcmap +0 -0
  126. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-6.bcmap +0 -0
  127. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Japan1-UCS2.bcmap +0 -0
  128. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-0.bcmap +0 -0
  129. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-1.bcmap +0 -0
  130. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-2.bcmap +0 -0
  131. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Adobe-Korea1-UCS2.bcmap +0 -0
  132. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5-H.bcmap +0 -0
  133. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5-V.bcmap +0 -0
  134. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5pc-H.bcmap +0 -0
  135. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/B5pc-V.bcmap +0 -0
  136. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS-EUC-H.bcmap +0 -0
  137. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS-EUC-V.bcmap +0 -0
  138. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS1-H.bcmap +0 -0
  139. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS1-V.bcmap +0 -0
  140. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS2-H.bcmap +0 -0
  141. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/CNS2-V.bcmap +0 -0
  142. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETHK-B5-H.bcmap +0 -0
  143. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETHK-B5-V.bcmap +0 -0
  144. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETen-B5-H.bcmap +0 -0
  145. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETen-B5-V.bcmap +0 -0
  146. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETenms-B5-H.bcmap +0 -0
  147. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/ETenms-B5-V.bcmap +0 -0
  148. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/EUC-H.bcmap +0 -0
  149. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/EUC-V.bcmap +0 -0
  150. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-H.bcmap +0 -0
  151. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-RKSJ-H.bcmap +0 -0
  152. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-RKSJ-V.bcmap +0 -0
  153. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Ext-V.bcmap +0 -0
  154. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-EUC-H.bcmap +0 -0
  155. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-EUC-V.bcmap +0 -0
  156. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-H.bcmap +0 -0
  157. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GB-V.bcmap +0 -0
  158. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK-EUC-H.bcmap +0 -0
  159. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK-EUC-V.bcmap +0 -0
  160. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK2K-H.bcmap +0 -0
  161. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBK2K-V.bcmap +0 -0
  162. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBKp-EUC-H.bcmap +0 -0
  163. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBKp-EUC-V.bcmap +0 -0
  164. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-EUC-H.bcmap +0 -0
  165. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-EUC-V.bcmap +0 -0
  166. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-H.bcmap +0 -0
  167. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBT-V.bcmap +0 -0
  168. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBTpc-EUC-H.bcmap +0 -0
  169. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBTpc-EUC-V.bcmap +0 -0
  170. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBpc-EUC-H.bcmap +0 -0
  171. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/GBpc-EUC-V.bcmap +0 -0
  172. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/H.bcmap +0 -0
  173. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdla-B5-H.bcmap +0 -0
  174. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdla-B5-V.bcmap +0 -0
  175. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdlb-B5-H.bcmap +0 -0
  176. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKdlb-B5-V.bcmap +0 -0
  177. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKgccs-B5-H.bcmap +0 -0
  178. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKgccs-B5-V.bcmap +0 -0
  179. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm314-B5-H.bcmap +0 -0
  180. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm314-B5-V.bcmap +0 -0
  181. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm471-B5-H.bcmap +0 -0
  182. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKm471-B5-V.bcmap +0 -0
  183. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKscs-B5-H.bcmap +0 -0
  184. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/HKscs-B5-V.bcmap +0 -0
  185. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Hankaku.bcmap +0 -0
  186. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Hiragana.bcmap +0 -0
  187. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-EUC-H.bcmap +0 -0
  188. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-EUC-V.bcmap +0 -0
  189. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-H.bcmap +0 -0
  190. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-Johab-H.bcmap +0 -0
  191. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-Johab-V.bcmap +0 -0
  192. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSC-V.bcmap +0 -0
  193. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-H.bcmap +0 -0
  194. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-HW-H.bcmap +0 -0
  195. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-HW-V.bcmap +0 -0
  196. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCms-UHC-V.bcmap +0 -0
  197. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCpc-EUC-H.bcmap +0 -0
  198. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/KSCpc-EUC-V.bcmap +0 -0
  199. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Katakana.bcmap +0 -0
  200. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/LICENSE +0 -0
  201. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/NWP-H.bcmap +0 -0
  202. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/NWP-V.bcmap +0 -0
  203. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/RKSJ-H.bcmap +0 -0
  204. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/RKSJ-V.bcmap +0 -0
  205. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/Roman.bcmap +0 -0
  206. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UCS2-H.bcmap +0 -0
  207. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UCS2-V.bcmap +0 -0
  208. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF16-H.bcmap +0 -0
  209. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF16-V.bcmap +0 -0
  210. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF32-H.bcmap +0 -0
  211. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF32-V.bcmap +0 -0
  212. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF8-H.bcmap +0 -0
  213. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniCNS-UTF8-V.bcmap +0 -0
  214. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UCS2-H.bcmap +0 -0
  215. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UCS2-V.bcmap +0 -0
  216. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF16-H.bcmap +0 -0
  217. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF16-V.bcmap +0 -0
  218. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF32-H.bcmap +0 -0
  219. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF32-V.bcmap +0 -0
  220. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF8-H.bcmap +0 -0
  221. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniGB-UTF8-V.bcmap +0 -0
  222. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-H.bcmap +0 -0
  223. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-H.bcmap +0 -0
  224. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-HW-V.bcmap +0 -0
  225. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UCS2-V.bcmap +0 -0
  226. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF16-H.bcmap +0 -0
  227. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF16-V.bcmap +0 -0
  228. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF32-H.bcmap +0 -0
  229. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF32-V.bcmap +0 -0
  230. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF8-H.bcmap +0 -0
  231. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS-UTF8-V.bcmap +0 -0
  232. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF16-H.bcmap +0 -0
  233. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF16-V.bcmap +0 -0
  234. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF32-H.bcmap +0 -0
  235. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF32-V.bcmap +0 -0
  236. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF8-H.bcmap +0 -0
  237. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJIS2004-UTF8-V.bcmap +0 -0
  238. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UCS2-HW-V.bcmap +0 -0
  239. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UCS2-V.bcmap +0 -0
  240. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISPro-UTF8-V.bcmap +0 -0
  241. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX0213-UTF32-H.bcmap +0 -0
  242. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX0213-UTF32-V.bcmap +0 -0
  243. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-H.bcmap +0 -0
  244. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniJISX02132004-UTF32-V.bcmap +0 -0
  245. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UCS2-H.bcmap +0 -0
  246. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UCS2-V.bcmap +0 -0
  247. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF16-H.bcmap +0 -0
  248. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF16-V.bcmap +0 -0
  249. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF32-H.bcmap +0 -0
  250. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF32-V.bcmap +0 -0
  251. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF8-H.bcmap +0 -0
  252. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/UniKS-UTF8-V.bcmap +0 -0
  253. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/V.bcmap +0 -0
  254. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/cmaps/WP-Symbol.bcmap +0 -0
  255. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/compressed.tracemonkey-pldi-09.pdf +0 -0
  256. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/debugger.css +0 -0
  257. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/debugger.js +0 -0
  258. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/altText_add.svg +0 -0
  259. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/altText_done.svg +0 -0
  260. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-check.svg +0 -0
  261. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-comment.svg +0 -0
  262. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-help.svg +0 -0
  263. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-insert.svg +0 -0
  264. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-key.svg +0 -0
  265. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-newparagraph.svg +0 -0
  266. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-noicon.svg +0 -0
  267. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-note.svg +0 -0
  268. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-paperclip.svg +0 -0
  269. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-paragraph.svg +0 -0
  270. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/annotation-pushpin.svg +0 -0
  271. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/cursor-editorFreeText.svg +0 -0
  272. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/cursor-editorInk.svg +0 -0
  273. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/findbarButton-next.svg +0 -0
  274. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/findbarButton-previous.svg +0 -0
  275. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/gv-toolbarButton-download.svg +0 -0
  276. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/gv-toolbarButton-openinapp.svg +0 -0
  277. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading-dark.svg +0 -0
  278. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading-icon.gif +0 -0
  279. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/loading.svg +0 -0
  280. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-documentProperties.svg +0 -0
  281. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-firstPage.svg +0 -0
  282. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-handTool.svg +0 -0
  283. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-lastPage.svg +0 -0
  284. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-rotateCcw.svg +0 -0
  285. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-rotateCw.svg +0 -0
  286. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollHorizontal.svg +0 -0
  287. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollPage.svg +0 -0
  288. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollVertical.svg +0 -0
  289. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-scrollWrapped.svg +0 -0
  290. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-selectTool.svg +0 -0
  291. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadEven.svg +0 -0
  292. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadNone.svg +0 -0
  293. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/secondaryToolbarButton-spreadOdd.svg +0 -0
  294. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-bookmark.svg +0 -0
  295. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-currentOutlineItem.svg +0 -0
  296. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-download.svg +0 -0
  297. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorFreeText.svg +0 -0
  298. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorInk.svg +0 -0
  299. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-editorStamp.svg +0 -0
  300. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-menuArrow.svg +0 -0
  301. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-openFile.svg +0 -0
  302. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-pageDown.svg +0 -0
  303. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-pageUp.svg +0 -0
  304. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-presentationMode.svg +0 -0
  305. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-print.svg +0 -0
  306. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-search.svg +0 -0
  307. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-secondaryToolbarToggle.svg +0 -0
  308. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-sidebarToggle.svg +0 -0
  309. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewAttachments.svg +0 -0
  310. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewLayers.svg +0 -0
  311. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewOutline.svg +0 -0
  312. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-viewThumbnail.svg +0 -0
  313. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-zoomIn.svg +0 -0
  314. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/toolbarButton-zoomOut.svg +0 -0
  315. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/treeitem-collapsed.svg +0 -0
  316. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/images/treeitem-expanded.svg +0 -0
  317. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ach/viewer.properties +0 -0
  318. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/af/viewer.properties +0 -0
  319. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/an/viewer.properties +0 -0
  320. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ar/viewer.properties +0 -0
  321. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ast/viewer.properties +0 -0
  322. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/az/viewer.properties +0 -0
  323. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/be/viewer.properties +0 -0
  324. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bg/viewer.properties +0 -0
  325. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bn/viewer.properties +0 -0
  326. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bo/viewer.properties +0 -0
  327. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/br/viewer.properties +0 -0
  328. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/brx/viewer.properties +0 -0
  329. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/bs/viewer.properties +0 -0
  330. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ca/viewer.properties +0 -0
  331. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cak/viewer.properties +0 -0
  332. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ckb/viewer.properties +0 -0
  333. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cs/viewer.properties +0 -0
  334. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/cy/viewer.properties +0 -0
  335. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/da/viewer.properties +0 -0
  336. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/de/viewer.properties +0 -0
  337. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/dsb/viewer.properties +0 -0
  338. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/el/viewer.properties +0 -0
  339. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-CA/viewer.properties +0 -0
  340. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-GB/viewer.properties +0 -0
  341. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/en-US/viewer.properties +0 -0
  342. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/eo/viewer.properties +0 -0
  343. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-AR/viewer.properties +0 -0
  344. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-CL/viewer.properties +0 -0
  345. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-ES/viewer.properties +0 -0
  346. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/es-MX/viewer.properties +0 -0
  347. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/et/viewer.properties +0 -0
  348. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/eu/viewer.properties +0 -0
  349. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fa/viewer.properties +0 -0
  350. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ff/viewer.properties +0 -0
  351. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fi/viewer.properties +0 -0
  352. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fr/viewer.properties +0 -0
  353. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fur/viewer.properties +0 -0
  354. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/fy-NL/viewer.properties +0 -0
  355. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ga-IE/viewer.properties +0 -0
  356. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gd/viewer.properties +0 -0
  357. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gl/viewer.properties +0 -0
  358. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gn/viewer.properties +0 -0
  359. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/gu-IN/viewer.properties +0 -0
  360. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/he/viewer.properties +0 -0
  361. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hi-IN/viewer.properties +0 -0
  362. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hr/viewer.properties +0 -0
  363. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hsb/viewer.properties +0 -0
  364. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hu/viewer.properties +0 -0
  365. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hy-AM/viewer.properties +0 -0
  366. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/hye/viewer.properties +0 -0
  367. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ia/viewer.properties +0 -0
  368. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/id/viewer.properties +0 -0
  369. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/is/viewer.properties +0 -0
  370. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/it/viewer.properties +0 -0
  371. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ja/viewer.properties +0 -0
  372. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ka/viewer.properties +0 -0
  373. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kab/viewer.properties +0 -0
  374. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kk/viewer.properties +0 -0
  375. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/km/viewer.properties +0 -0
  376. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/kn/viewer.properties +0 -0
  377. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ko/viewer.properties +0 -0
  378. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lij/viewer.properties +0 -0
  379. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lo/viewer.properties +0 -0
  380. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/locale.properties +0 -0
  381. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lt/viewer.properties +0 -0
  382. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ltg/viewer.properties +0 -0
  383. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/lv/viewer.properties +0 -0
  384. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/meh/viewer.properties +0 -0
  385. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/mk/viewer.properties +0 -0
  386. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/mr/viewer.properties +0 -0
  387. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ms/viewer.properties +0 -0
  388. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/my/viewer.properties +0 -0
  389. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nb-NO/viewer.properties +0 -0
  390. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ne-NP/viewer.properties +0 -0
  391. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nl/viewer.properties +0 -0
  392. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/nn-NO/viewer.properties +0 -0
  393. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/oc/viewer.properties +0 -0
  394. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pa-IN/viewer.properties +0 -0
  395. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pl/viewer.properties +0 -0
  396. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pt-BR/viewer.properties +0 -0
  397. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/pt-PT/viewer.properties +0 -0
  398. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/rm/viewer.properties +0 -0
  399. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ro/viewer.properties +0 -0
  400. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ru/viewer.properties +0 -0
  401. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sat/viewer.properties +0 -0
  402. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sc/viewer.properties +0 -0
  403. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/scn/viewer.properties +0 -0
  404. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sco/viewer.properties +0 -0
  405. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/si/viewer.properties +0 -0
  406. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sk/viewer.properties +0 -0
  407. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/skr/viewer.properties +0 -0
  408. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sl/viewer.properties +0 -0
  409. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/son/viewer.properties +0 -0
  410. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sq/viewer.properties +0 -0
  411. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sr/viewer.properties +0 -0
  412. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/sv-SE/viewer.properties +0 -0
  413. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/szl/viewer.properties +0 -0
  414. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ta/viewer.properties +0 -0
  415. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/te/viewer.properties +0 -0
  416. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tg/viewer.properties +0 -0
  417. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/th/viewer.properties +0 -0
  418. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tl/viewer.properties +0 -0
  419. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/tr/viewer.properties +0 -0
  420. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/trs/viewer.properties +0 -0
  421. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/uk/viewer.properties +0 -0
  422. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/ur/viewer.properties +0 -0
  423. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/uz/viewer.properties +0 -0
  424. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/vi/viewer.properties +0 -0
  425. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/wo/viewer.properties +0 -0
  426. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/xh/viewer.properties +0 -0
  427. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/zh-CN/viewer.properties +0 -0
  428. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/locale/zh-TW/viewer.properties +0 -0
  429. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitDingbats.pfb +0 -0
  430. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixed.pfb +0 -0
  431. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedBold.pfb +0 -0
  432. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedBoldItalic.pfb +0 -0
  433. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitFixedItalic.pfb +0 -0
  434. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerif.pfb +0 -0
  435. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifBold.pfb +0 -0
  436. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifBoldItalic.pfb +0 -0
  437. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSerifItalic.pfb +0 -0
  438. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/FoxitSymbol.pfb +0 -0
  439. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LICENSE_FOXIT +0 -0
  440. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LICENSE_LIBERATION +0 -0
  441. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Bold.ttf +0 -0
  442. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-BoldItalic.ttf +0 -0
  443. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Italic.ttf +0 -0
  444. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/standard_fonts/LiberationSans-Regular.ttf +0 -0
  445. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.css +0 -0
  446. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.html +0 -0
  447. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.js +0 -0
  448. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/pdfjs/web/viewer.js.map +0 -0
  449. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/query.py +0 -0
  450. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static/css/main.css +0 -0
  451. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static/js/detail.js +0 -0
  452. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static/js/index.js +0 -0
  453. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static/js/outline.js +0 -0
  454. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static/js/stats.js +0 -0
  455. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/static_assets.py +0 -0
  456. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/templates/base.html +0 -0
  457. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/templates/detail.html +0 -0
  458. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/templates/index.html +0 -0
  459. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/templates/stats.html +0 -0
  460. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/templates.py +0 -0
  461. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/paper/web/text.py +0 -0
  462. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/__init__.py +0 -0
  463. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/cli.py +0 -0
  464. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/katex_check.js +0 -0
  465. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/markdown.py +0 -0
  466. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/math.py +0 -0
  467. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/mermaid.py +0 -0
  468. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/recognize/organize.py +0 -0
  469. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/__init__.py +0 -0
  470. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/cli.py +0 -0
  471. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/config.py +0 -0
  472. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/engine.py +0 -0
  473. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/fixers.py +0 -0
  474. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/placeholder.py +0 -0
  475. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/prompts.py +0 -0
  476. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/protector.py +0 -0
  477. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow/translator/segment.py +0 -0
  478. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow.egg-info/dependency_links.txt +0 -0
  479. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow.egg-info/entry_points.txt +0 -0
  480. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow.egg-info/requires.txt +0 -0
  481. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/python/deepresearch_flow.egg-info/top_level.txt +0 -0
  482. {deepresearch_flow-0.7.1 → deepresearch_flow-0.7.3}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: deepresearch-flow
3
- Version: 0.7.1
3
+ Version: 0.7.3
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
@@ -532,6 +532,22 @@ server {
532
532
  proxy_set_header X-Real-IP $remote_addr;
533
533
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
534
534
  }
535
+
536
+ # SSE transport for MCP clients that require Server-Sent Events
537
+ location ^~ /mcp-sse {
538
+ proxy_pass http://127.0.0.1:8001;
539
+ proxy_http_version 1.1;
540
+ proxy_set_header Connection "";
541
+ proxy_set_header Host $host;
542
+ proxy_set_header X-Real-IP $remote_addr;
543
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
544
+ proxy_buffering off;
545
+ proxy_cache off;
546
+ proxy_read_timeout 3600s;
547
+ proxy_send_timeout 3600s;
548
+ chunked_transfer_encoding off;
549
+ add_header X-Accel-Buffering no;
550
+ }
535
551
  }
536
552
 
537
553
  # Static assets (separate domain)
@@ -562,12 +578,15 @@ uv run deepresearch-flow paper db api serve \
562
578
  --host 0.0.0.0 --port 8001
563
579
  ```
564
580
 
565
- ### 3.1) MCP (FastMCP Streamable HTTP)
581
+ ### 3.1) MCP (FastMCP Streamable HTTP + SSE)
566
582
 
567
- This project exposes an MCP server mounted at `/mcp` on the snapshot API:
583
+ This project exposes MCP servers mounted on the snapshot API:
568
584
 
569
- - Endpoint: `http://<host>:8001/mcp` (same host/port as `paper db api serve`)
570
- - Transport: Streamable HTTP via `POST` only (no SSE; `GET` returns 405)
585
+ - Streamable HTTP endpoint: `http://<host>:8001/mcp`
586
+ - SSE endpoint: `http://<host>:8001/mcp-sse`
587
+ - Transport behavior:
588
+ - `/mcp`: Streamable HTTP via `POST` only (`GET` returns 405)
589
+ - `/mcp-sse`: SSE-enabled transport (supports `GET` handshake)
571
590
  - Protocol header: optional `mcp-protocol-version` (`2025-03-26` or `2025-06-18`)
572
591
  - Static reads: summary/source/translation are served as **text content** by reading snapshot static assets (local-first via `PAPER_DB_STATIC_EXPORT_DIR`, HTTP fallback via `PAPER_DB_STATIC_BASE` / `PAPER_DB_STATIC_BASE_URL`)
573
592
 
@@ -959,7 +978,7 @@ docker run --rm -p 8899:8899 \
959
978
  ```
960
979
 
961
980
  Notes:
962
- - nginx listens on 8899 and proxies `/api` and `/mcp` to the internal API at `127.0.0.1:8000`.
981
+ - nginx listens on 8899 and proxies `/api`, `/mcp`, and `/mcp-sse` to the internal API at `127.0.0.1:8000`.
963
982
  - Mount your snapshot DB to `/db/papers.db` inside the container.
964
983
  - Mount snapshot static assets to `/static` when serving assets from this container (default `PAPER_DB_STATIC_BASE` is `/static`).
965
984
  - If `PAPER_DB_STATIC_BASE` is a full URL (e.g. `https://static.example.com`), nginx still serves the frontend locally, while API responses use that external static base for asset links.
@@ -469,6 +469,22 @@ server {
469
469
  proxy_set_header X-Real-IP $remote_addr;
470
470
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
471
471
  }
472
+
473
+ # SSE transport for MCP clients that require Server-Sent Events
474
+ location ^~ /mcp-sse {
475
+ proxy_pass http://127.0.0.1:8001;
476
+ proxy_http_version 1.1;
477
+ proxy_set_header Connection "";
478
+ proxy_set_header Host $host;
479
+ proxy_set_header X-Real-IP $remote_addr;
480
+ proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
481
+ proxy_buffering off;
482
+ proxy_cache off;
483
+ proxy_read_timeout 3600s;
484
+ proxy_send_timeout 3600s;
485
+ chunked_transfer_encoding off;
486
+ add_header X-Accel-Buffering no;
487
+ }
472
488
  }
473
489
 
474
490
  # Static assets (separate domain)
@@ -499,12 +515,15 @@ uv run deepresearch-flow paper db api serve \
499
515
  --host 0.0.0.0 --port 8001
500
516
  ```
501
517
 
502
- ### 3.1) MCP (FastMCP Streamable HTTP)
518
+ ### 3.1) MCP (FastMCP Streamable HTTP + SSE)
503
519
 
504
- This project exposes an MCP server mounted at `/mcp` on the snapshot API:
520
+ This project exposes MCP servers mounted on the snapshot API:
505
521
 
506
- - Endpoint: `http://<host>:8001/mcp` (same host/port as `paper db api serve`)
507
- - Transport: Streamable HTTP via `POST` only (no SSE; `GET` returns 405)
522
+ - Streamable HTTP endpoint: `http://<host>:8001/mcp`
523
+ - SSE endpoint: `http://<host>:8001/mcp-sse`
524
+ - Transport behavior:
525
+ - `/mcp`: Streamable HTTP via `POST` only (`GET` returns 405)
526
+ - `/mcp-sse`: SSE-enabled transport (supports `GET` handshake)
508
527
  - Protocol header: optional `mcp-protocol-version` (`2025-03-26` or `2025-06-18`)
509
528
  - Static reads: summary/source/translation are served as **text content** by reading snapshot static assets (local-first via `PAPER_DB_STATIC_EXPORT_DIR`, HTTP fallback via `PAPER_DB_STATIC_BASE` / `PAPER_DB_STATIC_BASE_URL`)
510
529
 
@@ -896,7 +915,7 @@ docker run --rm -p 8899:8899 \
896
915
  ```
897
916
 
898
917
  Notes:
899
- - nginx listens on 8899 and proxies `/api` and `/mcp` to the internal API at `127.0.0.1:8000`.
918
+ - nginx listens on 8899 and proxies `/api`, `/mcp`, and `/mcp-sse` to the internal API at `127.0.0.1:8000`.
900
919
  - Mount your snapshot DB to `/db/papers.db` inside the container.
901
920
  - Mount snapshot static assets to `/static` when serving assets from this container (default `PAPER_DB_STATIC_BASE` is `/static`).
902
921
  - If `PAPER_DB_STATIC_BASE` is a full URL (e.g. `https://static.example.com`), nginx still serves the frontend locally, while API responses use that external static base for asset links.
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "deepresearch-flow"
3
- version = "0.7.1"
3
+ version = "0.7.3"
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" }
@@ -908,7 +908,7 @@ def create_app(
908
908
  # Lazy import to avoid circular dependency
909
909
  from deepresearch_flow.paper.snapshot.mcp_server import (
910
910
  McpSnapshotConfig,
911
- create_mcp_app,
911
+ create_mcp_apps,
912
912
  resolve_static_export_dir,
913
913
  )
914
914
 
@@ -919,7 +919,7 @@ def create_app(
919
919
  limits=limits or ApiLimits(),
920
920
  origin_allowlist=cors_allowed_origins or ["*"],
921
921
  )
922
- mcp_app, mcp_lifespan = create_mcp_app(mcp_config)
922
+ mcp_apps, mcp_lifespan = create_mcp_apps(mcp_config)
923
923
 
924
924
  routes = [
925
925
  Route("/api/v1/config", _api_config, methods=["GET"]),
@@ -931,7 +931,8 @@ def create_app(
931
931
  Route("/api/v1/facets/{facet:str}/{facet_id:str}/stats", _api_facet_stats, methods=["GET"]),
932
932
  Route("/api/v1/facets/{facet:str}/by-value/{value:str}/papers", _api_facet_by_value_papers, methods=["GET"]),
933
933
  Route("/api/v1/facets/{facet:str}/by-value/{value:str}/stats", _api_facet_by_value_stats, methods=["GET"]),
934
- Mount("/mcp", app=mcp_app),
934
+ Mount("/mcp", app=mcp_apps["streamable-http"]),
935
+ Mount("/mcp-sse", app=mcp_apps["sse"]),
935
936
  ]
936
937
 
937
938
  # Pass MCP lifespan to ensure session manager initializes properly
@@ -5,7 +5,7 @@ import json
5
5
  import os
6
6
  from pathlib import Path
7
7
  import re
8
- from typing import Any
8
+ from typing import Any, Literal
9
9
 
10
10
  import httpx
11
11
  from starlette.applications import Starlette
@@ -76,14 +76,13 @@ class McpSnapshotConfig:
76
76
 
77
77
 
78
78
  class McpRequestGuardMiddleware(BaseHTTPMiddleware):
79
- def __init__(self, app, *, origin_allowlist: list[str]) -> None:
79
+ def __init__(self, app, *, origin_allowlist: list[str], allowed_methods: set[str] | None = None) -> None:
80
80
  super().__init__(app)
81
81
  self._allowlist = [origin.lower() for origin in origin_allowlist]
82
+ self._allowed_methods = {method.upper() for method in (allowed_methods or {"POST", "OPTIONS"})}
82
83
 
83
84
  async def dispatch(self, request: Request, call_next): # type: ignore[override]
84
- if request.method == "GET":
85
- return Response("Method Not Allowed", status_code=405)
86
- if request.method not in {"POST", "OPTIONS"}:
85
+ if request.method.upper() not in self._allowed_methods:
87
86
  return Response("Method Not Allowed", status_code=405)
88
87
  origin = request.headers.get("origin")
89
88
  if origin and not self._is_allowed_origin(origin):
@@ -108,23 +107,49 @@ def configure(config: McpSnapshotConfig) -> None:
108
107
  _CONFIG = config
109
108
 
110
109
 
111
- def create_mcp_app(config: McpSnapshotConfig) -> tuple[Starlette, Any]:
112
- """Create MCP app with middleware and return it along with lifespan.
113
-
114
- Returns:
115
- Tuple of (wrapped_app, lifespan_context) for use by parent Starlette.
116
- """
110
+ def _allowed_methods_for_transport(transport: Literal["streamable-http", "sse"]) -> set[str]:
111
+ if transport == "sse":
112
+ return {"GET", "POST", "OPTIONS"}
113
+ return {"POST", "OPTIONS"}
114
+
115
+
116
+ def create_mcp_transport_app(
117
+ config: McpSnapshotConfig,
118
+ *,
119
+ transport: Literal["streamable-http", "sse"] = "streamable-http",
120
+ ) -> tuple[Starlette, Any]:
121
+ """Create MCP app for a specific transport with transport-aware method guard."""
117
122
  configure(config)
118
- mcp_app = mcp.http_app(path="/", stateless_http=True)
123
+ mcp_app = mcp.http_app(path="/", transport=transport, stateless_http=(transport == "streamable-http"))
119
124
  wrapped = Starlette(
120
125
  routes=[Mount("/", app=mcp_app)],
121
126
  middleware=[
122
- Middleware(McpRequestGuardMiddleware, origin_allowlist=config.origin_allowlist),
127
+ Middleware(
128
+ McpRequestGuardMiddleware,
129
+ origin_allowlist=config.origin_allowlist,
130
+ allowed_methods=_allowed_methods_for_transport(transport),
131
+ ),
123
132
  ],
124
133
  )
125
134
  return wrapped, mcp_app.lifespan
126
135
 
127
136
 
137
+ def create_mcp_apps(config: McpSnapshotConfig) -> tuple[dict[str, Starlette], Any]:
138
+ """Create streamable-http and sse MCP apps.
139
+
140
+ Returns:
141
+ A tuple of (apps_by_transport, lifespan_context).
142
+ """
143
+ streamable_app, lifespan = create_mcp_transport_app(config, transport="streamable-http")
144
+ sse_app, _ = create_mcp_transport_app(config, transport="sse")
145
+ return {"streamable-http": streamable_app, "sse": sse_app}, lifespan
146
+
147
+
148
+ def create_mcp_app(config: McpSnapshotConfig) -> tuple[Starlette, Any]:
149
+ """Backward-compatible helper returning streamable-http MCP app."""
150
+ return create_mcp_transport_app(config, transport="streamable-http")
151
+
152
+
128
153
  def _get_config() -> McpSnapshotConfig:
129
154
  if _CONFIG is None:
130
155
  raise RuntimeError("MCP server not configured")
@@ -227,18 +252,24 @@ def _load_summary_json(paper_id: str, template: str | None) -> tuple[str | None,
227
252
  conn = _open_ro_conn(cfg.snapshot_db)
228
253
  try:
229
254
  row = conn.execute(
230
- "SELECT preferred_summary_template, summary_asset_paths_json FROM paper WHERE paper_id = ?",
255
+ "SELECT preferred_summary_template FROM paper WHERE paper_id = ?",
231
256
  (paper_id,),
232
257
  ).fetchone()
233
258
  if not row:
234
259
  return None, None
235
- preferred = row["preferred_summary_template"]
236
- asset_paths = json.loads(row["summary_asset_paths_json"] or "{}")
237
- available = sorted(asset_paths.keys())
238
- selected = template if template else preferred
239
- if not selected or selected not in asset_paths:
260
+ preferred = str(row["preferred_summary_template"] or "")
261
+ template_rows = conn.execute(
262
+ "SELECT template_tag FROM paper_summary WHERE paper_id = ?",
263
+ (paper_id,),
264
+ ).fetchall()
265
+ available = sorted((str(item["template_tag"]) for item in template_rows), key=str.lower)
266
+ selected = (template or preferred).strip()
267
+ if not selected or selected not in set(available):
240
268
  return None, available
241
- rel_path = asset_paths[selected]
269
+ if template:
270
+ rel_path = f"summary/{paper_id}/{selected}.json"
271
+ else:
272
+ rel_path = f"summary/{paper_id}.json"
242
273
  return _load_static_text(rel_path), available
243
274
  finally:
244
275
  conn.close()
@@ -267,15 +298,12 @@ def _load_translation_markdown(paper_id: str, lang: str) -> str | None:
267
298
  conn = _open_ro_conn(cfg.snapshot_db)
268
299
  try:
269
300
  row = conn.execute(
270
- "SELECT translations_json FROM paper WHERE paper_id = ?",
271
- (paper_id,),
301
+ "SELECT md_content_hash FROM paper_translation WHERE paper_id = ? AND lang = ?",
302
+ (paper_id, lang),
272
303
  ).fetchone()
273
- if not row or not row["translations_json"]:
274
- return None
275
- translations = json.loads(row["translations_json"])
276
- rel_path = translations.get(lang)
277
- if not rel_path:
304
+ if not row or not row["md_content_hash"]:
278
305
  return None
306
+ rel_path = f"md_translate/{lang}/{row['md_content_hash']}.md"
279
307
  return _load_static_text(rel_path)
280
308
  finally:
281
309
  conn.close()
@@ -296,22 +324,32 @@ def search_papers(query: str, limit: int = 10) -> list[dict[str, Any]]:
296
324
 
297
325
  conn = _open_ro_conn(cfg.snapshot_db)
298
326
  try:
327
+ match_expr = rewrite_search_query(query)
328
+ if not match_expr:
329
+ return []
299
330
  cur = conn.execute(
300
331
  """
301
- SELECT paper_id, title, year, venue, abstract
302
- FROM paper_search
303
- WHERE paper_search MATCH ?
332
+ SELECT
333
+ p.paper_id,
334
+ p.title,
335
+ p.year,
336
+ p.venue,
337
+ snippet(paper_fts, -1, '[[[', ']]]', '…', 30) AS snippet_markdown,
338
+ bm25(paper_fts, 5.0, 3.0, 1.0, 1.0, 2.0) AS rank
339
+ FROM paper_fts
340
+ JOIN paper p ON p.paper_id = paper_fts.paper_id
341
+ WHERE paper_fts MATCH ?
304
342
  ORDER BY rank
305
343
  LIMIT ?
306
344
  """,
307
- (rewrite_search_query(query), limit),
345
+ (match_expr, limit),
308
346
  )
309
347
  rows = cur.fetchall()
310
348
  results: list[dict[str, Any]] = []
311
349
  for row in rows:
312
- snippet = str(row["abstract"] or "")
350
+ snippet = str(row["snippet_markdown"] or "")
313
351
  snippet = remove_cjk_spaces(snippet)
314
- snippet, markers = merge_adjacent_markers(snippet)
352
+ snippet = merge_adjacent_markers(snippet)
315
353
  results.append({
316
354
  "paper_id": str(row["paper_id"]),
317
355
  "title": str(row["title"]),
@@ -337,7 +375,7 @@ def search_papers_by_keyword(keyword: str, limit: int = 10) -> list[dict[str, An
337
375
  try:
338
376
  rows = conn.execute(
339
377
  """
340
- SELECT DISTINCT p.paper_id, p.title, p.year, p.venue, p.abstract
378
+ SELECT DISTINCT p.paper_id, p.title, p.year, p.venue, p.summary_preview
341
379
  FROM paper p
342
380
  JOIN paper_keyword pk ON pk.paper_id = p.paper_id
343
381
  JOIN keyword k ON k.keyword_id = pk.keyword_id
@@ -349,9 +387,9 @@ def search_papers_by_keyword(keyword: str, limit: int = 10) -> list[dict[str, An
349
387
  ).fetchall()
350
388
  results: list[dict[str, Any]] = []
351
389
  for row in rows:
352
- snippet = str(row["abstract"] or "")
390
+ snippet = str(row["summary_preview"] or "")
353
391
  snippet = remove_cjk_spaces(snippet)
354
- snippet, markers = merge_adjacent_markers(snippet)
392
+ snippet = merge_adjacent_markers(snippet)
355
393
  results.append({
356
394
  "paper_id": str(row["paper_id"]),
357
395
  "title": str(row["title"]),
@@ -377,26 +415,27 @@ def get_paper_metadata(paper_id: str) -> dict[str, Any]:
377
415
  try:
378
416
  row = conn.execute(
379
417
  """
380
- SELECT paper_id, title, year, venue, doi, arxiv_id, openreview_id, paper_pw_url,
381
- preferred_summary_template, summary_asset_paths_json
418
+ SELECT paper_id, title, year, venue, preferred_summary_template
382
419
  FROM paper WHERE paper_id = ?
383
420
  """,
384
421
  (paper_id,),
385
422
  ).fetchone()
386
423
  if not row:
387
424
  raise McpToolError("not_found", "paper not found", paper_id=paper_id)
388
-
389
- asset_paths = json.loads(row["summary_asset_paths_json"] or "{}")
390
- available = sorted(asset_paths.keys())
425
+ template_rows = conn.execute(
426
+ "SELECT template_tag FROM paper_summary WHERE paper_id = ?",
427
+ (paper_id,),
428
+ ).fetchall()
429
+ available = sorted((str(item["template_tag"]) for item in template_rows), key=str.lower)
391
430
  return {
392
431
  "paper_id": str(row["paper_id"]),
393
432
  "title": str(row["title"]),
394
433
  "year": str(row["year"]),
395
434
  "venue": str(row["venue"]),
396
- "doi": row["doi"],
397
- "arxiv_id": row["arxiv_id"],
398
- "openreview_id": row["openreview_id"],
399
- "paper_pw_url": row["paper_pw_url"],
435
+ "doi": None,
436
+ "arxiv_id": None,
437
+ "openreview_id": None,
438
+ "paper_pw_url": None,
400
439
  "preferred_summary_template": row["preferred_summary_template"],
401
440
  "available_summary_templates": available,
402
441
  }
@@ -0,0 +1,184 @@
1
+ from __future__ import annotations
2
+
3
+ import sqlite3
4
+ import tempfile
5
+ from pathlib import Path
6
+ import unittest
7
+
8
+ from deepresearch_flow.paper.snapshot.common import ApiLimits
9
+ from deepresearch_flow.paper.snapshot.mcp_server import (
10
+ McpSnapshotConfig,
11
+ McpToolError,
12
+ configure,
13
+ get_paper_metadata,
14
+ get_paper_source,
15
+ get_paper_summary,
16
+ resource_translation,
17
+ search_papers,
18
+ search_papers_by_keyword,
19
+ )
20
+ from deepresearch_flow.paper.snapshot.schema import init_snapshot_db
21
+
22
+
23
+ class TestMcpServerSchemaCompat(unittest.TestCase):
24
+ @classmethod
25
+ def setUpClass(cls) -> None:
26
+ cls.tmpdir = tempfile.TemporaryDirectory()
27
+ root = Path(cls.tmpdir.name)
28
+ cls.db_path = root / "snapshot.db"
29
+ cls.static_dir = root / "static"
30
+ cls.paper_id = "eb87c02de5b908dff9f91edda47364a5"
31
+
32
+ (cls.static_dir / "summary" / cls.paper_id).mkdir(parents=True, exist_ok=True)
33
+ (cls.static_dir / "md").mkdir(parents=True, exist_ok=True)
34
+ (cls.static_dir / "md_translate" / "zh").mkdir(parents=True, exist_ok=True)
35
+ (cls.static_dir / "summary" / f"{cls.paper_id}.json").write_text(
36
+ '{"template_tag":"deep_read","summary":"default summary"}',
37
+ encoding="utf-8",
38
+ )
39
+ (cls.static_dir / "summary" / cls.paper_id / "deep_read.json").write_text(
40
+ '{"template_tag":"deep_read","summary":"deep summary"}',
41
+ encoding="utf-8",
42
+ )
43
+ (cls.static_dir / "summary" / cls.paper_id / "simple.json").write_text(
44
+ '{"template_tag":"simple","summary":"simple summary"}',
45
+ encoding="utf-8",
46
+ )
47
+ (cls.static_dir / "md" / "sourcehash.md").write_text(
48
+ "# source body",
49
+ encoding="utf-8",
50
+ )
51
+ (cls.static_dir / "md_translate" / "zh" / "trhash.md").write_text(
52
+ "# 翻译内容",
53
+ encoding="utf-8",
54
+ )
55
+
56
+ conn = sqlite3.connect(str(cls.db_path))
57
+ try:
58
+ init_snapshot_db(conn)
59
+ conn.execute(
60
+ """
61
+ INSERT INTO paper(
62
+ paper_id, paper_key, paper_key_type, title, year, month, publication_date,
63
+ venue, preferred_summary_template, summary_preview, paper_index, source_hash,
64
+ output_language, provider, model, prompt_template, extracted_at,
65
+ pdf_content_hash, source_md_content_hash
66
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
67
+ """,
68
+ (
69
+ cls.paper_id,
70
+ "meta:key",
71
+ "meta",
72
+ "Graph Neural Networks",
73
+ "2024",
74
+ "01",
75
+ "2024-01-01",
76
+ "ICLR",
77
+ "deep_read",
78
+ "Graph methods preview",
79
+ 1,
80
+ "sourcekey",
81
+ "en",
82
+ "provider-x",
83
+ "model-y",
84
+ "deep_read",
85
+ "2025-01-01T00:00:00Z",
86
+ "pdfhash",
87
+ "sourcehash",
88
+ ),
89
+ )
90
+ conn.execute(
91
+ "INSERT INTO paper_summary(paper_id, template_tag) VALUES (?, ?)",
92
+ (cls.paper_id, "deep_read"),
93
+ )
94
+ conn.execute(
95
+ "INSERT INTO paper_summary(paper_id, template_tag) VALUES (?, ?)",
96
+ (cls.paper_id, "simple"),
97
+ )
98
+ conn.execute(
99
+ "INSERT INTO paper_translation(paper_id, lang, md_content_hash) VALUES (?, ?, ?)",
100
+ (cls.paper_id, "zh", "trhash"),
101
+ )
102
+ conn.execute("INSERT INTO keyword(value) VALUES (?)", ("machine learning",))
103
+ keyword_row = conn.execute(
104
+ "SELECT keyword_id FROM keyword WHERE value = ?",
105
+ ("machine learning",),
106
+ ).fetchone()
107
+ conn.execute(
108
+ "INSERT INTO paper_keyword(paper_id, keyword_id) VALUES (?, ?)",
109
+ (cls.paper_id, int(keyword_row[0])),
110
+ )
111
+ conn.execute(
112
+ """
113
+ INSERT INTO paper_fts(paper_id, title, summary, source, translated, metadata)
114
+ VALUES (?, ?, ?, ?, ?, ?)
115
+ """,
116
+ (
117
+ cls.paper_id,
118
+ "graph neural networks",
119
+ "graph representation learning",
120
+ "source text",
121
+ "translated text",
122
+ "machine learning iclr",
123
+ ),
124
+ )
125
+ conn.commit()
126
+ finally:
127
+ conn.close()
128
+
129
+ configure(
130
+ McpSnapshotConfig(
131
+ snapshot_db=cls.db_path,
132
+ static_base_url="",
133
+ static_export_dir=cls.static_dir,
134
+ limits=ApiLimits(),
135
+ origin_allowlist=["*"],
136
+ )
137
+ )
138
+
139
+ @classmethod
140
+ def tearDownClass(cls) -> None:
141
+ cls.tmpdir.cleanup()
142
+
143
+ def test_get_paper_metadata_with_new_schema(self) -> None:
144
+ payload = get_paper_metadata(self.paper_id)
145
+ self.assertEqual(payload["paper_id"], self.paper_id)
146
+ self.assertEqual(payload["preferred_summary_template"], "deep_read")
147
+ self.assertEqual(payload["available_summary_templates"], ["deep_read", "simple"])
148
+ self.assertIsNone(payload["doi"])
149
+ self.assertIsNone(payload["arxiv_id"])
150
+ self.assertIsNone(payload["openreview_id"])
151
+ self.assertIsNone(payload["paper_pw_url"])
152
+
153
+ def test_get_paper_summary_default_and_template(self) -> None:
154
+ default_summary = get_paper_summary(self.paper_id)
155
+ deep_read_summary = get_paper_summary(self.paper_id, template="deep_read")
156
+ self.assertIn("default summary", default_summary)
157
+ self.assertIn("deep summary", deep_read_summary)
158
+
159
+ def test_get_paper_summary_template_not_available(self) -> None:
160
+ with self.assertRaises(McpToolError) as ctx:
161
+ get_paper_summary(self.paper_id, template="unknown")
162
+ self.assertEqual(ctx.exception.code, "template_not_available")
163
+ self.assertEqual(
164
+ ctx.exception.details["available_summary_templates"],
165
+ ["deep_read", "simple"],
166
+ )
167
+
168
+ def test_source_and_translation_loading(self) -> None:
169
+ source = get_paper_source(self.paper_id)
170
+ translated = resource_translation(self.paper_id, "zh")
171
+ self.assertIn("source body", source)
172
+ self.assertIn("翻译内容", translated)
173
+
174
+ def test_search_tools_use_current_schema(self) -> None:
175
+ fts_hits = search_papers("graph", limit=5)
176
+ facet_hits = search_papers_by_keyword("machine", limit=5)
177
+ self.assertGreaterEqual(len(fts_hits), 1)
178
+ self.assertGreaterEqual(len(facet_hits), 1)
179
+ self.assertEqual(fts_hits[0]["paper_id"], self.paper_id)
180
+ self.assertEqual(facet_hits[0]["paper_id"], self.paper_id)
181
+
182
+
183
+ if __name__ == "__main__":
184
+ unittest.main()
@@ -0,0 +1,52 @@
1
+ from __future__ import annotations
2
+
3
+ import tempfile
4
+ from pathlib import Path
5
+ import unittest
6
+
7
+ from deepresearch_flow.paper.snapshot.api import create_app
8
+ from deepresearch_flow.paper.snapshot.common import ApiLimits
9
+ from deepresearch_flow.paper.snapshot.mcp_server import (
10
+ McpSnapshotConfig,
11
+ _allowed_methods_for_transport,
12
+ )
13
+
14
+
15
+ class TestMcpTransport(unittest.TestCase):
16
+ @classmethod
17
+ def setUpClass(cls) -> None:
18
+ cls.tmpdir = tempfile.TemporaryDirectory()
19
+ cls.snapshot_db = Path(cls.tmpdir.name) / "snapshot.db"
20
+ cls.snapshot_db.touch()
21
+ cls.cfg = McpSnapshotConfig(
22
+ snapshot_db=cls.snapshot_db,
23
+ static_base_url="",
24
+ static_export_dir=None,
25
+ limits=ApiLimits(),
26
+ origin_allowlist=["*"],
27
+ )
28
+
29
+ @classmethod
30
+ def tearDownClass(cls) -> None:
31
+ cls.tmpdir.cleanup()
32
+
33
+ def test_streamable_transport_rejects_get(self) -> None:
34
+ self.assertNotIn("GET", _allowed_methods_for_transport("streamable-http"))
35
+
36
+ def test_sse_transport_allows_get(self) -> None:
37
+ self.assertIn("GET", _allowed_methods_for_transport("sse"))
38
+
39
+ def test_api_mounts_streamable_and_sse_endpoints(self) -> None:
40
+ app = create_app(
41
+ snapshot_db=self.snapshot_db,
42
+ static_base_url="",
43
+ cors_allowed_origins=["*"],
44
+ limits=ApiLimits(),
45
+ )
46
+ mount_paths = sorted(getattr(route, "path", "") for route in app.routes)
47
+ self.assertIn("/mcp", mount_paths)
48
+ self.assertIn("/mcp-sse", mount_paths)
49
+
50
+
51
+ if __name__ == "__main__":
52
+ unittest.main()