flowapy 0.4.0__tar.gz → 0.4.2__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 (349) hide show
  1. flowapy-0.4.2/.github/CODEOWNERS +11 -0
  2. {flowapy-0.4.0 → flowapy-0.4.2}/.github/dependabot.yml +27 -17
  3. {flowapy-0.4.0 → flowapy-0.4.2}/.github/workflows/release-chat-service.yaml +27 -1
  4. {flowapy-0.4.0 → flowapy-0.4.2}/.github/workflows/release-flowapy.yaml +4 -0
  5. {flowapy-0.4.0 → flowapy-0.4.2}/.github/workflows/release-react-viewer.yaml +27 -1
  6. {flowapy-0.4.0 → flowapy-0.4.2}/PKG-INFO +8 -8
  7. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/package.json +20 -20
  8. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/components/literature/LiteratureView.tsx +23 -13
  9. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/pyproject.toml +4 -10
  10. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/uv.lock +167 -156
  11. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/package.json +13 -13
  12. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/README.md +17 -7
  13. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/package.json +10 -10
  14. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/index.ts +9 -0
  15. flowapy-0.4.2/packages/react-viewer/src/paper-matching/matchFilesToPapers.test.ts +140 -0
  16. flowapy-0.4.2/packages/react-viewer/src/paper-matching/matchFilesToPapers.ts +121 -0
  17. {flowapy-0.4.0 → flowapy-0.4.2}/pnpm-lock.yaml +928 -897
  18. {flowapy-0.4.0 → flowapy-0.4.2}/pyproject.toml +20 -23
  19. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/convert.py +10 -4
  20. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/normalize.py +75 -43
  21. flowapy-0.4.2/src/flowa/pdfium.py +43 -0
  22. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/query.py +16 -17
  23. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/schema.py +1 -1
  24. flowapy-0.4.2/tests/test_normalize.py +105 -0
  25. flowapy-0.4.2/tests/test_pdfium.py +47 -0
  26. {flowapy-0.4.0 → flowapy-0.4.2}/uv.lock +218 -209
  27. flowapy-0.4.0/examples/demo/src/components/literature/matchFilename.ts +0 -51
  28. flowapy-0.4.0/examples/demo/test/matchFilename.test.ts +0 -103
  29. {flowapy-0.4.0 → flowapy-0.4.2}/.github/workflows/dependabot-auto-merge.yml +0 -0
  30. {flowapy-0.4.0 → flowapy-0.4.2}/.github/workflows/lint.yaml +0 -0
  31. {flowapy-0.4.0 → flowapy-0.4.2}/.gitignore +0 -0
  32. {flowapy-0.4.0 → flowapy-0.4.2}/.markdownlint.json +0 -0
  33. {flowapy-0.4.0 → flowapy-0.4.2}/.nvmrc +0 -0
  34. {flowapy-0.4.0 → flowapy-0.4.2}/.pre-commit-config.yaml +0 -0
  35. {flowapy-0.4.0 → flowapy-0.4.2}/.prettierignore +0 -0
  36. {flowapy-0.4.0 → flowapy-0.4.2}/Dockerfile +0 -0
  37. {flowapy-0.4.0 → flowapy-0.4.2}/LICENSE +0 -0
  38. {flowapy-0.4.0 → flowapy-0.4.2}/README.md +0 -0
  39. {flowapy-0.4.0 → flowapy-0.4.2}/docs/images/viewer.png +0 -0
  40. {flowapy-0.4.0 → flowapy-0.4.2}/examples/.gitkeep +0 -0
  41. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/.env.example +0 -0
  42. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/.gitignore +0 -0
  43. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/README.md +0 -0
  44. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/LICENSES.md +0 -0
  45. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/aggregation.json +0 -0
  46. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1002%2Fhumu.23878.json +0 -0
  47. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1016%2Fj.ymgmr.2024.101163.json +0 -0
  48. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1038%2Fs41598-022-25914-8.json +0 -0
  49. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs12881-019-0878-8.json +0 -0
  50. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-021-01817-1.json +0 -0
  51. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-021-02146-z.json +0 -0
  52. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-023-02848-6.json +0 -0
  53. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13052-019-0692-0.json +0 -0
  54. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffcvm.2022.1061384.json +0 -0
  55. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffcvm.2023.1261172.json +0 -0
  56. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffimmu.2024.1336599.json +0 -0
  57. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffped.2021.729824.json +0 -0
  58. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffphar.2022.903488.json +0 -0
  59. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3390%2Fijns11010016.json +0 -0
  60. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3390%2Fijns6020031.json +0 -0
  61. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/query.json +0 -0
  62. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/runs/cfc0186a7b7e46eb802a516b86ec207f/progress.jsonl +0 -0
  63. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/variant_details.json +0 -0
  64. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fajmg.a.61481/metadata.json +0 -0
  65. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/main.md +0 -0
  66. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/main.pdf +0 -0
  67. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.md +0 -0
  68. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.pdf +0 -0
  69. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/metadata.json +0 -0
  70. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/pdf_index.pkl.zst +0 -0
  71. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/supplements/000_HUMU-40-2146-s001.pdf +0 -0
  72. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/supplements/000_HUMU-40-2146-s001.pdf.md +0 -0
  73. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ejmg.2020.103997/metadata.json +0 -0
  74. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.nmd.2022.02.002/metadata.json +0 -0
  75. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.tjog.2022.07.008/metadata.json +0 -0
  76. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.md +0 -0
  77. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.pdf +0 -0
  78. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/merged.md +0 -0
  79. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/metadata.json +0 -0
  80. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/pdf_index.pkl.zst +0 -0
  81. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/supplements/000_mmc1.docx +0 -0
  82. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.md +0 -0
  83. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.pdf +0 -0
  84. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/merged.md +0 -0
  85. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/metadata.json +0 -0
  86. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/pdf_index.pkl.zst +0 -0
  87. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/supplements/000_41598_2022_25914_MOESM1_ESM.docx +0 -0
  88. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1093%2Fhmg%2Fddz218/metadata.json +0 -0
  89. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1136%2Fjmg-2022-108675/metadata.json +0 -0
  90. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.md +0 -0
  91. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.pdf +0 -0
  92. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/metadata.json +0 -0
  93. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/pdf_index.pkl.zst +0 -0
  94. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.md +0 -0
  95. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.pdf +0 -0
  96. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/metadata.json +0 -0
  97. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/pdf_index.pkl.zst +0 -0
  98. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.md +0 -0
  99. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.pdf +0 -0
  100. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/metadata.json +0 -0
  101. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/pdf_index.pkl.zst +0 -0
  102. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.md +0 -0
  103. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.pdf +0 -0
  104. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/metadata.json +0 -0
  105. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/pdf_index.pkl.zst +0 -0
  106. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.md +0 -0
  107. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.pdf +0 -0
  108. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/metadata.json +0 -0
  109. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/pdf_index.pkl.zst +0 -0
  110. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.md +0 -0
  111. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.pdf +0 -0
  112. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/metadata.json +0 -0
  113. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/pdf_index.pkl.zst +0 -0
  114. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.md +0 -0
  115. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.pdf +0 -0
  116. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/merged.md +0 -0
  117. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/metadata.json +0 -0
  118. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/pdf_index.pkl.zst +0 -0
  119. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/supplements/000_Table1.docx +0 -0
  120. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.md +0 -0
  121. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.pdf +0 -0
  122. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/metadata.json +0 -0
  123. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/pdf_index.pkl.zst +0 -0
  124. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.md +0 -0
  125. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.pdf +0 -0
  126. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.md +0 -0
  127. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.pdf +0 -0
  128. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/metadata.json +0 -0
  129. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/pdf_index.pkl.zst +0 -0
  130. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/supplements/000_Image_1.PDF +0 -0
  131. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/supplements/000_Image_1.PDF.md +0 -0
  132. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.md +0 -0
  133. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.pdf +0 -0
  134. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/metadata.json +0 -0
  135. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/pdf_index.pkl.zst +0 -0
  136. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.md +0 -0
  137. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.pdf +0 -0
  138. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/metadata.json +0 -0
  139. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/pdf_index.pkl.zst +0 -0
  140. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/main.md +0 -0
  141. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/main.pdf +0 -0
  142. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/metadata.json +0 -0
  143. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/pdf_index.pkl.zst +0 -0
  144. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/next-env.d.ts +0 -0
  145. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/next.config.mjs +0 -0
  146. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/postcss.config.cjs +0 -0
  147. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/public/favicon.svg +0 -0
  148. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/scripts/chat-service.ts +0 -0
  149. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/scripts/copy-pdfjs-assets.ts +0 -0
  150. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/scripts/exercise-llm.ts +0 -0
  151. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/scripts/start.ts +0 -0
  152. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/components/literature/PaperStatusGroup.tsx +0 -0
  153. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/components/literature/ProgressLog.tsx +0 -0
  154. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/db/migrate.ts +0 -0
  155. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/db/schema.sql +0 -0
  156. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/aggregate.ts +0 -0
  157. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/chatSessionClient.ts +0 -0
  158. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/citationResolverClient.ts +0 -0
  159. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/demoConfig.ts +0 -0
  160. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/paperInvalidation.ts +0 -0
  161. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/papers.ts +0 -0
  162. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/progressEvents.ts +0 -0
  163. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/runs.ts +0 -0
  164. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/triageBackendClient.ts +0 -0
  165. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/triageDb.ts +0 -0
  166. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/lib/variantId.ts +0 -0
  167. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/_app.tsx +0 -0
  168. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/aggregate/[variantId]/[category].ts +0 -0
  169. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/edit-drafts/[variantId]/[category]/[version].ts +0 -0
  170. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/edit-drafts/[variantId]/[category]/index.ts +0 -0
  171. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/papers/[doi]/markdown.ts +0 -0
  172. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/papers/[doi]/pdf.ts +0 -0
  173. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/papers/[doi]/supplements.ts +0 -0
  174. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/papers/index.ts +0 -0
  175. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/runs/[variantId]/[runId]/progress.ts +0 -0
  176. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/runs/index.ts +0 -0
  177. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/runs/latest.ts +0 -0
  178. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/triage/claim.ts +0 -0
  179. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/triage/comment.ts +0 -0
  180. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/triage/paper-done.ts +0 -0
  181. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/api/triage/snapshot/[variantId]/[category]/[version].ts +0 -0
  182. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/index.tsx +0 -0
  183. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/variants/[variantId].tsx +0 -0
  184. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/pages/viewer/[variantId]/[category].tsx +0 -0
  185. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/src/styles/globals.css +0 -0
  186. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/tailwind.config.ts +0 -0
  187. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/LiteratureView.test.tsx +0 -0
  188. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/ProgressLog.test.tsx +0 -0
  189. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/aggregate.test.ts +0 -0
  190. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/chat-service.test.ts +0 -0
  191. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/index-page.test.tsx +0 -0
  192. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/paper-invalidation.test.ts +0 -0
  193. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/papers-pdf-upload.test.ts +0 -0
  194. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/papers-route.test.ts +0 -0
  195. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/papers-supplements.test.ts +0 -0
  196. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/papers.test.ts +0 -0
  197. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/progress-route.test.ts +0 -0
  198. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/runs-latest-route.test.ts +0 -0
  199. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/runs-route.test.ts +0 -0
  200. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/runs.test.ts +0 -0
  201. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/setup.ts +0 -0
  202. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/triage.test.ts +0 -0
  203. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/test/variantId.test.ts +0 -0
  204. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/tsconfig.json +0 -0
  205. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo/vitest.config.ts +0 -0
  206. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/README.md +0 -0
  207. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/src/demo_gateway/__init__.py +0 -0
  208. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/src/demo_gateway/config.py +0 -0
  209. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/src/demo_gateway/main.py +0 -0
  210. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/src/demo_gateway/progress.py +0 -0
  211. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/src/demo_gateway/runs.py +0 -0
  212. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/__init__.py +0 -0
  213. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/conftest.py +0 -0
  214. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/test_main.py +0 -0
  215. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/test_progress.py +0 -0
  216. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/test_resolve.py +0 -0
  217. {flowapy-0.4.0 → flowapy-0.4.2}/examples/demo-gateway/tests/test_runs.py +0 -0
  218. {flowapy-0.4.0 → flowapy-0.4.2}/package.json +0 -0
  219. {flowapy-0.4.0 → flowapy-0.4.2}/packages/.gitkeep +0 -0
  220. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/Dockerfile +0 -0
  221. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/LICENSE +0 -0
  222. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/README.md +0 -0
  223. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/artifact.ts +0 -0
  224. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/audit.ts +0 -0
  225. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/auth/jwt.ts +0 -0
  226. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/auth/oidc.ts +0 -0
  227. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/chat.ts +0 -0
  228. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/cli.ts +0 -0
  229. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/config.ts +0 -0
  230. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/index.ts +0 -0
  231. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/instrumentation.ts +0 -0
  232. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/anthropic.ts +0 -0
  233. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/bedrock.ts +0 -0
  234. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/factory.ts +0 -0
  235. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/google-gla.ts +0 -0
  236. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/google-vertex.ts +0 -0
  237. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/interface.ts +0 -0
  238. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/llm/openai.ts +0 -0
  239. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/prompts.ts +0 -0
  240. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/server.ts +0 -0
  241. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/session.ts +0 -0
  242. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage/factory.ts +0 -0
  243. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage/fs.ts +0 -0
  244. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage/gcs.ts +0 -0
  245. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage/interface.ts +0 -0
  246. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage/s3.ts +0 -0
  247. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/storage-keys.ts +0 -0
  248. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/telemetry.ts +0 -0
  249. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/text.ts +0 -0
  250. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/src/yaml.ts +0 -0
  251. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/chat.test.ts +0 -0
  252. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/generic-prompt.test.ts +0 -0
  253. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/llm-factory.test.ts +0 -0
  254. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/oidc.test.ts +0 -0
  255. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/paper-cache.test.ts +0 -0
  256. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/storage-fs.test.ts +0 -0
  257. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/storage-gcs.test.ts +0 -0
  258. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/storage-s3.test.ts +0 -0
  259. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/text.test.ts +0 -0
  260. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/test/yaml.test.ts +0 -0
  261. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/tsconfig.build.json +0 -0
  262. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/tsconfig.json +0 -0
  263. {flowapy-0.4.0 → flowapy-0.4.2}/packages/chat-service/vitest.config.ts +0 -0
  264. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/LICENSE +0 -0
  265. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/citations/sanitize.test.ts +0 -0
  266. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/citations/sanitize.ts +0 -0
  267. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/citations/types.ts +0 -0
  268. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/llm-content/LlmContent.test.tsx +0 -0
  269. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/llm-content/LlmContent.tsx +0 -0
  270. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/MarkdownHighlightViewer.test.tsx +0 -0
  271. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/MarkdownHighlightViewer.tsx +0 -0
  272. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/offsets.test.ts +0 -0
  273. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/offsets.ts +0 -0
  274. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/plugins.test.tsx +0 -0
  275. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/plugins.ts +0 -0
  276. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/markdown-viewer/types.ts +0 -0
  277. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/pdf-viewer/PdfHighlightViewer.test.tsx +0 -0
  278. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/pdf-viewer/PdfHighlightViewer.tsx +0 -0
  279. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/pdf-viewer/types.ts +0 -0
  280. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/styles.css +0 -0
  281. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ChatDrawer.test.tsx +0 -0
  282. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ChatDrawer.tsx +0 -0
  283. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ChatSection.tsx +0 -0
  284. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ClaimList.tsx +0 -0
  285. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/EvidenceViewerShell.test.tsx +0 -0
  286. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/EvidenceViewerShell.tsx +0 -0
  287. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/FocusCard.tsx +0 -0
  288. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/MessageParts.tsx +0 -0
  289. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/PaperHeader.tsx +0 -0
  290. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/PaperRail.test.tsx +0 -0
  291. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/PaperRail.tsx +0 -0
  292. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ReasoningStep.tsx +0 -0
  293. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/SynthesisPanel.tsx +0 -0
  294. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/ToolStep.tsx +0 -0
  295. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/backend.ts +0 -0
  296. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/citation-resolver.ts +0 -0
  297. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/citation-utils.test.ts +0 -0
  298. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/citation-utils.ts +0 -0
  299. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/claim-refs.test.ts +0 -0
  300. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/claim-refs.ts +0 -0
  301. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/keyboard.test.ts +0 -0
  302. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/keyboard.ts +0 -0
  303. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/store.test.ts +0 -0
  304. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/store.ts +0 -0
  305. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/trace-format.test.ts +0 -0
  306. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/trace-format.ts +0 -0
  307. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/src/triage/types.ts +0 -0
  308. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/tailwind.config.ts +0 -0
  309. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/tsconfig.json +0 -0
  310. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/tsup.config.ts +0 -0
  311. {flowapy-0.4.0 → flowapy-0.4.2}/packages/react-viewer/vitest.config.ts +0 -0
  312. {flowapy-0.4.0 → flowapy-0.4.2}/pnpm-workspace.yaml +0 -0
  313. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/aggregation_edit_prompt.txt +0 -0
  314. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/aggregation_edit_schema.ts +0 -0
  315. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/aggregation_prompt.txt +0 -0
  316. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/aggregation_schema.py +0 -0
  317. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/extraction_prompt.txt +0 -0
  318. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/extraction_schema.py +0 -0
  319. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/generic/transcription_prompt.txt +0 -0
  320. {flowapy-0.4.0 → flowapy-0.4.2}/prompts/package.json +0 -0
  321. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/__init__.py +0 -0
  322. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/aggregate.py +0 -0
  323. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/artifact.py +0 -0
  324. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/assemble.py +0 -0
  325. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/cli.py +0 -0
  326. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/clinvar.py +0 -0
  327. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/content_validation.py +0 -0
  328. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/download.py +0 -0
  329. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/extract.py +0 -0
  330. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/http_retry.py +0 -0
  331. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/models.py +0 -0
  332. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/pdf_index_cache.py +0 -0
  333. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/progress.py +0 -0
  334. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/prompts/__init__.py +0 -0
  335. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/py.typed +0 -0
  336. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/resolve.py +0 -0
  337. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/run.py +0 -0
  338. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/settings.py +0 -0
  339. {flowapy-0.4.0 → flowapy-0.4.2}/src/flowa/storage.py +0 -0
  340. {flowapy-0.4.0 → flowapy-0.4.2}/tests/__init__.py +0 -0
  341. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_assemble.py +0 -0
  342. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_content_validation.py +0 -0
  343. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_convert.py +0 -0
  344. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_download.py +0 -0
  345. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_pdf_index_cache.py +0 -0
  346. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_progress.py +0 -0
  347. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_prompts.py +0 -0
  348. {flowapy-0.4.0 → flowapy-0.4.2}/tests/test_resolve.py +0 -0
  349. {flowapy-0.4.0 → flowapy-0.4.2}/tsconfig.base.json +0 -0
