mdengine 0.11.0__tar.gz → 0.12.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.11.0 → mdengine-0.12.0}/PKG-INFO +79 -8
- {mdengine-0.11.0 → mdengine-0.12.0}/README.md +65 -7
- {mdengine-0.11.0 → mdengine-0.12.0}/pyproject.toml +14 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/__init__.py +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/cli/main.py +3 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/core/extractor.py +28 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/api_detector.py +115 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/entry_detector.py +2 -0
- mdengine-0.12.0/src/md_generator/codeflow/detectors/rails_detector.py +89 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/lang_dispatch.py +16 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/models/ir.py +7 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_csharp_adapter.py +70 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_go_adapter.py +58 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_java_adapter.py +120 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_kotlin_adapter.py +76 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_lua_adapter.py +54 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_php_adapter.py +65 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_python_adapter.py +100 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_ruby_adapter.py +70 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_rust_adapter.py +58 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_scala_adapter.py +71 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_swift_adapter.py +70 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/adapters/treesitter_zig_adapter.py +54 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/base.py +28 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/capability_registry.py +195 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/go_parser.py +6 -1
- mdengine-0.12.0/src/md_generator/codeflow/parsers/ir_enrich.py +117 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/java_parser.py +6 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/php_parser.py +6 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/python_parser.py +6 -1
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_common.py +149 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_csharp_parser.py +173 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_entry_helpers.py +29 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_go_parser.py +71 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_java_parser.py +242 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +6 -1
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_kotlin_parser.py +179 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_lua_parser.py +112 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_php_parser.py +71 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_python_parser.py +94 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_ruby_parser.py +229 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_rust_parser.py +159 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_scala_parser.py +143 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_swift_parser.py +171 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/treesitter_zig_parser.py +75 -0
- mdengine-0.12.0/src/md_generator/codeflow/parsers/unified_parser.py +119 -0
- mdengine-0.12.0/src/md_generator/db/adapters/elasticsearch_adapter.py +518 -0
- mdengine-0.12.0/src/md_generator/db/adapters/elasticsearch_json_adapter.py +293 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/factory.py +8 -0
- mdengine-0.12.0/src/md_generator/db/api/elasticsearch_upload.py +94 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/main.py +93 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/schemas.py +31 -3
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/settings.py +1 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/cli/main.py +18 -2
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/base_adapter.py +42 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_bundle.py +49 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_dependency_graph.py +257 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_export.py +717 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_format.py +230 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_json.py +33 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_markdown.py +694 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_normalize.py +212 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_operational_notes.py +178 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_output.py +51 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_query_classify.py +146 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_redaction.py +203 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_synthesis.py +225 -0
- mdengine-0.12.0/src/md_generator/db/core/elasticsearch_warnings.py +81 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/export_manifest.py +14 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/extractor.py +12 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/job_manager.py +51 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/markdown_writer.py +21 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/models.py +111 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/run_config.py +27 -2
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/dependency-graph.json +109 -2
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/registry.json +109 -3
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +27 -3
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +3 -2
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +3 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +1 -1
- mdengine-0.12.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-otel/SKILL.md +58 -0
- mdengine-0.12.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-otel/references/example.md +23 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +1 -1
- mdengine-0.12.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-sap/SKILL.md +70 -0
- mdengine-0.12.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-sap/references/example.md +42 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +1 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +2 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +7 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +30 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +2 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/generate.py +9 -1
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/routing.py +15 -2
- {mdengine-0.11.0 → mdengine-0.12.0}/src/mdengine.egg-info/PKG-INFO +79 -8
- {mdengine-0.11.0 → mdengine-0.12.0}/src/mdengine.egg-info/SOURCES.txt +48 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/mdengine.egg-info/requires.txt +13 -0
- mdengine-0.11.0/src/md_generator/codeflow/parsers/ir_enrich.py +0 -41
- mdengine-0.11.0/src/md_generator/codeflow/parsers/unified_parser.py +0 -31
- {mdengine-0.11.0 → mdengine-0.12.0}/LICENSE +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/setup.cfg +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/extractors.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/job_manager.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/config/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/core/cache_manager.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/core/run_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/html.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/html_unified.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/markdown.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/analysis.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/anomaly.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/clustering.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/embeddings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/enricher.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/hotpath.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/nl_query.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/relations.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/mcp/server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/rules/collector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/artifacts/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/artifacts/models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/artifacts/serialize.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/log_record.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/otel.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/telemetry_event.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/core/schema/validation.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/access_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/access_introspect.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/access_odbc.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/access_upload.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/cli_ops.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/link_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/distributed/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/distributed/merge.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/distributed/partition.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/distributed/worker_pool.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/engine_cli.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/governance/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/governance/audit.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/governance/classification.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/governance/lineage.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/governance/retention.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/aggregation/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/aggregation/aggregators.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/aggregation/metrics.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/aggregation/timeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_registry.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/cli/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/clustering/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/clustering/embeddings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/clustering/vectorizer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/default.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/preset_loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/presets/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/presets/generic.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/presets/json.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/presets/logback.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/presets/springboot.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/config/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/errors.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/execution_context.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/job_manager.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/lifecycle.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/pipeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/plugins.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/run_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/core/zip_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/cross_source.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/request_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/session_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/correlation/trace_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/documentation/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/documentation/incident_summary.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/documentation/service_report.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/documentation/troubleshooting.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/correlation.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/hash_generator.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/fingerprinting.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/grouping.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/incident_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incidents/severity.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incremental/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incremental/checkpoint.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incremental/engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/incremental/resume_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/archive_loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/batch_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/file_loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/ingestion/stream_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/intelligence/heuristics.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/linking/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/linking/link_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/mcp/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/mcp/server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/mcp/sse.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/entropy.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/filter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/number_normalizer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/path_normalizer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/pii_redactor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/token_normalizer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/json_line_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/level_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/logger_detector.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/multiline_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/parser_registry.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/regex_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/parser/timestamp_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/search/bm25_search.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/search/cli.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/search/hybrid_search.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/search/search_index.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/search/vector_search.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/service/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/service/service.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/kafka_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/redis_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/stdin_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/tail_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/streaming/websocket_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/timeline/causal_chain.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/timeline/ordering.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/timeline/timeline_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/timeline/timeline_models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/topology/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/topology/discovery.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/utils/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/utils/concurrency.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/utils/io.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/utils/regex.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/utils/time.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/visualization/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/assets_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/chunk_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/cluster_markdown.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/correlation_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/incident_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/markdown_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/log/writers/summary_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/cli/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/cli/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/otel_logs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/otel_metrics.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/otel_models.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/otel_parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/otel/otel_spans.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/runtime/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/runtime/execution_context.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/runtime/metrics.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/runtime/stage_engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/authorization/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/governance/classifier.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/lineage/builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/relationships/engine.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/semantics/entity_mapper.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/analyzer/validation/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/run.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/schemas.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/api/zip_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/cli/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/config/default.yaml +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/cache.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/errors.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/export_manifest.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/extractor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/features.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/job_manager.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/link_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/run_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/core/run_context.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/json_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/mermaid_export.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/graph/relations.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/entity_builder.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/slug.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/chunk_strategy.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/registry.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/writer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/entities/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/entities/kinds.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/entities/sap_object.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/abap.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/cds.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/ddic.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/orchestration/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/orchestration/pipeline.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/lexer.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/bapi/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/base.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/cds/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/ddic/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/discovery.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/idoc/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/odata/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/registry.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/rfc/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sap/parser/transport/parser.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/classifier_plugin.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/discovery.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/enricher_plugin.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/parser_plugin.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/plugin_protocol.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/stage_protocol.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/sdk/writer_plugin.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/query_options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/convert_impl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/md_flatten.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/text/xml_parse.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/options.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.11.0 → mdengine-0.12.0}/src/mdengine.egg-info/entry_points.txt +0 -0
- {mdengine-0.11.0 → mdengine-0.12.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.12.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
|
|
@@ -101,6 +101,7 @@ Requires-Dist: pymysql>=1.1.0; extra == "db"
|
|
|
101
101
|
Requires-Dist: pyodbc>=5.0.0; extra == "db"
|
|
102
102
|
Requires-Dist: oracledb>=2.0.0; extra == "db"
|
|
103
103
|
Requires-Dist: pymongo>=4.6.0; extra == "db"
|
|
104
|
+
Requires-Dist: elasticsearch>=8.0.0; extra == "db"
|
|
104
105
|
Requires-Dist: mermaid-py>=0.8.0; extra == "db"
|
|
105
106
|
Provides-Extra: graph
|
|
106
107
|
Requires-Dist: networkx>=3.2.0; extra == "graph"
|
|
@@ -126,6 +127,18 @@ Requires-Dist: tree-sitter>=0.21.0; extra == "codeflow-treesitter"
|
|
|
126
127
|
Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "codeflow-treesitter"
|
|
127
128
|
Requires-Dist: tree-sitter-typescript>=0.23.0; extra == "codeflow-treesitter"
|
|
128
129
|
Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "codeflow-treesitter"
|
|
130
|
+
Requires-Dist: tree-sitter-java>=0.23.0; extra == "codeflow-treesitter"
|
|
131
|
+
Requires-Dist: tree-sitter-python>=0.23.0; extra == "codeflow-treesitter"
|
|
132
|
+
Requires-Dist: tree-sitter-go>=0.23.0; extra == "codeflow-treesitter"
|
|
133
|
+
Requires-Dist: tree-sitter-php>=0.23.0; extra == "codeflow-treesitter"
|
|
134
|
+
Requires-Dist: tree-sitter-rust>=0.23.0; extra == "codeflow-treesitter"
|
|
135
|
+
Requires-Dist: tree-sitter-kotlin>=0.23.0; extra == "codeflow-treesitter"
|
|
136
|
+
Requires-Dist: tree-sitter-c-sharp>=0.23.0; extra == "codeflow-treesitter"
|
|
137
|
+
Requires-Dist: tree-sitter-swift>=0.7.2; extra == "codeflow-treesitter"
|
|
138
|
+
Requires-Dist: tree-sitter-ruby>=0.23.0; extra == "codeflow-treesitter"
|
|
139
|
+
Requires-Dist: tree-sitter-lua>=0.2.0; extra == "codeflow-treesitter"
|
|
140
|
+
Requires-Dist: tree-sitter-scala>=0.6.0; extra == "codeflow-treesitter"
|
|
141
|
+
Requires-Dist: tree-sitter-zig>=0.2.0; extra == "codeflow-treesitter"
|
|
129
142
|
Provides-Extra: codeflow-clang
|
|
130
143
|
Requires-Dist: clang>=16.0.0; extra == "codeflow-clang"
|
|
131
144
|
Provides-Extra: codeflow-semantic
|
|
@@ -223,7 +236,7 @@ Dynamic: license-file
|
|
|
223
236
|
|
|
224
237
|
# mdengine
|
|
225
238
|
|
|
226
|
-
Single Python distribution for converting **PDF**, **Word (.docx)**, **PowerPoint (.pptx)**, **Excel (.xlsx/.xlsm)**, **images** (OCR), **plain text / JSON / XML**, **ZIP archives**, **audio / video** (Whisper transcription → Markdown), **database metadata** (SQL + Mongo), **graphs** (Neo4j / NetworkX → Markdown), **OpenAPI** specs, **Playwright**-captured web pages (including SPAs), and **source code** (codeflow → architecture Markdown) into **Markdown** (and related assets). Install only the extras you need; everything imports under the **`md_generator`** package.
|
|
239
|
+
Single Python distribution for converting **PDF**, **Word (.docx)**, **PowerPoint (.pptx)**, **Excel (.xlsx/.xlsm)**, **images** (OCR), **plain text / JSON / XML**, **ZIP archives**, **audio / video** (Whisper transcription → Markdown), **database metadata** (SQL + Mongo), **graphs** (Neo4j / NetworkX → Markdown), **OpenAPI** specs, **Playwright**-captured web pages (including SPAs), **application logs** (plain, JSON, CSV, ZIP bundles → Markdown with optional clustering and semantic grouping), **OpenTelemetry** traces (**OTLP** JSON or protobuf → Markdown trace summaries; optional correlation with log exports via `otel_path`), **SAP artifacts** (ABAP, CDS, DDIC, OData, BAPI, IDoc, transport → AI-ready Markdown knowledge packs), and **source code** (codeflow → architecture Markdown) into **Markdown** (and related assets). Install only the extras you need; everything imports under the **`md_generator`** package.
|
|
227
240
|
|
|
228
241
|
- **PyPI name:** `mdengine` (import package: `md_generator`)
|
|
229
242
|
- **Source:** [github.com/vishal7090/md-generator](https://github.com/vishal7090/md-generator)
|
|
@@ -305,13 +318,15 @@ pip install "mdengine[all]"
|
|
|
305
318
|
| `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
|
|
306
319
|
| `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
|
|
307
320
|
| `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
|
|
308
|
-
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C
|
|
321
|
+
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
|
|
309
322
|
| `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
|
|
310
323
|
| `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
|
|
311
324
|
| `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
|
|
312
325
|
| `log-cluster` | Log pipeline **clustering** (scikit-learn) |
|
|
313
326
|
| `log-semantic` | Log pipeline **semantic** helpers (SentenceTransformers + scikit-learn; large) |
|
|
314
327
|
| `log-pretty` | Optional **loguru** for pretty console diagnostics during log conversion |
|
|
328
|
+
| `log-otel-proto` | **OTLP protobuf** ingest for **`md-otel`** and log/OTEL tooling (`opentelemetry-proto`, `protobuf`) |
|
|
329
|
+
| `sap` | **SAP artifacts → Markdown** (ABAP, CDS, DDIC, OData, BAPI, IDoc, transport): PyYAML, NetworkX, Pydantic |
|
|
315
330
|
| `api` | FastAPI, uvicorn, httpx, pydantic-settings |
|
|
316
331
|
| `mcp` | MCP servers (`mcp`, `fastmcp` where used) |
|
|
317
332
|
| `graph` | **Graph → Markdown** (Neo4j Bolt + NetworkX GraphML/GML): `networkx`, `neo4j`, `pyyaml` |
|
|
@@ -386,7 +401,11 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
386
401
|
| `md-log` | `md_generator.log.cli.main:main` | `pip install "mdengine[log]"` then `md-log --config log.yaml` (or `mdengine log-to-md …`) |
|
|
387
402
|
| `md-log-api` | `md_generator.log.api.run:main` | FastAPI on port **8012** (`LOG_TO_MD_PORT`); set a different port if **`md-graph-api`** or **`md-video-api`** already uses **8012** |
|
|
388
403
|
| `md-log-mcp` | `md_generator.log.api.mcp_server:main` | Standalone MCP (`stdio` \| `sse` \| `streamable-http`) |
|
|
389
|
-
| `
|
|
404
|
+
| `md-otel` | `md_generator.otel.cli.main:main` | `pip install "mdengine[log-otel-proto]"` then `md-otel --input traces.json --output ./otel-docs` (or `mdengine otel-to-md …`; add **`--protobuf`** for OTLP binary) |
|
|
405
|
+
| `md-sap` | `md_generator.sap.cli.main:main` | `pip install "mdengine[sap]"` then `md-sap ./sap-source --output ./sap-out --graph --chunk` (or `mdengine sap-to-md …`) |
|
|
406
|
+
| `md-sap-api` | `md_generator.sap.api.run:main` | FastAPI on port **8020** (`SAP_TO_MD_PORT`): `POST /sap-to-md/run`, `POST /sap-to-md/job`, `GET /sap-to-md/job/{id}/download` |
|
|
407
|
+
| `md-sap-mcp` | `md_generator.sap.api.mcp_server:main` | Runs the same FastAPI app as **`md-sap-api`** (MCP mount when enabled in app) |
|
|
408
|
+
| `mdengine` | `md_generator.engine_cli:main` | `mdengine ai assist …`, `mdengine ai export …`, `mdengine skill build …`, `mdengine db-to-md …`, `mdengine log-to-md …`, `mdengine otel-to-md …`, `mdengine sap-to-md …`, `mdengine graph-to-md …`, `mdengine openapi-to-md generate …`, `mdengine codeflow-to-md scan …` |
|
|
390
409
|
|
|
391
410
|
**openapi-to-md (`md-openapi`):** OpenAPI **3.x** is parsed directly; **Swagger 2.0** (`swagger: "2.0"`) documents are **converted in-process** to OpenAPI 3.0.3 (deterministic, in-repo converter) before `$ref` resolution. Edge-heavy specs (unusual OAuth2 flows, vendor extensions) may still need fixes after conversion.
|
|
392
411
|
|
|
@@ -406,6 +425,14 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
406
425
|
|
|
407
426
|
**db-to-md API SQLite upload:** **`POST /db-to-md/run/sqlite`** — `multipart/form-data` with field **`file`** (the `.sqlite` / `.db` bytes; must start with the standard `SQLite format 3` header) and optional **`config`** (JSON string with the same shape as a normal run body minus `database`: `schema`, `output`, `features`, `execution`, `limits`, `erd`). Returns the metadata ZIP immediately. **`POST /db-to-md/job/sqlite`** — same form fields; saves the file under the job workspace and runs the existing job pipeline (`GET /db-to-md/job/{id}/download` when complete). Upload size cap: env **`DB_TO_MD_MAX_SQLITE_UPLOAD_MB`** (default **256**). Large ZIPs may still require the async job path if they exceed **`DB_TO_MD_MAX_SYNC_ZIP_MB`** on the sync upload route.
|
|
408
427
|
|
|
428
|
+
**db-to-md Elasticsearch / OpenSearch:** set **`database.type: elasticsearch`** and **`database.uri`** to the cluster URL (for example `https://localhost:9200`). Install **`mdengine[db]`** (includes the **`elasticsearch`** Python client). Feature flags: **`elasticsearch_indices`**, **`elasticsearch_data_streams`**, **`elasticsearch_component_templates`**, **`elasticsearch_index_templates`**, **`elasticsearch_ingest_pipelines`**, **`elasticsearch_ilm_policies`**, **`elasticsearch_slm_policies`**, **`elasticsearch_field_caps`**, **`elasticsearch_snapshot_repositories`**, **`elasticsearch_search_templates`**, **`elasticsearch_search_architecture`**, **`elasticsearch_search_dependency_graph`**. Output under **`elasticsearch/`** (indices, data streams, templates, pipelines, ILM, SLM, snapshots, search templates, **`alias_graph.md`**, **`search_architecture.md`**, **`search_dependency_graph.md`**). Index docs add **`## Mapping Summary`** (field counts, nested/vector/semantic totals) and **`## Operational Notes`** (health, replicas, vector-field signals). Search templates add **`## Query type`** using a vector-aware taxonomy (full text, aggregation, suggest, vector, semantic, hybrid). **`search_architecture.md`** narrates the cluster lifecycle (ingestion → indexing → retention → search → backup → alias routing) with aggregate mapping metrics, query-type counts, vector/AI readiness, and an **OpenSearch Compatibility** matrix when **`limits.opensearch: true`** or export probes detect API gaps. **`search_dependency_graph.md`** links templates to indices, aliases, and pipelines (heuristic); enable with **`elasticsearch_search_dependency_graph`** or **`limits.emit_dependency_graph: true`** (requires **`elasticsearch_search_architecture`**). Snapshot limits: **`limits.snapshot_repository_types`** (optional type filter), **`limits.max_snapshot_repositories`**. Search-template limits: **`limits.search_templates_langs`** (default **`mustache`**), **`limits.max_template_source_chars`** (markdown truncation). Presentation: **`output.elasticsearch_mapping_mode`** (`flattened` \| `summarized` \| `raw`), **`output.elasticsearch_include_raw_json`**, **`output.elasticsearch_analyzer_format`** (`chain` \| `json` \| `both`), **`output.max_json_block_chars`** (default **32000**; **`0`** = unlimited JSON blocks). Truncation and other export issues appear in per-doc **`## Export Warnings`** and **`export_manifest.json`** **`warnings`** when present. OpenSearch: set **`limits.opensearch: true`** to use ISM instead of ILM. Example config: [`example/db/elasticsearch.example.yaml`](example/db/elasticsearch.example.yaml). CLI: **`--type elasticsearch`**, **`--index-pattern`**, **`--list-indices`**. Security flags **`elasticsearch_security_roles`**, **`elasticsearch_security_users`**, **`elasticsearch_security_api_keys`** are **reserved**: when included they write deterministic placeholder docs under **`elasticsearch/security/`** only (no live `_security` API calls, no secrets). Optional **`security.redact_sensitive_values: true`** redacts matching keys in pipelines, templates, snapshots, and settings (pattern names only in manifest **`redaction`** audit block).
|
|
429
|
+
|
|
430
|
+
**db-to-md API Elasticsearch upload:** **`POST /db-to-md/run/elasticsearch`** — `multipart/form-data` with **`file`** (ZIP of JSON metadata: **`mappings/`**, **`settings/`**, optional **`pipelines/`**, **`templates/`**, **`ilm/`**, etc.) and optional **`config`** JSON (`output`, `features`, `limits`). **`POST /db-to-md/job/elasticsearch`** for async jobs. Cap: **`DB_TO_MD_MAX_ELASTICSEARCH_UPLOAD_MB`** (default **64**).
|
|
431
|
+
|
|
432
|
+
**sap-to-md (`md-sap`):** parses **ABAP**, **CDS**, **DDIC** exports, **OData** metadata, **BAPI**, **IDoc**, and transport artifacts into chunked Markdown knowledge packs. Optional **`--include-lineage`**, **`--include-governance`**, **`--graph`**, **`--chunk`**. Library: [`md_generator/sap/`](src/md_generator/sap/). Deeper design: [`sap-to-md/README.md`](sap-to-md/README.md).
|
|
433
|
+
|
|
434
|
+
**otel-to-md (`md-otel`):** reads **OTLP** trace exports (**JSON** or **protobuf** with **`log-otel-proto`**) and writes **`trace.md`** (span list). No separate HTTP API entry point; use **`md-otel`** or correlate traces with log exports via **`input.otel_path`** in log YAML. Library: [`md_generator/otel/`](src/md_generator/otel/).
|
|
435
|
+
|
|
409
436
|
**graph-to-md (Neo4j + NetworkX):** library lives under [`md_generator/graph/`](src/md_generator/graph/). **Sources:** **`networkx`** (GraphML/GML via `graph.graph_file` or `--graph-file`) or **`neo4j`** (`graph.uri`, `graph.user`, `graph.password`, optional `graph.database` for `session(database=…)`). **Output layout:** by default **`output.combine_markdown: true`** writes **`nodes.md`**, **`relationship.md`**, and **`graph_summary.md`** (summary plus embedded nodes and relationships). Set **`combine_markdown: false`** or CLI **`--individual` / `--markdown-layout individual`** for per-entity files under **`nodes/`** and **`relationships/`**. **Diagrams:** **`viz.mermaid: true`** (default) writes **`graph/graph.mmd`** and embeds a fenced Mermaid block in the export **`README.md`** (no Graphviz required). **`viz.enabled: true`** or CLI **`--viz`** also writes **`graph/graph.dot`** and runs **`dot`** for PNG/SVG/PDF when Graphviz is on `PATH` (or **`GRAPHVIZ_DOT`**). CLI **`--no-mermaid`** disables Mermaid; **`--depth`**, **`--start-node`**, **`--max-nodes`**, **`--max-edges`** bound traversal. Packaged defaults: [`src/md_generator/graph/config/default.yaml`](src/md_generator/graph/config/default.yaml). Tests: **`graph-to-md/tests/`**; API image: [`graph-to-md/Dockerfile.api`](graph-to-md/Dockerfile.api).
|
|
410
437
|
|
|
411
438
|
Every command accepts **`-h` / `--help`** for full flags (artifact layout, OCR, ZIP options, etc.).
|
|
@@ -430,6 +457,8 @@ pip install "mdengine[graph]" && md-graph --source neo4j --uri neo4j://localhost
|
|
|
430
457
|
pip install "mdengine[playwright]" && playwright install chromium && md-playwright https://example.com/app ./spa-out
|
|
431
458
|
pip install "mdengine[openapi]" && md-openapi generate --file openapi.yaml --output ./openapi-md
|
|
432
459
|
pip install "mdengine[log]" && md-log --config log.yaml
|
|
460
|
+
pip install "mdengine[log-otel-proto]" && md-otel --input otlp-traces.json --output ./otel-docs
|
|
461
|
+
pip install "mdengine[sap]" && md-sap ./sap-source --output ./sap-out --graph --chunk
|
|
433
462
|
md-codeflow scan ./src --output ./cf-out --lang python
|
|
434
463
|
```
|
|
435
464
|
|
|
@@ -706,6 +735,44 @@ cfg = load_log_run_config(Path("log-export.yaml"))
|
|
|
706
735
|
extract_to_markdown(cfg)
|
|
707
736
|
```
|
|
708
737
|
|
|
738
|
+
Set **`input.otel_path`** in the YAML (or API body) to a directory of OTLP JSON exports so the log pipeline can **correlate** log lines with spans. Install **`mdengine[log-otel-proto]`** when ingesting protobuf OTLP via **`md-otel`**.
|
|
739
|
+
|
|
740
|
+
### OpenTelemetry (otel-to-md)
|
|
741
|
+
|
|
742
|
+
```python
|
|
743
|
+
from pathlib import Path
|
|
744
|
+
|
|
745
|
+
from md_generator.otel.otel_parser import load_otlp_json
|
|
746
|
+
from md_generator.otel.otel_spans import parse_otlp_spans
|
|
747
|
+
|
|
748
|
+
doc = load_otlp_json(Path("otlp-traces.json"))
|
|
749
|
+
spans = parse_otlp_spans(doc)
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
CLI (writes **`trace.md`** under **`--output`**):
|
|
753
|
+
|
|
754
|
+
```bash
|
|
755
|
+
pip install "mdengine[log-otel-proto]"
|
|
756
|
+
md-otel --input otlp-traces.json --output ./otel-docs
|
|
757
|
+
md-otel --input export.pb --output ./otel-docs --protobuf
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
Shim: [`otel-to-md/converter.py`](otel-to-md/converter.py) delegates to **`md-otel`**.
|
|
761
|
+
|
|
762
|
+
### SAP artifacts (sap-to-md)
|
|
763
|
+
|
|
764
|
+
```python
|
|
765
|
+
from pathlib import Path
|
|
766
|
+
|
|
767
|
+
from md_generator.sap.core.extractor import extract_to_markdown
|
|
768
|
+
from md_generator.sap.core.run_config import load_run_config
|
|
769
|
+
|
|
770
|
+
cfg = load_run_config(Path("sap-export.yaml"))
|
|
771
|
+
extract_to_markdown(cfg)
|
|
772
|
+
```
|
|
773
|
+
|
|
774
|
+
Or pass paths on the CLI: **`md-sap ./abap ./cds --output ./sap-out --include-lineage --include-governance`**. See [`sap-to-md/README.md`](sap-to-md/README.md) for API routes and architecture notes.
|
|
775
|
+
|
|
709
776
|
### Codeflow (static call graphs)
|
|
710
777
|
|
|
711
778
|
```python
|
|
@@ -836,7 +903,7 @@ Equivalent modules: `python -m md_generator.media.audio.api.mcp_server`, `python
|
|
|
836
903
|
|
|
837
904
|
### Thin shims (repo clone)
|
|
838
905
|
|
|
839
|
-
[`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/). [`log-to-md/converter.py`](log-to-md/converter.py) delegates to `md-log`; tests under [`log-to-md/tests/`](log-to-md/tests/). [`codeflow-to-md/converter.py`](codeflow-to-md/converter.py) invokes the same CLI entrypoint as `md-codeflow` / `codeflow`; tests under [`codeflow-to-md/tests/`](codeflow-to-md/tests/). [`url-to-md/converter.py`](url-to-md/converter.py) matches `md-url`; tests under [`url-to-md/tests/`](url-to-md/tests/). [`playwright-to-md/tests/`](playwright-to-md/tests/) cover the Playwright pipeline (no root `converter.py` shim required).
|
|
906
|
+
[`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/). [`log-to-md/converter.py`](log-to-md/converter.py) delegates to `md-log`; tests under [`log-to-md/tests/`](log-to-md/tests/) (including OTLP fixtures under `log-to-md/tests/fixtures/otel/`). [`otel-to-md/converter.py`](otel-to-md/converter.py) delegates to `md-otel`. [`sap-to-md/converter.py`](sap-to-md/converter.py) delegates to `md-sap`; tests under [`sap-to-md/tests/`](sap-to-md/tests/); module README: [`sap-to-md/README.md`](sap-to-md/README.md). [`codeflow-to-md/converter.py`](codeflow-to-md/converter.py) invokes the same CLI entrypoint as `md-codeflow` / `codeflow`; tests under [`codeflow-to-md/tests/`](codeflow-to-md/tests/). [`url-to-md/converter.py`](url-to-md/converter.py) matches `md-url`; tests under [`url-to-md/tests/`](url-to-md/tests/). [`playwright-to-md/tests/`](playwright-to-md/tests/) cover the Playwright pipeline (no root `converter.py` shim required).
|
|
840
907
|
|
|
841
908
|
---
|
|
842
909
|
|
|
@@ -874,6 +941,7 @@ Install `mdengine[api]` plus the format extra(s), then run the **`app`** object
|
|
|
874
941
|
| YouTube | `md_generator.media.youtube.api.main:create_app` (use **`--factory`**) or `…main:app` | `youtube`, `api`, `mcp` |
|
|
875
942
|
| Codeflow (workspace scans) | `md_generator.codeflow.api.main:app` | `codeflow`, `api`, `mcp` |
|
|
876
943
|
| Log files → Markdown | `md_generator.log.api.main:app` | `log`, `api`, `mcp` |
|
|
944
|
+
| SAP artifacts | `md_generator.sap.api.main:app` | `sap`, `api` |
|
|
877
945
|
|
|
878
946
|
Examples (ports are **illustrative** so several services can run together; each `md-*-api` / `run` module has its own **default** — set `*_PORT` / `*_API_PORT` env vars to match your layout):
|
|
879
947
|
|
|
@@ -885,6 +953,7 @@ uvicorn md_generator.url.api.main:app --host 127.0.0.1 --port 8017
|
|
|
885
953
|
uvicorn md_generator.db.api.main:app --host 127.0.0.1 --port 8010
|
|
886
954
|
uvicorn md_generator.playwright.api.main:app --host 127.0.0.1 --port 8014
|
|
887
955
|
uvicorn md_generator.graph.api.main:app --host 127.0.0.1 --port 8020
|
|
956
|
+
uvicorn md_generator.sap.api.main:app --host 127.0.0.1 --port 8021
|
|
888
957
|
uvicorn md_generator.openapi.api.main:app --host 127.0.0.1 --port 8015
|
|
889
958
|
uvicorn md_generator.codeflow.api.main:app --host 127.0.0.1 --port 8016
|
|
890
959
|
uvicorn md_generator.log.api.main:app --host 127.0.0.1 --port 8018
|
|
@@ -893,7 +962,7 @@ uvicorn md_generator.media.video.api.main:create_app --factory --host 127.0.0.1
|
|
|
893
962
|
uvicorn md_generator.media.youtube.api.main:create_app --factory --host 127.0.0.1 --port 8013
|
|
894
963
|
```
|
|
895
964
|
|
|
896
|
-
**Port note:** **`md-graph-api`**, **`md-video-api`**, and **`md-log-api`** all default to **8012** in their respective `run.py` modules. Run only one on that port, or set **`GRAPH_TO_MD_PORT`**, **`MD_VIDEO_API_PORT`**, and **`LOG_TO_MD_PORT`** so each process listens on a unique port. **`md-db-api`** defaults to **8010** (
|
|
965
|
+
**Port note:** **`md-graph-api`**, **`md-video-api`**, and **`md-log-api`** all default to **8012** in their respective `run.py` modules. Run only one on that port, or set **`GRAPH_TO_MD_PORT`**, **`MD_VIDEO_API_PORT`**, and **`LOG_TO_MD_PORT`** so each process listens on a unique port. **`md-db-api`** defaults to **8010**. **`md-sap-api`** defaults to **8020** (`SAP_TO_MD_PORT`) — the graph Uvicorn example above uses **8020** on purpose as an illustration; use **8021** (or another port) when running **both** graph and SAP APIs locally. **`md-openapi-api`** defaults to **8015** (`OPENAPI_TO_MD_PORT`). **`md-youtube-api`** defaults to **8013**; **`md-playwright-api`** / **`PLAYWRIGHT_TO_MD_API_PORT`** default to **8014**. **`md-codeflow-api`** defaults to **8016** (`CODEFLOW_TO_MD_PORT`). **`md-otel`** has **no** bundled HTTP server (CLI only).
|
|
897
966
|
|
|
898
967
|
### MCP over HTTP on the same server
|
|
899
968
|
|
|
@@ -918,6 +987,7 @@ Prefixes differ per service (often read from a `.env` file next to the process):
|
|
|
918
987
|
| OpenAPI → Markdown | `OPENAPI_TO_MD_` | `OPENAPI_TO_MD_CORS_ORIGINS`, `OPENAPI_TO_MD_MAX_SYNC_ZIP_MB`, `OPENAPI_TO_MD_HOST`, `OPENAPI_TO_MD_PORT` (default **8015**) |
|
|
919
988
|
| Codeflow API | `CODEFLOW_TO_MD_` / `CODEFLOW_` | `CODEFLOW_TO_MD_HOST`, `CODEFLOW_TO_MD_PORT` (default **8016**); in-app limits: `CODEFLOW_MAX_UPLOAD_ZIP_MB`, `CODEFLOW_MAX_SYNC_ZIP_MB`, `CODEFLOW_JOB_WORKSPACE_ROOT`, `CODEFLOW_SQLITE_PATH`, CORS via `CODEFLOW_CORS` |
|
|
920
989
|
| Log API | `LOG_TO_MD_` | `LOG_TO_MD_HOST`, `LOG_TO_MD_PORT` (default **8012** — change if **graph** or **video** API uses that port), `LOG_TO_MD_CORS_ORIGINS`, `LOG_TO_MD_MAX_SYNC_ZIP_MB`, `LOG_TO_MD_MAX_LOG_UPLOAD_MB`, workspace / SQLite paths |
|
|
990
|
+
| SAP API | `SAP_TO_MD_` | `SAP_TO_MD_HOST`, `SAP_TO_MD_PORT` (default **8020**), `SAP_TO_MD_CORS_ORIGINS`, `SAP_TO_MD_MAX_SYNC_ZIP_MB`, `SAP_TO_MD_JOB_SQLITE_PATH`, `SAP_TO_MD_JOB_WORKSPACE_ROOT` |
|
|
921
991
|
| Audio API | `MD_AUDIO_` | `MD_AUDIO_MAX_UPLOAD_MB`, `MD_AUDIO_MAX_SYNC_UPLOAD_MB`, `MD_AUDIO_JOB_TTL_SECONDS`, `MD_AUDIO_TEMP_DIR`, `MD_AUDIO_CORS_ORIGINS`, `MD_AUDIO_API_HOST`, `MD_AUDIO_API_PORT` |
|
|
922
992
|
| Video API | `MD_VIDEO_` | Same pattern as audio with `MD_VIDEO_*` (defaults: larger upload/sync caps, port **8012**) |
|
|
923
993
|
| YouTube API | `MD_YOUTUBE_` | `MD_YOUTUBE_JOB_TTL_SECONDS`, `MD_YOUTUBE_TEMP_DIR`, `MD_YOUTUBE_CORS_ORIGINS`, `MD_YOUTUBE_API_HOST`, `MD_YOUTUBE_API_PORT` (default **8013**); optional `MD_YOUTUBE_YTDLP` path for audio fallback |
|
|
@@ -953,6 +1023,7 @@ Two usage patterns:
|
|
|
953
1023
|
| OpenAPI → Markdown | `md-openapi-mcp` or `python -m md_generator.openapi.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
|
|
954
1024
|
| Codeflow | `md-codeflow-mcp` or `python -m md_generator.codeflow.api.mcp_server` — **stdio** MCP (see module for details) |
|
|
955
1025
|
| Log files | `md-log-mcp` or `python -m md_generator.log.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
|
|
1026
|
+
| SAP | `md-sap-mcp` or `md-sap-api` — FastAPI app (same as HTTP API; dedicated MCP tools when mounted in app) |
|
|
956
1027
|
|
|
957
1028
|
**Word** and **XLSX** also ship a small runner script in the repo:
|
|
958
1029
|
|
|
@@ -1081,7 +1152,7 @@ pip install -e ".[dev,all]" # or a smaller subset of extras
|
|
|
1081
1152
|
python -m pytest
|
|
1082
1153
|
```
|
|
1083
1154
|
|
|
1084
|
-
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), plus **`url-to-md/tests/`**, **`playwright-to-md/tests/`**, **`youtube-to-md/tests/`**, **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, **`codeflow-to-md/tests/`**, **`log-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.
|
|
1155
|
+
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), plus **`url-to-md/tests/`**, **`playwright-to-md/tests/`**, **`youtube-to-md/tests/`**, **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, **`codeflow-to-md/tests/`**, **`log-to-md/tests/`**, **`sap-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.
|
|
1085
1156
|
|
|
1086
1157
|
**Docs site (maintainers):** install **`mdengine[docs]`**, then build or serve the MkDocs project from the repo root (`mkdocs.yml`). The published site URL is listed under **Documentation** in `[project.urls]` on PyPI ([GitHub Pages build](https://vishal7090.github.io/md-generator/)).
|
|
1087
1158
|
|
|
@@ -1118,7 +1189,7 @@ python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-ou
|
|
|
1118
1189
|
| `docs/` | **MkDocs** source (module guides, `index.md`); build with **`mdengine[docs]`** |
|
|
1119
1190
|
| `mkdocs.yml` | MkDocs configuration |
|
|
1120
1191
|
| `CODE_OF_CONDUCT.md` | [Contributor Covenant](https://www.contributor-covenant.org/) 2.1 |
|
|
1121
|
-
| `src/md_generator/` | **Library source** (all formats + `api` subpackages); **audio/video** under [`media
|
|
1192
|
+
| `src/md_generator/` | **Library source** (all formats + `api` subpackages); **audio/video** under [`media/`](src/md_generator/media/); **logs** [`log/`](src/md_generator/log/), **OTEL** [`otel/`](src/md_generator/otel/), **SAP** [`sap/`](src/md_generator/sap/), **graphs** [`graph/`](src/md_generator/graph/) |
|
|
1122
1193
|
| `pyproject.toml` | Packaging, extras, CLI entry points, pytest |
|
|
1123
1194
|
| `ai/` | **Distributable AI skills** (`SKILL.md` trees, `registry.json`, `dependency-graph.json`); regenerate with `PYTHONPATH=src python -m md_generator.tools.skill_builder` or **`mdengine skill build`** (after `pip install -e .`) |
|
|
1124
1195
|
| `src/md_generator/tools/skill_builder/` | **Skill generator** — scans `src/md_generator` and `pyproject.toml` |
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# mdengine
|
|
2
2
|
|
|
3
|
-
Single Python distribution for converting **PDF**, **Word (.docx)**, **PowerPoint (.pptx)**, **Excel (.xlsx/.xlsm)**, **images** (OCR), **plain text / JSON / XML**, **ZIP archives**, **audio / video** (Whisper transcription → Markdown), **database metadata** (SQL + Mongo), **graphs** (Neo4j / NetworkX → Markdown), **OpenAPI** specs, **Playwright**-captured web pages (including SPAs), and **source code** (codeflow → architecture Markdown) into **Markdown** (and related assets). Install only the extras you need; everything imports under the **`md_generator`** package.
|
|
3
|
+
Single Python distribution for converting **PDF**, **Word (.docx)**, **PowerPoint (.pptx)**, **Excel (.xlsx/.xlsm)**, **images** (OCR), **plain text / JSON / XML**, **ZIP archives**, **audio / video** (Whisper transcription → Markdown), **database metadata** (SQL + Mongo), **graphs** (Neo4j / NetworkX → Markdown), **OpenAPI** specs, **Playwright**-captured web pages (including SPAs), **application logs** (plain, JSON, CSV, ZIP bundles → Markdown with optional clustering and semantic grouping), **OpenTelemetry** traces (**OTLP** JSON or protobuf → Markdown trace summaries; optional correlation with log exports via `otel_path`), **SAP artifacts** (ABAP, CDS, DDIC, OData, BAPI, IDoc, transport → AI-ready Markdown knowledge packs), and **source code** (codeflow → architecture Markdown) into **Markdown** (and related assets). Install only the extras you need; everything imports under the **`md_generator`** package.
|
|
4
4
|
|
|
5
5
|
- **PyPI name:** `mdengine` (import package: `md_generator`)
|
|
6
6
|
- **Source:** [github.com/vishal7090/md-generator](https://github.com/vishal7090/md-generator)
|
|
@@ -82,13 +82,15 @@ pip install "mdengine[all]"
|
|
|
82
82
|
| `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
|
|
83
83
|
| `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
|
|
84
84
|
| `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
|
|
85
|
-
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C
|
|
85
|
+
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
|
|
86
86
|
| `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
|
|
87
87
|
| `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
|
|
88
88
|
| `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
|
|
89
89
|
| `log-cluster` | Log pipeline **clustering** (scikit-learn) |
|
|
90
90
|
| `log-semantic` | Log pipeline **semantic** helpers (SentenceTransformers + scikit-learn; large) |
|
|
91
91
|
| `log-pretty` | Optional **loguru** for pretty console diagnostics during log conversion |
|
|
92
|
+
| `log-otel-proto` | **OTLP protobuf** ingest for **`md-otel`** and log/OTEL tooling (`opentelemetry-proto`, `protobuf`) |
|
|
93
|
+
| `sap` | **SAP artifacts → Markdown** (ABAP, CDS, DDIC, OData, BAPI, IDoc, transport): PyYAML, NetworkX, Pydantic |
|
|
92
94
|
| `api` | FastAPI, uvicorn, httpx, pydantic-settings |
|
|
93
95
|
| `mcp` | MCP servers (`mcp`, `fastmcp` where used) |
|
|
94
96
|
| `graph` | **Graph → Markdown** (Neo4j Bolt + NetworkX GraphML/GML): `networkx`, `neo4j`, `pyyaml` |
|
|
@@ -163,7 +165,11 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
163
165
|
| `md-log` | `md_generator.log.cli.main:main` | `pip install "mdengine[log]"` then `md-log --config log.yaml` (or `mdengine log-to-md …`) |
|
|
164
166
|
| `md-log-api` | `md_generator.log.api.run:main` | FastAPI on port **8012** (`LOG_TO_MD_PORT`); set a different port if **`md-graph-api`** or **`md-video-api`** already uses **8012** |
|
|
165
167
|
| `md-log-mcp` | `md_generator.log.api.mcp_server:main` | Standalone MCP (`stdio` \| `sse` \| `streamable-http`) |
|
|
166
|
-
| `
|
|
168
|
+
| `md-otel` | `md_generator.otel.cli.main:main` | `pip install "mdengine[log-otel-proto]"` then `md-otel --input traces.json --output ./otel-docs` (or `mdengine otel-to-md …`; add **`--protobuf`** for OTLP binary) |
|
|
169
|
+
| `md-sap` | `md_generator.sap.cli.main:main` | `pip install "mdengine[sap]"` then `md-sap ./sap-source --output ./sap-out --graph --chunk` (or `mdengine sap-to-md …`) |
|
|
170
|
+
| `md-sap-api` | `md_generator.sap.api.run:main` | FastAPI on port **8020** (`SAP_TO_MD_PORT`): `POST /sap-to-md/run`, `POST /sap-to-md/job`, `GET /sap-to-md/job/{id}/download` |
|
|
171
|
+
| `md-sap-mcp` | `md_generator.sap.api.mcp_server:main` | Runs the same FastAPI app as **`md-sap-api`** (MCP mount when enabled in app) |
|
|
172
|
+
| `mdengine` | `md_generator.engine_cli:main` | `mdengine ai assist …`, `mdengine ai export …`, `mdengine skill build …`, `mdengine db-to-md …`, `mdengine log-to-md …`, `mdengine otel-to-md …`, `mdengine sap-to-md …`, `mdengine graph-to-md …`, `mdengine openapi-to-md generate …`, `mdengine codeflow-to-md scan …` |
|
|
167
173
|
|
|
168
174
|
**openapi-to-md (`md-openapi`):** OpenAPI **3.x** is parsed directly; **Swagger 2.0** (`swagger: "2.0"`) documents are **converted in-process** to OpenAPI 3.0.3 (deterministic, in-repo converter) before `$ref` resolution. Edge-heavy specs (unusual OAuth2 flows, vendor extensions) may still need fixes after conversion.
|
|
169
175
|
|
|
@@ -183,6 +189,14 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
183
189
|
|
|
184
190
|
**db-to-md API SQLite upload:** **`POST /db-to-md/run/sqlite`** — `multipart/form-data` with field **`file`** (the `.sqlite` / `.db` bytes; must start with the standard `SQLite format 3` header) and optional **`config`** (JSON string with the same shape as a normal run body minus `database`: `schema`, `output`, `features`, `execution`, `limits`, `erd`). Returns the metadata ZIP immediately. **`POST /db-to-md/job/sqlite`** — same form fields; saves the file under the job workspace and runs the existing job pipeline (`GET /db-to-md/job/{id}/download` when complete). Upload size cap: env **`DB_TO_MD_MAX_SQLITE_UPLOAD_MB`** (default **256**). Large ZIPs may still require the async job path if they exceed **`DB_TO_MD_MAX_SYNC_ZIP_MB`** on the sync upload route.
|
|
185
191
|
|
|
192
|
+
**db-to-md Elasticsearch / OpenSearch:** set **`database.type: elasticsearch`** and **`database.uri`** to the cluster URL (for example `https://localhost:9200`). Install **`mdengine[db]`** (includes the **`elasticsearch`** Python client). Feature flags: **`elasticsearch_indices`**, **`elasticsearch_data_streams`**, **`elasticsearch_component_templates`**, **`elasticsearch_index_templates`**, **`elasticsearch_ingest_pipelines`**, **`elasticsearch_ilm_policies`**, **`elasticsearch_slm_policies`**, **`elasticsearch_field_caps`**, **`elasticsearch_snapshot_repositories`**, **`elasticsearch_search_templates`**, **`elasticsearch_search_architecture`**, **`elasticsearch_search_dependency_graph`**. Output under **`elasticsearch/`** (indices, data streams, templates, pipelines, ILM, SLM, snapshots, search templates, **`alias_graph.md`**, **`search_architecture.md`**, **`search_dependency_graph.md`**). Index docs add **`## Mapping Summary`** (field counts, nested/vector/semantic totals) and **`## Operational Notes`** (health, replicas, vector-field signals). Search templates add **`## Query type`** using a vector-aware taxonomy (full text, aggregation, suggest, vector, semantic, hybrid). **`search_architecture.md`** narrates the cluster lifecycle (ingestion → indexing → retention → search → backup → alias routing) with aggregate mapping metrics, query-type counts, vector/AI readiness, and an **OpenSearch Compatibility** matrix when **`limits.opensearch: true`** or export probes detect API gaps. **`search_dependency_graph.md`** links templates to indices, aliases, and pipelines (heuristic); enable with **`elasticsearch_search_dependency_graph`** or **`limits.emit_dependency_graph: true`** (requires **`elasticsearch_search_architecture`**). Snapshot limits: **`limits.snapshot_repository_types`** (optional type filter), **`limits.max_snapshot_repositories`**. Search-template limits: **`limits.search_templates_langs`** (default **`mustache`**), **`limits.max_template_source_chars`** (markdown truncation). Presentation: **`output.elasticsearch_mapping_mode`** (`flattened` \| `summarized` \| `raw`), **`output.elasticsearch_include_raw_json`**, **`output.elasticsearch_analyzer_format`** (`chain` \| `json` \| `both`), **`output.max_json_block_chars`** (default **32000**; **`0`** = unlimited JSON blocks). Truncation and other export issues appear in per-doc **`## Export Warnings`** and **`export_manifest.json`** **`warnings`** when present. OpenSearch: set **`limits.opensearch: true`** to use ISM instead of ILM. Example config: [`example/db/elasticsearch.example.yaml`](example/db/elasticsearch.example.yaml). CLI: **`--type elasticsearch`**, **`--index-pattern`**, **`--list-indices`**. Security flags **`elasticsearch_security_roles`**, **`elasticsearch_security_users`**, **`elasticsearch_security_api_keys`** are **reserved**: when included they write deterministic placeholder docs under **`elasticsearch/security/`** only (no live `_security` API calls, no secrets). Optional **`security.redact_sensitive_values: true`** redacts matching keys in pipelines, templates, snapshots, and settings (pattern names only in manifest **`redaction`** audit block).
|
|
193
|
+
|
|
194
|
+
**db-to-md API Elasticsearch upload:** **`POST /db-to-md/run/elasticsearch`** — `multipart/form-data` with **`file`** (ZIP of JSON metadata: **`mappings/`**, **`settings/`**, optional **`pipelines/`**, **`templates/`**, **`ilm/`**, etc.) and optional **`config`** JSON (`output`, `features`, `limits`). **`POST /db-to-md/job/elasticsearch`** for async jobs. Cap: **`DB_TO_MD_MAX_ELASTICSEARCH_UPLOAD_MB`** (default **64**).
|
|
195
|
+
|
|
196
|
+
**sap-to-md (`md-sap`):** parses **ABAP**, **CDS**, **DDIC** exports, **OData** metadata, **BAPI**, **IDoc**, and transport artifacts into chunked Markdown knowledge packs. Optional **`--include-lineage`**, **`--include-governance`**, **`--graph`**, **`--chunk`**. Library: [`md_generator/sap/`](src/md_generator/sap/). Deeper design: [`sap-to-md/README.md`](sap-to-md/README.md).
|
|
197
|
+
|
|
198
|
+
**otel-to-md (`md-otel`):** reads **OTLP** trace exports (**JSON** or **protobuf** with **`log-otel-proto`**) and writes **`trace.md`** (span list). No separate HTTP API entry point; use **`md-otel`** or correlate traces with log exports via **`input.otel_path`** in log YAML. Library: [`md_generator/otel/`](src/md_generator/otel/).
|
|
199
|
+
|
|
186
200
|
**graph-to-md (Neo4j + NetworkX):** library lives under [`md_generator/graph/`](src/md_generator/graph/). **Sources:** **`networkx`** (GraphML/GML via `graph.graph_file` or `--graph-file`) or **`neo4j`** (`graph.uri`, `graph.user`, `graph.password`, optional `graph.database` for `session(database=…)`). **Output layout:** by default **`output.combine_markdown: true`** writes **`nodes.md`**, **`relationship.md`**, and **`graph_summary.md`** (summary plus embedded nodes and relationships). Set **`combine_markdown: false`** or CLI **`--individual` / `--markdown-layout individual`** for per-entity files under **`nodes/`** and **`relationships/`**. **Diagrams:** **`viz.mermaid: true`** (default) writes **`graph/graph.mmd`** and embeds a fenced Mermaid block in the export **`README.md`** (no Graphviz required). **`viz.enabled: true`** or CLI **`--viz`** also writes **`graph/graph.dot`** and runs **`dot`** for PNG/SVG/PDF when Graphviz is on `PATH` (or **`GRAPHVIZ_DOT`**). CLI **`--no-mermaid`** disables Mermaid; **`--depth`**, **`--start-node`**, **`--max-nodes`**, **`--max-edges`** bound traversal. Packaged defaults: [`src/md_generator/graph/config/default.yaml`](src/md_generator/graph/config/default.yaml). Tests: **`graph-to-md/tests/`**; API image: [`graph-to-md/Dockerfile.api`](graph-to-md/Dockerfile.api).
|
|
187
201
|
|
|
188
202
|
Every command accepts **`-h` / `--help`** for full flags (artifact layout, OCR, ZIP options, etc.).
|
|
@@ -207,6 +221,8 @@ pip install "mdengine[graph]" && md-graph --source neo4j --uri neo4j://localhost
|
|
|
207
221
|
pip install "mdengine[playwright]" && playwright install chromium && md-playwright https://example.com/app ./spa-out
|
|
208
222
|
pip install "mdengine[openapi]" && md-openapi generate --file openapi.yaml --output ./openapi-md
|
|
209
223
|
pip install "mdengine[log]" && md-log --config log.yaml
|
|
224
|
+
pip install "mdengine[log-otel-proto]" && md-otel --input otlp-traces.json --output ./otel-docs
|
|
225
|
+
pip install "mdengine[sap]" && md-sap ./sap-source --output ./sap-out --graph --chunk
|
|
210
226
|
md-codeflow scan ./src --output ./cf-out --lang python
|
|
211
227
|
```
|
|
212
228
|
|
|
@@ -483,6 +499,44 @@ cfg = load_log_run_config(Path("log-export.yaml"))
|
|
|
483
499
|
extract_to_markdown(cfg)
|
|
484
500
|
```
|
|
485
501
|
|
|
502
|
+
Set **`input.otel_path`** in the YAML (or API body) to a directory of OTLP JSON exports so the log pipeline can **correlate** log lines with spans. Install **`mdengine[log-otel-proto]`** when ingesting protobuf OTLP via **`md-otel`**.
|
|
503
|
+
|
|
504
|
+
### OpenTelemetry (otel-to-md)
|
|
505
|
+
|
|
506
|
+
```python
|
|
507
|
+
from pathlib import Path
|
|
508
|
+
|
|
509
|
+
from md_generator.otel.otel_parser import load_otlp_json
|
|
510
|
+
from md_generator.otel.otel_spans import parse_otlp_spans
|
|
511
|
+
|
|
512
|
+
doc = load_otlp_json(Path("otlp-traces.json"))
|
|
513
|
+
spans = parse_otlp_spans(doc)
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
CLI (writes **`trace.md`** under **`--output`**):
|
|
517
|
+
|
|
518
|
+
```bash
|
|
519
|
+
pip install "mdengine[log-otel-proto]"
|
|
520
|
+
md-otel --input otlp-traces.json --output ./otel-docs
|
|
521
|
+
md-otel --input export.pb --output ./otel-docs --protobuf
|
|
522
|
+
```
|
|
523
|
+
|
|
524
|
+
Shim: [`otel-to-md/converter.py`](otel-to-md/converter.py) delegates to **`md-otel`**.
|
|
525
|
+
|
|
526
|
+
### SAP artifacts (sap-to-md)
|
|
527
|
+
|
|
528
|
+
```python
|
|
529
|
+
from pathlib import Path
|
|
530
|
+
|
|
531
|
+
from md_generator.sap.core.extractor import extract_to_markdown
|
|
532
|
+
from md_generator.sap.core.run_config import load_run_config
|
|
533
|
+
|
|
534
|
+
cfg = load_run_config(Path("sap-export.yaml"))
|
|
535
|
+
extract_to_markdown(cfg)
|
|
536
|
+
```
|
|
537
|
+
|
|
538
|
+
Or pass paths on the CLI: **`md-sap ./abap ./cds --output ./sap-out --include-lineage --include-governance`**. See [`sap-to-md/README.md`](sap-to-md/README.md) for API routes and architecture notes.
|
|
539
|
+
|
|
486
540
|
### Codeflow (static call graphs)
|
|
487
541
|
|
|
488
542
|
```python
|
|
@@ -613,7 +667,7 @@ Equivalent modules: `python -m md_generator.media.audio.api.mcp_server`, `python
|
|
|
613
667
|
|
|
614
668
|
### Thin shims (repo clone)
|
|
615
669
|
|
|
616
|
-
[`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/). [`log-to-md/converter.py`](log-to-md/converter.py) delegates to `md-log`; tests under [`log-to-md/tests/`](log-to-md/tests/). [`codeflow-to-md/converter.py`](codeflow-to-md/converter.py) invokes the same CLI entrypoint as `md-codeflow` / `codeflow`; tests under [`codeflow-to-md/tests/`](codeflow-to-md/tests/). [`url-to-md/converter.py`](url-to-md/converter.py) matches `md-url`; tests under [`url-to-md/tests/`](url-to-md/tests/). [`playwright-to-md/tests/`](playwright-to-md/tests/) cover the Playwright pipeline (no root `converter.py` shim required).
|
|
670
|
+
[`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/). [`log-to-md/converter.py`](log-to-md/converter.py) delegates to `md-log`; tests under [`log-to-md/tests/`](log-to-md/tests/) (including OTLP fixtures under `log-to-md/tests/fixtures/otel/`). [`otel-to-md/converter.py`](otel-to-md/converter.py) delegates to `md-otel`. [`sap-to-md/converter.py`](sap-to-md/converter.py) delegates to `md-sap`; tests under [`sap-to-md/tests/`](sap-to-md/tests/); module README: [`sap-to-md/README.md`](sap-to-md/README.md). [`codeflow-to-md/converter.py`](codeflow-to-md/converter.py) invokes the same CLI entrypoint as `md-codeflow` / `codeflow`; tests under [`codeflow-to-md/tests/`](codeflow-to-md/tests/). [`url-to-md/converter.py`](url-to-md/converter.py) matches `md-url`; tests under [`url-to-md/tests/`](url-to-md/tests/). [`playwright-to-md/tests/`](playwright-to-md/tests/) cover the Playwright pipeline (no root `converter.py` shim required).
|
|
617
671
|
|
|
618
672
|
---
|
|
619
673
|
|
|
@@ -651,6 +705,7 @@ Install `mdengine[api]` plus the format extra(s), then run the **`app`** object
|
|
|
651
705
|
| YouTube | `md_generator.media.youtube.api.main:create_app` (use **`--factory`**) or `…main:app` | `youtube`, `api`, `mcp` |
|
|
652
706
|
| Codeflow (workspace scans) | `md_generator.codeflow.api.main:app` | `codeflow`, `api`, `mcp` |
|
|
653
707
|
| Log files → Markdown | `md_generator.log.api.main:app` | `log`, `api`, `mcp` |
|
|
708
|
+
| SAP artifacts | `md_generator.sap.api.main:app` | `sap`, `api` |
|
|
654
709
|
|
|
655
710
|
Examples (ports are **illustrative** so several services can run together; each `md-*-api` / `run` module has its own **default** — set `*_PORT` / `*_API_PORT` env vars to match your layout):
|
|
656
711
|
|
|
@@ -662,6 +717,7 @@ uvicorn md_generator.url.api.main:app --host 127.0.0.1 --port 8017
|
|
|
662
717
|
uvicorn md_generator.db.api.main:app --host 127.0.0.1 --port 8010
|
|
663
718
|
uvicorn md_generator.playwright.api.main:app --host 127.0.0.1 --port 8014
|
|
664
719
|
uvicorn md_generator.graph.api.main:app --host 127.0.0.1 --port 8020
|
|
720
|
+
uvicorn md_generator.sap.api.main:app --host 127.0.0.1 --port 8021
|
|
665
721
|
uvicorn md_generator.openapi.api.main:app --host 127.0.0.1 --port 8015
|
|
666
722
|
uvicorn md_generator.codeflow.api.main:app --host 127.0.0.1 --port 8016
|
|
667
723
|
uvicorn md_generator.log.api.main:app --host 127.0.0.1 --port 8018
|
|
@@ -670,7 +726,7 @@ uvicorn md_generator.media.video.api.main:create_app --factory --host 127.0.0.1
|
|
|
670
726
|
uvicorn md_generator.media.youtube.api.main:create_app --factory --host 127.0.0.1 --port 8013
|
|
671
727
|
```
|
|
672
728
|
|
|
673
|
-
**Port note:** **`md-graph-api`**, **`md-video-api`**, and **`md-log-api`** all default to **8012** in their respective `run.py` modules. Run only one on that port, or set **`GRAPH_TO_MD_PORT`**, **`MD_VIDEO_API_PORT`**, and **`LOG_TO_MD_PORT`** so each process listens on a unique port. **`md-db-api`** defaults to **8010** (
|
|
729
|
+
**Port note:** **`md-graph-api`**, **`md-video-api`**, and **`md-log-api`** all default to **8012** in their respective `run.py` modules. Run only one on that port, or set **`GRAPH_TO_MD_PORT`**, **`MD_VIDEO_API_PORT`**, and **`LOG_TO_MD_PORT`** so each process listens on a unique port. **`md-db-api`** defaults to **8010**. **`md-sap-api`** defaults to **8020** (`SAP_TO_MD_PORT`) — the graph Uvicorn example above uses **8020** on purpose as an illustration; use **8021** (or another port) when running **both** graph and SAP APIs locally. **`md-openapi-api`** defaults to **8015** (`OPENAPI_TO_MD_PORT`). **`md-youtube-api`** defaults to **8013**; **`md-playwright-api`** / **`PLAYWRIGHT_TO_MD_API_PORT`** default to **8014**. **`md-codeflow-api`** defaults to **8016** (`CODEFLOW_TO_MD_PORT`). **`md-otel`** has **no** bundled HTTP server (CLI only).
|
|
674
730
|
|
|
675
731
|
### MCP over HTTP on the same server
|
|
676
732
|
|
|
@@ -695,6 +751,7 @@ Prefixes differ per service (often read from a `.env` file next to the process):
|
|
|
695
751
|
| OpenAPI → Markdown | `OPENAPI_TO_MD_` | `OPENAPI_TO_MD_CORS_ORIGINS`, `OPENAPI_TO_MD_MAX_SYNC_ZIP_MB`, `OPENAPI_TO_MD_HOST`, `OPENAPI_TO_MD_PORT` (default **8015**) |
|
|
696
752
|
| Codeflow API | `CODEFLOW_TO_MD_` / `CODEFLOW_` | `CODEFLOW_TO_MD_HOST`, `CODEFLOW_TO_MD_PORT` (default **8016**); in-app limits: `CODEFLOW_MAX_UPLOAD_ZIP_MB`, `CODEFLOW_MAX_SYNC_ZIP_MB`, `CODEFLOW_JOB_WORKSPACE_ROOT`, `CODEFLOW_SQLITE_PATH`, CORS via `CODEFLOW_CORS` |
|
|
697
753
|
| Log API | `LOG_TO_MD_` | `LOG_TO_MD_HOST`, `LOG_TO_MD_PORT` (default **8012** — change if **graph** or **video** API uses that port), `LOG_TO_MD_CORS_ORIGINS`, `LOG_TO_MD_MAX_SYNC_ZIP_MB`, `LOG_TO_MD_MAX_LOG_UPLOAD_MB`, workspace / SQLite paths |
|
|
754
|
+
| SAP API | `SAP_TO_MD_` | `SAP_TO_MD_HOST`, `SAP_TO_MD_PORT` (default **8020**), `SAP_TO_MD_CORS_ORIGINS`, `SAP_TO_MD_MAX_SYNC_ZIP_MB`, `SAP_TO_MD_JOB_SQLITE_PATH`, `SAP_TO_MD_JOB_WORKSPACE_ROOT` |
|
|
698
755
|
| Audio API | `MD_AUDIO_` | `MD_AUDIO_MAX_UPLOAD_MB`, `MD_AUDIO_MAX_SYNC_UPLOAD_MB`, `MD_AUDIO_JOB_TTL_SECONDS`, `MD_AUDIO_TEMP_DIR`, `MD_AUDIO_CORS_ORIGINS`, `MD_AUDIO_API_HOST`, `MD_AUDIO_API_PORT` |
|
|
699
756
|
| Video API | `MD_VIDEO_` | Same pattern as audio with `MD_VIDEO_*` (defaults: larger upload/sync caps, port **8012**) |
|
|
700
757
|
| YouTube API | `MD_YOUTUBE_` | `MD_YOUTUBE_JOB_TTL_SECONDS`, `MD_YOUTUBE_TEMP_DIR`, `MD_YOUTUBE_CORS_ORIGINS`, `MD_YOUTUBE_API_HOST`, `MD_YOUTUBE_API_PORT` (default **8013**); optional `MD_YOUTUBE_YTDLP` path for audio fallback |
|
|
@@ -730,6 +787,7 @@ Two usage patterns:
|
|
|
730
787
|
| OpenAPI → Markdown | `md-openapi-mcp` or `python -m md_generator.openapi.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
|
|
731
788
|
| Codeflow | `md-codeflow-mcp` or `python -m md_generator.codeflow.api.mcp_server` — **stdio** MCP (see module for details) |
|
|
732
789
|
| Log files | `md-log-mcp` or `python -m md_generator.log.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
|
|
790
|
+
| SAP | `md-sap-mcp` or `md-sap-api` — FastAPI app (same as HTTP API; dedicated MCP tools when mounted in app) |
|
|
733
791
|
|
|
734
792
|
**Word** and **XLSX** also ship a small runner script in the repo:
|
|
735
793
|
|
|
@@ -858,7 +916,7 @@ pip install -e ".[dev,all]" # or a smaller subset of extras
|
|
|
858
916
|
python -m pytest
|
|
859
917
|
```
|
|
860
918
|
|
|
861
|
-
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), plus **`url-to-md/tests/`**, **`playwright-to-md/tests/`**, **`youtube-to-md/tests/`**, **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, **`codeflow-to-md/tests/`**, **`log-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.
|
|
919
|
+
Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), plus **`url-to-md/tests/`**, **`playwright-to-md/tests/`**, **`youtube-to-md/tests/`**, **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, **`codeflow-to-md/tests/`**, **`log-to-md/tests/`**, **`sap-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.
|
|
862
920
|
|
|
863
921
|
**Docs site (maintainers):** install **`mdengine[docs]`**, then build or serve the MkDocs project from the repo root (`mkdocs.yml`). The published site URL is listed under **Documentation** in `[project.urls]` on PyPI ([GitHub Pages build](https://vishal7090.github.io/md-generator/)).
|
|
864
922
|
|
|
@@ -895,7 +953,7 @@ python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-ou
|
|
|
895
953
|
| `docs/` | **MkDocs** source (module guides, `index.md`); build with **`mdengine[docs]`** |
|
|
896
954
|
| `mkdocs.yml` | MkDocs configuration |
|
|
897
955
|
| `CODE_OF_CONDUCT.md` | [Contributor Covenant](https://www.contributor-covenant.org/) 2.1 |
|
|
898
|
-
| `src/md_generator/` | **Library source** (all formats + `api` subpackages); **audio/video** under [`media
|
|
956
|
+
| `src/md_generator/` | **Library source** (all formats + `api` subpackages); **audio/video** under [`media/`](src/md_generator/media/); **logs** [`log/`](src/md_generator/log/), **OTEL** [`otel/`](src/md_generator/otel/), **SAP** [`sap/`](src/md_generator/sap/), **graphs** [`graph/`](src/md_generator/graph/) |
|
|
899
957
|
| `pyproject.toml` | Packaging, extras, CLI entry points, pytest |
|
|
900
958
|
| `ai/` | **Distributable AI skills** (`SKILL.md` trees, `registry.json`, `dependency-graph.json`); regenerate with `PYTHONPATH=src python -m md_generator.tools.skill_builder` or **`mdengine skill build`** (after `pip install -e .`) |
|
|
901
959
|
| `src/md_generator/tools/skill_builder/` | **Skill generator** — scans `src/md_generator` and `pyproject.toml` |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mdengine"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.12.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"
|
|
@@ -101,6 +101,7 @@ db = [
|
|
|
101
101
|
"pyodbc>=5.0.0",
|
|
102
102
|
"oracledb>=2.0.0",
|
|
103
103
|
"pymongo>=4.6.0",
|
|
104
|
+
"elasticsearch>=8.0.0",
|
|
104
105
|
"mermaid-py>=0.8.0",
|
|
105
106
|
]
|
|
106
107
|
graph = [
|
|
@@ -133,6 +134,18 @@ codeflow-treesitter = [
|
|
|
133
134
|
"tree-sitter-javascript>=0.21.0",
|
|
134
135
|
"tree-sitter-typescript>=0.23.0",
|
|
135
136
|
"tree-sitter-cpp>=0.23.0",
|
|
137
|
+
"tree-sitter-java>=0.23.0",
|
|
138
|
+
"tree-sitter-python>=0.23.0",
|
|
139
|
+
"tree-sitter-go>=0.23.0",
|
|
140
|
+
"tree-sitter-php>=0.23.0",
|
|
141
|
+
"tree-sitter-rust>=0.23.0",
|
|
142
|
+
"tree-sitter-kotlin>=0.23.0",
|
|
143
|
+
"tree-sitter-c-sharp>=0.23.0",
|
|
144
|
+
"tree-sitter-swift>=0.7.2",
|
|
145
|
+
"tree-sitter-ruby>=0.23.0",
|
|
146
|
+
"tree-sitter-lua>=0.2.0",
|
|
147
|
+
"tree-sitter-scala>=0.6.0",
|
|
148
|
+
"tree-sitter-zig>=0.2.0",
|
|
136
149
|
]
|
|
137
150
|
codeflow-clang = [
|
|
138
151
|
"clang>=16.0.0",
|
|
@@ -76,6 +76,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
76
76
|
default="mixed",
|
|
77
77
|
help=(
|
|
78
78
|
"mixed | python | java | javascript | typescript | tsx | cpp | go | php | "
|
|
79
|
+
"rust | kotlin | csharp | swift | ruby | lua | scala | zig | "
|
|
79
80
|
"comma-separated (e.g. python,javascript). Aliases: js→javascript, ts→typescript."
|
|
80
81
|
),
|
|
81
82
|
)
|
|
@@ -377,7 +378,8 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
377
378
|
"--parser-mode",
|
|
378
379
|
choices=("auto", "treesitter", "external"),
|
|
379
380
|
default="auto",
|
|
380
|
-
help="
|
|
381
|
+
help="auto=native parsers; treesitter=Tree-sitter for java/python/go/php/cpp (+ JS/TS when installed); "
|
|
382
|
+
"external=clang only for C++",
|
|
381
383
|
)
|
|
382
384
|
scan.add_argument(
|
|
383
385
|
"--ui-cfg-max-methods",
|
|
@@ -172,6 +172,22 @@ def _resolve_scan_entry_ids(cfg: ScanConfig, g: CodeflowGraph, all_entries: list
|
|
|
172
172
|
return entry_ids, warnings
|
|
173
173
|
|
|
174
174
|
|
|
175
|
+
def _parse_backend_summary_lines(parse_results: list[FileParseResult]) -> list[str]:
|
|
176
|
+
from collections import Counter
|
|
177
|
+
|
|
178
|
+
counts: Counter[tuple[str, str, str | None]] = Counter()
|
|
179
|
+
for fr in parse_results:
|
|
180
|
+
counts[(fr.language, fr.parse_backend, fr.grammar_package)] += 1
|
|
181
|
+
if not counts:
|
|
182
|
+
return []
|
|
183
|
+
lines = ["## Parse backends", ""]
|
|
184
|
+
for (lang, backend, gram), n in sorted(counts.items()):
|
|
185
|
+
gpart = f" (`{gram}`)" if gram else ""
|
|
186
|
+
lines.append(f"- **{lang}** / {backend}{gpart}: {n} file(s)")
|
|
187
|
+
lines.append("")
|
|
188
|
+
return lines
|
|
189
|
+
|
|
190
|
+
|
|
175
191
|
def _write_scan_summary(
|
|
176
192
|
path: Path,
|
|
177
193
|
*,
|
|
@@ -183,6 +199,7 @@ def _write_scan_summary(
|
|
|
183
199
|
warnings: list[str],
|
|
184
200
|
cfg: ScanConfig,
|
|
185
201
|
pr_impact: dict[str, Any] | None = None,
|
|
202
|
+
parse_results: list[FileParseResult] | None = None,
|
|
186
203
|
) -> None:
|
|
187
204
|
lines = [
|
|
188
205
|
"# Scan summary",
|
|
@@ -218,6 +235,10 @@ def _write_scan_summary(
|
|
|
218
235
|
f"- **enable_dependency_graph:** {cfg.enable_dependency_graph}",
|
|
219
236
|
f"- **structural_graph_enabled:** {cfg.structural_graph_enabled()}",
|
|
220
237
|
f"- **parser_mode:** `{cfg.parser_mode}`",
|
|
238
|
+
]
|
|
239
|
+
if parse_results:
|
|
240
|
+
lines.extend(_parse_backend_summary_lines(parse_results))
|
|
241
|
+
lines += [
|
|
221
242
|
f"- **ui_cfg_max_methods:** {cfg.ui_cfg_max_methods}",
|
|
222
243
|
f"- **intelligence_transitive_callers:** {cfg.intelligence_transitive_callers}",
|
|
223
244
|
f"- **emit_system_graph_stats:** {cfg.emit_system_graph_stats}",
|
|
@@ -448,6 +469,12 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
|
|
|
448
469
|
all_entries = [e for pr in parse_results for e in pr.entries]
|
|
449
470
|
entry_ids, scan_warnings = _resolve_scan_entry_ids(cfg, g, all_entries)
|
|
450
471
|
scan_warnings = scan_warnings_pre + scan_warnings
|
|
472
|
+
from md_generator.codeflow.parsers.capability_registry import capability_warnings
|
|
473
|
+
|
|
474
|
+
for lang in sorted({fr.language for fr in parse_results}):
|
|
475
|
+
scan_warnings.extend(
|
|
476
|
+
capability_warnings(lang, parser_mode=cfg.parser_mode, emit_cfg=cfg.emit_cfg),
|
|
477
|
+
)
|
|
451
478
|
scan_warnings.extend(scan_semantic_warnings)
|
|
452
479
|
|
|
453
480
|
fmts = {x.strip().lower() for x in cfg.formats}
|
|
@@ -920,6 +947,7 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
|
|
|
920
947
|
warnings=scan_warnings,
|
|
921
948
|
cfg=cfg,
|
|
922
949
|
pr_impact=pr_impact_payload,
|
|
950
|
+
parse_results=parse_results,
|
|
923
951
|
)
|
|
924
952
|
|
|
925
953
|
return out
|