flowapy 0.4.2__tar.gz → 0.4.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.
- {flowapy-0.4.2 → flowapy-0.4.3}/PKG-INFO +18 -6
- {flowapy-0.4.2 → flowapy-0.4.3}/README.md +17 -5
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/README.md +2 -1
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/README.md +1 -1
- {flowapy-0.4.2 → flowapy-0.4.3}/pyproject.toml +1 -1
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/content_validation.py +28 -4
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_content_validation.py +21 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/uv.lock +1 -1
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/CODEOWNERS +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/dependabot.yml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/workflows/dependabot-auto-merge.yml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/workflows/lint.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/workflows/release-chat-service.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/workflows/release-flowapy.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.github/workflows/release-react-viewer.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.gitignore +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.markdownlint.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.nvmrc +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.pre-commit-config.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/.prettierignore +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/Dockerfile +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/LICENSE +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/docs/images/viewer.png +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/.gitkeep +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/.env.example +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/.gitignore +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/LICENSES.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/aggregation.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1002%2Fhumu.23878.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1016%2Fj.ymgmr.2024.101163.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1038%2Fs41598-022-25914-8.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs12881-019-0878-8.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-021-01817-1.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-021-02146-z.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13023-023-02848-6.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.1186%2Fs13052-019-0692-0.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffcvm.2022.1061384.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffcvm.2023.1261172.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffimmu.2024.1336599.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffped.2021.729824.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3389%2Ffphar.2022.903488.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3390%2Fijns11010016.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/extractions/10.3390%2Fijns6020031.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/query.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/runs/cfc0186a7b7e46eb802a516b86ec207f/progress.jsonl +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/variant_details.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fajmg.a.61481/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/supplements/000_HUMU-40-2146-s001.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/supplements/000_HUMU-40-2146-s001.pdf.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ejmg.2020.103997/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.nmd.2022.02.002/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.tjog.2022.07.008/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/merged.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/supplements/000_mmc1.docx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/merged.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/supplements/000_41598_2022_25914_MOESM1_ESM.docx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1093%2Fhmg%2Fddz218/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1136%2Fjmg-2022-108675/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/merged.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/supplements/000_Table1.docx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/supplements/000_Image_1.PDF +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/supplements/000_Image_1.PDF.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/main.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/main.pdf +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/metadata.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/pdf_index.pkl.zst +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/next-env.d.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/next.config.mjs +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/package.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/postcss.config.cjs +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/public/favicon.svg +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/scripts/chat-service.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/scripts/copy-pdfjs-assets.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/scripts/exercise-llm.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/scripts/start.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/components/literature/LiteratureView.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/components/literature/PaperStatusGroup.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/components/literature/ProgressLog.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/db/migrate.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/db/schema.sql +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/aggregate.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/chatSessionClient.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/citationResolverClient.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/demoConfig.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/paperInvalidation.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/papers.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/progressEvents.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/runs.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/triageBackendClient.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/triageDb.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/lib/variantId.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/_app.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/aggregate/[variantId]/[category].ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/edit-drafts/[variantId]/[category]/[version].ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/edit-drafts/[variantId]/[category]/index.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/papers/[doi]/markdown.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/papers/[doi]/pdf.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/papers/[doi]/supplements.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/papers/index.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/runs/[variantId]/[runId]/progress.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/runs/index.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/runs/latest.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/triage/claim.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/triage/comment.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/triage/paper-done.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/api/triage/snapshot/[variantId]/[category]/[version].ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/index.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/variants/[variantId].tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/pages/viewer/[variantId]/[category].tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/styles/globals.css +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/tailwind.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/LiteratureView.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/ProgressLog.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/aggregate.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/chat-service.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/index-page.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/paper-invalidation.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/papers-pdf-upload.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/papers-route.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/papers-supplements.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/papers.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/progress-route.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/runs-latest-route.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/runs-route.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/runs.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/setup.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/triage.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/test/variantId.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/tsconfig.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/vitest.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/pyproject.toml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/src/demo_gateway/__init__.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/src/demo_gateway/config.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/src/demo_gateway/main.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/src/demo_gateway/progress.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/src/demo_gateway/runs.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/__init__.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/conftest.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/test_main.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/test_progress.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/test_resolve.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/tests/test_runs.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/examples/demo-gateway/uv.lock +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/package.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/.gitkeep +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/Dockerfile +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/LICENSE +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/README.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/package.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/artifact.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/audit.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/auth/jwt.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/auth/oidc.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/chat.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/cli.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/index.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/instrumentation.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/anthropic.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/bedrock.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/factory.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/google-gla.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/google-vertex.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/interface.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/llm/openai.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/prompts.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/server.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/session.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage/factory.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage/fs.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage/gcs.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage/interface.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage/s3.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/storage-keys.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/telemetry.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/text.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/src/yaml.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/chat.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/generic-prompt.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/llm-factory.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/oidc.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/paper-cache.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/storage-fs.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/storage-gcs.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/storage-s3.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/text.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/test/yaml.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/tsconfig.build.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/tsconfig.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/chat-service/vitest.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/LICENSE +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/README.md +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/package.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/citations/sanitize.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/citations/sanitize.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/citations/types.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/index.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/llm-content/LlmContent.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/llm-content/LlmContent.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/MarkdownHighlightViewer.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/MarkdownHighlightViewer.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/offsets.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/offsets.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/plugins.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/plugins.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/markdown-viewer/types.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/paper-matching/matchFilesToPapers.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/paper-matching/matchFilesToPapers.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/pdf-viewer/PdfHighlightViewer.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/pdf-viewer/PdfHighlightViewer.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/pdf-viewer/types.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/styles.css +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ChatDrawer.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ChatDrawer.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ChatSection.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ClaimList.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/EvidenceViewerShell.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/EvidenceViewerShell.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/FocusCard.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/MessageParts.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/PaperHeader.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/PaperRail.test.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/PaperRail.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ReasoningStep.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/SynthesisPanel.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/ToolStep.tsx +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/backend.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/citation-resolver.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/citation-utils.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/citation-utils.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/claim-refs.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/claim-refs.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/keyboard.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/keyboard.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/store.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/store.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/trace-format.test.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/trace-format.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/src/triage/types.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/tailwind.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/tsconfig.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/tsup.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/packages/react-viewer/vitest.config.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/pnpm-lock.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/pnpm-workspace.yaml +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/aggregation_edit_prompt.txt +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/aggregation_edit_schema.ts +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/aggregation_prompt.txt +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/aggregation_schema.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/extraction_prompt.txt +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/extraction_schema.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/generic/transcription_prompt.txt +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/prompts/package.json +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/__init__.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/aggregate.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/artifact.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/assemble.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/cli.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/clinvar.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/convert.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/download.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/extract.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/http_retry.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/models.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/normalize.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/pdf_index_cache.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/pdfium.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/progress.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/prompts/__init__.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/py.typed +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/query.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/resolve.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/run.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/schema.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/settings.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/src/flowa/storage.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/__init__.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_assemble.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_convert.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_download.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_normalize.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_pdf_index_cache.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_pdfium.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_progress.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_prompts.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tests/test_resolve.py +0 -0
- {flowapy-0.4.2 → flowapy-0.4.3}/tsconfig.base.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: flowapy
|
|
3
|
-
Version: 0.4.
|
|
3
|
+
Version: 0.4.3
|
|
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
|
|
@@ -115,12 +115,20 @@ The PyPI distribution is named `flowapy` (the `flowa` name was already taken), b
|
|
|
115
115
|
|
|
116
116
|
## Usage
|
|
117
117
|
|
|
118
|
+
A variant is passed as `--variant-spec`, either inline JSON or `@path/to/spec.json`. The
|
|
119
|
+
envelope is `{"schema_version": 1, "variants": [{ "kind": "hgvs_c", "transcript": ...,
|
|
120
|
+
"hgvs_c": ... }]}` — `hgvs_c` is the bare coding change with no transcript prefix. The gene
|
|
121
|
+
symbol and genomic coordinates are derived downstream, so they aren't part of the spec.
|
|
122
|
+
|
|
118
123
|
```bash
|
|
124
|
+
# Example variant spec (GAA / Pompe, NM_000152.5:c.2238G>C)
|
|
125
|
+
SPEC='{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}'
|
|
126
|
+
|
|
119
127
|
# Full pipeline
|
|
120
|
-
flowa run --variant-id VAR123 --
|
|
128
|
+
flowa run --variant-id VAR123 --variant-spec "$SPEC" --source litvar
|
|
121
129
|
|
|
122
130
|
# Individual steps (for debugging)
|
|
123
|
-
flowa query --variant-id VAR123 --
|
|
131
|
+
flowa query --variant-id VAR123 --variant-spec "$SPEC" --source litvar
|
|
124
132
|
flowa download --doi '10.1038/s41586-020-2308-7'
|
|
125
133
|
flowa convert --doi '10.1038/s41586-020-2308-7'
|
|
126
134
|
flowa extract --variant-id VAR123 --doi '10.1038/s41586-020-2308-7'
|
|
@@ -294,7 +302,9 @@ Run the pipeline directly from a checkout (the [Quickstart](#quickstart) demo wr
|
|
|
294
302
|
export FLOWA_STORAGE_BASE=file:///tmp/flowa
|
|
295
303
|
export FLOWA_CONVERT_MODEL__NAME=bedrock:au.anthropic.claude-sonnet-4-6
|
|
296
304
|
export FLOWA_EXTRACTION_MODEL__NAME=bedrock:au.anthropic.claude-opus-4-6
|
|
297
|
-
uv run flowa run --variant-id test
|
|
305
|
+
uv run flowa run --variant-id test \
|
|
306
|
+
--variant-spec '{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}' \
|
|
307
|
+
--source litvar
|
|
298
308
|
```
|
|
299
309
|
|
|
300
310
|
### Docker
|
|
@@ -306,7 +316,9 @@ docker run \
|
|
|
306
316
|
-e FLOWA_CONVERT_MODEL__NAME=bedrock:au.anthropic.claude-sonnet-4-6 \
|
|
307
317
|
-e FLOWA_EXTRACTION_MODEL__NAME=bedrock:au.anthropic.claude-opus-4-6 \
|
|
308
318
|
-e AWS_REGION=ap-southeast-2 \
|
|
309
|
-
flowa run --variant-id VAR123
|
|
319
|
+
flowa run --variant-id VAR123 \
|
|
320
|
+
--variant-spec '{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}' \
|
|
321
|
+
--source litvar
|
|
310
322
|
```
|
|
311
323
|
|
|
312
324
|
### AWS Batch
|
|
@@ -341,6 +353,6 @@ aws batch submit-job \
|
|
|
341
353
|
--job-definition flowa-worker \
|
|
342
354
|
--job-queue flowa-queue \
|
|
343
355
|
--container-overrides '{
|
|
344
|
-
"command": ["run", "--variant-id", "VAR123", "--
|
|
356
|
+
"command": ["run", "--variant-id", "VAR123", "--variant-spec", "{\"schema_version\":1,\"variants\":[{\"kind\":\"hgvs_c\",\"transcript\":\"NM_000152.5\",\"hgvs_c\":\"c.2238G>C\"}]}", "--source", "litvar"]
|
|
345
357
|
}'
|
|
346
358
|
```
|
|
@@ -53,12 +53,20 @@ The PyPI distribution is named `flowapy` (the `flowa` name was already taken), b
|
|
|
53
53
|
|
|
54
54
|
## Usage
|
|
55
55
|
|
|
56
|
+
A variant is passed as `--variant-spec`, either inline JSON or `@path/to/spec.json`. The
|
|
57
|
+
envelope is `{"schema_version": 1, "variants": [{ "kind": "hgvs_c", "transcript": ...,
|
|
58
|
+
"hgvs_c": ... }]}` — `hgvs_c` is the bare coding change with no transcript prefix. The gene
|
|
59
|
+
symbol and genomic coordinates are derived downstream, so they aren't part of the spec.
|
|
60
|
+
|
|
56
61
|
```bash
|
|
62
|
+
# Example variant spec (GAA / Pompe, NM_000152.5:c.2238G>C)
|
|
63
|
+
SPEC='{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}'
|
|
64
|
+
|
|
57
65
|
# Full pipeline
|
|
58
|
-
flowa run --variant-id VAR123 --
|
|
66
|
+
flowa run --variant-id VAR123 --variant-spec "$SPEC" --source litvar
|
|
59
67
|
|
|
60
68
|
# Individual steps (for debugging)
|
|
61
|
-
flowa query --variant-id VAR123 --
|
|
69
|
+
flowa query --variant-id VAR123 --variant-spec "$SPEC" --source litvar
|
|
62
70
|
flowa download --doi '10.1038/s41586-020-2308-7'
|
|
63
71
|
flowa convert --doi '10.1038/s41586-020-2308-7'
|
|
64
72
|
flowa extract --variant-id VAR123 --doi '10.1038/s41586-020-2308-7'
|
|
@@ -232,7 +240,9 @@ Run the pipeline directly from a checkout (the [Quickstart](#quickstart) demo wr
|
|
|
232
240
|
export FLOWA_STORAGE_BASE=file:///tmp/flowa
|
|
233
241
|
export FLOWA_CONVERT_MODEL__NAME=bedrock:au.anthropic.claude-sonnet-4-6
|
|
234
242
|
export FLOWA_EXTRACTION_MODEL__NAME=bedrock:au.anthropic.claude-opus-4-6
|
|
235
|
-
uv run flowa run --variant-id test
|
|
243
|
+
uv run flowa run --variant-id test \
|
|
244
|
+
--variant-spec '{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}' \
|
|
245
|
+
--source litvar
|
|
236
246
|
```
|
|
237
247
|
|
|
238
248
|
### Docker
|
|
@@ -244,7 +254,9 @@ docker run \
|
|
|
244
254
|
-e FLOWA_CONVERT_MODEL__NAME=bedrock:au.anthropic.claude-sonnet-4-6 \
|
|
245
255
|
-e FLOWA_EXTRACTION_MODEL__NAME=bedrock:au.anthropic.claude-opus-4-6 \
|
|
246
256
|
-e AWS_REGION=ap-southeast-2 \
|
|
247
|
-
flowa run --variant-id VAR123
|
|
257
|
+
flowa run --variant-id VAR123 \
|
|
258
|
+
--variant-spec '{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_000152.5","hgvs_c":"c.2238G>C"}]}' \
|
|
259
|
+
--source litvar
|
|
248
260
|
```
|
|
249
261
|
|
|
250
262
|
### AWS Batch
|
|
@@ -279,6 +291,6 @@ aws batch submit-job \
|
|
|
279
291
|
--job-definition flowa-worker \
|
|
280
292
|
--job-queue flowa-queue \
|
|
281
293
|
--container-overrides '{
|
|
282
|
-
"command": ["run", "--variant-id", "VAR123", "--
|
|
294
|
+
"command": ["run", "--variant-id", "VAR123", "--variant-spec", "{\"schema_version\":1,\"variants\":[{\"kind\":\"hgvs_c\",\"transcript\":\"NM_000152.5\",\"hgvs_c\":\"c.2238G>C\"}]}", "--source", "litvar"]
|
|
283
295
|
}'
|
|
284
296
|
```
|
|
@@ -187,7 +187,8 @@ if [ -n "${BEDROCK_INFERENCE_PROFILE:-}" ]; then
|
|
|
187
187
|
export FLOWA_EXTRACTION_MODEL__BEDROCK_INFERENCE_PROFILE="$BEDROCK_INFERENCE_PROFILE"
|
|
188
188
|
export FLOWA_CONVERT_MODEL__BEDROCK_INFERENCE_PROFILE="$BEDROCK_INFERENCE_PROFILE"
|
|
189
189
|
fi
|
|
190
|
-
uv run flowa run --variant-id $VARIANT
|
|
190
|
+
uv run flowa run --variant-id $VARIANT \
|
|
191
|
+
--variant-spec '{"schema_version":1,"variants":[{"kind":"hgvs_c","transcript":"NM_001035.3","hgvs_c":"c.14174A>G"}]}'
|
|
191
192
|
```
|
|
192
193
|
|
|
193
194
|
Open `http://localhost:7700/viewer/$VARIANT/acmg_classification` (with
|
|
@@ -35,7 +35,7 @@ imports as load-bearing and the rest as something to replace.
|
|
|
35
35
|
|
|
36
36
|
| Method | Path | Behaviour |
|
|
37
37
|
|---|---|---|
|
|
38
|
-
| `POST` | `/runs` | Body `{ variant_id,
|
|
38
|
+
| `POST` | `/runs` | Body `{ variant_id, variant_spec }`, where `variant_spec` is the `flowa.schema.VariantSpec` envelope. Spawns the pipeline as an `asyncio` task and returns `{ run_id, started_at, status }` immediately. 409 if a run is already in flight for the variant; 429 at the concurrency cap. |
|
|
39
39
|
| `GET` | `/runs/active?variant_id=X` | Most recent run for `variant_id` as `{ run_id, started_at, status }`. 404 if none. `status` is `running` while in flight; `success` / `error` once terminal. |
|
|
40
40
|
| `POST` | `/resolve-citations` | Body `{ citations: [{ doi, quotes[] }] }`. Builds fsspec-based PDF and Markdown loaders rooted at `DEMO_DATA_DIR/papers/{encoded_doi}/` and calls `flowa.resolve.resolve_citations(...)` synchronously. Returns `{ resolved: { doi: { quote: HighlightBbox[] } }, errors: { doi: string } }`. DOIs whose source PDF or markdown can't be loaded land in `errors`; quotes the aligner searches for but can't locate land as empty arrays in `resolved`. |
|
|
41
41
|
| `GET` | `/health` | `{ "status": "ok" }`. |
|
|
@@ -13,8 +13,11 @@ anchorite-backed resolver, not here.
|
|
|
13
13
|
|
|
14
14
|
Keep in sync with `packages/chat-service/src/chat.ts` (`validateArtifactContent`).
|
|
15
15
|
One rule here has no edit-time counterpart — `claim_quote_not_in_extraction`:
|
|
16
|
-
every claim citation quote must be
|
|
17
|
-
|
|
16
|
+
every claim citation quote must be byte-present in a quote the extraction
|
|
17
|
+
surfaced — exact, or a contiguous substring of one (the aggregator legitimately
|
|
18
|
+
trims a long surfaced passage to its load-bearing clause; that span is still
|
|
19
|
+
verbatim source text and still resolves to a highlight downstream). It is still
|
|
20
|
+
byte-exact, not a fuzzy threshold. chat-service can't run it because an edit
|
|
18
21
|
session has no extraction input to compare against.
|
|
19
22
|
"""
|
|
20
23
|
|
|
@@ -28,6 +31,20 @@ from flowa.artifact import CategoryResult
|
|
|
28
31
|
_CITE_LINK_RE = re.compile(r'\[[^\]]*\]\(#cite:([^ )"]+)(?:\s+"([^"]*)")?\)')
|
|
29
32
|
|
|
30
33
|
|
|
34
|
+
def _quote_grounded(quote: str, allowed: set[str]) -> bool:
|
|
35
|
+
"""True if `quote` is byte-present in any extraction quote the model was fed.
|
|
36
|
+
|
|
37
|
+
Exact set-membership (fast path), or a contiguous substring of a surfaced
|
|
38
|
+
quote — the aggregator trimming a long extraction passage to its load-bearing
|
|
39
|
+
clause is grounded, not fabricated. An empty quote grounds nothing.
|
|
40
|
+
"""
|
|
41
|
+
if not quote:
|
|
42
|
+
return False
|
|
43
|
+
if quote in allowed:
|
|
44
|
+
return True
|
|
45
|
+
return any(quote in surfaced for surfaced in allowed)
|
|
46
|
+
|
|
47
|
+
|
|
31
48
|
def validate_aggregate_category(
|
|
32
49
|
cat_result: CategoryResult,
|
|
33
50
|
valid_paper_ids: set[str],
|
|
@@ -90,11 +107,18 @@ def validate_aggregate_category(
|
|
|
90
107
|
)
|
|
91
108
|
break
|
|
92
109
|
|
|
93
|
-
# Every claim citation quote must be
|
|
110
|
+
# Every claim citation quote must be grounded in what the extraction surfaced.
|
|
111
|
+
# The aggregate model is fed only the extraction quotes (never the paper
|
|
112
|
+
# Markdown), so a claim quote is grounded iff it is byte-present in a surfaced
|
|
113
|
+
# quote for that paper. A contiguous SUBSTRING of a surfaced quote counts:
|
|
114
|
+
# the extraction deliberately captures long passages (a full sentence / table
|
|
115
|
+
# row) and the aggregator legitimately trims to the load-bearing clause, which
|
|
116
|
+
# is still verbatim source text and still resolves to a highlight downstream.
|
|
117
|
+
# Only a quote contained in NO surfaced quote is a fabrication/alteration.
|
|
94
118
|
for claim in cat_result.claims:
|
|
95
119
|
allowed = extraction_quotes_by_paper.get(claim.paper_id, set())
|
|
96
120
|
for citation in claim.citations:
|
|
97
|
-
if citation.quote
|
|
121
|
+
if not _quote_grounded(citation.quote, allowed):
|
|
98
122
|
errors.append(
|
|
99
123
|
(
|
|
100
124
|
'claim_quote_not_in_extraction',
|
|
@@ -162,3 +162,24 @@ def test_claim_quote_must_come_from_extraction() -> None:
|
|
|
162
162
|
extraction_quotes_by_paper={'Smith2024': {'a quote the extraction actually surfaced'}},
|
|
163
163
|
)
|
|
164
164
|
assert 'claim_quote_not_in_extraction' in _rules(errors)
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def test_claim_quote_substring_of_extraction_passes() -> None:
|
|
168
|
+
# The extraction surfaces a long passage; the aggregator legitimately trims
|
|
169
|
+
# it to its load-bearing clause. That contiguous substring is still verbatim
|
|
170
|
+
# source text (it resolves to a highlight downstream), so it is grounded.
|
|
171
|
+
surfaced = (
|
|
172
|
+
'Each parent was heterozygous for one allele, and an unaffected sister did not have a mutation at either site.'
|
|
173
|
+
)
|
|
174
|
+
trimmed = 'an unaffected sister did not have a mutation at either site'
|
|
175
|
+
cat = _cat(
|
|
176
|
+
notes=f'Non-carrier sib ([sib](#cite:Smith2024 "{trimmed}")).',
|
|
177
|
+
papers=('Smith2024',),
|
|
178
|
+
claims=(_claim('Smith2024', trimmed),),
|
|
179
|
+
)
|
|
180
|
+
errors = validate_aggregate_category(
|
|
181
|
+
cat,
|
|
182
|
+
valid_paper_ids={'Smith2024'},
|
|
183
|
+
extraction_quotes_by_paper={'Smith2024': {surfaced}},
|
|
184
|
+
)
|
|
185
|
+
assert errors == []
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/assessments/NM_000152_5-c_1935C_A/query.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fajmg.a.61481/metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/merged.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/metadata.json
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1002%2Fhumu.23878/pdf_index.pkl.zst
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1016%2Fj.ymgmr.2024.101163/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/main.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1038%2Fs41598-022-25914-8/merged.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1093%2Fhmg%2Fddz218/metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs12881-019-0878-8/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-01817-1/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-021-02146-z/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13023-023-02848-6/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.1186%2Fs13052-019-0692-0/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2022.1061384/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/main.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffcvm.2023.1261172/merged.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffimmu.2024.1336599/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/main.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffped.2021.729824/merged.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3389%2Ffphar.2022.903488/main.pdf
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.md
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/main.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns11010016/metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/main.pdf
RENAMED
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/fixtures/papers/10.3390%2Fijns6020031/metadata.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{flowapy-0.4.2 → flowapy-0.4.3}/examples/demo/src/components/literature/PaperStatusGroup.tsx
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|