@@ -0,0 +1,11 @@
1
+ # Code review ownership for flowa.
2
+ #
3
+ # GitHub requests a review from the matching owner on every PR that touches
4
+ # these paths — including Dependabot's. This replaces Dependabot's `reviewers:`
5
+ # option, which GitHub retired in 2025 (it now silently ignores that key);
6
+ # CODEOWNERS is the supported mechanism for auto-requesting reviewers.
7
+ #
8
+ # `main` requires only the `lint` status check (no required code-owner
9
+ # approval), so this only *requests* review — it never blocks the auto-merge of
10
+ # routine Dependabot bumps (dependabot-auto-merge.yml).
11
+ * @lgruen-vcgs
@@ -12,8 +12,14 @@
12
12
  # (`min-release-age=7d` in pnpm's global config, `exclude-newer = "7 days"`
13
13
  # in each uv project). Without it Dependabot would happily open PRs that CI
14
14
  # then rejects because the new version is too fresh.
15
- # - The reviewer assignment notifies @lgruen-vcgs on each PR; the weekly
16
- # cadence keeps the inbox manageable.
15
+ # - Review requests come from .github/CODEOWNERS. Dependabot's `reviewers:`
16
+ # option was retired by GitHub in 2025 (it is now silently ignored), so the
17
+ # code owner is what gets a review request on each PR. The weekly cadence
18
+ # keeps the inbox manageable.
19
+ # - No explicit `labels:` — Dependabot applies its defaults (`dependencies`
20
+ # plus the `python:uv` / `javascript:npm` ecosystem label, which it
21
+ # auto-creates). Naming a label here that Dependabot does not auto-create
22
+ # makes it error whenever that label is missing from the repo.
17
23
 
