mdengine 0.8.0__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.0/src/mdengine.egg-info → mdengine-0.9.0}/PKG-INFO +51 -5
- {mdengine-0.8.0 → mdengine-0.9.0}/README.md +27 -4
- {mdengine-0.8.0 → mdengine-0.9.0}/pyproject.toml +36 -2
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/__init__.py +1 -1
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +28 -9
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/job_manager.py +7 -19
- mdengine-0.9.0/src/md_generator/codeflow/api/schemas.py +526 -0
- mdengine-0.9.0/src/md_generator/codeflow/api/semantic_api.py +69 -0
- mdengine-0.9.0/src/md_generator/codeflow/cli/main.py +738 -0
- mdengine-0.9.0/src/md_generator/codeflow/config/__init__.py +13 -0
- mdengine-0.9.0/src/md_generator/codeflow/config/codeflow_yaml.py +45 -0
- mdengine-0.9.0/src/md_generator/codeflow/core/__init__.py +13 -0
- mdengine-0.9.0/src/md_generator/codeflow/core/cache_manager.py +110 -0
- mdengine-0.9.0/src/md_generator/codeflow/core/extractor.py +1040 -0
- mdengine-0.9.0/src/md_generator/codeflow/core/run_config.py +150 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/entry_detector.py +28 -1
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/entry_rank.py +4 -4
- mdengine-0.9.0/src/md_generator/codeflow/detectors/event_detector.py +126 -0
- mdengine-0.9.0/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +196 -0
- mdengine-0.9.0/src/md_generator/codeflow/generators/cfg_paths_markdown.py +114 -0
- mdengine-0.9.0/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +30 -0
- mdengine-0.9.0/src/md_generator/codeflow/generators/cfg_render.py +121 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +28 -4
- mdengine-0.9.0/src/md_generator/codeflow/generators/entry_markdown.py +765 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/flow_summary.py +7 -8
- mdengine-0.9.0/src/md_generator/codeflow/generators/flow_tree.py +56 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/html.py +1 -0
- mdengine-0.9.0/src/md_generator/codeflow/generators/html_unified.py +487 -0
- mdengine-0.9.0/src/md_generator/codeflow/generators/markdown.py +152 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/mermaid.py +14 -2
- mdengine-0.9.0/src/md_generator/codeflow/graph/__init__.py +6 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/analysis.py +116 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/anomaly.py +109 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/builder.py +482 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/call_expander.py +160 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/cfg_builder.py +435 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/cfg_copy.py +41 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/cfg_model.py +49 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/cluster_labeling.py +271 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/clustering.py +180 -0
- 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.9.0/src/md_generator/codeflow/graph/embeddings.py +216 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/enricher.py +92 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/event_graph.py +55 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/export_schema.py +278 -0
- 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/multigraph_utils.py +106 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/nl_query.py +267 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/path_enumerator.py +92 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/path_probability.py +64 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/query_engine.py +81 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/relations.py +38 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/runtime_integration.py +41 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/semantic_enricher.py +93 -0
- mdengine-0.9.0/src/md_generator/codeflow/graph/semantic_index.py +84 -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.9.0/src/md_generator/codeflow/ingestion/git_loader.py +286 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/mcp/server.py +22 -5
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/models/ir.py +30 -0
- mdengine-0.9.0/src/md_generator/codeflow/models/ir_cfg.py +42 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/__init__.py +16 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +229 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/go_adapter.py +15 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +75 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/java_adapter.py +186 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/php_adapter.py +15 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/python_adapter.py +185 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +218 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/cpp_parser.py +98 -3
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/go_parser.py +26 -4
- mdengine-0.9.0/src/md_generator/codeflow/parsers/ir_enrich.py +41 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/java_parser.py +371 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/php_parser.py +40 -4
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/python_parser.py +83 -1
- mdengine-0.9.0/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +406 -0
- mdengine-0.9.0/src/md_generator/codeflow/parsers/unified_parser.py +31 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/rules/collector.py +17 -8
- mdengine-0.9.0/src/md_generator/codeflow/rules/cpp_rules.py +113 -0
- mdengine-0.9.0/src/md_generator/codeflow/rules/java_rules.py +188 -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.9.0/src/md_generator/codeflow/utils/tools_root.py +16 -0
- mdengine-0.9.0/src/md_generator/codeflow/worker/__init__.py +1 -0
- mdengine-0.9.0/src/md_generator/codeflow/worker/celery_optional.py +22 -0
- {mdengine-0.8.0 → 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.0 → mdengine-0.9.0}/src/md_generator/text/api/main.py +9 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/mcp_setup.py +10 -4
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/query_options.py +5 -1
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/convert_impl.py +41 -17
- {mdengine-0.8.0 → 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.0 → 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.0 → mdengine-0.9.0/src/mdengine.egg-info}/PKG-INFO +51 -5
- {mdengine-0.8.0 → mdengine-0.9.0}/src/mdengine.egg-info/SOURCES.txt +138 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/mdengine.egg-info/entry_points.txt +3 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/mdengine.egg-info/requires.txt +29 -0
- mdengine-0.8.0/src/md_generator/codeflow/api/schemas.py +0 -96
- mdengine-0.8.0/src/md_generator/codeflow/cli/main.py +0 -132
- mdengine-0.8.0/src/md_generator/codeflow/core/__init__.py +0 -6
- mdengine-0.8.0/src/md_generator/codeflow/core/extractor.py +0 -193
- mdengine-0.8.0/src/md_generator/codeflow/core/run_config.py +0 -31
- mdengine-0.8.0/src/md_generator/codeflow/generators/entry_markdown.py +0 -198
- mdengine-0.8.0/src/md_generator/codeflow/generators/markdown.py +0 -35
- mdengine-0.8.0/src/md_generator/codeflow/graph/__init__.py +0 -5
- mdengine-0.8.0/src/md_generator/codeflow/graph/builder.py +0 -181
- mdengine-0.8.0/src/md_generator/codeflow/parsers/java_parser.py +0 -116
- mdengine-0.8.0/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +0 -119
- mdengine-0.8.0/src/md_generator/codeflow/utils/tools_root.py +0 -13
- {mdengine-0.8.0 → mdengine-0.9.0}/LICENSE +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/setup.cfg +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/parsers/base.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/factory.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/schemas.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/cli/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/base_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/extractor.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/job_manager.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/markdown_writer.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/models.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/run_config.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/registry.json +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/generate.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/tools/skill_builder/routing.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/options.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.8.0 → mdengine-0.9.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.8.0 → 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"
|
|
@@ -106,6 +108,9 @@ Requires-Dist: openapi-spec-validator>=0.7.0; extra == "openapi"
|
|
|
106
108
|
Provides-Extra: codeflow
|
|
107
109
|
Requires-Dist: networkx>=3.2.0; extra == "codeflow"
|
|
108
110
|
Requires-Dist: javalang>=0.13.0; extra == "codeflow"
|
|
111
|
+
Provides-Extra: codeflow-worker
|
|
112
|
+
Requires-Dist: celery>=5.3.0; extra == "codeflow-worker"
|
|
113
|
+
Requires-Dist: redis>=5.0.0; extra == "codeflow-worker"
|
|
109
114
|
Provides-Extra: codeflow-treesitter
|
|
110
115
|
Requires-Dist: tree-sitter>=0.21.0; extra == "codeflow-treesitter"
|
|
111
116
|
Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "codeflow-treesitter"
|
|
@@ -113,6 +118,22 @@ Requires-Dist: tree-sitter-typescript>=0.23.0; extra == "codeflow-treesitter"
|
|
|
113
118
|
Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "codeflow-treesitter"
|
|
114
119
|
Provides-Extra: codeflow-clang
|
|
115
120
|
Requires-Dist: clang>=16.0.0; extra == "codeflow-clang"
|
|
121
|
+
Provides-Extra: codeflow-semantic
|
|
122
|
+
Requires-Dist: numpy>=1.24.0; extra == "codeflow-semantic"
|
|
123
|
+
Requires-Dist: scikit-learn>=1.3.0; extra == "codeflow-semantic"
|
|
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"
|
|
116
137
|
Provides-Extra: api
|
|
117
138
|
Requires-Dist: fastapi>=0.115.0; extra == "api"
|
|
118
139
|
Requires-Dist: uvicorn[standard]>=0.32.0; extra == "api"
|
|
@@ -141,6 +162,8 @@ Requires-Dist: mdengine[graph]; extra == "dev"
|
|
|
141
162
|
Requires-Dist: mdengine[openapi]; extra == "dev"
|
|
142
163
|
Requires-Dist: mdengine[codeflow]; extra == "dev"
|
|
143
164
|
Requires-Dist: mdengine[codeflow-treesitter]; extra == "dev"
|
|
165
|
+
Requires-Dist: mdengine[log]; extra == "dev"
|
|
166
|
+
Requires-Dist: mdengine[log-cluster]; extra == "dev"
|
|
144
167
|
Provides-Extra: all
|
|
145
168
|
Requires-Dist: pymupdf>=1.24.0; extra == "all"
|
|
146
169
|
Requires-Dist: pdfplumber>=0.11.0; extra == "all"
|
|
@@ -389,19 +412,19 @@ python pdf-to-md\converter.py input.pdf out.md
|
|
|
389
412
|
PYTHONPATH=src python pdf-to-md/converter.py input.pdf out.md
|
|
390
413
|
```
|
|
391
414
|
|
|
392
|
-
### 6. Convert every file in `
|
|
415
|
+
### 6. Convert every file in `example/` (strictly command-line)
|
|
393
416
|
|
|
394
|
-
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:
|
|
395
418
|
|
|
396
419
|
| Platform | Command (run from **repository root** unless noted) |
|
|
397
420
|
|----------|------------------------------------------------------|
|
|
398
421
|
| Windows | `powershell -ExecutionPolicy Bypass -File scripts/run-docs-cli.ps1` |
|
|
399
|
-
| 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\`) |
|
|
400
423
|
| macOS / Linux | `bash scripts/run-docs-cli.sh` |
|
|
401
424
|
|
|
402
425
|
Optional environment variables for the shell script: `DOCS_DIR`, `OUT_DIR`, `IMAGE_ENGINES` (default `tess`). PowerShell script parameters: `-DocsDir`, `-OutDir`, `-ImageEngines`.
|
|
403
426
|
|
|
404
|
-
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.
|
|
405
428
|
|
|
406
429
|
---
|
|
407
430
|
|
|
@@ -876,6 +899,29 @@ python -m pytest
|
|
|
876
899
|
|
|
877
900
|
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, and **[`tool-assistant/tests/`](tool-assistant/tests/)** for the skill SDK; `pyproject.toml` sets `pythonpath = ["src"]` so **`md_generator`** (including **`md_generator.tools.assistant`**) resolves without a manual `PYTHONPATH` when you use `pytest` from the config.
|
|
878
901
|
|
|
902
|
+
### Codeflow (`md_generator.codeflow`)
|
|
903
|
+
|
|
904
|
+
Static call graphs and per-entry Markdown/Mermaid/JSON for **Python**, **Java** (Spring REST, Kafka listeners, **Liferay / JSR-286 portlets**), and other parsers. Output is **static only** (`graph-full.json` can include unresolved `unknown::*` callees).
|
|
905
|
+
|
|
906
|
+
More detail: **[`codeflow-to-md/docs/graph-and-outputs.md`](codeflow-to-md/docs/graph-and-outputs.md)** (node/edge model, `graph-schema.json`, `methods/` layout).
|
|
907
|
+
|
|
908
|
+
- **Formats:** pass **`--formats md,mermaid,json,html`** (comma-separated). **`--output`** is the **output directory**, not the format list.
|
|
909
|
+
- **Graph schema export:** optional **`--emit-graph-schema`** (with `json` in formats) writes **`graph-schema.json`** — stable Node/Edge view with derived File/Class nodes and `CONTAINS` edges. **`graph-full.json`** stays unchanged for existing consumers.
|
|
910
|
+
- **Markdown intelligence:** flow and entry Markdown include **Called By** and **Impact** lists (capped with **`--intelligence-list-cap`**, default 80).
|
|
911
|
+
- **IR / CFG (optional):** **`--emit-cfg`** builds a language-agnostic IR and writes **`cfg.json`**, **`cfg.mmd`**, and appends a CFG Mermaid block to **`flow.md`** (when `md` is in formats). Cap with **`--cfg-max-nodes`** (default 500).
|
|
912
|
+
- **Entries:** use `--entry` (comma-separated symbol ids), **`--entries-file`** (one id per line, `#` comments allowed), or rely on detectors. **`--emit-entry-per-method`** emits one output directory per method/entry symbol under **`methods/<slug>/`**; cap volume with **`--emit-entry-max`** (default cap **10000** when the flag is set and max is omitted). **`--entry-fallback`** `none` \| `roots` \| `first_n` controls behavior when nothing is detected (default **`roots`**, in-degree 0 symbols, limited by **`--entry-fallback-max`**).
|
|
913
|
+
- **Java flow:** edges can record **branch context** from enclosing `if`, `switch`, or ternary expressions (`condition` / `labels` on edges). **Business rules** Markdown picks up validation-style **`@NotNull`** / **`@Size`** / **`@Valid`** (name heuristics) and throws such as **`IllegalArgumentException`**.
|
|
914
|
+
- **JavaScript / TypeScript / TSX:** Tree-sitter adds **`condition_label`** from enclosing control flow, **`fr.branches`** for `if` / `switch`, and **`fr.rules`** for **`throw`** and common **`assert` / `console.assert`** calls (slice-scoped in the collector).
|
|
915
|
+
- **C++ (tree-sitter path):** **`condition_label`** on calls, **`fr.branches`** for `if` / `switch`, plus **`rules/cpp_rules.py`** for **`throw`** / **`assert`** when methods appear in the slice. (Clang-only parses still get throw/assert via the same extractor when tree-sitter is installed.)
|
|
916
|
+
- **Go:** the **`codeflow_go_dump`** helper emits **`condition`** on calls inside `if` / `switch` / `for` / `range`, and **`rules`** for **`panic`** / **`log.Fatal` / `Fatalf`**; **`fr.rules`** are merged slice-scoped.
|
|
917
|
+
- **PHP:** the **`codeflow_php_dump`** helper adds **`condition`** on calls (from enclosing **`if` / `case`**), **`rules`** for **`throw`**, and **`branches`** for documentation. Install PHP + Composer deps under `codeflow-to-md/examples/codeflow_php_dump` (or mirror under `tools/codeflow_php_dump`) for PHP scans.
|
|
918
|
+
- **Kinds / filters:** `--include` accepts aliases such as **`portlet`** / **`liferay`** for portlet entries.
|
|
919
|
+
- **Operators:** each run writes **`scan-summary.md`** at the output root (counts, warnings, fallback mode) unless **`--no-scan-summary`** is set.
|
|
920
|
+
|
|
921
|
+
```bash
|
|
922
|
+
python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-out --lang java
|
|
923
|
+
```
|
|
924
|
+
|
|
879
925
|
---
|
|
880
926
|
|
|
881
927
|
## Repository layout
|
|
@@ -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
|
|
|
@@ -705,6 +705,29 @@ python -m pytest
|
|
|
705
705
|
|
|
706
706
|
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, and **[`tool-assistant/tests/`](tool-assistant/tests/)** for the skill SDK; `pyproject.toml` sets `pythonpath = ["src"]` so **`md_generator`** (including **`md_generator.tools.assistant`**) resolves without a manual `PYTHONPATH` when you use `pytest` from the config.
|
|
707
707
|
|
|
708
|
+
### Codeflow (`md_generator.codeflow`)
|
|
709
|
+
|
|
710
|
+
Static call graphs and per-entry Markdown/Mermaid/JSON for **Python**, **Java** (Spring REST, Kafka listeners, **Liferay / JSR-286 portlets**), and other parsers. Output is **static only** (`graph-full.json` can include unresolved `unknown::*` callees).
|
|
711
|
+
|
|
712
|
+
More detail: **[`codeflow-to-md/docs/graph-and-outputs.md`](codeflow-to-md/docs/graph-and-outputs.md)** (node/edge model, `graph-schema.json`, `methods/` layout).
|
|
713
|
+
|
|
714
|
+
- **Formats:** pass **`--formats md,mermaid,json,html`** (comma-separated). **`--output`** is the **output directory**, not the format list.
|
|
715
|
+
- **Graph schema export:** optional **`--emit-graph-schema`** (with `json` in formats) writes **`graph-schema.json`** — stable Node/Edge view with derived File/Class nodes and `CONTAINS` edges. **`graph-full.json`** stays unchanged for existing consumers.
|
|
716
|
+
- **Markdown intelligence:** flow and entry Markdown include **Called By** and **Impact** lists (capped with **`--intelligence-list-cap`**, default 80).
|
|
717
|
+
- **IR / CFG (optional):** **`--emit-cfg`** builds a language-agnostic IR and writes **`cfg.json`**, **`cfg.mmd`**, and appends a CFG Mermaid block to **`flow.md`** (when `md` is in formats). Cap with **`--cfg-max-nodes`** (default 500).
|
|
718
|
+
- **Entries:** use `--entry` (comma-separated symbol ids), **`--entries-file`** (one id per line, `#` comments allowed), or rely on detectors. **`--emit-entry-per-method`** emits one output directory per method/entry symbol under **`methods/<slug>/`**; cap volume with **`--emit-entry-max`** (default cap **10000** when the flag is set and max is omitted). **`--entry-fallback`** `none` \| `roots` \| `first_n` controls behavior when nothing is detected (default **`roots`**, in-degree 0 symbols, limited by **`--entry-fallback-max`**).
|
|
719
|
+
- **Java flow:** edges can record **branch context** from enclosing `if`, `switch`, or ternary expressions (`condition` / `labels` on edges). **Business rules** Markdown picks up validation-style **`@NotNull`** / **`@Size`** / **`@Valid`** (name heuristics) and throws such as **`IllegalArgumentException`**.
|
|
720
|
+
- **JavaScript / TypeScript / TSX:** Tree-sitter adds **`condition_label`** from enclosing control flow, **`fr.branches`** for `if` / `switch`, and **`fr.rules`** for **`throw`** and common **`assert` / `console.assert`** calls (slice-scoped in the collector).
|
|
721
|
+
- **C++ (tree-sitter path):** **`condition_label`** on calls, **`fr.branches`** for `if` / `switch`, plus **`rules/cpp_rules.py`** for **`throw`** / **`assert`** when methods appear in the slice. (Clang-only parses still get throw/assert via the same extractor when tree-sitter is installed.)
|
|
722
|
+
- **Go:** the **`codeflow_go_dump`** helper emits **`condition`** on calls inside `if` / `switch` / `for` / `range`, and **`rules`** for **`panic`** / **`log.Fatal` / `Fatalf`**; **`fr.rules`** are merged slice-scoped.
|
|
723
|
+
- **PHP:** the **`codeflow_php_dump`** helper adds **`condition`** on calls (from enclosing **`if` / `case`**), **`rules`** for **`throw`**, and **`branches`** for documentation. Install PHP + Composer deps under `codeflow-to-md/examples/codeflow_php_dump` (or mirror under `tools/codeflow_php_dump`) for PHP scans.
|
|
724
|
+
- **Kinds / filters:** `--include` accepts aliases such as **`portlet`** / **`liferay`** for portlet entries.
|
|
725
|
+
- **Operators:** each run writes **`scan-summary.md`** at the output root (counts, warnings, fallback mode) unless **`--no-scan-summary`** is set.
|
|
726
|
+
|
|
727
|
+
```bash
|
|
728
|
+
python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-out --lang java
|
|
729
|
+
```
|
|
730
|
+
|
|
708
731
|
---
|
|
709
732
|
|
|
710
733
|
## Repository layout
|
|
@@ -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",
|
|
@@ -115,6 +115,11 @@ codeflow = [
|
|
|
115
115
|
"networkx>=3.2.0",
|
|
116
116
|
"javalang>=0.13.0",
|
|
117
117
|
]
|
|
118
|
+
# Optional: horizontal workers for codeflow API (Celery + Redis). Default job path uses threads.
|
|
119
|
+
codeflow-worker = [
|
|
120
|
+
"celery>=5.3.0",
|
|
121
|
+
"redis>=5.0.0",
|
|
122
|
+
]
|
|
118
123
|
codeflow-treesitter = [
|
|
119
124
|
"tree-sitter>=0.21.0",
|
|
120
125
|
"tree-sitter-javascript>=0.21.0",
|
|
@@ -124,6 +129,28 @@ codeflow-treesitter = [
|
|
|
124
129
|
codeflow-clang = [
|
|
125
130
|
"clang>=16.0.0",
|
|
126
131
|
]
|
|
132
|
+
# Embeddings + semantic clustering (SentenceTransformers pulls torch; large install).
|
|
133
|
+
codeflow-semantic = [
|
|
134
|
+
"numpy>=1.24.0",
|
|
135
|
+
"scikit-learn>=1.3.0",
|
|
136
|
+
"sentence-transformers>=3.0.0",
|
|
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
|
+
]
|
|
127
154
|
api = [
|
|
128
155
|
"fastapi>=0.115.0",
|
|
129
156
|
"uvicorn[standard]>=0.32.0",
|
|
@@ -150,6 +177,8 @@ dev = [
|
|
|
150
177
|
"mdengine[openapi]",
|
|
151
178
|
"mdengine[codeflow]",
|
|
152
179
|
"mdengine[codeflow-treesitter]",
|
|
180
|
+
"mdengine[log]",
|
|
181
|
+
"mdengine[log-cluster]",
|
|
153
182
|
]
|
|
154
183
|
all = [
|
|
155
184
|
"pymupdf>=1.24.0",
|
|
@@ -218,6 +247,9 @@ md-codeflow = "md_generator.codeflow.cli.main:main"
|
|
|
218
247
|
codeflow = "md_generator.codeflow.cli.main:main"
|
|
219
248
|
md-codeflow-api = "md_generator.codeflow.api.run:main"
|
|
220
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"
|
|
221
253
|
mdengine = "md_generator.engine_cli:main"
|
|
222
254
|
|
|
223
255
|
[tool.setuptools.packages.find]
|
|
@@ -228,6 +260,7 @@ include = ["md_generator*"]
|
|
|
228
260
|
"md_generator.db.config" = ["*.yaml"]
|
|
229
261
|
"md_generator.graph.config" = ["*.yaml"]
|
|
230
262
|
"md_generator.openapi.config" = ["*.yaml"]
|
|
263
|
+
"md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
|
|
231
264
|
"md_generator.tools.assistant" = ["data/**/*"]
|
|
232
265
|
|
|
233
266
|
[tool.pytest.ini_options]
|
|
@@ -250,5 +283,6 @@ testpaths = [
|
|
|
250
283
|
"graph-to-md/tests",
|
|
251
284
|
"openapi-to-md/tests",
|
|
252
285
|
"codeflow-to-md/tests",
|
|
286
|
+
"log-to-md/tests",
|
|
253
287
|
]
|
|
254
288
|
markers = ["integration: optional dependency or slower checks"]
|
|
@@ -4,6 +4,9 @@ from dataclasses import dataclass, field
|
|
|
4
4
|
|
|
5
5
|
import networkx as nx
|
|
6
6
|
|
|
7
|
+
from md_generator.codeflow.graph import relations as rel
|
|
8
|
+
from md_generator.codeflow.graph.multigraph_utils import CodeflowGraph, collapsed_digraph_for_relations
|
|
9
|
+
|
|
7
10
|
|
|
8
11
|
@dataclass(slots=True)
|
|
9
12
|
class FlowSlice:
|
|
@@ -15,16 +18,25 @@ class FlowSlice:
|
|
|
15
18
|
truncated: bool = False
|
|
16
19
|
|
|
17
20
|
|
|
21
|
+
_DEFAULT_FLOW_RELATIONS = frozenset({rel.REL_CALLS})
|
|
22
|
+
|
|
23
|
+
|
|
18
24
|
def walk_with_depth(
|
|
19
|
-
g:
|
|
25
|
+
g: CodeflowGraph,
|
|
20
26
|
start: str,
|
|
21
27
|
max_depth: int,
|
|
28
|
+
*,
|
|
29
|
+
relations: frozenset[str] | None = None,
|
|
22
30
|
) -> tuple[set[str], list[tuple[str, str, dict]], set[str], bool]:
|
|
23
|
-
"""Reachability from start within ``max_depth`` hops (
|
|
31
|
+
"""Reachability from ``start`` within ``max_depth`` hops over selected relations (default: CALLS only)."""
|
|
24
32
|
if start not in g:
|
|
25
33
|
return {start}, [], set(), False
|
|
34
|
+
rels = relations if relations is not None else _DEFAULT_FLOW_RELATIONS
|
|
35
|
+
cg = collapsed_digraph_for_relations(g, rels)
|
|
36
|
+
if start not in cg:
|
|
37
|
+
return {start}, [], set(), False
|
|
26
38
|
try:
|
|
27
|
-
plen = nx.single_source_shortest_path_length(
|
|
39
|
+
plen = nx.single_source_shortest_path_length(cg, start, cutoff=max_depth)
|
|
28
40
|
except nx.NetworkXError:
|
|
29
41
|
plen = {start: 0}
|
|
30
42
|
|
|
@@ -36,13 +48,18 @@ def walk_with_depth(
|
|
|
36
48
|
for u in nodes:
|
|
37
49
|
du = plen[u]
|
|
38
50
|
if du >= max_depth:
|
|
39
|
-
succ = list(
|
|
51
|
+
succ = list(cg.successors(u))
|
|
40
52
|
if succ:
|
|
41
53
|
truncated = True
|
|
42
54
|
continue
|
|
43
|
-
for v in
|
|
44
|
-
|
|
45
|
-
|
|
55
|
+
for v in cg.successors(u):
|
|
56
|
+
if not g.has_edge(u, v):
|
|
57
|
+
continue
|
|
58
|
+
for _k, ed in g[u][v].items():
|
|
59
|
+
er = ed.get("relation") or ed.get("kind") or rel.REL_CALLS
|
|
60
|
+
if er not in rels:
|
|
61
|
+
continue
|
|
62
|
+
edges_out.append((u, v, dict(ed)))
|
|
46
63
|
dv = plen.get(v)
|
|
47
64
|
if dv is not None and dv <= du:
|
|
48
65
|
cycle_guess.add(v)
|
|
@@ -53,11 +70,13 @@ def walk_with_depth(
|
|
|
53
70
|
|
|
54
71
|
|
|
55
72
|
def slice_from_entry(
|
|
56
|
-
g:
|
|
73
|
+
g: CodeflowGraph,
|
|
57
74
|
entry_id: str,
|
|
58
75
|
max_depth: int,
|
|
76
|
+
*,
|
|
77
|
+
relations: frozenset[str] | None = None,
|
|
59
78
|
) -> FlowSlice:
|
|
60
|
-
nodes, edges, cycles, truncated = walk_with_depth(g, entry_id, max_depth)
|
|
79
|
+
nodes, edges, cycles, truncated = walk_with_depth(g, entry_id, max_depth, relations=relations)
|
|
61
80
|
return FlowSlice(
|
|
62
81
|
entry_id=entry_id,
|
|
63
82
|
nodes=nodes,
|
|
@@ -7,7 +7,7 @@ import threading
|
|
|
7
7
|
import time
|
|
8
8
|
import uuid
|
|
9
9
|
import zipfile
|
|
10
|
-
from dataclasses import dataclass
|
|
10
|
+
from dataclasses import dataclass, replace
|
|
11
11
|
from pathlib import Path
|
|
12
12
|
from typing import Any
|
|
13
13
|
|
|
@@ -101,24 +101,7 @@ class CodeflowJobManager:
|
|
|
101
101
|
zf.extractall(src)
|
|
102
102
|
|
|
103
103
|
out = ws / "out"
|
|
104
|
-
cfg =
|
|
105
|
-
project_root=src,
|
|
106
|
-
output_path=out,
|
|
107
|
-
formats=cfg_template.formats,
|
|
108
|
-
depth=cfg_template.depth,
|
|
109
|
-
languages=cfg_template.languages,
|
|
110
|
-
entry=cfg_template.entry,
|
|
111
|
-
include=cfg_template.include,
|
|
112
|
-
exclude=cfg_template.exclude,
|
|
113
|
-
include_internal=cfg_template.include_internal,
|
|
114
|
-
async_mode=cfg_template.async_mode,
|
|
115
|
-
jobs=True,
|
|
116
|
-
runtime=cfg_template.runtime,
|
|
117
|
-
paths_override=cfg_template.paths_override,
|
|
118
|
-
business_rules=cfg_template.business_rules,
|
|
119
|
-
business_rules_sql=cfg_template.business_rules_sql,
|
|
120
|
-
business_rules_combined=cfg_template.business_rules_combined,
|
|
121
|
-
)
|
|
104
|
+
cfg = replace(cfg_template, project_root=src, output_path=out, jobs=True)
|
|
122
105
|
now = time.time()
|
|
123
106
|
cfg_dump = json.dumps(scan_config_dump(cfg), sort_keys=True)
|
|
124
107
|
assert self._conn is not None
|
|
@@ -223,6 +206,11 @@ class CodeflowJobManager:
|
|
|
223
206
|
lw = LoadedWorkspace(root=cfg.project_root, cleanup_dir=None)
|
|
224
207
|
|
|
225
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()
|
|
226
214
|
run_scan(cfg, workspace=lw)
|
|
227
215
|
on_prog(90, "zip")
|
|
228
216
|
|