mdengine 0.8.1__tar.gz → 0.9.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mdengine-0.8.1 → mdengine-0.9.0}/PKG-INFO +21 -5
- {mdengine-0.8.1 → mdengine-0.9.0}/README.md +4 -4
- {mdengine-0.8.1 → mdengine-0.9.0}/pyproject.toml +25 -2
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/__init__.py +1 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/job_manager.py +5 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/schemas.py +162 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/cli/main.py +191 -1
- mdengine-0.9.0/src/md_generator/codeflow/core/cache_manager.py +110 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/core/extractor.py +433 -76
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/core/run_config.py +41 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +22 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/entry_markdown.py +222 -16
- mdengine-0.9.0/src/md_generator/codeflow/generators/html_unified.py +487 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/markdown.py +24 -5
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/analysis.py +32 -9
- mdengine-0.9.0/src/md_generator/codeflow/graph/anomaly.py +109 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/builder.py +4 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/cluster_labeling.py +271 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/clustering.py +3 -1
- mdengine-0.9.0/src/md_generator/codeflow/graph/cross_repo_resolver.py +200 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/dependency_builder.py +166 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/diff_analysis.py +149 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/embeddings.py +24 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/enricher.py +26 -8
- mdengine-0.9.0/src/md_generator/codeflow/graph/hotpath.py +94 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/maven_hints.py +37 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/multi_repo.py +157 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/nl_query.py +267 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/relations.py +3 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/runtime_integration.py +10 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/semantic_enricher.py +17 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/sqlite_export.py +183 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +127 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/ingestion/git_loader.py +77 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/cpp_parser.py +14 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/python_parser.py +53 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +67 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/unified_parser.py +31 -0
- mdengine-0.9.0/src/md_generator/codeflow/runtime/python_edge_counter.py +44 -0
- mdengine-0.9.0/src/md_generator/codeflow/runtime/trace_runner.py +110 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/engine_cli.py +6 -2
- mdengine-0.9.0/src/md_generator/log/__init__.py +6 -0
- mdengine-0.9.0/src/md_generator/log/aggregation/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/aggregation/aggregators.py +20 -0
- mdengine-0.9.0/src/md_generator/log/aggregation/dataframe_builder.py +39 -0
- mdengine-0.9.0/src/md_generator/log/aggregation/metrics.py +34 -0
- mdengine-0.9.0/src/md_generator/log/aggregation/timeline.py +15 -0
- mdengine-0.9.0/src/md_generator/log/api/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/api/main.py +257 -0
- mdengine-0.9.0/src/md_generator/log/api/mcp_server.py +29 -0
- mdengine-0.9.0/src/md_generator/log/api/run.py +15 -0
- mdengine-0.9.0/src/md_generator/log/api/schemas.py +141 -0
- mdengine-0.9.0/src/md_generator/log/api/settings.py +32 -0
- mdengine-0.9.0/src/md_generator/log/cli/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/cli/main.py +69 -0
- mdengine-0.9.0/src/md_generator/log/clustering/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/clustering/embeddings.py +3 -0
- mdengine-0.9.0/src/md_generator/log/clustering/kmeans_cluster.py +12 -0
- mdengine-0.9.0/src/md_generator/log/clustering/semantic_grouping.py +7 -0
- mdengine-0.9.0/src/md_generator/log/clustering/vectorizer.py +13 -0
- mdengine-0.9.0/src/md_generator/log/config/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/config/default.yaml +48 -0
- mdengine-0.9.0/src/md_generator/log/config/presets/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/config/presets/generic.yaml +3 -0
- mdengine-0.9.0/src/md_generator/log/config/presets/springboot.yaml +3 -0
- mdengine-0.9.0/src/md_generator/log/config/schemas.py +117 -0
- mdengine-0.9.0/src/md_generator/log/core/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/core/errors.py +25 -0
- mdengine-0.9.0/src/md_generator/log/core/execution_context.py +10 -0
- mdengine-0.9.0/src/md_generator/log/core/extractor.py +20 -0
- mdengine-0.9.0/src/md_generator/log/core/job_manager.py +274 -0
- mdengine-0.9.0/src/md_generator/log/core/lifecycle.py +15 -0
- mdengine-0.9.0/src/md_generator/log/core/pipeline.py +180 -0
- mdengine-0.9.0/src/md_generator/log/core/plugins.py +34 -0
- mdengine-0.9.0/src/md_generator/log/core/run_config.py +160 -0
- mdengine-0.9.0/src/md_generator/log/core/zip_export.py +31 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/correlation.py +7 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/fingerprinting.py +11 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/hash_generator.py +8 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/pattern_matcher.py +24 -0
- mdengine-0.9.0/src/md_generator/log/enrichment/severity_ranker.py +14 -0
- mdengine-0.9.0/src/md_generator/log/ingestion/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/ingestion/archive_loader.py +25 -0
- mdengine-0.9.0/src/md_generator/log/ingestion/encoding_detector.py +15 -0
- mdengine-0.9.0/src/md_generator/log/ingestion/file_loader.py +23 -0
- mdengine-0.9.0/src/md_generator/log/ingestion/stream_reader.py +36 -0
- mdengine-0.9.0/src/md_generator/log/mcp/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/mcp/server.py +52 -0
- mdengine-0.9.0/src/md_generator/log/mcp/sse.py +8 -0
- mdengine-0.9.0/src/md_generator/log/normalization/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/normalization/number_normalizer.py +9 -0
- mdengine-0.9.0/src/md_generator/log/normalization/path_normalizer.py +12 -0
- mdengine-0.9.0/src/md_generator/log/normalization/pii_redactor.py +16 -0
- mdengine-0.9.0/src/md_generator/log/normalization/token_normalizer.py +44 -0
- mdengine-0.9.0/src/md_generator/log/normalization/uuid_normalizer.py +11 -0
- mdengine-0.9.0/src/md_generator/log/parser/__init__.py +3 -0
- mdengine-0.9.0/src/md_generator/log/parser/level_detector.py +25 -0
- mdengine-0.9.0/src/md_generator/log/parser/logger_detector.py +10 -0
- mdengine-0.9.0/src/md_generator/log/parser/models.py +49 -0
- mdengine-0.9.0/src/md_generator/log/parser/multiline_parser.py +161 -0
- mdengine-0.9.0/src/md_generator/log/parser/parser_registry.py +27 -0
- mdengine-0.9.0/src/md_generator/log/parser/regex_parser.py +28 -0
- mdengine-0.9.0/src/md_generator/log/parser/stacktrace_parser.py +29 -0
- mdengine-0.9.0/src/md_generator/log/parser/timestamp_parser.py +9 -0
- mdengine-0.9.0/src/md_generator/log/service/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/service/service.py +18 -0
- mdengine-0.9.0/src/md_generator/log/utils/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/utils/concurrency.py +23 -0
- mdengine-0.9.0/src/md_generator/log/utils/io.py +12 -0
- mdengine-0.9.0/src/md_generator/log/utils/regex.py +9 -0
- mdengine-0.9.0/src/md_generator/log/utils/time.py +18 -0
- mdengine-0.9.0/src/md_generator/log/writers/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/log/writers/assets_writer.py +11 -0
- mdengine-0.9.0/src/md_generator/log/writers/chunk_writer.py +48 -0
- mdengine-0.9.0/src/md_generator/log/writers/cluster_markdown.py +17 -0
- mdengine-0.9.0/src/md_generator/log/writers/incident_writer.py +42 -0
- mdengine-0.9.0/src/md_generator/log/writers/markdown_writer.py +84 -0
- mdengine-0.9.0/src/md_generator/log/writers/summary_writer.py +46 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/main.py +9 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/mcp_setup.py +10 -4
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/query_options.py +5 -1
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/convert_impl.py +41 -17
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/converter.py +15 -0
- mdengine-0.9.0/src/md_generator/text/md_flatten.py +167 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/options.py +4 -0
- mdengine-0.9.0/src/md_generator/text/xml_parse.py +31 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/PKG-INFO +21 -5
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/SOURCES.txt +94 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/entry_points.txt +3 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/requires.txt +20 -0
- mdengine-0.8.1/src/md_generator/codeflow/generators/html_unified.py +0 -285
- mdengine-0.8.1/src/md_generator/codeflow/graph/sqlite_export.py +0 -56
- {mdengine-0.8.1 → mdengine-0.9.0}/LICENSE +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/setup.cfg +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/config/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/core/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/entry_detector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/html.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/mcp/server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/models/ir.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/base.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/go_parser.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/ir_enrich.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/java_parser.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/php_parser.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/rules/collector.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/factory.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/schemas.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/cli/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/base_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/extractor.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/job_manager.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/markdown_writer.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/models.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/run_config.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/registry.json +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/generate.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/routing.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/options.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.8.1 → mdengine-0.9.0}/src/mdengine.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mdengine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.9.0
|
|
4
4
|
Summary: Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown.
|
|
5
5
|
Author: mdengine contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -43,6 +43,8 @@ Requires-Dist: paddlepaddle>=2.5.0; extra == "image-ocr"
|
|
|
43
43
|
Requires-Dist: paddleocr>=2.7.0.3; extra == "image-ocr"
|
|
44
44
|
Requires-Dist: easyocr>=1.7.0; extra == "image-ocr"
|
|
45
45
|
Provides-Extra: text
|
|
46
|
+
Requires-Dist: xmltodict>=0.13.0; extra == "text"
|
|
47
|
+
Requires-Dist: lxml>=5.0.0; extra == "text"
|
|
46
48
|
Provides-Extra: archive
|
|
47
49
|
Requires-Dist: Pillow>=10.0.0; extra == "archive"
|
|
48
50
|
Requires-Dist: pytesseract>=0.3.10; extra == "archive"
|
|
@@ -120,6 +122,18 @@ Provides-Extra: codeflow-semantic
|
|
|
120
122
|
Requires-Dist: numpy>=1.24.0; extra == "codeflow-semantic"
|
|
121
123
|
Requires-Dist: scikit-learn>=1.3.0; extra == "codeflow-semantic"
|
|
122
124
|
Requires-Dist: sentence-transformers>=3.0.0; extra == "codeflow-semantic"
|
|
125
|
+
Provides-Extra: log
|
|
126
|
+
Requires-Dist: pandas>=2.0.0; extra == "log"
|
|
127
|
+
Requires-Dist: python-dateutil>=2.8.0; extra == "log"
|
|
128
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "log"
|
|
129
|
+
Provides-Extra: log-cluster
|
|
130
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "log-cluster"
|
|
131
|
+
Provides-Extra: log-semantic
|
|
132
|
+
Requires-Dist: numpy>=1.24.0; extra == "log-semantic"
|
|
133
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "log-semantic"
|
|
134
|
+
Requires-Dist: sentence-transformers>=3.0.0; extra == "log-semantic"
|
|
135
|
+
Provides-Extra: log-pretty
|
|
136
|
+
Requires-Dist: loguru>=0.7.0; extra == "log-pretty"
|
|
123
137
|
Provides-Extra: api
|
|
124
138
|
Requires-Dist: fastapi>=0.115.0; extra == "api"
|
|
125
139
|
Requires-Dist: uvicorn[standard]>=0.32.0; extra == "api"
|
|
@@ -148,6 +162,8 @@ Requires-Dist: mdengine[graph]; extra == "dev"
|
|
|
148
162
|
Requires-Dist: mdengine[openapi]; extra == "dev"
|
|
149
163
|
Requires-Dist: mdengine[codeflow]; extra == "dev"
|
|
150
164
|
Requires-Dist: mdengine[codeflow-treesitter]; extra == "dev"
|
|
165
|
+
Requires-Dist: mdengine[log]; extra == "dev"
|
|
166
|
+
Requires-Dist: mdengine[log-cluster]; extra == "dev"
|
|
151
167
|
Provides-Extra: all
|
|
152
168
|
Requires-Dist: pymupdf>=1.24.0; extra == "all"
|
|
153
169
|
Requires-Dist: pdfplumber>=0.11.0; extra == "all"
|
|
@@ -396,19 +412,19 @@ python pdf-to-md\converter.py input.pdf out.md
|
|
|
396
412
|
PYTHONPATH=src python pdf-to-md/converter.py input.pdf out.md
|
|
397
413
|
```
|
|
398
414
|
|
|
399
|
-
### 6. Convert every file in `
|
|
415
|
+
### 6. Convert every file in `example/` (strictly command-line)
|
|
400
416
|
|
|
401
|
-
To process **all supported files** under the [`
|
|
417
|
+
To process **all supported files** under the [`example/`](example/) folder using only the installed **`md-*`** tools (no Python snippets), use the batch driver:
|
|
402
418
|
|
|
403
419
|
| Platform | Command (run from **repository root** unless noted) |
|
|
404
420
|
|----------|------------------------------------------------------|
|
|
405
421
|
| Windows | `powershell -ExecutionPolicy Bypass -File scripts/run-docs-cli.ps1` |
|
|
406
|
-
| Windows | Or double-click / run [`
|
|
422
|
+
| Windows | Or double-click / run [`example/run-all-cli.cmd`](example/run-all-cli.cmd) (changes to repo root, then runs the script on `example\`) |
|
|
407
423
|
| macOS / Linux | `bash scripts/run-docs-cli.sh` |
|
|
408
424
|
|
|
409
425
|
Optional environment variables for the shell script: `DOCS_DIR`, `OUT_DIR`, `IMAGE_ENGINES` (default `tess`). PowerShell script parameters: `-DocsDir`, `-OutDir`, `-ImageEngines`.
|
|
410
426
|
|
|
411
|
-
Outputs are written to **`
|
|
427
|
+
Outputs are written to **`example/cli-output/<basename>/`** (one subfolder per input file). **`.csv`** files are converted with **`md-xlsx`** (same engine as Excel). **`.md`** files are skipped.
|
|
412
428
|
|
|
413
429
|
---
|
|
414
430
|
|
|
@@ -218,19 +218,19 @@ python pdf-to-md\converter.py input.pdf out.md
|
|
|
218
218
|
PYTHONPATH=src python pdf-to-md/converter.py input.pdf out.md
|
|
219
219
|
```
|
|
220
220
|
|
|
221
|
-
### 6. Convert every file in `
|
|
221
|
+
### 6. Convert every file in `example/` (strictly command-line)
|
|
222
222
|
|
|
223
|
-
To process **all supported files** under the [`
|
|
223
|
+
To process **all supported files** under the [`example/`](example/) folder using only the installed **`md-*`** tools (no Python snippets), use the batch driver:
|
|
224
224
|
|
|
225
225
|
| Platform | Command (run from **repository root** unless noted) |
|
|
226
226
|
|----------|------------------------------------------------------|
|
|
227
227
|
| Windows | `powershell -ExecutionPolicy Bypass -File scripts/run-docs-cli.ps1` |
|
|
228
|
-
| Windows | Or double-click / run [`
|
|
228
|
+
| Windows | Or double-click / run [`example/run-all-cli.cmd`](example/run-all-cli.cmd) (changes to repo root, then runs the script on `example\`) |
|
|
229
229
|
| macOS / Linux | `bash scripts/run-docs-cli.sh` |
|
|
230
230
|
|
|
231
231
|
Optional environment variables for the shell script: `DOCS_DIR`, `OUT_DIR`, `IMAGE_ENGINES` (default `tess`). PowerShell script parameters: `-DocsDir`, `-OutDir`, `-ImageEngines`.
|
|
232
232
|
|
|
233
|
-
Outputs are written to **`
|
|
233
|
+
Outputs are written to **`example/cli-output/<basename>/`** (one subfolder per input file). **`.csv`** files are converted with **`md-xlsx`** (same engine as Excel). **`.md`** files are skipped.
|
|
234
234
|
|
|
235
235
|
---
|
|
236
236
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mdengine"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.9.0"
|
|
8
8
|
description = "Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -45,7 +45,7 @@ image-ocr = [
|
|
|
45
45
|
"paddleocr>=2.7.0.3",
|
|
46
46
|
"easyocr>=1.7.0",
|
|
47
47
|
]
|
|
48
|
-
text = []
|
|
48
|
+
text = ["xmltodict>=0.13.0", "lxml>=5.0.0"]
|
|
49
49
|
archive = ["Pillow>=10.0.0", "pytesseract>=0.3.10"]
|
|
50
50
|
url = [
|
|
51
51
|
"httpx>=0.27.0",
|
|
@@ -135,6 +135,22 @@ codeflow-semantic = [
|
|
|
135
135
|
"scikit-learn>=1.3.0",
|
|
136
136
|
"sentence-transformers>=3.0.0",
|
|
137
137
|
]
|
|
138
|
+
log = [
|
|
139
|
+
"pandas>=2.0.0",
|
|
140
|
+
"python-dateutil>=2.8.0",
|
|
141
|
+
"pyyaml>=6.0.0",
|
|
142
|
+
]
|
|
143
|
+
log-cluster = [
|
|
144
|
+
"scikit-learn>=1.3.0",
|
|
145
|
+
]
|
|
146
|
+
log-semantic = [
|
|
147
|
+
"numpy>=1.24.0",
|
|
148
|
+
"scikit-learn>=1.3.0",
|
|
149
|
+
"sentence-transformers>=3.0.0",
|
|
150
|
+
]
|
|
151
|
+
log-pretty = [
|
|
152
|
+
"loguru>=0.7.0",
|
|
153
|
+
]
|
|
138
154
|
api = [
|
|
139
155
|
"fastapi>=0.115.0",
|
|
140
156
|
"uvicorn[standard]>=0.32.0",
|
|
@@ -161,6 +177,8 @@ dev = [
|
|
|
161
177
|
"mdengine[openapi]",
|
|
162
178
|
"mdengine[codeflow]",
|
|
163
179
|
"mdengine[codeflow-treesitter]",
|
|
180
|
+
"mdengine[log]",
|
|
181
|
+
"mdengine[log-cluster]",
|
|
164
182
|
]
|
|
165
183
|
all = [
|
|
166
184
|
"pymupdf>=1.24.0",
|
|
@@ -229,6 +247,9 @@ md-codeflow = "md_generator.codeflow.cli.main:main"
|
|
|
229
247
|
codeflow = "md_generator.codeflow.cli.main:main"
|
|
230
248
|
md-codeflow-api = "md_generator.codeflow.api.run:main"
|
|
231
249
|
md-codeflow-mcp = "md_generator.codeflow.api.mcp_server:main"
|
|
250
|
+
md-log = "md_generator.log.cli.main:main"
|
|
251
|
+
md-log-api = "md_generator.log.api.run:main"
|
|
252
|
+
md-log-mcp = "md_generator.log.api.mcp_server:main"
|
|
232
253
|
mdengine = "md_generator.engine_cli:main"
|
|
233
254
|
|
|
234
255
|
[tool.setuptools.packages.find]
|
|
@@ -239,6 +260,7 @@ include = ["md_generator*"]
|
|
|
239
260
|
"md_generator.db.config" = ["*.yaml"]
|
|
240
261
|
"md_generator.graph.config" = ["*.yaml"]
|
|
241
262
|
"md_generator.openapi.config" = ["*.yaml"]
|
|
263
|
+
"md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
|
|
242
264
|
"md_generator.tools.assistant" = ["data/**/*"]
|
|
243
265
|
|
|
244
266
|
[tool.pytest.ini_options]
|
|
@@ -261,5 +283,6 @@ testpaths = [
|
|
|
261
283
|
"graph-to-md/tests",
|
|
262
284
|
"openapi-to-md/tests",
|
|
263
285
|
"codeflow-to-md/tests",
|
|
286
|
+
"log-to-md/tests",
|
|
264
287
|
]
|
|
265
288
|
markers = ["integration: optional dependency or slower checks"]
|
|
@@ -206,6 +206,11 @@ class CodeflowJobManager:
|
|
|
206
206
|
lw = LoadedWorkspace(root=cfg.project_root, cleanup_dir=None)
|
|
207
207
|
|
|
208
208
|
self.update_progress(job_id, 10, "scan")
|
|
209
|
+
cm = cfg.cache_clear_mode
|
|
210
|
+
if cm and str(cm).strip().lower() in ("git", "all"):
|
|
211
|
+
from md_generator.codeflow.core.cache_manager import apply_git_cache_clear
|
|
212
|
+
|
|
213
|
+
apply_git_cache_clear()
|
|
209
214
|
run_scan(cfg, workspace=lw)
|
|
210
215
|
on_prog(90, "zip")
|
|
211
216
|
|
|
@@ -53,7 +53,19 @@ class AnalyzeOptions(BaseModel):
|
|
|
53
53
|
intelligence_transitive_callers: bool | None = None
|
|
54
54
|
emit_system_graph_stats: bool | None = None
|
|
55
55
|
emit_graph_sqlite: bool | None = None
|
|
56
|
+
graph_sqlite_mode: Literal["full", "incremental"] | None = Field(
|
|
57
|
+
default=None,
|
|
58
|
+
description="full replaces graph.db; incremental upserts rows and records scans",
|
|
59
|
+
)
|
|
60
|
+
graph_sqlite_prune_missing: bool | None = Field(
|
|
61
|
+
default=None,
|
|
62
|
+
description="incremental mode: delete nodes/edges not seen in latest scan",
|
|
63
|
+
)
|
|
56
64
|
emit_graph_communities: bool | None = None
|
|
65
|
+
emit_cluster_labels: bool | None = Field(
|
|
66
|
+
default=None,
|
|
67
|
+
description="Rule-based community labels in graph-communities.json and Markdown (default true)",
|
|
68
|
+
)
|
|
57
69
|
emit_llm_entry_sidecar: bool | None = None
|
|
58
70
|
include_references: bool | None = None
|
|
59
71
|
include_events: bool | None = None
|
|
@@ -72,6 +84,44 @@ class AnalyzeOptions(BaseModel):
|
|
|
72
84
|
semantic_top_k: int | None = None
|
|
73
85
|
semantic_search: str | None = None
|
|
74
86
|
emit_html_unified: bool | None = None
|
|
87
|
+
nl_query: str | None = None
|
|
88
|
+
emit_runtime_insights: bool | None = None
|
|
89
|
+
runtime_insight_frequency_threshold: float | None = None
|
|
90
|
+
runtime_insight_hot_paths_top: int | None = None
|
|
91
|
+
semantic_outlier_distance_threshold: float | None = None
|
|
92
|
+
multi_repo: str | None = Field(
|
|
93
|
+
default=None,
|
|
94
|
+
description="Comma-separated extra repository roots to merge with workspace (first root is workspace)",
|
|
95
|
+
)
|
|
96
|
+
diff_base: str | None = Field(default=None, description="Git ref/SHA for PR diff (with diff_head)")
|
|
97
|
+
diff_head: str | None = Field(default=None, description="Git ref/SHA for PR diff (with diff_base)")
|
|
98
|
+
cross_repo_package_hints: str | None = Field(
|
|
99
|
+
default=None,
|
|
100
|
+
description='JSON object mapping package prefix to repo label, e.g. {"com.foo":"repo_a"}',
|
|
101
|
+
)
|
|
102
|
+
resolve_cross_repo: bool | None = Field(default=None, description="Resolve external:: imports across merged repos (hints JSON)")
|
|
103
|
+
cross_repo_tsconfig: bool | None = Field(
|
|
104
|
+
default=None,
|
|
105
|
+
description="Use tsconfig/jsconfig paths per repo for @… cross-repo matching (with resolve_cross_repo)",
|
|
106
|
+
)
|
|
107
|
+
cross_repo_maven_hints: bool | None = Field(
|
|
108
|
+
default=None,
|
|
109
|
+
description="Add Maven groupId→repo hints from pom.xml (with resolve_cross_repo; explicit hints win)",
|
|
110
|
+
)
|
|
111
|
+
cache_enabled: bool | None = Field(default=None, description="Enable git TTL metadata and unified cache writes")
|
|
112
|
+
cache_ttl_seconds: int | None = Field(default=None, description="Git clone refresh skip window in seconds (0=off)")
|
|
113
|
+
cache_clear_mode: str | None = Field(
|
|
114
|
+
default=None,
|
|
115
|
+
description="semantic | unified | all (project cache); git/all also clears global git cache at API boundary if set",
|
|
116
|
+
)
|
|
117
|
+
graph_include_contains_reachability: bool | None = Field(
|
|
118
|
+
default=None,
|
|
119
|
+
description="Include REL_CONTAINS in dependency reachability (PR impact, Called by, Impact)",
|
|
120
|
+
)
|
|
121
|
+
enable_dependency_graph: bool | None = Field(default=None, description="Alias: enable structural IMPORTS/dependency merge")
|
|
122
|
+
parser_mode: Literal["auto", "treesitter", "external"] | None = None
|
|
123
|
+
ui_cfg_max_methods: int | None = Field(default=None, description="Max CFG Mermaid payloads embedded in unified HTML")
|
|
124
|
+
ui: str | None = Field(default=None, description="Set unified to enable emit_html_unified")
|
|
75
125
|
|
|
76
126
|
|
|
77
127
|
def options_to_scan_config(workspace_src: Path, output_subdir: str, raw: AnalyzeOptions | None) -> ScanConfig:
|
|
@@ -129,7 +179,19 @@ def options_to_scan_config(workspace_src: Path, output_subdir: str, raw: Analyze
|
|
|
129
179
|
itc = False if not raw or raw.intelligence_transitive_callers is None else bool(raw.intelligence_transitive_callers)
|
|
130
180
|
esgs = False if not raw or raw.emit_system_graph_stats is None else bool(raw.emit_system_graph_stats)
|
|
131
181
|
egsql = False if not raw or raw.emit_graph_sqlite is None else bool(raw.emit_graph_sqlite)
|
|
182
|
+
gsm: Literal["full", "incremental"] = (
|
|
183
|
+
"full" if not raw or raw.graph_sqlite_mode is None else raw.graph_sqlite_mode # type: ignore[assignment]
|
|
184
|
+
)
|
|
185
|
+
gsp = False if not raw or raw.graph_sqlite_prune_missing is None else bool(raw.graph_sqlite_prune_missing)
|
|
186
|
+
gicr = (
|
|
187
|
+
False
|
|
188
|
+
if not raw or raw.graph_include_contains_reachability is None
|
|
189
|
+
else bool(raw.graph_include_contains_reachability)
|
|
190
|
+
)
|
|
191
|
+
xc_ts = False if not raw or raw.cross_repo_tsconfig is None else bool(raw.cross_repo_tsconfig)
|
|
192
|
+
xmvn = False if not raw or raw.cross_repo_maven_hints is None else bool(raw.cross_repo_maven_hints)
|
|
132
193
|
egc = False if not raw or raw.emit_graph_communities is None else bool(raw.emit_graph_communities)
|
|
194
|
+
ecl = True if not raw or raw.emit_cluster_labels is None else bool(raw.emit_cluster_labels)
|
|
133
195
|
ellm = False if not raw or raw.emit_llm_entry_sidecar is None else bool(raw.emit_llm_entry_sidecar)
|
|
134
196
|
iref = False if not raw or raw.include_references is None else bool(raw.include_references)
|
|
135
197
|
ievt = False if not raw or raw.include_events is None else bool(raw.include_events)
|
|
@@ -148,6 +210,36 @@ def options_to_scan_config(workspace_src: Path, output_subdir: str, raw: Analyze
|
|
|
148
210
|
stk = 10 if not raw or raw.semantic_top_k is None else int(raw.semantic_top_k)
|
|
149
211
|
ssr = None if not raw or raw.semantic_search is None or not str(raw.semantic_search).strip() else str(raw.semantic_search).strip()
|
|
150
212
|
ehu = False if not raw or raw.emit_html_unified is None else bool(raw.emit_html_unified)
|
|
213
|
+
if raw and raw.ui and str(raw.ui).strip().lower() == "unified":
|
|
214
|
+
ehu = True
|
|
215
|
+
nlq = None if not raw or raw.nl_query is None or not str(raw.nl_query).strip() else str(raw.nl_query).strip()
|
|
216
|
+
eri = False if not raw or raw.emit_runtime_insights is None else bool(raw.emit_runtime_insights)
|
|
217
|
+
rift = 0.05 if not raw or raw.runtime_insight_frequency_threshold is None else float(raw.runtime_insight_frequency_threshold)
|
|
218
|
+
riht = 5 if not raw or raw.runtime_insight_hot_paths_top is None else int(raw.runtime_insight_hot_paths_top)
|
|
219
|
+
sodt = 0.7 if not raw or raw.semantic_outlier_distance_threshold is None else float(raw.semantic_outlier_distance_threshold)
|
|
220
|
+
edg = False if not raw or raw.enable_dependency_graph is None else bool(raw.enable_dependency_graph)
|
|
221
|
+
pm: Literal["auto", "treesitter", "external"] = (
|
|
222
|
+
"auto" if not raw or raw.parser_mode is None else raw.parser_mode # type: ignore[assignment]
|
|
223
|
+
)
|
|
224
|
+
uic = 25 if not raw or raw.ui_cfg_max_methods is None else int(raw.ui_cfg_max_methods)
|
|
225
|
+
multi_roots: tuple[Path, ...] = ()
|
|
226
|
+
if raw and raw.multi_repo and str(raw.multi_repo).strip():
|
|
227
|
+
parts = [x.strip() for x in str(raw.multi_repo).split(",") if x.strip()]
|
|
228
|
+
multi_roots = tuple((workspace_src / p).resolve() if not Path(p).is_absolute() else Path(p).resolve() for p in parts)
|
|
229
|
+
db = None if not raw or raw.diff_base is None or not str(raw.diff_base).strip() else str(raw.diff_base).strip()
|
|
230
|
+
dh = None if not raw or raw.diff_head is None or not str(raw.diff_head).strip() else str(raw.diff_head).strip()
|
|
231
|
+
cr_hints: dict[str, str] | None = None
|
|
232
|
+
if raw and raw.cross_repo_package_hints and str(raw.cross_repo_package_hints).strip():
|
|
233
|
+
try:
|
|
234
|
+
obj = json.loads(str(raw.cross_repo_package_hints).strip())
|
|
235
|
+
if isinstance(obj, dict):
|
|
236
|
+
cr_hints = {str(k): str(v) for k, v in obj.items()}
|
|
237
|
+
except json.JSONDecodeError:
|
|
238
|
+
cr_hints = None
|
|
239
|
+
rcr = False if not raw or raw.resolve_cross_repo is None else bool(raw.resolve_cross_repo)
|
|
240
|
+
c_en = True if not raw or raw.cache_enabled is None else bool(raw.cache_enabled)
|
|
241
|
+
c_ttl = 0 if not raw or raw.cache_ttl_seconds is None else int(raw.cache_ttl_seconds)
|
|
242
|
+
c_cm = None if not raw or raw.cache_clear_mode is None else str(raw.cache_clear_mode).strip() or None
|
|
151
243
|
return ScanConfig(
|
|
152
244
|
project_root=workspace_src,
|
|
153
245
|
output_path=workspace_src.parent / output_subdir,
|
|
@@ -202,11 +294,33 @@ def options_to_scan_config(workspace_src: Path, output_subdir: str, raw: Analyze
|
|
|
202
294
|
semantic_top_k=stk,
|
|
203
295
|
semantic_search=ssr,
|
|
204
296
|
emit_html_unified=ehu,
|
|
297
|
+
nl_query=nlq,
|
|
298
|
+
emit_runtime_insights=eri,
|
|
299
|
+
runtime_insight_frequency_threshold=rift,
|
|
300
|
+
runtime_insight_hot_paths_top=riht,
|
|
301
|
+
semantic_outlier_distance_threshold=sodt,
|
|
205
302
|
intelligence_transitive_callers=itc,
|
|
206
303
|
emit_system_graph_stats=esgs,
|
|
207
304
|
emit_graph_sqlite=egsql,
|
|
305
|
+
graph_sqlite_mode=gsm,
|
|
306
|
+
graph_sqlite_prune_missing=gsp,
|
|
208
307
|
emit_graph_communities=egc,
|
|
308
|
+
emit_cluster_labels=ecl,
|
|
209
309
|
emit_llm_entry_sidecar=ellm,
|
|
310
|
+
multi_repo_roots=multi_roots,
|
|
311
|
+
diff_base=db,
|
|
312
|
+
diff_head=dh,
|
|
313
|
+
cross_repo_package_hints=cr_hints,
|
|
314
|
+
resolve_cross_repo=rcr,
|
|
315
|
+
cross_repo_tsconfig=xc_ts,
|
|
316
|
+
cross_repo_maven_hints=xmvn,
|
|
317
|
+
graph_include_contains_reachability=gicr,
|
|
318
|
+
cache_enabled=c_en,
|
|
319
|
+
cache_ttl_seconds=c_ttl,
|
|
320
|
+
cache_clear_mode=c_cm,
|
|
321
|
+
enable_dependency_graph=edg,
|
|
322
|
+
parser_mode=pm,
|
|
323
|
+
ui_cfg_max_methods=uic,
|
|
210
324
|
)
|
|
211
325
|
|
|
212
326
|
|
|
@@ -263,7 +377,10 @@ def scan_config_dump(cfg: ScanConfig) -> dict[str, Any]:
|
|
|
263
377
|
"intelligence_transitive_callers": cfg.intelligence_transitive_callers,
|
|
264
378
|
"emit_system_graph_stats": cfg.emit_system_graph_stats,
|
|
265
379
|
"emit_graph_sqlite": cfg.emit_graph_sqlite,
|
|
380
|
+
"graph_sqlite_mode": cfg.graph_sqlite_mode,
|
|
381
|
+
"graph_sqlite_prune_missing": cfg.graph_sqlite_prune_missing,
|
|
266
382
|
"emit_graph_communities": cfg.emit_graph_communities,
|
|
383
|
+
"emit_cluster_labels": cfg.emit_cluster_labels,
|
|
267
384
|
"emit_llm_entry_sidecar": cfg.emit_llm_entry_sidecar,
|
|
268
385
|
"include_references": cfg.include_references,
|
|
269
386
|
"include_events": cfg.include_events,
|
|
@@ -282,6 +399,25 @@ def scan_config_dump(cfg: ScanConfig) -> dict[str, Any]:
|
|
|
282
399
|
"semantic_top_k": cfg.semantic_top_k,
|
|
283
400
|
"semantic_search": cfg.semantic_search,
|
|
284
401
|
"emit_html_unified": cfg.emit_html_unified,
|
|
402
|
+
"nl_query": cfg.nl_query,
|
|
403
|
+
"emit_runtime_insights": cfg.emit_runtime_insights,
|
|
404
|
+
"runtime_insight_frequency_threshold": cfg.runtime_insight_frequency_threshold,
|
|
405
|
+
"runtime_insight_hot_paths_top": cfg.runtime_insight_hot_paths_top,
|
|
406
|
+
"semantic_outlier_distance_threshold": cfg.semantic_outlier_distance_threshold,
|
|
407
|
+
"multi_repo_roots": [str(p) for p in cfg.multi_repo_roots],
|
|
408
|
+
"diff_base": cfg.diff_base,
|
|
409
|
+
"diff_head": cfg.diff_head,
|
|
410
|
+
"cross_repo_package_hints": dict(cfg.cross_repo_package_hints) if cfg.cross_repo_package_hints else None,
|
|
411
|
+
"resolve_cross_repo": cfg.resolve_cross_repo,
|
|
412
|
+
"cross_repo_tsconfig": cfg.cross_repo_tsconfig,
|
|
413
|
+
"cross_repo_maven_hints": cfg.cross_repo_maven_hints,
|
|
414
|
+
"graph_include_contains_reachability": cfg.graph_include_contains_reachability,
|
|
415
|
+
"cache_enabled": cfg.cache_enabled,
|
|
416
|
+
"cache_ttl_seconds": cfg.cache_ttl_seconds,
|
|
417
|
+
"cache_clear_mode": cfg.cache_clear_mode,
|
|
418
|
+
"enable_dependency_graph": cfg.enable_dependency_graph,
|
|
419
|
+
"parser_mode": cfg.parser_mode,
|
|
420
|
+
"ui_cfg_max_methods": cfg.ui_cfg_max_methods,
|
|
285
421
|
}
|
|
286
422
|
|
|
287
423
|
|
|
@@ -332,7 +468,10 @@ def scan_config_load(data: dict[str, Any]) -> ScanConfig:
|
|
|
332
468
|
intelligence_transitive_callers=bool(data.get("intelligence_transitive_callers", False)),
|
|
333
469
|
emit_system_graph_stats=bool(data.get("emit_system_graph_stats", False)),
|
|
334
470
|
emit_graph_sqlite=bool(data.get("emit_graph_sqlite", False)),
|
|
471
|
+
graph_sqlite_mode=data.get("graph_sqlite_mode", "full"), # type: ignore[arg-type]
|
|
472
|
+
graph_sqlite_prune_missing=bool(data.get("graph_sqlite_prune_missing", False)),
|
|
335
473
|
emit_graph_communities=bool(data.get("emit_graph_communities", False)),
|
|
474
|
+
emit_cluster_labels=bool(data.get("emit_cluster_labels", True)),
|
|
336
475
|
emit_llm_entry_sidecar=bool(data.get("emit_llm_entry_sidecar", False)),
|
|
337
476
|
include_references=bool(data.get("include_references", False)),
|
|
338
477
|
include_events=bool(data.get("include_events", False)),
|
|
@@ -351,6 +490,29 @@ def scan_config_load(data: dict[str, Any]) -> ScanConfig:
|
|
|
351
490
|
semantic_top_k=int(data.get("semantic_top_k", 10)),
|
|
352
491
|
semantic_search=data.get("semantic_search"),
|
|
353
492
|
emit_html_unified=bool(data.get("emit_html_unified", False)),
|
|
493
|
+
nl_query=data.get("nl_query"),
|
|
494
|
+
emit_runtime_insights=bool(data.get("emit_runtime_insights", False)),
|
|
495
|
+
runtime_insight_frequency_threshold=float(data.get("runtime_insight_frequency_threshold", 0.05)),
|
|
496
|
+
runtime_insight_hot_paths_top=int(data.get("runtime_insight_hot_paths_top", 5)),
|
|
497
|
+
semantic_outlier_distance_threshold=float(data.get("semantic_outlier_distance_threshold", 0.7)),
|
|
498
|
+
multi_repo_roots=tuple(Path(p) for p in (data.get("multi_repo_roots") or [])),
|
|
499
|
+
diff_base=data.get("diff_base"),
|
|
500
|
+
diff_head=data.get("diff_head"),
|
|
501
|
+
cross_repo_package_hints=(
|
|
502
|
+
{str(k): str(v) for k, v in data["cross_repo_package_hints"].items()}
|
|
503
|
+
if isinstance(data.get("cross_repo_package_hints"), dict)
|
|
504
|
+
else None
|
|
505
|
+
),
|
|
506
|
+
resolve_cross_repo=bool(data.get("resolve_cross_repo", False)),
|
|
507
|
+
cross_repo_tsconfig=bool(data.get("cross_repo_tsconfig", False)),
|
|
508
|
+
cross_repo_maven_hints=bool(data.get("cross_repo_maven_hints", False)),
|
|
509
|
+
graph_include_contains_reachability=bool(data.get("graph_include_contains_reachability", False)),
|
|
510
|
+
cache_enabled=bool(data.get("cache_enabled", True)),
|
|
511
|
+
cache_ttl_seconds=int(data.get("cache_ttl_seconds", 0)),
|
|
512
|
+
cache_clear_mode=data.get("cache_clear_mode"),
|
|
513
|
+
enable_dependency_graph=bool(data.get("enable_dependency_graph", False)),
|
|
514
|
+
parser_mode=data.get("parser_mode", "auto"), # type: ignore[arg-type]
|
|
515
|
+
ui_cfg_max_methods=int(data.get("ui_cfg_max_methods", 25)),
|
|
354
516
|
)
|
|
355
517
|
|
|
356
518
|
|