18
24
  version: 2
19
25
 
@@ -26,15 +32,29 @@ updates:
26
32
  schedule:
27
33
  interval: "weekly"
28
34
  open-pull-requests-limit: 10
29
- reviewers:
30
- - "lgruen-vcgs"
31
- labels:
32
- - "dependencies"
33
- - "npm"
34
35
  commit-message:
35
36
  prefix: "deps"
36
37
  cooldown:
37
38
  default-days: 7
39
+ # Hold the published UI peer deps on their current majors. @flowajs/react-
40
+ # viewer declares @mantine/* and react / react-dom as peer dependencies
41
+ # (^8 / ^18); downstream consumers of the published package are on those
42
+ # majors (Mantine 8 / React 18). A major bump here drags the peer range
43
+ # ahead of those consumers and forces them through a breaking upgrade, so
44
+ # block majors for the @mantine/* family and the react stack until they
45
+ # migrate in lockstep. Minor/patch within 8.x / 18.x still flow (the
46
+ # npm-non-major group below).
47
+ ignore:
48
+ - dependency-name: "@mantine/*"
49
+ update-types: ["version-update:semver-major"]
50
+ - dependency-name: "react"
51
+ update-types: ["version-update:semver-major"]
52
+ - dependency-name: "react-dom"
53
+ update-types: ["version-update:semver-major"]
54
+ - dependency-name: "@types/react"
55
+ update-types: ["version-update:semver-major"]
56
+ - dependency-name: "@types/react-dom"
57
+ update-types: ["version-update:semver-major"]
38
58
  groups:
