by-qa 0.4.4.dev2__tar.gz → 0.4.4.dev3__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.
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/PKG-INFO +1 -1
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/pyproject.toml +1 -1
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/routes.py +65 -7
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/schemas.py +11 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_fs_entry_repository.py +15 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_base_service.py +24 -1
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/uv.lock +1 -1
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/.env.example +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/.github/workflows/ci.yml +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/.github/workflows/release.yml +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/.gitignore +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/.pre-commit-config.yaml +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/AGENTS.md +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/CLAUDE.md +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/CONTEXT.md +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/Dockerfile +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/LICENSE +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/Makefile +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/README.md +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/README_zh.md +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/docker/minio/init/init-minio.sh +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/docker/opengauss/custom/Dockerfile +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/docker/opengauss/init/init-opengauss.sh +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/docker-compose.kb-stack.yml +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/eval/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/eval/cli.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/eval/judge.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/eval/models.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/eval/runner.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/pylintrc +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/pytest.ini +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/config.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/core/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/core/exceptions.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/core/framework_client.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/core/logger.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/core/model_config.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/knowledge_entity_schemas.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/metadata_schemas.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/build_status.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/dsl/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/dsl/compiler.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/dsl/errors.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/dsl/validator.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/events.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/database.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/object_storage.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/runtime.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/storage.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/storage_s3.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/metadata_types.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/file_metadata_value_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_base_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_build_acceptance_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_build_batch_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_build_task_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_entity_asset_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_entity_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_fetch_cache_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_file_reference_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_file_update_timeline_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_item_chunk_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_item_search_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_semantic_processing_batch_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/knowledge_semantic_processing_task_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/metadata_search_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/processing_task_query_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/repositories/retrieval_projection_repository.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/bootstrap_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/cache_file_lock.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/document_update_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/embedding_query_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/entry_metadata.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/errors.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_background_runner.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_execution_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_models.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_mutation_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_processing_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_terminal_event_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_metadata_query_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_metadata_update_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_document_metadata.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_background_runner.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_discovery.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_enrichment.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_intelligence.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_processing_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_synonym_resolution.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_entity_task_worker.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_fetch_cache_cleanup_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_item_ingestion_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_item_search_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/markdown_front_matter.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/markdown_reference_resolver.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/markdown_reference_rewriter.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/markdown_update_summary_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/metadata_search_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/semantic_task_mutation_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/zip_batch_import_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/000_extensions.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/001_knowledge_base.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/002_knowledge_fs_entry.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/003_knowledge_chunk.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/004_retrieval_projection.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/005_knowledge_fetch_cache_index.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/006_knowledge_build_task.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/009_knowledge_fs_entry_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/010_knowledge_chunk_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/011_retrieval_projection_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/012_knowledge_fetch_cache_index_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/013_knowledge_build_task_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/014_embedding_table.sql.tpl +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/015_metadata_property_def.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/016_metadata_property_def_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/017_file_metadata_value.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/018_file_metadata_value_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/019_knowledge_fs_entry_virtual_path.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/020_knowledge_fs_entry_virtual_path_indexes.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/021_knowledge_fs_entry_virtual_path_backfill.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/022_knowledge_fs_entry_top_level_sibling_unique.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/023_metadata_property_def_name_unique.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/024_knowledge_base_name_unique.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/025_metadata_value_self_contained_migration.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/026_knowledge_file_reference.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/027_knowledge_file_update_timeline.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/028_knowledge_fs_entry_checksum_index.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/029_knowledge_semantic_processing_task.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/030_knowledge_file_reference_semantic_extension.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/031_knowledge_file_document_kind_backfill.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/032_knowledge_schema_migration.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/033_knowledge_entity.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/034_knowledge_entity_embedding_table.sql.tpl +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/035_knowledge_entity_discovery_schema.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/036_knowledge_entity_embedding_full_only.sql.tpl +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/037_knowledge_semantic_processing_directory_scope.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/038_knowledge_build_batch.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/039_knowledge_build_task_background_extension.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/040_knowledge_build_task_legacy_backfill.sql.tpl +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/041_knowledge_build_task_active_constraints.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/042_knowledge_fs_entry_upload_uniqueness.sql +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/runtime.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/services/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/services/document_chunking_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/services/heading_patterns.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/exceptions.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/kb_path_utils.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/markdown_reference.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/schemas.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_common/text_segmentation.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/main.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/answer_synthesizer.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/multi_hop_react.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/multi_hop_summarizer.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/query_decomposer.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/recursion_fallback.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/single_hop_react.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/standalone_question_rewriter.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/agents/subanswer_aggregator.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/base_engine.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/config.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/context.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/context_manager.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/event_filter.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/exceptions.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/fallback_messages.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/messages.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/middleware/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/middleware/tool_call_guard.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/models.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/operation_registry.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/prompt_fragments.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/reducers.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/common/state.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/engine.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/graph.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/nodes/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/nodes/retrieve.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/state.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/fast/types.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/engine.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/graph.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/nodes/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/nodes/final_answer.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/nodes/router.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/nodes/state_cleanup.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/state.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/engines/instant/types.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/services/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/services/checkpointer_factory.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/services/llm_service.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/services/opengauss_checkpointer.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/services/session_history.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/dsl_guide.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/knowledge_tools.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/operations/__init__.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/operations/base.py +0 -0
- {by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/qa/tools/operations/knowledge_search.py +0 -0
|
@@ -42,6 +42,7 @@ from by_qa.knowledge_base.api.schemas import (
|
|
|
42
42
|
DocumentUpdateRequest,
|
|
43
43
|
FileBuildStatusRequest,
|
|
44
44
|
FileToMarkdownIndexRequest,
|
|
45
|
+
KnowledgeBaseFileCountRequest,
|
|
45
46
|
KnowledgeItemDownloadRequest,
|
|
46
47
|
KnowledgeItemGlobRequest,
|
|
47
48
|
KnowledgeItemListDirRequest,
|
|
@@ -98,15 +99,17 @@ def _documented_error_response(
|
|
|
98
99
|
result_msg: str,
|
|
99
100
|
result_object: dict[str, Any] | None = None,
|
|
100
101
|
status_code: int = 422,
|
|
102
|
+
preserve_http_status: bool = False,
|
|
101
103
|
) -> JSONResponse:
|
|
102
|
-
"""Return the
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
104
|
+
"""Return the error envelope, normalizing legacy endpoints to HTTP 200."""
|
|
105
|
+
if not preserve_http_status:
|
|
106
|
+
logger.info(
|
|
107
|
+
"knowledge_base error response normalized to HTTP 200: business_status_code=%s, result_msg=%s",
|
|
108
|
+
status_code,
|
|
109
|
+
result_msg,
|
|
110
|
+
)
|
|
108
111
|
return JSONResponse(
|
|
109
|
-
status_code=200,
|
|
112
|
+
status_code=status_code if preserve_http_status else 200,
|
|
110
113
|
content=jsonable_encoder(
|
|
111
114
|
{
|
|
112
115
|
"resultCode": "-1",
|
|
@@ -501,6 +504,61 @@ def register_routes(
|
|
|
501
504
|
)
|
|
502
505
|
return _documented_success_response(result_object={})
|
|
503
506
|
|
|
507
|
+
@app.post(
|
|
508
|
+
"/api/v1/knowledgeBases/fileCount",
|
|
509
|
+
openapi_extra={
|
|
510
|
+
"requestBody": {
|
|
511
|
+
"required": True,
|
|
512
|
+
"content": {
|
|
513
|
+
"application/json": {
|
|
514
|
+
"schema": KnowledgeBaseFileCountRequest.model_json_schema(
|
|
515
|
+
by_alias=True
|
|
516
|
+
)
|
|
517
|
+
}
|
|
518
|
+
},
|
|
519
|
+
}
|
|
520
|
+
},
|
|
521
|
+
)
|
|
522
|
+
async def knowledge_base_file_count(http_request: Request):
|
|
523
|
+
# Parse locally so malformed bodies also honor this endpoint's HTTP 422
|
|
524
|
+
# contract rather than the application's legacy HTTP 200 error handler.
|
|
525
|
+
try:
|
|
526
|
+
request = KnowledgeBaseFileCountRequest.model_validate(
|
|
527
|
+
await http_request.json()
|
|
528
|
+
)
|
|
529
|
+
except ValueError:
|
|
530
|
+
return _documented_error_response(
|
|
531
|
+
result_msg="request validation failed",
|
|
532
|
+
status_code=422,
|
|
533
|
+
preserve_http_status=True,
|
|
534
|
+
)
|
|
535
|
+
|
|
536
|
+
logger.info(
|
|
537
|
+
"knowledge_base_file_count request received: kb_code=%s", request.kb_code
|
|
538
|
+
)
|
|
539
|
+
try:
|
|
540
|
+
service = await get_knowledge_base_service()
|
|
541
|
+
result = await service.file_count(request)
|
|
542
|
+
except KnowledgeBaseConfigurationError as exc:
|
|
543
|
+
return _documented_error_response(
|
|
544
|
+
result_msg=str(exc), status_code=503, preserve_http_status=True
|
|
545
|
+
)
|
|
546
|
+
except KnowledgeBaseValidationError as exc:
|
|
547
|
+
return _documented_error_response(
|
|
548
|
+
result_msg=str(exc), status_code=422, preserve_http_status=True
|
|
549
|
+
)
|
|
550
|
+
except Exception as exc:
|
|
551
|
+
logger.exception(
|
|
552
|
+
"knowledge_base_file_count unexpected error: kb_code=%s",
|
|
553
|
+
request.kb_code,
|
|
554
|
+
)
|
|
555
|
+
return _documented_error_response(
|
|
556
|
+
result_msg=str(exc) or "internal error",
|
|
557
|
+
status_code=500,
|
|
558
|
+
preserve_http_status=True,
|
|
559
|
+
)
|
|
560
|
+
return _documented_success_response(result_object=result)
|
|
561
|
+
|
|
504
562
|
@app.post("/api/v1/directories/create")
|
|
505
563
|
async def create_directory(
|
|
506
564
|
background_tasks: BackgroundTasks,
|
|
@@ -54,6 +54,17 @@ class DeleteKnowledgeBaseRequest(BaseModel):
|
|
|
54
54
|
)
|
|
55
55
|
|
|
56
56
|
|
|
57
|
+
class KnowledgeBaseFileCountRequest(BaseModel):
|
|
58
|
+
"""Request body for counting all live files in a knowledge base."""
|
|
59
|
+
|
|
60
|
+
model_config = ConfigDict(populate_by_name=True)
|
|
61
|
+
|
|
62
|
+
kb_code: str = Field(
|
|
63
|
+
min_length=1,
|
|
64
|
+
validation_alias=AliasChoices("knCode", "kb_code"),
|
|
65
|
+
)
|
|
66
|
+
|
|
67
|
+
|
|
57
68
|
class UpdateKnowledgeBaseRequest(BaseModel):
|
|
58
69
|
"""Request body for updating knowledge base business fields."""
|
|
59
70
|
|
|
@@ -1261,6 +1261,21 @@ class KnowledgeFsEntryRepository:
|
|
|
1261
1261
|
)
|
|
1262
1262
|
return [dict(row) for row in await self._fetchall(cursor)]
|
|
1263
1263
|
|
|
1264
|
+
async def count_file_entries_by_knowledge_base_id(
|
|
1265
|
+
self, cursor, *, knowledge_base_id: int
|
|
1266
|
+
) -> int:
|
|
1267
|
+
"""Count all live files, regardless of directory depth or build state."""
|
|
1268
|
+
await cursor.execute(
|
|
1269
|
+
"""SELECT COUNT(*) AS file_count
|
|
1270
|
+
FROM knowledge_fs_entry
|
|
1271
|
+
WHERE knowledge_base_id = %(knowledge_base_id)s
|
|
1272
|
+
AND is_deleted = FALSE
|
|
1273
|
+
AND entry_type = 'FILE'""",
|
|
1274
|
+
{"knowledge_base_id": knowledge_base_id},
|
|
1275
|
+
)
|
|
1276
|
+
row = await cursor.fetchone()
|
|
1277
|
+
return int(row["file_count"])
|
|
1278
|
+
|
|
1264
1279
|
async def list_file_entries_by_knowledge_base_id(
|
|
1265
1280
|
self, cursor, *, knowledge_base_id: int
|
|
1266
1281
|
) -> list[dict[str, Any]]:
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/knowledge_base_service.py
RENAMED
|
@@ -19,6 +19,7 @@ from by_qa.knowledge_base.api.schemas import (
|
|
|
19
19
|
DeleteDirectoryRequest,
|
|
20
20
|
DeleteKnowledgeBaseRequest,
|
|
21
21
|
FileBuildStatusRequest,
|
|
22
|
+
KnowledgeBaseFileCountRequest,
|
|
22
23
|
KnowledgeItemDownloadRequest,
|
|
23
24
|
KnowledgeItemGlobRequest,
|
|
24
25
|
KnowledgeItemListDirItem,
|
|
@@ -150,7 +151,8 @@ class KnowledgeBaseService:
|
|
|
150
151
|
completed_build_batch_ids: list[str] = []
|
|
151
152
|
terminated_semantic_tasks: list[dict[str, Any]] = []
|
|
152
153
|
completed_semantic_batches: dict[
|
|
153
|
-
str,
|
|
154
|
+
str,
|
|
155
|
+
tuple[dict[str, Any], dict[str, int]],
|
|
154
156
|
] = {}
|
|
155
157
|
try:
|
|
156
158
|
cursor = connection.cursor()
|
|
@@ -989,6 +991,27 @@ class KnowledgeBaseService:
|
|
|
989
991
|
return target_path
|
|
990
992
|
return target_path.rstrip("/") + current_path[len(source_path.rstrip("/")) :]
|
|
991
993
|
|
|
994
|
+
async def file_count(
|
|
995
|
+
self, request: KnowledgeBaseFileCountRequest
|
|
996
|
+
) -> dict[str, int]:
|
|
997
|
+
"""Return the number of non-deleted files in an active knowledge base."""
|
|
998
|
+
connection = await self.connection_factory()
|
|
999
|
+
try:
|
|
1000
|
+
cursor = connection.cursor()
|
|
1001
|
+
kb_row = await self.knowledge_base_repository.get_by_code(
|
|
1002
|
+
cursor, request.kb_code
|
|
1003
|
+
)
|
|
1004
|
+
if not kb_row:
|
|
1005
|
+
raise KnowledgeBaseValidationError(
|
|
1006
|
+
f"knowledge base not found: {request.kb_code}"
|
|
1007
|
+
)
|
|
1008
|
+
count = await self.knowledge_fs_entry_repository.count_file_entries_by_knowledge_base_id(
|
|
1009
|
+
cursor, knowledge_base_id=self._row_id(kb_row)
|
|
1010
|
+
)
|
|
1011
|
+
return {"fileCount": count}
|
|
1012
|
+
finally:
|
|
1013
|
+
await connection.close()
|
|
1014
|
+
|
|
992
1015
|
async def list_dir(
|
|
993
1016
|
self, request: KnowledgeItemListDirRequest
|
|
994
1017
|
) -> KnowledgeItemListDirResponse:
|
|
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/api/knowledge_entity_schemas.py
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/infrastructure/object_storage.py
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
|
|
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/bootstrap_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/document_update_service.py
RENAMED
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/embedding_query_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/file_build_models.py
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/markdown_front_matter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/metadata_search_service.py
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/services/zip_batch_import_service.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/002_knowledge_fs_entry.sql
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/004_retrieval_projection.sql
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/006_knowledge_build_task.sql
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/010_knowledge_chunk_indexes.sql
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/014_embedding_table.sql.tpl
RENAMED
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/015_metadata_property_def.sql
RENAMED
|
File without changes
|
|
File without changes
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/017_file_metadata_value.sql
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/026_knowledge_file_reference.sql
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_base/sql/038_knowledge_build_batch.sql
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
|
{by_qa-0.4.4.dev2 → by_qa-0.4.4.dev3}/src/by_qa/knowledge_build/services/heading_patterns.py
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
|
|
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
|
|
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
|