mdengine 0.11.1__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.1 → mdengine-0.12.0}/PKG-INFO +66 -7
- {mdengine-0.11.1 → mdengine-0.12.0}/README.md +64 -6
- {mdengine-0.11.1 → mdengine-0.12.0}/pyproject.toml +2 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/__init__.py +1 -1
- 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.1 → 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.1 → mdengine-0.12.0}/src/md_generator/db/api/main.py +93 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/schemas.py +31 -3
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/settings.py +1 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/cli/main.py +18 -2
- {mdengine-0.11.1 → 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.1 → mdengine-0.12.0}/src/md_generator/db/core/export_manifest.py +14 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/extractor.py +12 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/job_manager.py +51 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/markdown_writer.py +21 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/models.py +111 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/run_config.py +27 -2
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/dependency-graph.json +109 -2
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/registry.json +109 -3
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +27 -3
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +3 -2
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +3 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +1 -1
- {mdengine-0.11.1 → 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.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +1 -1
- {mdengine-0.11.1 → 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.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +1 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +2 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +7 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +30 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +2 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/generate.py +9 -1
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/routing.py +15 -2
- {mdengine-0.11.1 → mdengine-0.12.0}/src/mdengine.egg-info/PKG-INFO +66 -7
- {mdengine-0.11.1 → mdengine-0.12.0}/src/mdengine.egg-info/SOURCES.txt +20 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/mdengine.egg-info/requires.txt +1 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/LICENSE +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/setup.cfg +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/extractors.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/job_manager.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/config/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/core/cache_manager.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/core/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/core/run_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/entry_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/detectors/rails_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/html.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/html_unified.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/markdown.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/analysis.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/anomaly.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/clustering.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/embeddings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/enricher.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/hotpath.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/nl_query.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/relations.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/mcp/server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/models/ir.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_csharp_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_go_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_java_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_kotlin_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_lua_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_php_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_python_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_ruby_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_rust_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_scala_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_swift_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/adapters/treesitter_zig_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/base.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/capability_registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/go_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/ir_enrich.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/java_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/php_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/python_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_common.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_csharp_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_entry_helpers.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_go_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_java_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_kotlin_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_lua_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_php_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_python_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_ruby_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_rust_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_scala_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_swift_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/treesitter_zig_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/parsers/unified_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/rules/collector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/artifacts/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/artifacts/models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/artifacts/serialize.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/log_record.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/adapters/otel.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/telemetry_event.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/core/schema/validation.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/access_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/access_introspect.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/access_odbc.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/access_upload.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/cli_ops.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/link_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/distributed/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/distributed/merge.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/distributed/partition.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/distributed/worker_pool.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/engine_cli.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/governance/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/governance/audit.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/governance/classification.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/governance/lineage.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/governance/retention.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/aggregation/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/aggregation/aggregators.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/aggregation/metrics.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/aggregation/timeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/clustering/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/clustering/embeddings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/clustering/vectorizer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/default.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/preset_loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/presets/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/presets/generic.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/presets/json.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/presets/logback.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/presets/springboot.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/config/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/errors.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/execution_context.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/job_manager.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/lifecycle.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/pipeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/plugins.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/run_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/core/zip_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/cross_source.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/request_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/session_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/correlation/trace_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/documentation/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/documentation/incident_summary.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/documentation/service_report.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/documentation/troubleshooting.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/correlation.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/hash_generator.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/fingerprinting.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/grouping.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/incident_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incidents/severity.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incremental/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incremental/checkpoint.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incremental/engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/incremental/resume_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/archive_loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/batch_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/file_loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/ingestion/stream_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/intelligence/heuristics.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/linking/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/linking/link_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/mcp/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/mcp/server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/mcp/sse.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/entropy.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/noise_reduction/filter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/number_normalizer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/path_normalizer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/pii_redactor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/token_normalizer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/json_line_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/level_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/logger_detector.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/multiline_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/parser_registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/regex_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/parser/timestamp_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/search/bm25_search.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/search/cli.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/search/hybrid_search.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/search/search_index.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/search/vector_search.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/service/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/service/service.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/kafka_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/redis_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/stdin_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/tail_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/streaming/websocket_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/timeline/causal_chain.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/timeline/ordering.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/timeline/timeline_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/timeline/timeline_models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/topology/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/topology/discovery.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/utils/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/utils/concurrency.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/utils/io.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/utils/regex.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/utils/time.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/visualization/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/assets_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/chunk_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/cluster_markdown.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/correlation_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/incident_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/markdown_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/log/writers/summary_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/cli/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/otel_logs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/otel_metrics.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/otel_models.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/otel_parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/otel/otel_spans.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/runtime/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/runtime/execution_context.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/runtime/metrics.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/runtime/stage_engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/authorization/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/governance/classifier.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/lineage/builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/relationships/engine.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/semantics/entity_mapper.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/analyzer/validation/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/run.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/schemas.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/api/zip_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/cli/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/config/default.yaml +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/cache.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/errors.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/export_manifest.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/extractor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/features.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/job_manager.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/link_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/run_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/core/run_context.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/json_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/exporters/mermaid_export.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/graph/relations.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/entity_builder.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/slug.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/builders/writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/chunk_strategy.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/markdown/chunking/writer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/entities/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/entities/kinds.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/entities/sap_object.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/abap.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/cds.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/models/metadata/ddic.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/orchestration/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/orchestration/pipeline.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/lexer.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/abap/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/bapi/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/base.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/cds/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/ddic/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/discovery.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/idoc/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/odata/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/rfc/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sap/parser/transport/parser.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/classifier_plugin.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/discovery.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/enricher_plugin.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/parser_plugin.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/plugin_protocol.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/stage_protocol.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/sdk/writer_plugin.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/query_options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/convert_impl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/md_flatten.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/text/xml_parse.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/options.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.11.1 → mdengine-0.12.0}/src/mdengine.egg-info/entry_points.txt +0 -0
- {mdengine-0.11.1 → 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"
|
|
@@ -235,7 +236,7 @@ Dynamic: license-file
|
|
|
235
236
|
|
|
236
237
|
# mdengine
|
|
237
238
|
|
|
238
|
-
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.
|
|
239
240
|
|
|
240
241
|
- **PyPI name:** `mdengine` (import package: `md_generator`)
|
|
241
242
|
- **Source:** [github.com/vishal7090/md-generator](https://github.com/vishal7090/md-generator)
|
|
@@ -324,6 +325,8 @@ pip install "mdengine[all]"
|
|
|
324
325
|
| `log-cluster` | Log pipeline **clustering** (scikit-learn) |
|
|
325
326
|
| `log-semantic` | Log pipeline **semantic** helpers (SentenceTransformers + scikit-learn; large) |
|
|
326
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 |
|
|
327
330
|
| `api` | FastAPI, uvicorn, httpx, pydantic-settings |
|
|
328
331
|
| `mcp` | MCP servers (`mcp`, `fastmcp` where used) |
|
|
329
332
|
| `graph` | **Graph → Markdown** (Neo4j Bolt + NetworkX GraphML/GML): `networkx`, `neo4j`, `pyyaml` |
|
|
@@ -398,7 +401,11 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
398
401
|
| `md-log` | `md_generator.log.cli.main:main` | `pip install "mdengine[log]"` then `md-log --config log.yaml` (or `mdengine log-to-md …`) |
|
|
399
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** |
|
|
400
403
|
| `md-log-mcp` | `md_generator.log.api.mcp_server:main` | Standalone MCP (`stdio` \| `sse` \| `streamable-http`) |
|
|
401
|
-
| `
|
|
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 …` |
|
|
402
409
|
|
|
403
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.
|
|
404
411
|
|
|
@@ -418,6 +425,14 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
|
|
|
418
425
|
|
|
419
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.
|
|
420
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
|
+
|
|
421
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).
|
|
422
437
|
|
|
423
438
|
Every command accepts **`-h` / `--help`** for full flags (artifact layout, OCR, ZIP options, etc.).
|
|
@@ -442,6 +457,8 @@ pip install "mdengine[graph]" && md-graph --source neo4j --uri neo4j://localhost
|
|
|
442
457
|
pip install "mdengine[playwright]" && playwright install chromium && md-playwright https://example.com/app ./spa-out
|
|
443
458
|
pip install "mdengine[openapi]" && md-openapi generate --file openapi.yaml --output ./openapi-md
|
|
444
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
|
|
445
462
|
md-codeflow scan ./src --output ./cf-out --lang python
|
|
446
463
|
```
|
|
447
464
|
|
|
@@ -718,6 +735,44 @@ cfg = load_log_run_config(Path("log-export.yaml"))
|
|
|
718
735
|
extract_to_markdown(cfg)
|
|
719
736
|
```
|
|
720
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
|
+
|
|
721
776
|
### Codeflow (static call graphs)
|
|
722
777
|
|
|
723
778
|
```python
|
|
@@ -848,7 +903,7 @@ Equivalent modules: `python -m md_generator.media.audio.api.mcp_server`, `python
|
|
|
848
903
|
|
|
849
904
|
### Thin shims (repo clone)
|
|
850
905
|
|
|
851
|
-
[`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).
|
|
852
907
|
|
|
853
908
|
---
|
|
854
909
|
|
|
@@ -886,6 +941,7 @@ Install `mdengine[api]` plus the format extra(s), then run the **`app`** object
|
|
|
886
941
|
| YouTube | `md_generator.media.youtube.api.main:create_app` (use **`--factory`**) or `…main:app` | `youtube`, `api`, `mcp` |
|
|
887
942
|
| Codeflow (workspace scans) | `md_generator.codeflow.api.main:app` | `codeflow`, `api`, `mcp` |
|
|
888
943
|
| Log files → Markdown | `md_generator.log.api.main:app` | `log`, `api`, `mcp` |
|
|
944
|
+
| SAP artifacts | `md_generator.sap.api.main:app` | `sap`, `api` |
|
|
889
945
|
|
|
890
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):
|
|
891
947
|
|
|
@@ -897,6 +953,7 @@ uvicorn md_generator.url.api.main:app --host 127.0.0.1 --port 8017
|
|
|
897
953
|
uvicorn md_generator.db.api.main:app --host 127.0.0.1 --port 8010
|
|
898
954
|
uvicorn md_generator.playwright.api.main:app --host 127.0.0.1 --port 8014
|
|
899
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
|
|
900
957
|
uvicorn md_generator.openapi.api.main:app --host 127.0.0.1 --port 8015
|
|
901
958
|
uvicorn md_generator.codeflow.api.main:app --host 127.0.0.1 --port 8016
|
|
902
959
|
uvicorn md_generator.log.api.main:app --host 127.0.0.1 --port 8018
|
|
@@ -905,7 +962,7 @@ uvicorn md_generator.media.video.api.main:create_app --factory --host 127.0.0.1
|
|
|
905
962
|
uvicorn md_generator.media.youtube.api.main:create_app --factory --host 127.0.0.1 --port 8013
|
|
906
963
|
```
|
|
907
964
|
|
|
908
|
-
**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).
|
|
909
966
|
|
|
910
967
|
### MCP over HTTP on the same server
|
|
911
968
|
|
|
@@ -930,6 +987,7 @@ Prefixes differ per service (often read from a `.env` file next to the process):
|
|
|
930
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**) |
|
|
931
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` |
|
|
932
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` |
|
|
933
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` |
|
|
934
992
|
| Video API | `MD_VIDEO_` | Same pattern as audio with `MD_VIDEO_*` (defaults: larger upload/sync caps, port **8012**) |
|
|
935
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 |
|
|
@@ -965,6 +1023,7 @@ Two usage patterns:
|
|
|
965
1023
|
| OpenAPI → Markdown | `md-openapi-mcp` or `python -m md_generator.openapi.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
|
|
966
1024
|
| Codeflow | `md-codeflow-mcp` or `python -m md_generator.codeflow.api.mcp_server` — **stdio** MCP (see module for details) |
|
|
967
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) |
|
|
968
1027
|
|
|
969
1028
|
**Word** and **XLSX** also ship a small runner script in the repo:
|
|
970
1029
|
|
|
@@ -1093,7 +1152,7 @@ pip install -e ".[dev,all]" # or a smaller subset of extras
|
|
|
1093
1152
|
python -m pytest
|
|
1094
1153
|
```
|
|
1095
1154
|
|
|
1096
|
-
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.
|
|
1097
1156
|
|
|
1098
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/)).
|
|
1099
1158
|
|
|
@@ -1130,7 +1189,7 @@ python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-ou
|
|
|
1130
1189
|
| `docs/` | **MkDocs** source (module guides, `index.md`); build with **`mdengine[docs]`** |
|
|
1131
1190
|
| `mkdocs.yml` | MkDocs configuration |
|
|
1132
1191
|
| `CODE_OF_CONDUCT.md` | [Contributor Covenant](https://www.contributor-covenant.org/) 2.1 |
|
|
1133
|
-
| `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/) |
|
|
1134
1193
|
| `pyproject.toml` | Packaging, extras, CLI entry points, pytest |
|
|
1135
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 .`) |
|
|
1136
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)
|
|
@@ -89,6 +89,8 @@ pip install "mdengine[all]"
|
|
|
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 = [
|