39
59
  npm-non-major:
40
60
  patterns:
@@ -49,11 +69,6 @@ updates:
49
69
  schedule:
50
70
  interval: "weekly"
51
71
  open-pull-requests-limit: 10
52
- reviewers:
53
- - "lgruen-vcgs"
54
- labels:
55
- - "dependencies"
56
- - "python"
57
72
  commit-message:
58
73
  prefix: "deps"
59
74
  cooldown:
@@ -73,11 +88,6 @@ updates:
73
88
  schedule:
74
89
  interval: "weekly"
75
90
  open-pull-requests-limit: 10
76
- reviewers:
77
- - "lgruen-vcgs"
78
- labels:
79
- - "dependencies"
80
- - "python"
81
91
  commit-message:
82
92
  prefix: "deps"
83
93
  cooldown:
@@ -75,8 +75,34 @@ jobs:
75
75
  working-directory: packages/chat-service
76
76
  run: pnpm pack --dry-run
77
77
 
78
+ # `npm publish --provenance` occasionally exits non-zero with a spurious
79
+ # `E401 … Failed to generate Web Auth URLs` from its post-publish web-auth
80
+ # step *after* the registry has already accepted the tarball + provenance.
81
+ # Verify the registry state on failure and treat a present version as
82
+ # success — this also makes a re-run over an already-published version pass.
78
83
  - name: Publish
