mdengine 0.10.0__tar.gz → 0.11.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.
Files changed (742) hide show
  1. {mdengine-0.10.0 → mdengine-0.11.0}/PKG-INFO +6 -1
  2. {mdengine-0.10.0 → mdengine-0.11.0}/pyproject.toml +12 -1
  3. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/__init__.py +1 -1
  4. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/engine_cli.py +8 -2
  5. mdengine-0.11.0/src/md_generator/sap/__init__.py +17 -0
  6. mdengine-0.11.0/src/md_generator/sap/analyzer/authorization/extractor.py +24 -0
  7. mdengine-0.11.0/src/md_generator/sap/analyzer/governance/classifier.py +52 -0
  8. mdengine-0.11.0/src/md_generator/sap/analyzer/lineage/builder.py +39 -0
  9. mdengine-0.11.0/src/md_generator/sap/analyzer/relationships/engine.py +35 -0
  10. mdengine-0.11.0/src/md_generator/sap/analyzer/semantics/entity_mapper.py +20 -0
  11. mdengine-0.11.0/src/md_generator/sap/analyzer/validation/extractor.py +35 -0
  12. mdengine-0.11.0/src/md_generator/sap/api/main.py +85 -0
  13. mdengine-0.11.0/src/md_generator/sap/api/mcp_server.py +16 -0
  14. mdengine-0.11.0/src/md_generator/sap/api/run.py +15 -0
  15. mdengine-0.11.0/src/md_generator/sap/api/schemas.py +47 -0
  16. mdengine-0.11.0/src/md_generator/sap/api/settings.py +31 -0
  17. mdengine-0.11.0/src/md_generator/sap/api/zip_export.py +25 -0
  18. mdengine-0.11.0/src/md_generator/sap/cli/main.py +125 -0
  19. mdengine-0.11.0/src/md_generator/sap/config/default.yaml +62 -0
  20. mdengine-0.11.0/src/md_generator/sap/core/__init__.py +1 -0
  21. mdengine-0.11.0/src/md_generator/sap/core/cache.py +51 -0
  22. mdengine-0.11.0/src/md_generator/sap/core/errors.py +17 -0
  23. mdengine-0.11.0/src/md_generator/sap/core/export_manifest.py +48 -0
  24. mdengine-0.11.0/src/md_generator/sap/core/extractor.py +18 -0
  25. mdengine-0.11.0/src/md_generator/sap/core/features.py +17 -0
  26. mdengine-0.11.0/src/md_generator/sap/core/job_manager.py +176 -0
  27. mdengine-0.11.0/src/md_generator/sap/core/link_graph.py +49 -0
  28. mdengine-0.11.0/src/md_generator/sap/core/run_config.py +151 -0
  29. mdengine-0.11.0/src/md_generator/sap/core/run_context.py +25 -0
  30. mdengine-0.11.0/src/md_generator/sap/graph/__init__.py +1 -0
  31. mdengine-0.11.0/src/md_generator/sap/graph/builder.py +97 -0
  32. mdengine-0.11.0/src/md_generator/sap/graph/exporters/__init__.py +1 -0
  33. mdengine-0.11.0/src/md_generator/sap/graph/exporters/json_export.py +13 -0
  34. mdengine-0.11.0/src/md_generator/sap/graph/exporters/mermaid_export.py +49 -0
  35. mdengine-0.11.0/src/md_generator/sap/graph/relations.py +15 -0
  36. mdengine-0.11.0/src/md_generator/sap/markdown/__init__.py +1 -0
  37. mdengine-0.11.0/src/md_generator/sap/markdown/builders/__init__.py +1 -0
  38. mdengine-0.11.0/src/md_generator/sap/markdown/builders/entity_builder.py +170 -0
  39. mdengine-0.11.0/src/md_generator/sap/markdown/builders/slug.py +11 -0
  40. mdengine-0.11.0/src/md_generator/sap/markdown/builders/writer.py +164 -0
  41. mdengine-0.11.0/src/md_generator/sap/markdown/chunking/chunk_strategy.py +98 -0
  42. mdengine-0.11.0/src/md_generator/sap/markdown/chunking/registry.py +22 -0
  43. mdengine-0.11.0/src/md_generator/sap/markdown/chunking/writer.py +51 -0
  44. mdengine-0.11.0/src/md_generator/sap/models/entities/__init__.py +4 -0
  45. mdengine-0.11.0/src/md_generator/sap/models/entities/kinds.py +19 -0
  46. mdengine-0.11.0/src/md_generator/sap/models/entities/sap_object.py +30 -0
  47. mdengine-0.11.0/src/md_generator/sap/models/metadata/__init__.py +14 -0
  48. mdengine-0.11.0/src/md_generator/sap/models/metadata/abap.py +62 -0
  49. mdengine-0.11.0/src/md_generator/sap/models/metadata/cds.py +46 -0
  50. mdengine-0.11.0/src/md_generator/sap/models/metadata/ddic.py +44 -0
  51. mdengine-0.11.0/src/md_generator/sap/orchestration/__init__.py +1 -0
  52. mdengine-0.11.0/src/md_generator/sap/orchestration/pipeline.py +195 -0
  53. mdengine-0.11.0/src/md_generator/sap/parser/__init__.py +1 -0
  54. mdengine-0.11.0/src/md_generator/sap/parser/abap/__init__.py +3 -0
  55. mdengine-0.11.0/src/md_generator/sap/parser/abap/lexer.py +82 -0
  56. mdengine-0.11.0/src/md_generator/sap/parser/abap/parser.py +159 -0
  57. mdengine-0.11.0/src/md_generator/sap/parser/bapi/parser.py +48 -0
  58. mdengine-0.11.0/src/md_generator/sap/parser/base.py +29 -0
  59. mdengine-0.11.0/src/md_generator/sap/parser/cds/parser.py +71 -0
  60. mdengine-0.11.0/src/md_generator/sap/parser/ddic/parser.py +94 -0
  61. mdengine-0.11.0/src/md_generator/sap/parser/discovery.py +49 -0
  62. mdengine-0.11.0/src/md_generator/sap/parser/idoc/parser.py +45 -0
  63. mdengine-0.11.0/src/md_generator/sap/parser/odata/parser.py +73 -0
  64. mdengine-0.11.0/src/md_generator/sap/parser/registry.py +79 -0
  65. mdengine-0.11.0/src/md_generator/sap/parser/rfc/__init__.py +1 -0
  66. mdengine-0.11.0/src/md_generator/sap/parser/transport/parser.py +56 -0
  67. {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/PKG-INFO +6 -1
  68. {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/SOURCES.txt +62 -0
  69. {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/entry_points.txt +3 -0
  70. {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/requires.txt +6 -0
  71. {mdengine-0.10.0 → mdengine-0.11.0}/LICENSE +0 -0
  72. {mdengine-0.10.0 → mdengine-0.11.0}/README.md +0 -0
  73. {mdengine-0.10.0 → mdengine-0.11.0}/setup.cfg +0 -0
  74. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/__init__.py +0 -0
  75. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/__init__.py +0 -0
  76. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/convert_runner.py +0 -0
  77. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/jobs.py +0 -0
  78. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/main.py +0 -0
  79. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/mcp_server.py +0 -0
  80. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
  81. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/query_options.py +0 -0
  82. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/settings.py +0 -0
  83. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/convert_impl.py +0 -0
  84. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/converter.py +0 -0
  85. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/extractors.py +0 -0
  86. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/options.py +0 -0
  87. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/__init__.py +0 -0
  88. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
  89. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
  90. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/__init__.py +0 -0
  91. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/job_manager.py +0 -0
  92. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/main.py +0 -0
  93. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
  94. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/run.py +0 -0
  95. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/schemas.py +0 -0
  96. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
  97. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/settings.py +0 -0
  98. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/sse.py +0 -0
  99. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
  100. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/cli/main.py +0 -0
  101. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/config/__init__.py +0 -0
  102. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
  103. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/__init__.py +0 -0
  104. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/cache_manager.py +0 -0
  105. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/extractor.py +0 -0
  106. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/run_config.py +0 -0
  107. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
  108. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
  109. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/entry_detector.py +0 -0
  110. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
  111. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
  112. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
  113. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
  114. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
  115. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
  116. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
  117. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
  118. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
  119. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
  120. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
  121. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
  122. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
  123. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/html.py +0 -0
  124. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/html_unified.py +0 -0
  125. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/markdown.py +0 -0
  126. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
  127. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
  128. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
  129. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/analysis.py +0 -0
  130. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/anomaly.py +0 -0
  131. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/builder.py +0 -0
  132. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
  133. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
  134. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
  135. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
  136. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
  137. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/clustering.py +0 -0
  138. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
  139. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
  140. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
  141. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/embeddings.py +0 -0
  142. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/enricher.py +0 -0
  143. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
  144. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
  145. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/hotpath.py +0 -0
  146. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
  147. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
  148. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
  149. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/nl_query.py +0 -0
  150. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
  151. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
  152. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
  153. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/relations.py +0 -0
  154. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
  155. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
  156. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
  157. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
  158. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
  159. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
  160. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
  161. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
  162. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
  163. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
  164. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/mcp/server.py +0 -0
  165. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/__init__.py +0 -0
  166. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/ir.py +0 -0
  167. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
  168. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
  169. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
  170. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
  171. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
  172. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
  173. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
  174. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
  175. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
  176. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
  177. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/base.py +0 -0
  178. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
  179. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/go_parser.py +0 -0
  180. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/ir_enrich.py +0 -0
  181. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/java_parser.py +0 -0
  182. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/php_parser.py +0 -0
  183. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/python_parser.py +0 -0
  184. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +0 -0
  185. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/unified_parser.py +0 -0
  186. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
  187. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/collector.py +0 -0
  188. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
  189. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
  190. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
  191. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
  192. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
  193. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
  194. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
  195. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
  196. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
  197. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
  198. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/__init__.py +0 -0
  199. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/__init__.py +0 -0
  200. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
  201. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/models.py +0 -0
  202. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/serialize.py +0 -0
  203. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/__init__.py +0 -0
  204. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/__init__.py +0 -0
  205. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/log_record.py +0 -0
  206. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/otel.py +0 -0
  207. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/telemetry_event.py +0 -0
  208. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/validation.py +0 -0
  209. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/__init__.py +0 -0
  210. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/__init__.py +0 -0
  211. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_adapter.py +0 -0
  212. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_introspect.py +0 -0
  213. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_odbc.py +0 -0
  214. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/factory.py +0 -0
  215. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
  216. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
  217. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
  218. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
  219. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sql_common.py +0 -0
  220. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
  221. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
  222. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/__init__.py +0 -0
  223. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/access_upload.py +0 -0
  224. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/main.py +0 -0
  225. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/mcp_server.py +0 -0
  226. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/run.py +0 -0
  227. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/schemas.py +0 -0
  228. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/settings.py +0 -0
  229. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
  230. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/cli/__init__.py +0 -0
  231. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/cli/main.py +0 -0
  232. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/config/__init__.py +0 -0
  233. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/config/default.yaml +0 -0
  234. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/__init__.py +0 -0
  235. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/base_adapter.py +0 -0
  236. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/cli_ops.py +0 -0
  237. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/__init__.py +0 -0
  238. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
  239. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/filter.py +0 -0
  240. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
  241. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
  242. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/model.py +0 -0
  243. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
  244. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/render.py +0 -0
  245. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/export_manifest.py +0 -0
  246. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/extractor.py +0 -0
  247. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/job_manager.py +0 -0
  248. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/link_graph.py +0 -0
  249. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/markdown_writer.py +0 -0
  250. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/models.py +0 -0
  251. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/run_config.py +0 -0
  252. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/util.py +0 -0
  253. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/zip_export.py +0 -0
  254. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/__init__.py +0 -0
  255. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/server.py +0 -0
  256. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/sse.py +0 -0
  257. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/stream.py +0 -0
  258. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/__init__.py +0 -0
  259. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/merge.py +0 -0
  260. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/partition.py +0 -0
  261. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/worker_pool.py +0 -0
  262. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/__init__.py +0 -0
  263. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/audit.py +0 -0
  264. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/classification.py +0 -0
  265. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/lineage.py +0 -0
  266. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/retention.py +0 -0
  267. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/__init__.py +0 -0
  268. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/__init__.py +0 -0
  269. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/factory.py +0 -0
  270. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
  271. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
  272. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/__init__.py +0 -0
  273. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/main.py +0 -0
  274. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/mcp_server.py +0 -0
  275. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/run.py +0 -0
  276. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/schemas.py +0 -0
  277. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/settings.py +0 -0
  278. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/cli/__init__.py +0 -0
  279. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/cli/main.py +0 -0
  280. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/config/__init__.py +0 -0
  281. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/config/default.yaml +0 -0
  282. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/__init__.py +0 -0
  283. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/base_adapter.py +0 -0
  284. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/extractor.py +0 -0
  285. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/graph_builder.py +0 -0
  286. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/job_manager.py +0 -0
  287. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
  288. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/models.py +0 -0
  289. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/run_config.py +0 -0
  290. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/viz.py +0 -0
  291. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/zip_export.py +0 -0
  292. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/__init__.py +0 -0
  293. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/server.py +0 -0
  294. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/sse.py +0 -0
  295. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/stream.py +0 -0
  296. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/__init__.py +0 -0
  297. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/__init__.py +0 -0
  298. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/main.py +0 -0
  299. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/mcp_server.py +0 -0
  300. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/query_options.py +0 -0
  301. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/settings.py +0 -0
  302. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/staging.py +0 -0
  303. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/zip_bundle.py +0 -0
  304. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/__init__.py +0 -0
  305. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/base.py +0 -0
  306. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/easy.py +0 -0
  307. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/paddle.py +0 -0
  308. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/tesseract.py +0 -0
  309. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/convert_impl.py +0 -0
  310. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/converter.py +0 -0
  311. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/emit.py +0 -0
  312. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/io_util.py +0 -0
  313. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/utils.py +0 -0
  314. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/__init__.py +0 -0
  315. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/__init__.py +0 -0
  316. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/aggregators.py +0 -0
  317. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
  318. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/metrics.py +0 -0
  319. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/timeline.py +0 -0
  320. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/__init__.py +0 -0
  321. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/main.py +0 -0
  322. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/mcp_server.py +0 -0
  323. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/run.py +0 -0
  324. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/schemas.py +0 -0
  325. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/settings.py +0 -0
  326. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/__init__.py +0 -0
  327. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
  328. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_engine.py +0 -0
  329. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_models.py +0 -0
  330. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_registry.py +0 -0
  331. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
  332. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/cli/__init__.py +0 -0
  333. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/cli/main.py +0 -0
  334. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/__init__.py +0 -0
  335. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/embeddings.py +0 -0
  336. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
  337. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
  338. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/vectorizer.py +0 -0
  339. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/__init__.py +0 -0
  340. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/default.yaml +0 -0
  341. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/preset_loader.py +0 -0
  342. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/__init__.py +0 -0
  343. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/generic.yaml +0 -0
  344. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/json.yaml +0 -0
  345. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/logback.yaml +0 -0
  346. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/springboot.yaml +0 -0
  347. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/schemas.py +0 -0
  348. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/__init__.py +0 -0
  349. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/errors.py +0 -0
  350. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/execution_context.py +0 -0
  351. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/extractor.py +0 -0
  352. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/job_manager.py +0 -0
  353. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/lifecycle.py +0 -0
  354. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/pipeline.py +0 -0
  355. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/plugins.py +0 -0
  356. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/run_config.py +0 -0
  357. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/zip_export.py +0 -0
  358. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_engine.py +0 -0
  359. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_models.py +0 -0
  360. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
  361. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/cross_source.py +0 -0
  362. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/request_parser.py +0 -0
  363. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/session_parser.py +0 -0
  364. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/trace_parser.py +0 -0
  365. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/__init__.py +0 -0
  366. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/incident_summary.py +0 -0
  367. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/service_report.py +0 -0
  368. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/troubleshooting.py +0 -0
  369. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
  370. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
  371. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
  372. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
  373. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
  374. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/__init__.py +0 -0
  375. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/correlation.py +0 -0
  376. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
  377. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/hash_generator.py +0 -0
  378. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
  379. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
  380. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/__init__.py +0 -0
  381. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
  382. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/fingerprinting.py +0 -0
  383. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/grouping.py +0 -0
  384. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/incident_engine.py +0 -0
  385. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/models.py +0 -0
  386. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/severity.py +0 -0
  387. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/__init__.py +0 -0
  388. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/checkpoint.py +0 -0
  389. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/engine.py +0 -0
  390. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/resume_reader.py +0 -0
  391. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/__init__.py +0 -0
  392. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
  393. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/archive_loader.py +0 -0
  394. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/batch_reader.py +0 -0
  395. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
  396. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/file_loader.py +0 -0
  397. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/stream_reader.py +0 -0
  398. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
  399. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
  400. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/heuristics.py +0 -0
  401. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
  402. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
  403. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
  404. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
  405. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
  406. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/linking/__init__.py +0 -0
  407. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/linking/link_graph.py +0 -0
  408. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
  409. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
  410. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
  411. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
  412. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/__init__.py +0 -0
  413. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/server.py +0 -0
  414. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/sse.py +0 -0
  415. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/__init__.py +0 -0
  416. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
  417. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/entropy.py +0 -0
  418. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/filter.py +0 -0
  419. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/__init__.py +0 -0
  420. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/number_normalizer.py +0 -0
  421. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/path_normalizer.py +0 -0
  422. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/pii_redactor.py +0 -0
  423. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/token_normalizer.py +0 -0
  424. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
  425. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/__init__.py +0 -0
  426. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/json_line_parser.py +0 -0
  427. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/level_detector.py +0 -0
  428. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/logger_detector.py +0 -0
  429. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/models.py +0 -0
  430. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/multiline_parser.py +0 -0
  431. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/parser_registry.py +0 -0
  432. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/regex_parser.py +0 -0
  433. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
  434. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/timestamp_parser.py +0 -0
  435. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/bm25_search.py +0 -0
  436. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/cli.py +0 -0
  437. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/hybrid_search.py +0 -0
  438. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/search_index.py +0 -0
  439. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/vector_search.py +0 -0
  440. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/service/__init__.py +0 -0
  441. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/service/service.py +0 -0
  442. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/__init__.py +0 -0
  443. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/kafka_reader.py +0 -0
  444. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/redis_reader.py +0 -0
  445. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/stdin_reader.py +0 -0
  446. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
  447. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/tail_reader.py +0 -0
  448. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/websocket_reader.py +0 -0
  449. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/causal_chain.py +0 -0
  450. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/ordering.py +0 -0
  451. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/timeline_engine.py +0 -0
  452. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/timeline_models.py +0 -0
  453. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/topology/__init__.py +0 -0
  454. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/topology/discovery.py +0 -0
  455. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/__init__.py +0 -0
  456. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/concurrency.py +0 -0
  457. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/io.py +0 -0
  458. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/regex.py +0 -0
  459. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/time.py +0 -0
  460. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/__init__.py +0 -0
  461. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
  462. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
  463. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
  464. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/__init__.py +0 -0
  465. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/assets_writer.py +0 -0
  466. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/chunk_writer.py +0 -0
  467. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/cluster_markdown.py +0 -0
  468. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/correlation_writer.py +0 -0
  469. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
  470. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/incident_writer.py +0 -0
  471. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/markdown_writer.py +0 -0
  472. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/summary_writer.py +0 -0
  473. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/__init__.py +0 -0
  474. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/__init__.py +0 -0
  475. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/__init__.py +0 -0
  476. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/main.py +0 -0
  477. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
  478. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
  479. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/run.py +0 -0
  480. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/settings.py +0 -0
  481. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/converter.py +0 -0
  482. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/formatter.py +0 -0
  483. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/service.py +0 -0
  484. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/document_converter.py +0 -0
  485. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/job_store.py +0 -0
  486. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/__init__.py +0 -0
  487. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/__init__.py +0 -0
  488. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/main.py +0 -0
  489. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
  490. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
  491. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/run.py +0 -0
  492. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/settings.py +0 -0
  493. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/converter.py +0 -0
  494. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/formatter.py +0 -0
  495. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/service.py +0 -0
  496. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/whisper_language.py +0 -0
  497. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/__init__.py +0 -0
  498. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
  499. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/main.py +0 -0
  500. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
  501. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
  502. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/run.py +0 -0
  503. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/settings.py +0 -0
  504. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/converter.py +0 -0
  505. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/formatter.py +0 -0
  506. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/metadata.py +0 -0
  507. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/service.py +0 -0
  508. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/transcript.py +0 -0
  509. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/__init__.py +0 -0
  510. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/__init__.py +0 -0
  511. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/main.py +0 -0
  512. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
  513. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/run.py +0 -0
  514. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/schemas.py +0 -0
  515. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/settings.py +0 -0
  516. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/cli/__init__.py +0 -0
  517. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/cli/main.py +0 -0
  518. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/config/__init__.py +0 -0
  519. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/config/default.yaml +0 -0
  520. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/converters/__init__.py +0 -0
  521. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
  522. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/__init__.py +0 -0
  523. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/extractor.py +0 -0
  524. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/run_config.py +0 -0
  525. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/zip_export.py +0 -0
  526. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
  527. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
  528. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
  529. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/generators/__init__.py +0 -0
  530. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
  531. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
  532. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
  533. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
  534. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/mcp/server.py +0 -0
  535. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/models/__init__.py +0 -0
  536. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/models/domain.py +0 -0
  537. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
  538. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
  539. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
  540. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
  541. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
  542. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
  543. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
  544. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/writers/__init__.py +0 -0
  545. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
  546. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/__init__.py +0 -0
  547. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/cli/__init__.py +0 -0
  548. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/cli/main.py +0 -0
  549. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_logs.py +0 -0
  550. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_metrics.py +0 -0
  551. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_models.py +0 -0
  552. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_parser.py +0 -0
  553. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_spans.py +0 -0
  554. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/__init__.py +0 -0
  555. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/__init__.py +0 -0
  556. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/main.py +0 -0
  557. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
  558. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/settings.py +0 -0
  559. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
  560. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/converter.py +0 -0
  561. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/md_emit.py +0 -0
  562. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/pdf_extract.py +0 -0
  563. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/utils.py +0 -0
  564. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/__init__.py +0 -0
  565. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/__init__.py +0 -0
  566. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
  567. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/jobs.py +0 -0
  568. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/main.py +0 -0
  569. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
  570. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
  571. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/run.py +0 -0
  572. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/settings.py +0 -0
  573. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/assets.py +0 -0
  574. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/chunker.py +0 -0
  575. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/cli.py +0 -0
  576. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/extractor.py +0 -0
  577. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/html_to_md.py +0 -0
  578. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/options.py +0 -0
  579. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/pipeline.py +0 -0
  580. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
  581. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/__init__.py +0 -0
  582. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/__init__.py +0 -0
  583. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
  584. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/jobs.py +0 -0
  585. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/main.py +0 -0
  586. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
  587. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
  588. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/query_options.py +0 -0
  589. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/settings.py +0 -0
  590. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/convert_impl.py +0 -0
  591. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/converter.py +0 -0
  592. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/embedded_extract.py +0 -0
  593. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/ooxml_media.py +0 -0
  594. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/options.py +0 -0
  595. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/post_assets.py +0 -0
  596. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/text_formatting.py +0 -0
  597. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
  598. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
  599. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
  600. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
  601. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/zip_deep.py +0 -0
  602. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/__init__.py +0 -0
  603. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/execution_context.py +0 -0
  604. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/metrics.py +0 -0
  605. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/stage_engine.py +0 -0
  606. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/__init__.py +0 -0
  607. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/classifier_plugin.py +0 -0
  608. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/discovery.py +0 -0
  609. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/enricher_plugin.py +0 -0
  610. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/parser_plugin.py +0 -0
  611. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/plugin_protocol.py +0 -0
  612. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/stage_protocol.py +0 -0
  613. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/writer_plugin.py +0 -0
  614. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/__init__.py +0 -0
  615. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/__init__.py +0 -0
  616. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/convert_runner.py +0 -0
  617. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/jobs.py +0 -0
  618. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/main.py +0 -0
  619. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/mcp_server.py +0 -0
  620. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/mcp_setup.py +0 -0
  621. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/query_options.py +0 -0
  622. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/settings.py +0 -0
  623. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/convert_impl.py +0 -0
  624. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/converter.py +0 -0
  625. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/format_detect.py +0 -0
  626. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_json.py +0 -0
  627. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_txt.py +0 -0
  628. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_xml.py +0 -0
  629. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_flatten.py +0 -0
  630. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/options.py +0 -0
  631. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/xml_parse.py +0 -0
  632. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/__init__.py +0 -0
  633. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/__init__.py +0 -0
  634. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
  635. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
  636. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
  637. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
  638. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/agent.py +0 -0
  639. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/bundle.py +0 -0
  640. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/chunks.py +0 -0
  641. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/cli.py +0 -0
  642. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
  643. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/registry.json +0 -0
  644. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
  645. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
  646. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
  647. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
  648. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
  649. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
  650. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
  651. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
  652. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
  653. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
  654. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
  655. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
  656. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
  657. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
  658. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
  659. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
  660. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
  661. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
  662. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
  663. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
  664. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
  665. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
  666. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
  667. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
  668. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
  669. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
  670. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
  671. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
  672. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
  673. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
  674. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
  675. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
  676. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
  677. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
  678. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
  679. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
  680. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
  681. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
  682. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
  683. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
  684. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
  685. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
  686. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
  687. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
  688. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
  689. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
  690. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
  691. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
  692. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
  693. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
  694. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
  695. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/rag.py +0 -0
  696. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/registry.py +0 -0
  697. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
  698. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
  699. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
  700. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/generate.py +0 -0
  701. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
  702. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/routing.py +0 -0
  703. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/__init__.py +0 -0
  704. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/__init__.py +0 -0
  705. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/convert_runner.py +0 -0
  706. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/jobs.py +0 -0
  707. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/main.py +0 -0
  708. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/mcp_server.py +0 -0
  709. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/mcp_setup.py +0 -0
  710. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/query_options.py +0 -0
  711. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/settings.py +0 -0
  712. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/assets.py +0 -0
  713. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/convert_impl.py +0 -0
  714. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/converter.py +0 -0
  715. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/crawl.py +0 -0
  716. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/extract.py +0 -0
  717. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/fetch.py +0 -0
  718. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/html_to_md.py +0 -0
  719. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/options.py +0 -0
  720. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/page_convert.py +0 -0
  721. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/post_convert_assets.py +0 -0
  722. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/robots_util.py +0 -0
  723. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/__init__.py +0 -0
  724. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/__init__.py +0 -0
  725. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/convert_util.py +0 -0
  726. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/jobs.py +0 -0
  727. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/main.py +0 -0
  728. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/mcp_server.py +0 -0
  729. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/artifact.py +0 -0
  730. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/converter.py +0 -0
  731. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/settings.py +0 -0
  732. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/__init__.py +0 -0
  733. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/api/__init__.py +0 -0
  734. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/api/app.py +0 -0
  735. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/convert_config.py +0 -0
  736. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/converter.py +0 -0
  737. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/converter_core.py +0 -0
  738. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/excel_reader.py +0 -0
  739. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
  740. {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/mcp_server.py +0 -0
  741. {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
  742. {mdengine-0.10.0 → mdengine-0.11.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.10.0
3
+ Version: 0.11.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
@@ -113,6 +113,11 @@ Requires-Dist: openapi-spec-validator>=0.7.0; extra == "openapi"
113
113
  Provides-Extra: codeflow
114
114
  Requires-Dist: networkx>=3.2.0; extra == "codeflow"
115
115
  Requires-Dist: javalang>=0.13.0; extra == "codeflow"
116
+ Provides-Extra: sap
117
+ Requires-Dist: pyyaml>=6.0.0; extra == "sap"
118
+ Requires-Dist: networkx>=3.2.0; extra == "sap"
119
+ Requires-Dist: pydantic>=2.0.0; extra == "sap"
120
+ Requires-Dist: pydantic-settings>=2.0.0; extra == "sap"
116
121
  Provides-Extra: codeflow-worker
117
122
  Requires-Dist: celery>=5.3.0; extra == "codeflow-worker"
118
123
  Requires-Dist: redis>=5.0.0; extra == "codeflow-worker"
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "mdengine"
7
- version = "0.10.0"
7
+ version = "0.11.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"
@@ -117,6 +117,12 @@ codeflow = [
117
117
  "networkx>=3.2.0",
118
118
  "javalang>=0.13.0",
119
119
  ]
120
+ sap = [
121
+ "pyyaml>=6.0.0",
122
+ "networkx>=3.2.0",
123
+ "pydantic>=2.0.0",
124
+ "pydantic-settings>=2.0.0",
125
+ ]
120
126
  # Optional: horizontal workers for codeflow API (Celery + Redis). Default job path uses threads.
121
127
  codeflow-worker = [
122
128
  "celery>=5.3.0",
@@ -278,6 +284,9 @@ md-codeflow-mcp = "md_generator.codeflow.api.mcp_server:main"
278
284
  md-log = "md_generator.log.cli.main:main"
279
285
  md-log-api = "md_generator.log.api.run:main"
280
286
  md-log-mcp = "md_generator.log.api.mcp_server:main"
287
+ md-sap = "md_generator.sap.cli.main:main"
288
+ md-sap-api = "md_generator.sap.api.run:main"
289
+ md-sap-mcp = "md_generator.sap.api.mcp_server:main"
281
290
  md-otel = "md_generator.otel.cli.main:main"
282
291
  mdengine = "md_generator.engine_cli:main"
283
292
 
@@ -290,6 +299,7 @@ include = ["md_generator*"]
290
299
  "md_generator.graph.config" = ["*.yaml"]
291
300
  "md_generator.openapi.config" = ["*.yaml"]
292
301
  "md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
302
+ "md_generator.sap.config" = ["*.yaml"]
293
303
  "md_generator.tools.assistant" = ["data/**/*"]
294
304
 
295
305
  [tool.pytest.ini_options]
@@ -313,5 +323,6 @@ testpaths = [
313
323
  "openapi-to-md/tests",
314
324
  "codeflow-to-md/tests",
315
325
  "log-to-md/tests",
326
+ "sap-to-md/tests",
316
327
  ]
317
328
  markers = ["integration: optional dependency or slower checks"]
@@ -1,5 +1,5 @@
1
1
  """md_generator: PDF, Office, image, text, and ZIP to Markdown conversion."""
2
2
 
3
- __version__ = "0.10.0"
3
+ __version__ = "0.11.0"
4
4
 
5
5
  __all__ = ["__version__"]
@@ -8,7 +8,8 @@ def main(argv: list[str] | None = None) -> int:
8
8
  if len(argv) < 1:
9
9
  print(
10
10
  "Usage: mdengine ai assist … | mdengine ai export … | mdengine skill build … | mdengine db-to-md … | "
11
- "mdengine log-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | mdengine codeflow-to-md scan …",
11
+ "mdengine log-to-md … | mdengine sap-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | "
12
+ "mdengine codeflow-to-md scan …",
12
13
  file=sys.stderr,
13
14
  )
14
15
  return 2
@@ -73,9 +74,14 @@ def main(argv: list[str] | None = None) -> int:
73
74
  from md_generator.codeflow.cli.main import main as cf_main
74
75
 
75
76
  return cf_main(argv[1:])
77
+ if argv[0] == "sap-to-md":
78
+ from md_generator.sap.cli.main import main as sap_main
79
+
80
+ return sap_main(argv[1:])
76
81
  print(
77
82
  "Usage: mdengine ai assist … | mdengine ai export … | mdengine skill build … | mdengine db-to-md … | "
78
- "mdengine log-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | mdengine codeflow-to-md scan …",
83
+ "mdengine log-to-md … | mdengine sap-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | "
84
+ "mdengine codeflow-to-md scan …",
79
85
  file=sys.stderr,
80
86
  )
81
87
  return 2
@@ -0,0 +1,17 @@
1
+ """SAP artifact intelligence: parse, analyze, and export AI-ready Markdown."""
2
+
3
+ from md_generator.sap.core.extractor import extract_to_markdown
4
+ from md_generator.sap.core.run_config import SapRunConfig, load_run_config
5
+ from md_generator.sap.models.entities.kinds import SapObjectKind
6
+ from md_generator.sap.models.entities.sap_object import SapObject
7
+
8
+ __all__ = [
9
+ "__version__",
10
+ "extract_to_markdown",
11
+ "SapRunConfig",
12
+ "load_run_config",
13
+ "SapObject",
14
+ "SapObjectKind",
15
+ ]
16
+
17
+ __version__ = "0.1.0"
@@ -0,0 +1,24 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from md_generator.sap.models.entities.kinds import SapObjectKind
6
+ from md_generator.sap.models.entities.sap_object import SapObject
7
+
8
+
9
+ def extract_authorization(objects: list[SapObject]) -> list[dict[str, Any]]:
10
+ checks: list[dict[str, Any]] = []
11
+ for obj in objects:
12
+ meta = obj.raw_metadata or {}
13
+ if obj.kind != SapObjectKind.PROGRAM or "abap" not in meta:
14
+ continue
15
+ for a in meta["abap"].get("auth_checks", []):
16
+ checks.append(
17
+ {
18
+ "program": obj.name,
19
+ "object": a.get("object"),
20
+ "fields": a.get("fields", []),
21
+ "line": a.get("line"),
22
+ }
23
+ )
24
+ return checks
@@ -0,0 +1,52 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+ from typing import Any
5
+
6
+ PII_PATTERNS = [
7
+ (re.compile(r"EMAIL", re.I), "PII"),
8
+ (re.compile(r"\b(SSN|SOCIAL.?SECURITY)\b", re.I), "PII"),
9
+ (re.compile(r"\b(PHONE|MOBILE|TELNR)\b", re.I), "PII"),
10
+ (re.compile(r"\b(NAME|FIRSTNAME|LASTNAME|NACHN|VORNA)\b", re.I), "PII"),
11
+ ]
12
+ FINANCIAL_PATTERNS = [
13
+ (re.compile(r"\b(AMOUNT|BETRW|WRBTR|DMBTR|NETWR)\b", re.I), "FINANCIAL"),
14
+ (re.compile(r"\b(IBAN|BANK|BANKL|BANKN)\b", re.I), "FINANCIAL"),
15
+ (re.compile(r"\b(TAX|STCEG|MWSKZ)\b", re.I), "FINANCIAL"),
16
+ ]
17
+ HR_PATTERNS = [
18
+ (re.compile(r"\b(SALARY|LGART|BETRG)\b", re.I), "HR_SENSITIVE"),
19
+ (re.compile(r"^PA\d", re.I), "HR_TABLE"),
20
+ ]
21
+
22
+
23
+ def classify_field(field_name: str, *, table_name: str = "", domain: str = "") -> str | None:
24
+ for pat, label in PII_PATTERNS + FINANCIAL_PATTERNS + HR_PATTERNS:
25
+ if pat.search(field_name) or pat.search(domain):
26
+ return label
27
+ if table_name.upper().startswith("PA"):
28
+ return "HR_TABLE"
29
+ if table_name.upper() in ("BKPF", "BSEG", "BSID", "BSAD"):
30
+ return "FINANCIAL_TABLE"
31
+ return None
32
+
33
+
34
+ def classify_objects(objects: list[Any]) -> list[dict[str, Any]]:
35
+ out: list[dict[str, Any]] = []
36
+ for obj in objects:
37
+ meta = getattr(obj, "raw_metadata", {}) or {}
38
+ ddic = meta.get("ddic")
39
+ if isinstance(ddic, dict):
40
+ for f in ddic.get("fields", []):
41
+ fname = f.get("name", "")
42
+ cls = classify_field(fname, table_name=obj.name, domain=f.get("domain", ""))
43
+ if cls:
44
+ out.append(
45
+ {
46
+ "field": fname,
47
+ "table": obj.name,
48
+ "classification": cls,
49
+ "object_id": obj.object_id,
50
+ }
51
+ )
52
+ return out
@@ -0,0 +1,39 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ import networkx as nx
6
+
7
+ from md_generator.sap.models.entities.sap_object import SapObject
8
+
9
+
10
+ def build_lineage_metadata(
11
+ objects: list[SapObject],
12
+ graph: nx.MultiDiGraph | None,
13
+ ) -> dict[str, list[dict[str, Any]]]:
14
+ lineage: dict[str, list[dict[str, Any]]] = {}
15
+ for obj in objects:
16
+ oid = obj.object_id
17
+ entry: dict[str, Any] = {
18
+ "object_id": oid,
19
+ "name": obj.name,
20
+ "kind": obj.kind.value,
21
+ "source_path": str(obj.source_path) if obj.source_path else None,
22
+ "upstream": [],
23
+ "downstream": [],
24
+ }
25
+ if graph and oid in graph:
26
+ for pred in graph.predecessors(oid):
27
+ entry["upstream"].append({"id": pred, "relations": _edge_types(graph, pred, oid)})
28
+ for succ in graph.successors(oid):
29
+ entry["downstream"].append({"id": succ, "relations": _edge_types(graph, oid, succ)})
30
+ lineage[oid] = [entry]
31
+ return lineage
32
+
33
+
34
+ def _edge_types(g: nx.MultiDiGraph, u: str, v: str) -> list[str]:
35
+ types: list[str] = []
36
+ if g.has_edge(u, v):
37
+ for _, data in g[u][v].items():
38
+ types.append(data.get("relation", "LINK"))
39
+ return types
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ import networkx as nx
6
+
7
+ from md_generator.sap.models.entities.sap_object import SapObject
8
+
9
+
10
+ def summarize_relationships(
11
+ graph: nx.MultiDiGraph,
12
+ objects: list[SapObject],
13
+ *,
14
+ cap: int = 80,
15
+ ) -> dict[str, list[dict[str, Any]]]:
16
+ by_id = {o.object_id: o for o in objects}
17
+ out: dict[str, list[dict[str, Any]]] = {}
18
+ for obj in objects:
19
+ oid = obj.object_id
20
+ rels: list[dict[str, Any]] = []
21
+ if oid not in graph:
22
+ out[oid] = rels
23
+ continue
24
+ for _, tgt, data in graph.out_edges(oid, data=True):
25
+ rels.append(
26
+ {
27
+ "target_id": tgt,
28
+ "target_name": by_id[tgt].name if tgt in by_id else tgt,
29
+ "relation": data.get("relation", "LINK"),
30
+ }
31
+ )
32
+ if len(rels) >= cap:
33
+ break
34
+ out[oid] = rels
35
+ return out
@@ -0,0 +1,20 @@
1
+ from __future__ import annotations
2
+
3
+ import re
4
+
5
+ _PREFIX_RE = re.compile(r"^[ZY]_?", re.I)
6
+ _CAMEL_RE = re.compile(r"([a-z])([A-Z])")
7
+
8
+
9
+ def infer_semantic_entity(view_name: str, annotations: dict[str, str] | None = None) -> str:
10
+ if annotations:
11
+ for k, v in annotations.items():
12
+ if "businessobject" in k.lower() or "semantics.businessobject" in k.lower():
13
+ return v.strip().strip("'\"")
14
+ name = _PREFIX_RE.sub("", view_name)
15
+ name = name.replace("_", " ")
16
+ name = _CAMEL_RE.sub(r"\1 \2", name)
17
+ parts = [p for p in name.split() if p and p.upper() not in ("I", "C", "VIEW", "DDIC")]
18
+ if parts:
19
+ return " ".join(p.capitalize() for p in parts)
20
+ return view_name
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ from typing import Any
4
+
5
+ from md_generator.sap.models.entities.kinds import SapObjectKind
6
+ from md_generator.sap.models.entities.sap_object import SapObject
7
+
8
+
9
+ def extract_validations(objects: list[SapObject]) -> list[dict[str, Any]]:
10
+ rules: list[dict[str, Any]] = []
11
+ for obj in objects:
12
+ meta = obj.raw_metadata or {}
13
+ if obj.kind == SapObjectKind.PROGRAM and "abap" in meta:
14
+ for v in meta["abap"].get("validations", []):
15
+ rules.append(
16
+ {
17
+ "source": obj.name,
18
+ "source_kind": obj.kind.value,
19
+ "rule_type": v.get("rule_type"),
20
+ "expression": v.get("expression"),
21
+ "line": v.get("line"),
22
+ }
23
+ )
24
+ if obj.kind == SapObjectKind.CDS_VIEW and "cds" in meta:
25
+ for k, val in meta["cds"].get("annotations", {}).items():
26
+ if "assert" in k.lower():
27
+ rules.append(
28
+ {
29
+ "source": obj.name,
30
+ "source_kind": obj.kind.value,
31
+ "rule_type": "cds_assert",
32
+ "expression": f"{k}={val}",
33
+ }
34
+ )
35
+ return rules
@@ -0,0 +1,85 @@
1
+ from __future__ import annotations
2
+
3
+ from contextlib import asynccontextmanager
4
+ from pathlib import Path
5
+
6
+ from fastapi import FastAPI, HTTPException, Request
7
+ from fastapi.middleware.cors import CORSMiddleware
8
+ from fastapi.responses import FileResponse, Response
9
+ from pydantic import ValidationError
10
+
11
+ from md_generator.sap.api.schemas import SapToMdRunBody
12
+ from md_generator.sap.api.settings import SapApiSettings, cors_list, sqlite_path_resolved
13
+ from md_generator.sap.api.zip_export import build_sap_markdown_zip_bytes
14
+ from md_generator.sap.core.job_manager import SapJobManager
15
+
16
+
17
+ @asynccontextmanager
18
+ async def lifespan(app: FastAPI):
19
+ settings = SapApiSettings()
20
+ ws = Path(settings.job_workspace_root) if settings.job_workspace_root else None
21
+ jobs = SapJobManager(sqlite_path=sqlite_path_resolved(settings), workspace_root=ws)
22
+ app.state.settings = settings
23
+ app.state.jobs = jobs
24
+ yield
25
+ jobs.close()
26
+
27
+
28
+ app = FastAPI(title="sap-to-md", lifespan=lifespan)
29
+ _bootstrap = SapApiSettings()
30
+ app.add_middleware(
31
+ CORSMiddleware,
32
+ allow_origins=cors_list(_bootstrap),
33
+ allow_credentials="*" not in cors_list(_bootstrap),
34
+ allow_methods=["*"],
35
+ allow_headers=["*"],
36
+ )
37
+
38
+
39
+ @app.get("/health")
40
+ async def health() -> dict[str, str]:
41
+ return {"status": "ok"}
42
+
43
+
44
+ @app.post("/sap-to-md/run")
45
+ async def sap_run_sync(body: SapToMdRunBody) -> Response:
46
+ try:
47
+ cfg = body.to_run_config()
48
+ except ValidationError as e:
49
+ raise HTTPException(status_code=422, detail=e.errors()) from e
50
+ if not cfg.input_paths:
51
+ raise HTTPException(status_code=400, detail="input.paths required")
52
+ data = build_sap_markdown_zip_bytes(cfg)
53
+ return Response(
54
+ content=data,
55
+ media_type="application/zip",
56
+ headers={"Content-Disposition": 'attachment; filename="sap-md.zip"'},
57
+ )
58
+
59
+
60
+ @app.post("/sap-to-md/job")
61
+ async def sap_enqueue(body: SapToMdRunBody, request: Request) -> dict[str, str]:
62
+ cfg = body.to_run_config()
63
+ if not cfg.input_paths:
64
+ raise HTTPException(status_code=400, detail="input.paths required")
65
+ jobs: SapJobManager = request.app.state.jobs
66
+ job_id = jobs.enqueue(cfg)
67
+ return {"job_id": job_id}
68
+
69
+
70
+ @app.get("/sap-to-md/job/{job_id}")
71
+ async def sap_job_status(job_id: str, request: Request) -> dict:
72
+ jobs: SapJobManager = request.app.state.jobs
73
+ rec = jobs.get(job_id)
74
+ if not rec:
75
+ raise HTTPException(status_code=404, detail="job not found")
76
+ return rec.to_api_dict()
77
+
78
+
79
+ @app.get("/sap-to-md/job/{job_id}/download")
80
+ async def sap_job_download(job_id: str, request: Request) -> FileResponse:
81
+ jobs: SapJobManager = request.app.state.jobs
82
+ rec = jobs.get(job_id)
83
+ if not rec or rec.status != "COMPLETED" or not rec.zip_path:
84
+ raise HTTPException(status_code=404, detail="zip not ready")
85
+ return FileResponse(rec.zip_path, filename="sap-md.zip", media_type="application/zip")
@@ -0,0 +1,16 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+
5
+
6
+ def main() -> None:
7
+ """Run sap-to-md API (MCP mount can be added when mdengine[mcp] is installed)."""
8
+ import uvicorn
9
+
10
+ host = os.environ.get("SAP_TO_MD_HOST", "127.0.0.1")
11
+ port = int(os.environ.get("SAP_TO_MD_PORT", "8020"))
12
+ uvicorn.run("md_generator.sap.api.main:app", host=host, port=port, reload=False)
13
+
14
+
15
+ if __name__ == "__main__":
16
+ main()
@@ -0,0 +1,15 @@
1
+ from __future__ import annotations
2
+
3
+ import os
4
+
5
+
6
+ def main() -> None:
7
+ import uvicorn
8
+
9
+ host = os.environ.get("SAP_TO_MD_HOST", "127.0.0.1")
10
+ port = int(os.environ.get("SAP_TO_MD_PORT", "8020"))
11
+ uvicorn.run("md_generator.sap.api.main:app", host=host, port=port, reload=False)
12
+
13
+
14
+ if __name__ == "__main__":
15
+ main()
@@ -0,0 +1,47 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+ from typing import Any
5
+
6
+ from pydantic import BaseModel, Field, model_validator
7
+
8
+ from md_generator.sap.core.features import FEATURES
9
+ from md_generator.sap.core.run_config import SapRunConfig
10
+
11
+
12
+ class InputSection(BaseModel):
13
+ paths: list[str] = Field(default_factory=list)
14
+
15
+
16
+ class OutputSection(BaseModel):
17
+ path: str = "output/sap-md"
18
+ split_files: bool = True
19
+ write_manifest: bool = True
20
+ markdown_cross_links: bool = True
21
+
22
+
23
+ class FeaturesSection(BaseModel):
24
+ include: list[str] | None = None
25
+ exclude: list[str] = Field(default_factory=list)
26
+
27
+
28
+ class SapToMdRunBody(BaseModel):
29
+ input: InputSection = Field(default_factory=InputSection)
30
+ output: OutputSection = Field(default_factory=OutputSection)
31
+ features: FeaturesSection = Field(default_factory=FeaturesSection)
32
+ chunking: dict[str, Any] = Field(default_factory=dict)
33
+ graph: dict[str, Any] = Field(default_factory=dict)
34
+ performance: dict[str, Any] = Field(default_factory=dict)
35
+
36
+ @model_validator(mode="after")
37
+ def check_features(self) -> SapToMdRunBody:
38
+ if self.features.include:
39
+ bad = set(self.features.include) - FEATURES
40
+ if bad:
41
+ raise ValueError(f"Unknown features: {sorted(bad)}")
42
+ return self
43
+
44
+ def to_run_config(self) -> SapRunConfig:
45
+ from md_generator.sap.core.run_config import load_run_config
46
+
47
+ return load_run_config(None, self.model_dump()).normalized()
@@ -0,0 +1,31 @@
1
+ from __future__ import annotations
2
+
3
+ from pathlib import Path
4
+
5
+ from pydantic_settings import BaseSettings, SettingsConfigDict
6
+
7
+
8
+ class SapApiSettings(BaseSettings):
9
+ model_config = SettingsConfigDict(
10
+ env_prefix="SAP_TO_MD_",
11
+ env_file=".env",
12
+ extra="ignore",
13
+ )
14
+
15
+ job_sqlite_path: str | None = None
16
+ job_workspace_root: str | None = None
17
+ cors_origins: str = "*"
18
+ max_sync_zip_mb: int = 80
19
+
20
+
21
+ def cors_list(settings: SapApiSettings) -> list[str]:
22
+ raw = (settings.cors_origins or "*").strip()
23
+ if raw == "*":
24
+ return ["*"]
25
+ return [o.strip() for o in raw.split(",") if o.strip()]
26
+
27
+
28
+ def sqlite_path_resolved(settings: SapApiSettings) -> Path | None:
29
+ if settings.job_sqlite_path:
30
+ return Path(settings.job_sqlite_path)
31
+ return None
@@ -0,0 +1,25 @@
1
+ from __future__ import annotations
2
+
3
+ import tempfile
4
+ import zipfile
5
+ from pathlib import Path
6
+
7
+ from md_generator.sap.core.extractor import extract_to_markdown
8
+ from md_generator.sap.core.run_config import SapRunConfig
9
+
10
+
11
+ def build_sap_markdown_zip_bytes(cfg: SapRunConfig) -> bytes:
12
+ with tempfile.TemporaryDirectory() as tmp:
13
+ root = Path(tmp) / "out"
14
+ cfg = cfg.with_output(root)
15
+ extract_to_markdown(cfg)
16
+ buf = tempfile.NamedTemporaryFile(delete=False, suffix=".zip")
17
+ buf.close()
18
+ zpath = Path(buf.name)
19
+ with zipfile.ZipFile(zpath, "w", zipfile.ZIP_DEFLATED) as zf:
20
+ for p in sorted(root.rglob("*")):
21
+ if p.is_file():
22
+ zf.write(p, p.relative_to(root).as_posix())
23
+ data = zpath.read_bytes()
24
+ zpath.unlink(missing_ok=True)
25
+ return data