79
84
  working-directory: packages/chat-service
80
- run: npm publish --provenance --access=public
81
85
  env:
82
86
  NPM_CONFIG_PROVENANCE: true
87
+ run: |
88
+ name=$(node -p "require('./package.json').name")
89
+ version=$(node -p "require('./package.json').version")
90
+ set +e
91
+ npm publish --provenance --access=public
92
+ code=$?
93
+ set -e
94
+ if [ "$code" -eq 0 ]; then
95
+ echo "Published $name@$version."
96
+ exit 0
97
+ fi
98
+ echo "npm publish exited $code; verifying whether $name@$version reached the registry."
99
+ for attempt in 1 2 3; do
100
+ if npm view "$name@$version" version >/dev/null 2>&1; then
101
+ echo "$name@$version is present on the registry; treating as published."
102
+ exit 0
103
+ fi
104
+ echo "Not visible yet (attempt $attempt/3); waiting for registry propagation."
105
+ sleep 10
106
+ done
107
+ echo "Publish failed: $name@$version is not on the registry."
108
+ exit "$code"
@@ -92,3 +92,7 @@ jobs:
92
92
 
93
93
  - name: Publish to PyPI
94
94
  uses: pypa/gh-action-pypi-publish@release/v1
95
+ # Treat an already-present version as success so a re-run (e.g. after a
96
+ # transient registry error) doesn't fail on "file already exists".
97
+ with:
98
+ skip-existing: true
@@ -72,8 +72,34 @@ jobs:
72
72
  working-directory: packages/react-viewer
73
73
  run: pnpm pack --dry-run
74
74
 
75
+ # `npm publish --provenance` occasionally exits non-zero with a spurious
76
+ # `E401 … Failed to generate Web Auth URLs` from its post-publish web-auth
77
+ # step *after* the registry has already accepted the tarball + provenance.
78
+ # Verify the registry state on failure and treat a present version as
79
+ # success — this also makes a re-run over an already-published version pass.
75
80
  - name: Publish
76
81
  working-directory: packages/react-viewer
77
- run: npm publish --provenance --access=public
78
82
  env:
79
83
  NPM_CONFIG_PROVENANCE: true
84
+ run: |
85
+ name=$(node -p "require('./package.json').name")
86
+ version=$(node -p "require('./package.json').version")
87
+ set +e
88
+ npm publish --provenance --access=public
89
+ code=$?
90
+ set -e
91
+ if [ "$code" -eq 0 ]; then
92
+ echo "Published $name@$version."
93
+ exit 0
94
+ fi
95
+ echo "npm publish exited $code; verifying whether $name@$version reached the registry."
96
+ for attempt in 1 2 3; do
97
+ if npm view "$name@$version" version >/dev/null 2>&1; then
98
+ echo "$name@$version is present on the registry; treating as published."
99
+ exit 0
100
+ fi
101
+ echo "Not visible yet (attempt $attempt/3); waiting for registry propagation."
102
+ sleep 10
103
+ done
104
+ echo "Publish failed: $name@$version is not on the registry."
105
+ exit "$code"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: flowapy
3
- Version: 0.4.0
3
+ Version: 0.4.2
4
4
  Summary: Variant literature assessment pipeline with AI extraction
5
5
  Project-URL: Homepage, https://github.com/populationgenomics/flowa
6
6
  Project-URL: Source, https://github.com/populationgenomics/flowa
@@ -37,27 +37,27 @@ Requires-Python: ==3.13.*
37
37
  Requires-Dist: anchorite>=0.5.1
38
38
  Requires-Dist: boto3
39
39
  Requires-Dist: defusedxml
40
- Requires-Dist: fsspec
41
- Requires-Dist: gcsfs
40
+ Requires-Dist: fsspec>=2026.4.0
41
+ Requires-Dist: gcsfs>=2026.4.0
42
42
  Requires-Dist: httpx
43
43
  Requires-Dist: jinja2
44
44
  Requires-Dist: logfire
45
45
  Requires-Dist: markitdown[docx,xls,xlsx]>=0.1.5
46
46
  Requires-Dist: pydantic-settings
47
47
  Requires-Dist: pypdf
48
- Requires-Dist: s3fs
48
+ Requires-Dist: s3fs>=2026.4.0
49
49
  Requires-Dist: socksio>=1.0.0
50
50
  Requires-Dist: tenacity
51
51
  Requires-Dist: typer
52
52
  Requires-Dist: zstandard
53
53
  Provides-Extra: anthropic
54
- Requires-Dist: pydantic-ai-slim[anthropic]==1.101.0; extra == 'anthropic'
54
+ Requires-Dist: pydantic-ai-slim[anthropic]<2,>=1.101.0; extra == 'anthropic'
55
55
  Provides-Extra: bedrock
56
- Requires-Dist: pydantic-ai-slim[bedrock]==1.101.0; extra == 'bedrock'
56
+ Requires-Dist: pydantic-ai-slim[bedrock]<2,>=1.101.0; extra == 'bedrock'
57
57
  Provides-Extra: google
58
- Requires-Dist: pydantic-ai-slim[google]==1.101.0; extra == 'google'
58
+ Requires-Dist: pydantic-ai-slim[google]<2,>=1.101.0; extra == 'google'
59
59
  Provides-Extra: openai
60
- Requires-Dist: pydantic-ai-slim[openai]==1.101.0; extra == 'openai'
60
+ Requires-Dist: pydantic-ai-slim[openai]<2,>=1.101.0; extra == 'openai'
61
61
  Description-Content-Type: text/markdown
62
62
 
63
63
  # Flowa
@@ -19,46 +19,46 @@
19
19
  "build": "next build"
20
20
  },
21
21
  "dependencies": {
22
- "@ai-sdk/amazon-bedrock": "4.0.105",
23
- "@ai-sdk/anthropic": "3.0.77",
24
- "@ai-sdk/google": "3.0.73",
25
- "@ai-sdk/google-vertex": "4.0.128",
26
- "@ai-sdk/openai": "3.0.63",
27
- "@ai-sdk/react": "3.0.184",
28
- "@aws-sdk/client-s3": "3.1046.0",
29
- "@aws-sdk/credential-providers": "3.1046.0",
22
+ "@ai-sdk/amazon-bedrock": "4.0.110",
23
+ "@ai-sdk/anthropic": "3.0.80",
24
+ "@ai-sdk/google": "3.0.80",
25
+ "@ai-sdk/google-vertex": "4.0.139",
26
+ "@ai-sdk/openai": "3.0.66",
27
+ "@ai-sdk/react": "3.0.193",
28
+ "@aws-sdk/client-s3": "3.1055.0",
29
+ "@aws-sdk/credential-providers": "3.1055.0",
30
30
  "@flowajs/chat-service": "workspace:*",
31
31
  "@flowajs/prompts": "workspace:*",
32
32
  "@flowajs/react-viewer": "workspace:*",
33
- "@hono/node-server": "1.19.14",
33
+ "@hono/node-server": "2.0.4",
34
34
  "@mantine/core": "8.3.18",
35
35
  "@mantine/hooks": "8.3.18",
36
36
  "@tabler/icons-react": "3.44.0",
37
- "ai": "6.0.182",
37
+ "ai": "6.0.191",
38
38
  "formidable": "3.5.4",
39
39
  "next": "16.2.6",
40
- "react": "18.2.0",
41
- "react-dom": "18.2.0",
40
+ "react": "18.3.1",
41
+ "react-dom": "18.3.1",
42
42
  "zod": "4.4.3",
43
- "zustand": "4.5.6"
43
+ "zustand": "5.0.14"
44
44
  },
45
45
  "devDependencies": {
46
46
  "@testing-library/dom": "10.4.1",
47
47
  "@testing-library/jest-dom": "6.9.1",
48
48
  "@testing-library/react": "16.3.2",
49
49
  "@types/formidable": "3.5.1",
50
- "@types/node": "24.12.2",
50
+ "@types/node": "25.9.1",
51
51
  "@types/react": "18.3.18",
52
52
  "@types/react-dom": "18.3.5",
53
53
  "autoprefixer": "10.5.0",
54
- "concurrently": "9.2.1",
54
+ "concurrently": "10.0.0",
55
55
  "happy-dom": "20.9.0",
56
- "pdfjs-dist": "4.8.69",
57
- "postcss": "8.5.14",
56
+ "pdfjs-dist": "5.7.284",
57
+ "postcss": "8.5.15",
58
58
  "tailwindcss": "3.4.17",
59
- "tsx": "4.22.0",
59
+ "tsx": "4.22.3",
60
60
  "typescript": "5.7.3",
61
- "vite": "8.0.13",
62
- "vitest": "4.1.6"
61
+ "vite": "8.0.14",
62
+ "vitest": "4.1.7"
63
63
  }
64
64
  }
@@ -23,7 +23,7 @@ import type { LatestRunInfo } from "@/lib/runs";
23
23
  import type { ProgressResponse } from "@/lib/progressEvents";
24
24
  import { PaperStatusGroup } from "./PaperStatusGroup";
25
25
  import { ProgressLog } from "./ProgressLog";
26
- import { matchFiles } from "./matchFilename";
26
+ import { matchFilesToPapers } from "@flowajs/react-viewer";
27
27
 
28
28
  const POLL_INTERVAL_ACTIVE_MS = 15_000;
29
29
  const POLL_INTERVAL_TERMINAL_MS = 60_000;
@@ -226,21 +226,30 @@ export function LiteratureView({ variantId }: LiteratureViewProps) {
226
226
  const handleBulkUpload = useCallback(
227
227
  async (files: File[]) => {
228
228
  if (!papersResp) return;
229
- const matched = matchFiles(files, papersResp.papers);
230
- const accepted = matched.filter((m) => m.paper !== null);
231
- const skipped = matched.filter((m) => m.paper === null);
232
- for (const { paper, file } of accepted) {
233
- if (!paper) continue;
234
- await uploadPaperPdf(paper, file);
229
+ const filesByName = new Map(files.map((f) => [f.name, f]));
230
+ const { mains, supplements, unmatched } = matchFilesToPapers(
231
+ files.map((f) => f.name),
232
+ papersResp.papers,
233
+ );
234
+ // Mains first: a supplement's POST requires the paper's main.pdf to exist.
235
+ for (const { filename, paper } of mains) {
236
+ const file = filesByName.get(filename);
237
+ if (file) await uploadPaperPdf(paper, file);
238
+ }
239
+ // Then supplements, in the lexicographic order the matcher returned, so
240
+ // their ingestion ordinals follow filename order.
241
+ for (const { filename, paper } of supplements) {
242
+ const file = filesByName.get(filename);
243
+ if (file) await uploadPaperSupplement(paper, file, variantId);
235
244
  }
236
245
  await fetchPapers();
237
- if (skipped.length > 0) {
246
+ if (unmatched.length > 0) {
238
247
  setError(
239
- `Could not match ${skipped.length} file(s) by PMID or encoded DOI: ${skipped.map((s) => s.file.name).join(", ")}`,
248
+ `Could not match ${unmatched.length} file(s) by PMID or encoded DOI: ${unmatched.join(", ")}`,
240
249
  );
241
250
  }
242
251
  },
243
- [papersResp, fetchPapers],
252
+ [papersResp, fetchPapers, variantId],
244
253
  );
245
254
 
246
255
  const handleOpenAllUrls = useCallback(() => {
@@ -482,13 +491,14 @@ function BulkDropzone({ onFiles }: BulkDropzoneProps) {
482
491
  >
483
492
  <Group justify="space-between" align="center">
484
493
  <Text size="sm">
485
- Drop PDFs here (named <code>&lt;PMID&gt;.pdf</code> or{" "}
486
- <code>&lt;encoded-DOI&gt;.pdf</code>) to bulk-upload.
494
+ Drop papers (<code>&lt;PMID&gt;.pdf</code> or{" "}
495
+ <code>&lt;encoded-DOI&gt;.pdf</code>) and supplements (
496
+ <code>&lt;id&gt;_supp.*</code>) here to bulk-upload.
487
497
  </Text>
488
498
  <input
489
499
  ref={inputRef}
490
500
  type="file"
491
- accept="application/pdf"
501
+ accept=".pdf,.xlsx,.xls,.docx"
492
502
  multiple
493
503
  style={{ display: "none" }}
494
504
  data-testid="bulk-dropzone-input"
@@ -17,16 +17,10 @@ dependencies = [
17
17
  # Match the polyglot supply-chain posture of the parent flowa repo: only
18
18
  # install package versions ≥ 7 days old.
19
19
  exclude-newer = "7 days"
20
- # Bypass the gate for anchorite flowa pulls it as a base dep and we need
21
- # to consume newly-cut versions immediately. seq-smith comes along because
22
- # new anchorite releases pin it tightly. pydantic-ai-slim is bypassed
23
- # temporarily so we can pick up 1.101.0's Bedrock native-output and adaptive-
24
- # thinking fixes ahead of the 7-day age threshold; the exact pin lives in
25
- # flowa's pyproject.toml. pydantic-graph rides along because pydantic-ai-slim
26
- # pins it via upstream equality. Drop these two entries (in lockstep with the
27
- # parent flowa pyproject) once 1.101.0 ages past 7 days on PyPI (around
28
- # 2026-05-29).
29
- exclude-newer-package = { anchorite = "0 days", seq-smith = "0 days", pydantic-ai-slim = "0 days", pydantic-graph = "0 days" }
20
+ # Bypass the gate only for the first-party packages flowa pulls in and needs
21
+ # fresh: anchorite (a base dep) and seq-smith, which new anchorite releases pin
22
+ # tightly. Third-party packages always observe the 7-day floor.
23
+ exclude-newer-package = { anchorite = "0 days", seq-smith = "0 days" }
30
24
 
31
25
  [tool.uv.sources]
32
26
  # flowapy (the PyPI distribution name; import is still `flowa`) lives one