mdengine 0.10.0__tar.gz → 0.11.1__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 (772) hide show
  1. {mdengine-0.10.0 → mdengine-0.11.1}/PKG-INFO +19 -2
  2. {mdengine-0.10.0 → mdengine-0.11.1}/README.md +1 -1
  3. {mdengine-0.10.0 → mdengine-0.11.1}/pyproject.toml +24 -1
  4. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/__init__.py +1 -1
  5. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/cli/main.py +3 -1
  6. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/extractor.py +28 -0
  7. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/api_detector.py +115 -0
  8. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/entry_detector.py +2 -0
  9. mdengine-0.11.1/src/md_generator/codeflow/detectors/rails_detector.py +89 -0
  10. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/lang_dispatch.py +16 -0
  11. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/ir.py +7 -0
  12. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_csharp_adapter.py +70 -0
  13. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_go_adapter.py +58 -0
  14. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_java_adapter.py +120 -0
  15. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_kotlin_adapter.py +76 -0
  16. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_lua_adapter.py +54 -0
  17. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_php_adapter.py +65 -0
  18. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_python_adapter.py +100 -0
  19. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_ruby_adapter.py +70 -0
  20. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_rust_adapter.py +58 -0
  21. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_scala_adapter.py +71 -0
  22. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_swift_adapter.py +70 -0
  23. mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_zig_adapter.py +54 -0
  24. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/base.py +28 -0
  25. mdengine-0.11.1/src/md_generator/codeflow/parsers/capability_registry.py +195 -0
  26. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/go_parser.py +6 -1
  27. mdengine-0.11.1/src/md_generator/codeflow/parsers/ir_enrich.py +117 -0
  28. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/java_parser.py +6 -1
  29. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/php_parser.py +6 -1
  30. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/python_parser.py +6 -1
  31. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_common.py +149 -0
  32. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_csharp_parser.py +173 -0
  33. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_entry_helpers.py +29 -0
  34. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_go_parser.py +71 -0
  35. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_java_parser.py +242 -0
  36. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +6 -1
  37. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_kotlin_parser.py +179 -0
  38. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_lua_parser.py +112 -0
  39. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_php_parser.py +71 -0
  40. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_python_parser.py +94 -0
  41. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_ruby_parser.py +229 -0
  42. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_rust_parser.py +159 -0
  43. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_scala_parser.py +143 -0
  44. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_swift_parser.py +171 -0
  45. mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_zig_parser.py +75 -0
  46. mdengine-0.11.1/src/md_generator/codeflow/parsers/unified_parser.py +119 -0
  47. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/engine_cli.py +8 -2
  48. mdengine-0.11.1/src/md_generator/sap/__init__.py +17 -0
  49. mdengine-0.11.1/src/md_generator/sap/analyzer/authorization/extractor.py +24 -0
  50. mdengine-0.11.1/src/md_generator/sap/analyzer/governance/classifier.py +52 -0
  51. mdengine-0.11.1/src/md_generator/sap/analyzer/lineage/builder.py +39 -0
  52. mdengine-0.11.1/src/md_generator/sap/analyzer/relationships/engine.py +35 -0
  53. mdengine-0.11.1/src/md_generator/sap/analyzer/semantics/entity_mapper.py +20 -0
  54. mdengine-0.11.1/src/md_generator/sap/analyzer/validation/extractor.py +35 -0
  55. mdengine-0.11.1/src/md_generator/sap/api/main.py +85 -0
  56. mdengine-0.11.1/src/md_generator/sap/api/mcp_server.py +16 -0
  57. mdengine-0.11.1/src/md_generator/sap/api/run.py +15 -0
  58. mdengine-0.11.1/src/md_generator/sap/api/schemas.py +47 -0
  59. mdengine-0.11.1/src/md_generator/sap/api/settings.py +31 -0
  60. mdengine-0.11.1/src/md_generator/sap/api/zip_export.py +25 -0
  61. mdengine-0.11.1/src/md_generator/sap/cli/main.py +125 -0
  62. mdengine-0.11.1/src/md_generator/sap/config/default.yaml +62 -0
  63. mdengine-0.11.1/src/md_generator/sap/core/__init__.py +1 -0
  64. mdengine-0.11.1/src/md_generator/sap/core/cache.py +51 -0
  65. mdengine-0.11.1/src/md_generator/sap/core/errors.py +17 -0
  66. mdengine-0.11.1/src/md_generator/sap/core/export_manifest.py +48 -0
  67. mdengine-0.11.1/src/md_generator/sap/core/extractor.py +18 -0
  68. mdengine-0.11.1/src/md_generator/sap/core/features.py +17 -0
  69. mdengine-0.11.1/src/md_generator/sap/core/job_manager.py +176 -0
  70. mdengine-0.11.1/src/md_generator/sap/core/link_graph.py +49 -0
  71. mdengine-0.11.1/src/md_generator/sap/core/run_config.py +151 -0
  72. mdengine-0.11.1/src/md_generator/sap/core/run_context.py +25 -0
  73. mdengine-0.11.1/src/md_generator/sap/graph/__init__.py +1 -0
  74. mdengine-0.11.1/src/md_generator/sap/graph/builder.py +97 -0
  75. mdengine-0.11.1/src/md_generator/sap/graph/exporters/__init__.py +1 -0
  76. mdengine-0.11.1/src/md_generator/sap/graph/exporters/json_export.py +13 -0
  77. mdengine-0.11.1/src/md_generator/sap/graph/exporters/mermaid_export.py +49 -0
  78. mdengine-0.11.1/src/md_generator/sap/graph/relations.py +15 -0
  79. mdengine-0.11.1/src/md_generator/sap/markdown/__init__.py +1 -0
  80. mdengine-0.11.1/src/md_generator/sap/markdown/builders/__init__.py +1 -0
  81. mdengine-0.11.1/src/md_generator/sap/markdown/builders/entity_builder.py +170 -0
  82. mdengine-0.11.1/src/md_generator/sap/markdown/builders/slug.py +11 -0
  83. mdengine-0.11.1/src/md_generator/sap/markdown/builders/writer.py +164 -0
  84. mdengine-0.11.1/src/md_generator/sap/markdown/chunking/chunk_strategy.py +98 -0
  85. mdengine-0.11.1/src/md_generator/sap/markdown/chunking/registry.py +22 -0
  86. mdengine-0.11.1/src/md_generator/sap/markdown/chunking/writer.py +51 -0
  87. mdengine-0.11.1/src/md_generator/sap/models/entities/__init__.py +4 -0
  88. mdengine-0.11.1/src/md_generator/sap/models/entities/kinds.py +19 -0
  89. mdengine-0.11.1/src/md_generator/sap/models/entities/sap_object.py +30 -0
  90. mdengine-0.11.1/src/md_generator/sap/models/metadata/__init__.py +14 -0
  91. mdengine-0.11.1/src/md_generator/sap/models/metadata/abap.py +62 -0
  92. mdengine-0.11.1/src/md_generator/sap/models/metadata/cds.py +46 -0
  93. mdengine-0.11.1/src/md_generator/sap/models/metadata/ddic.py +44 -0
  94. mdengine-0.11.1/src/md_generator/sap/orchestration/__init__.py +1 -0
  95. mdengine-0.11.1/src/md_generator/sap/orchestration/pipeline.py +195 -0
  96. mdengine-0.11.1/src/md_generator/sap/parser/__init__.py +1 -0
  97. mdengine-0.11.1/src/md_generator/sap/parser/abap/__init__.py +3 -0
  98. mdengine-0.11.1/src/md_generator/sap/parser/abap/lexer.py +82 -0
  99. mdengine-0.11.1/src/md_generator/sap/parser/abap/parser.py +159 -0
  100. mdengine-0.11.1/src/md_generator/sap/parser/bapi/parser.py +48 -0
  101. mdengine-0.11.1/src/md_generator/sap/parser/base.py +29 -0
  102. mdengine-0.11.1/src/md_generator/sap/parser/cds/parser.py +71 -0
  103. mdengine-0.11.1/src/md_generator/sap/parser/ddic/parser.py +94 -0
  104. mdengine-0.11.1/src/md_generator/sap/parser/discovery.py +49 -0
  105. mdengine-0.11.1/src/md_generator/sap/parser/idoc/parser.py +45 -0
  106. mdengine-0.11.1/src/md_generator/sap/parser/odata/parser.py +73 -0
  107. mdengine-0.11.1/src/md_generator/sap/parser/registry.py +79 -0
  108. mdengine-0.11.1/src/md_generator/sap/parser/rfc/__init__.py +1 -0
  109. mdengine-0.11.1/src/md_generator/sap/parser/transport/parser.py +56 -0
  110. {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/PKG-INFO +19 -2
  111. {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/SOURCES.txt +90 -0
  112. {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/entry_points.txt +3 -0
  113. {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/requires.txt +18 -0
  114. mdengine-0.10.0/src/md_generator/codeflow/parsers/ir_enrich.py +0 -41
  115. mdengine-0.10.0/src/md_generator/codeflow/parsers/unified_parser.py +0 -31
  116. {mdengine-0.10.0 → mdengine-0.11.1}/LICENSE +0 -0
  117. {mdengine-0.10.0 → mdengine-0.11.1}/setup.cfg +0 -0
  118. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/__init__.py +0 -0
  119. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/__init__.py +0 -0
  120. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/convert_runner.py +0 -0
  121. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/jobs.py +0 -0
  122. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/main.py +0 -0
  123. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/mcp_server.py +0 -0
  124. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/mcp_setup.py +0 -0
  125. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/query_options.py +0 -0
  126. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/settings.py +0 -0
  127. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/convert_impl.py +0 -0
  128. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/converter.py +0 -0
  129. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/extractors.py +0 -0
  130. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/options.py +0 -0
  131. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/__init__.py +0 -0
  132. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
  133. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
  134. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/__init__.py +0 -0
  135. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/job_manager.py +0 -0
  136. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/main.py +0 -0
  137. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/mcp_server.py +0 -0
  138. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/run.py +0 -0
  139. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/schemas.py +0 -0
  140. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/semantic_api.py +0 -0
  141. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/settings.py +0 -0
  142. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/sse.py +0 -0
  143. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/cli/__init__.py +0 -0
  144. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/config/__init__.py +0 -0
  145. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
  146. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/__init__.py +0 -0
  147. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/cache_manager.py +0 -0
  148. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/run_config.py +0 -0
  149. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/__init__.py +0 -0
  150. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
  151. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
  152. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
  153. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
  154. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/__init__.py +0 -0
  155. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
  156. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
  157. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
  158. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
  159. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
  160. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
  161. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
  162. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
  163. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/html.py +0 -0
  164. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/html_unified.py +0 -0
  165. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/markdown.py +0 -0
  166. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/mermaid.py +0 -0
  167. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/sequence.py +0 -0
  168. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/__init__.py +0 -0
  169. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/analysis.py +0 -0
  170. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/anomaly.py +0 -0
  171. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/builder.py +0 -0
  172. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/call_expander.py +0 -0
  173. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
  174. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
  175. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
  176. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
  177. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/clustering.py +0 -0
  178. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
  179. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
  180. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
  181. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/embeddings.py +0 -0
  182. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/enricher.py +0 -0
  183. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/event_graph.py +0 -0
  184. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/export_schema.py +0 -0
  185. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/hotpath.py +0 -0
  186. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
  187. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
  188. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
  189. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/nl_query.py +0 -0
  190. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
  191. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/path_probability.py +0 -0
  192. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/query_engine.py +0 -0
  193. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/relations.py +0 -0
  194. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
  195. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
  196. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
  197. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
  198. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
  199. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
  200. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
  201. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/loader.py +0 -0
  202. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/mcp/__init__.py +0 -0
  203. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/mcp/server.py +0 -0
  204. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/__init__.py +0 -0
  205. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
  206. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/__init__.py +0 -0
  207. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
  208. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
  209. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
  210. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
  211. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
  212. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
  213. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
  214. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
  215. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
  216. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/__init__.py +0 -0
  217. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/collector.py +0 -0
  218. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
  219. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/java_rules.py +0 -0
  220. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/__init__.py +0 -0
  221. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
  222. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
  223. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/tracer.py +0 -0
  224. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/utils/__init__.py +0 -0
  225. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/utils/tools_root.py +0 -0
  226. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/worker/__init__.py +0 -0
  227. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
  228. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/__init__.py +0 -0
  229. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/__init__.py +0 -0
  230. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
  231. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/models.py +0 -0
  232. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/serialize.py +0 -0
  233. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/__init__.py +0 -0
  234. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/__init__.py +0 -0
  235. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/log_record.py +0 -0
  236. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/otel.py +0 -0
  237. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/telemetry_event.py +0 -0
  238. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/validation.py +0 -0
  239. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/__init__.py +0 -0
  240. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/__init__.py +0 -0
  241. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_adapter.py +0 -0
  242. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_introspect.py +0 -0
  243. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_odbc.py +0 -0
  244. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/factory.py +0 -0
  245. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
  246. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
  247. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
  248. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
  249. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sql_common.py +0 -0
  250. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
  251. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
  252. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/__init__.py +0 -0
  253. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/access_upload.py +0 -0
  254. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/main.py +0 -0
  255. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/mcp_server.py +0 -0
  256. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/run.py +0 -0
  257. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/schemas.py +0 -0
  258. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/settings.py +0 -0
  259. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/sqlite_upload.py +0 -0
  260. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/cli/__init__.py +0 -0
  261. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/cli/main.py +0 -0
  262. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/config/__init__.py +0 -0
  263. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/config/default.yaml +0 -0
  264. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/__init__.py +0 -0
  265. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/base_adapter.py +0 -0
  266. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/cli_ops.py +0 -0
  267. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/__init__.py +0 -0
  268. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
  269. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/filter.py +0 -0
  270. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
  271. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
  272. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/model.py +0 -0
  273. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/pipeline.py +0 -0
  274. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/render.py +0 -0
  275. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/export_manifest.py +0 -0
  276. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/extractor.py +0 -0
  277. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/job_manager.py +0 -0
  278. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/link_graph.py +0 -0
  279. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/markdown_writer.py +0 -0
  280. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/models.py +0 -0
  281. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/run_config.py +0 -0
  282. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/util.py +0 -0
  283. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/zip_export.py +0 -0
  284. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/__init__.py +0 -0
  285. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/server.py +0 -0
  286. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/sse.py +0 -0
  287. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/stream.py +0 -0
  288. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/__init__.py +0 -0
  289. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/merge.py +0 -0
  290. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/partition.py +0 -0
  291. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/worker_pool.py +0 -0
  292. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/__init__.py +0 -0
  293. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/audit.py +0 -0
  294. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/classification.py +0 -0
  295. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/lineage.py +0 -0
  296. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/retention.py +0 -0
  297. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/__init__.py +0 -0
  298. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/__init__.py +0 -0
  299. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/factory.py +0 -0
  300. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
  301. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
  302. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/__init__.py +0 -0
  303. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/main.py +0 -0
  304. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/mcp_server.py +0 -0
  305. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/run.py +0 -0
  306. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/schemas.py +0 -0
  307. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/settings.py +0 -0
  308. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/cli/__init__.py +0 -0
  309. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/cli/main.py +0 -0
  310. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/config/__init__.py +0 -0
  311. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/config/default.yaml +0 -0
  312. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/__init__.py +0 -0
  313. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/base_adapter.py +0 -0
  314. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/extractor.py +0 -0
  315. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/graph_builder.py +0 -0
  316. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/job_manager.py +0 -0
  317. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/markdown_writer.py +0 -0
  318. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/models.py +0 -0
  319. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/run_config.py +0 -0
  320. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/viz.py +0 -0
  321. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/zip_export.py +0 -0
  322. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/__init__.py +0 -0
  323. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/server.py +0 -0
  324. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/sse.py +0 -0
  325. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/stream.py +0 -0
  326. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/__init__.py +0 -0
  327. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/__init__.py +0 -0
  328. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/main.py +0 -0
  329. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/mcp_server.py +0 -0
  330. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/query_options.py +0 -0
  331. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/settings.py +0 -0
  332. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/staging.py +0 -0
  333. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/zip_bundle.py +0 -0
  334. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/__init__.py +0 -0
  335. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/base.py +0 -0
  336. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/easy.py +0 -0
  337. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/paddle.py +0 -0
  338. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/tesseract.py +0 -0
  339. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/convert_impl.py +0 -0
  340. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/converter.py +0 -0
  341. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/emit.py +0 -0
  342. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/io_util.py +0 -0
  343. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/utils.py +0 -0
  344. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/__init__.py +0 -0
  345. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/__init__.py +0 -0
  346. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/aggregators.py +0 -0
  347. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
  348. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/metrics.py +0 -0
  349. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/timeline.py +0 -0
  350. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/__init__.py +0 -0
  351. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/main.py +0 -0
  352. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/mcp_server.py +0 -0
  353. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/run.py +0 -0
  354. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/schemas.py +0 -0
  355. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/settings.py +0 -0
  356. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/__init__.py +0 -0
  357. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
  358. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_engine.py +0 -0
  359. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_models.py +0 -0
  360. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_registry.py +0 -0
  361. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
  362. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/cli/__init__.py +0 -0
  363. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/cli/main.py +0 -0
  364. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/__init__.py +0 -0
  365. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/embeddings.py +0 -0
  366. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
  367. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
  368. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/vectorizer.py +0 -0
  369. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/__init__.py +0 -0
  370. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/default.yaml +0 -0
  371. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/preset_loader.py +0 -0
  372. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/__init__.py +0 -0
  373. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/generic.yaml +0 -0
  374. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/json.yaml +0 -0
  375. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/logback.yaml +0 -0
  376. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/springboot.yaml +0 -0
  377. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/schemas.py +0 -0
  378. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/__init__.py +0 -0
  379. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/errors.py +0 -0
  380. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/execution_context.py +0 -0
  381. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/extractor.py +0 -0
  382. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/job_manager.py +0 -0
  383. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/lifecycle.py +0 -0
  384. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/pipeline.py +0 -0
  385. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/plugins.py +0 -0
  386. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/run_config.py +0 -0
  387. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/zip_export.py +0 -0
  388. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_engine.py +0 -0
  389. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_models.py +0 -0
  390. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
  391. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/cross_source.py +0 -0
  392. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/request_parser.py +0 -0
  393. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/session_parser.py +0 -0
  394. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/trace_parser.py +0 -0
  395. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/__init__.py +0 -0
  396. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/incident_summary.py +0 -0
  397. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/service_report.py +0 -0
  398. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/troubleshooting.py +0 -0
  399. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
  400. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
  401. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
  402. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
  403. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
  404. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/__init__.py +0 -0
  405. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/correlation.py +0 -0
  406. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
  407. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/hash_generator.py +0 -0
  408. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
  409. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
  410. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/__init__.py +0 -0
  411. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
  412. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/fingerprinting.py +0 -0
  413. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/grouping.py +0 -0
  414. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/incident_engine.py +0 -0
  415. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/models.py +0 -0
  416. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/severity.py +0 -0
  417. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/__init__.py +0 -0
  418. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/checkpoint.py +0 -0
  419. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/engine.py +0 -0
  420. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/resume_reader.py +0 -0
  421. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/__init__.py +0 -0
  422. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
  423. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/archive_loader.py +0 -0
  424. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/batch_reader.py +0 -0
  425. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
  426. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/file_loader.py +0 -0
  427. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/stream_reader.py +0 -0
  428. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
  429. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
  430. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/heuristics.py +0 -0
  431. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
  432. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
  433. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
  434. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
  435. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
  436. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/linking/__init__.py +0 -0
  437. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/linking/link_graph.py +0 -0
  438. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
  439. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
  440. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
  441. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
  442. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/__init__.py +0 -0
  443. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/server.py +0 -0
  444. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/sse.py +0 -0
  445. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/__init__.py +0 -0
  446. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
  447. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/entropy.py +0 -0
  448. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/filter.py +0 -0
  449. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/__init__.py +0 -0
  450. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/number_normalizer.py +0 -0
  451. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/path_normalizer.py +0 -0
  452. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/pii_redactor.py +0 -0
  453. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/token_normalizer.py +0 -0
  454. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
  455. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/__init__.py +0 -0
  456. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/json_line_parser.py +0 -0
  457. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/level_detector.py +0 -0
  458. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/logger_detector.py +0 -0
  459. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/models.py +0 -0
  460. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/multiline_parser.py +0 -0
  461. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/parser_registry.py +0 -0
  462. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/regex_parser.py +0 -0
  463. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
  464. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/timestamp_parser.py +0 -0
  465. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/bm25_search.py +0 -0
  466. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/cli.py +0 -0
  467. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/hybrid_search.py +0 -0
  468. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/search_index.py +0 -0
  469. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/vector_search.py +0 -0
  470. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/service/__init__.py +0 -0
  471. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/service/service.py +0 -0
  472. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/__init__.py +0 -0
  473. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/kafka_reader.py +0 -0
  474. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/redis_reader.py +0 -0
  475. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/stdin_reader.py +0 -0
  476. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
  477. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/tail_reader.py +0 -0
  478. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/websocket_reader.py +0 -0
  479. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/causal_chain.py +0 -0
  480. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/ordering.py +0 -0
  481. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/timeline_engine.py +0 -0
  482. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/timeline_models.py +0 -0
  483. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/topology/__init__.py +0 -0
  484. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/topology/discovery.py +0 -0
  485. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/__init__.py +0 -0
  486. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/concurrency.py +0 -0
  487. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/io.py +0 -0
  488. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/regex.py +0 -0
  489. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/time.py +0 -0
  490. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/__init__.py +0 -0
  491. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
  492. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
  493. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
  494. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/__init__.py +0 -0
  495. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/assets_writer.py +0 -0
  496. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/chunk_writer.py +0 -0
  497. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/cluster_markdown.py +0 -0
  498. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/correlation_writer.py +0 -0
  499. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
  500. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/incident_writer.py +0 -0
  501. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/markdown_writer.py +0 -0
  502. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/summary_writer.py +0 -0
  503. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/__init__.py +0 -0
  504. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/__init__.py +0 -0
  505. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/__init__.py +0 -0
  506. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/main.py +0 -0
  507. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/mcp_server.py +0 -0
  508. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
  509. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/run.py +0 -0
  510. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/settings.py +0 -0
  511. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/converter.py +0 -0
  512. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/formatter.py +0 -0
  513. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/service.py +0 -0
  514. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/document_converter.py +0 -0
  515. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/job_store.py +0 -0
  516. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/__init__.py +0 -0
  517. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/__init__.py +0 -0
  518. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/main.py +0 -0
  519. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/mcp_server.py +0 -0
  520. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/mcp_setup.py +0 -0
  521. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/run.py +0 -0
  522. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/settings.py +0 -0
  523. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/converter.py +0 -0
  524. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/formatter.py +0 -0
  525. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/service.py +0 -0
  526. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/whisper_language.py +0 -0
  527. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/__init__.py +0 -0
  528. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/__init__.py +0 -0
  529. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/main.py +0 -0
  530. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
  531. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
  532. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/run.py +0 -0
  533. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/settings.py +0 -0
  534. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/converter.py +0 -0
  535. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/formatter.py +0 -0
  536. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/metadata.py +0 -0
  537. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/service.py +0 -0
  538. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/transcript.py +0 -0
  539. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/__init__.py +0 -0
  540. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/__init__.py +0 -0
  541. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/main.py +0 -0
  542. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/mcp_server.py +0 -0
  543. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/run.py +0 -0
  544. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/schemas.py +0 -0
  545. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/settings.py +0 -0
  546. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/cli/__init__.py +0 -0
  547. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/cli/main.py +0 -0
  548. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/config/__init__.py +0 -0
  549. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/config/default.yaml +0 -0
  550. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/converters/__init__.py +0 -0
  551. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
  552. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/__init__.py +0 -0
  553. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/extractor.py +0 -0
  554. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/run_config.py +0 -0
  555. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/zip_export.py +0 -0
  556. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/__init__.py +0 -0
  557. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/rules.py +0 -0
  558. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
  559. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/generators/__init__.py +0 -0
  560. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
  561. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/loaders/__init__.py +0 -0
  562. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
  563. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/mcp/__init__.py +0 -0
  564. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/mcp/server.py +0 -0
  565. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/models/__init__.py +0 -0
  566. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/models/domain.py +0 -0
  567. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/__init__.py +0 -0
  568. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/operations.py +0 -0
  569. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
  570. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/parsers/__init__.py +0 -0
  571. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
  572. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/resolvers/__init__.py +0 -0
  573. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
  574. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/writers/__init__.py +0 -0
  575. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
  576. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/__init__.py +0 -0
  577. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/cli/__init__.py +0 -0
  578. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/cli/main.py +0 -0
  579. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_logs.py +0 -0
  580. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_metrics.py +0 -0
  581. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_models.py +0 -0
  582. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_parser.py +0 -0
  583. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_spans.py +0 -0
  584. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/__init__.py +0 -0
  585. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/__init__.py +0 -0
  586. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/main.py +0 -0
  587. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/mcp_server.py +0 -0
  588. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/settings.py +0 -0
  589. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/zip_bundle.py +0 -0
  590. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/converter.py +0 -0
  591. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/md_emit.py +0 -0
  592. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/pdf_extract.py +0 -0
  593. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/utils.py +0 -0
  594. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/__init__.py +0 -0
  595. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/__init__.py +0 -0
  596. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/convert_runner.py +0 -0
  597. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/jobs.py +0 -0
  598. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/main.py +0 -0
  599. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/mcp_server.py +0 -0
  600. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/mcp_setup.py +0 -0
  601. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/run.py +0 -0
  602. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/settings.py +0 -0
  603. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/assets.py +0 -0
  604. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/chunker.py +0 -0
  605. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/cli.py +0 -0
  606. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/extractor.py +0 -0
  607. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/html_to_md.py +0 -0
  608. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/options.py +0 -0
  609. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/pipeline.py +0 -0
  610. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/playwright_fetcher.py +0 -0
  611. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/__init__.py +0 -0
  612. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/__init__.py +0 -0
  613. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/convert_runner.py +0 -0
  614. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/jobs.py +0 -0
  615. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/main.py +0 -0
  616. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/mcp_server.py +0 -0
  617. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/mcp_setup.py +0 -0
  618. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/query_options.py +0 -0
  619. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/settings.py +0 -0
  620. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/convert_impl.py +0 -0
  621. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/converter.py +0 -0
  622. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/embedded_extract.py +0 -0
  623. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/ooxml_media.py +0 -0
  624. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/options.py +0 -0
  625. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/post_assets.py +0 -0
  626. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/text_formatting.py +0 -0
  627. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
  628. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
  629. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
  630. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
  631. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/zip_deep.py +0 -0
  632. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/__init__.py +0 -0
  633. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/execution_context.py +0 -0
  634. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/metrics.py +0 -0
  635. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/stage_engine.py +0 -0
  636. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/__init__.py +0 -0
  637. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/classifier_plugin.py +0 -0
  638. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/discovery.py +0 -0
  639. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/enricher_plugin.py +0 -0
  640. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/parser_plugin.py +0 -0
  641. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/plugin_protocol.py +0 -0
  642. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/stage_protocol.py +0 -0
  643. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/writer_plugin.py +0 -0
  644. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/__init__.py +0 -0
  645. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/__init__.py +0 -0
  646. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/convert_runner.py +0 -0
  647. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/jobs.py +0 -0
  648. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/main.py +0 -0
  649. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/mcp_server.py +0 -0
  650. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/mcp_setup.py +0 -0
  651. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/query_options.py +0 -0
  652. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/settings.py +0 -0
  653. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/convert_impl.py +0 -0
  654. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/converter.py +0 -0
  655. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/format_detect.py +0 -0
  656. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_json.py +0 -0
  657. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_txt.py +0 -0
  658. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_xml.py +0 -0
  659. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_flatten.py +0 -0
  660. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/options.py +0 -0
  661. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/xml_parse.py +0 -0
  662. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/__init__.py +0 -0
  663. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/__init__.py +0 -0
  664. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
  665. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
  666. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
  667. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
  668. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/agent.py +0 -0
  669. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/bundle.py +0 -0
  670. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/chunks.py +0 -0
  671. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/cli.py +0 -0
  672. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
  673. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/registry.json +0 -0
  674. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
  675. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
  676. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
  677. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
  678. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
  679. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
  680. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
  681. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
  682. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
  683. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
  684. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
  685. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
  686. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
  687. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
  688. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
  689. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
  690. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
  691. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
  692. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
  693. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
  694. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
  695. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
  696. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
  697. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
  698. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
  699. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
  700. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
  701. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
  702. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
  703. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
  704. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
  705. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
  706. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
  707. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
  708. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
  709. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
  710. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
  711. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
  712. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
  713. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
  714. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
  715. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
  716. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
  717. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
  718. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
  719. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
  720. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
  721. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
  722. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
  723. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
  724. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
  725. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/rag.py +0 -0
  726. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/registry.py +0 -0
  727. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/__init__.py +0 -0
  728. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/__main__.py +0 -0
  729. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
  730. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/generate.py +0 -0
  731. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
  732. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/routing.py +0 -0
  733. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/__init__.py +0 -0
  734. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/__init__.py +0 -0
  735. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/convert_runner.py +0 -0
  736. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/jobs.py +0 -0
  737. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/main.py +0 -0
  738. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/mcp_server.py +0 -0
  739. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/mcp_setup.py +0 -0
  740. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/query_options.py +0 -0
  741. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/settings.py +0 -0
  742. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/assets.py +0 -0
  743. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/convert_impl.py +0 -0
  744. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/converter.py +0 -0
  745. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/crawl.py +0 -0
  746. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/extract.py +0 -0
  747. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/fetch.py +0 -0
  748. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/html_to_md.py +0 -0
  749. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/options.py +0 -0
  750. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/page_convert.py +0 -0
  751. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/post_convert_assets.py +0 -0
  752. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/robots_util.py +0 -0
  753. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/__init__.py +0 -0
  754. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/__init__.py +0 -0
  755. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/convert_util.py +0 -0
  756. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/jobs.py +0 -0
  757. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/main.py +0 -0
  758. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/mcp_server.py +0 -0
  759. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/artifact.py +0 -0
  760. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/converter.py +0 -0
  761. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/settings.py +0 -0
  762. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/__init__.py +0 -0
  763. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/api/__init__.py +0 -0
  764. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/api/app.py +0 -0
  765. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/convert_config.py +0 -0
  766. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/converter.py +0 -0
  767. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/converter_core.py +0 -0
  768. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/excel_reader.py +0 -0
  769. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/markdown_emitter.py +0 -0
  770. {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/mcp_server.py +0 -0
  771. {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/dependency_links.txt +0 -0
  772. {mdengine-0.10.0 → mdengine-0.11.1}/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.1
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"
@@ -121,6 +126,18 @@ Requires-Dist: tree-sitter>=0.21.0; extra == "codeflow-treesitter"
121
126
  Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "codeflow-treesitter"
122
127
  Requires-Dist: tree-sitter-typescript>=0.23.0; extra == "codeflow-treesitter"
123
128
  Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "codeflow-treesitter"
129
+ Requires-Dist: tree-sitter-java>=0.23.0; extra == "codeflow-treesitter"
130
+ Requires-Dist: tree-sitter-python>=0.23.0; extra == "codeflow-treesitter"
131
+ Requires-Dist: tree-sitter-go>=0.23.0; extra == "codeflow-treesitter"
132
+ Requires-Dist: tree-sitter-php>=0.23.0; extra == "codeflow-treesitter"
133
+ Requires-Dist: tree-sitter-rust>=0.23.0; extra == "codeflow-treesitter"
134
+ Requires-Dist: tree-sitter-kotlin>=0.23.0; extra == "codeflow-treesitter"
135
+ Requires-Dist: tree-sitter-c-sharp>=0.23.0; extra == "codeflow-treesitter"
136
+ Requires-Dist: tree-sitter-swift>=0.7.2; extra == "codeflow-treesitter"
137
+ Requires-Dist: tree-sitter-ruby>=0.23.0; extra == "codeflow-treesitter"
138
+ Requires-Dist: tree-sitter-lua>=0.2.0; extra == "codeflow-treesitter"
139
+ Requires-Dist: tree-sitter-scala>=0.6.0; extra == "codeflow-treesitter"
140
+ Requires-Dist: tree-sitter-zig>=0.2.0; extra == "codeflow-treesitter"
124
141
  Provides-Extra: codeflow-clang
125
142
  Requires-Dist: clang>=16.0.0; extra == "codeflow-clang"
126
143
  Provides-Extra: codeflow-semantic
@@ -300,7 +317,7 @@ pip install "mdengine[all]"
300
317
  | `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
301
318
  | `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
302
319
  | `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
303
- | `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++) for richer codeflow slices |
320
+ | `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
304
321
  | `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
305
322
  | `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
306
323
  | `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
@@ -82,7 +82,7 @@ pip install "mdengine[all]"
82
82
  | `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
83
83
  | `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
84
84
  | `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
85
- | `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++) for richer codeflow slices |
85
+ | `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
86
86
  | `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
87
87
  | `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
88
88
  | `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
@@ -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.1"
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",
@@ -127,6 +133,18 @@ codeflow-treesitter = [
127
133
  "tree-sitter-javascript>=0.21.0",
128
134
  "tree-sitter-typescript>=0.23.0",
129
135
  "tree-sitter-cpp>=0.23.0",
136
+ "tree-sitter-java>=0.23.0",
137
+ "tree-sitter-python>=0.23.0",
138
+ "tree-sitter-go>=0.23.0",
139
+ "tree-sitter-php>=0.23.0",
140
+ "tree-sitter-rust>=0.23.0",
141
+ "tree-sitter-kotlin>=0.23.0",
142
+ "tree-sitter-c-sharp>=0.23.0",
143
+ "tree-sitter-swift>=0.7.2",
144
+ "tree-sitter-ruby>=0.23.0",
145
+ "tree-sitter-lua>=0.2.0",
146
+ "tree-sitter-scala>=0.6.0",
147
+ "tree-sitter-zig>=0.2.0",
130
148
  ]
131
149
  codeflow-clang = [
132
150
  "clang>=16.0.0",
@@ -278,6 +296,9 @@ md-codeflow-mcp = "md_generator.codeflow.api.mcp_server:main"
278
296
  md-log = "md_generator.log.cli.main:main"
279
297
  md-log-api = "md_generator.log.api.run:main"
280
298
  md-log-mcp = "md_generator.log.api.mcp_server:main"
299
+ md-sap = "md_generator.sap.cli.main:main"
300
+ md-sap-api = "md_generator.sap.api.run:main"
301
+ md-sap-mcp = "md_generator.sap.api.mcp_server:main"
281
302
  md-otel = "md_generator.otel.cli.main:main"
282
303
  mdengine = "md_generator.engine_cli:main"
283
304
 
@@ -290,6 +311,7 @@ include = ["md_generator*"]
290
311
  "md_generator.graph.config" = ["*.yaml"]
291
312
  "md_generator.openapi.config" = ["*.yaml"]
292
313
  "md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
314
+ "md_generator.sap.config" = ["*.yaml"]
293
315
  "md_generator.tools.assistant" = ["data/**/*"]
294
316
 
295
317
  [tool.pytest.ini_options]
@@ -313,5 +335,6 @@ testpaths = [
313
335
  "openapi-to-md/tests",
314
336
  "codeflow-to-md/tests",
315
337
  "log-to-md/tests",
338
+ "sap-to-md/tests",
316
339
  ]
317
340
  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.1"
4
4
 
5
5
  __all__ = ["__version__"]
@@ -76,6 +76,7 @@ def build_parser() -> argparse.ArgumentParser:
76
76
  default="mixed",
77
77
  help=(
78
78
  "mixed | python | java | javascript | typescript | tsx | cpp | go | php | "
79
+ "rust | kotlin | csharp | swift | ruby | lua | scala | zig | "
79
80
  "comma-separated (e.g. python,javascript). Aliases: js→javascript, ts→typescript."
80
81
  ),
81
82
  )
@@ -377,7 +378,8 @@ def build_parser() -> argparse.ArgumentParser:
377
378
  "--parser-mode",
378
379
  choices=("auto", "treesitter", "external"),
379
380
  default="auto",
380
- help="C++: treesitter=Tree-sitter only; external=clang only; auto=current fallback",
381
+ help="auto=native parsers; treesitter=Tree-sitter for java/python/go/php/cpp (+ JS/TS when installed); "
382
+ "external=clang only for C++",
381
383
  )
382
384
  scan.add_argument(
383
385
  "--ui-cfg-max-methods",
@@ -172,6 +172,22 @@ def _resolve_scan_entry_ids(cfg: ScanConfig, g: CodeflowGraph, all_entries: list
172
172
  return entry_ids, warnings
173
173
 
174
174
 
175
+ def _parse_backend_summary_lines(parse_results: list[FileParseResult]) -> list[str]:
176
+ from collections import Counter
177
+
178
+ counts: Counter[tuple[str, str, str | None]] = Counter()
179
+ for fr in parse_results:
180
+ counts[(fr.language, fr.parse_backend, fr.grammar_package)] += 1
181
+ if not counts:
182
+ return []
183
+ lines = ["## Parse backends", ""]
184
+ for (lang, backend, gram), n in sorted(counts.items()):
185
+ gpart = f" (`{gram}`)" if gram else ""
186
+ lines.append(f"- **{lang}** / {backend}{gpart}: {n} file(s)")
187
+ lines.append("")
188
+ return lines
189
+
190
+
175
191
  def _write_scan_summary(
176
192
  path: Path,
177
193
  *,
@@ -183,6 +199,7 @@ def _write_scan_summary(
183
199
  warnings: list[str],
184
200
  cfg: ScanConfig,
185
201
  pr_impact: dict[str, Any] | None = None,
202
+ parse_results: list[FileParseResult] | None = None,
186
203
  ) -> None:
187
204
  lines = [
188
205
  "# Scan summary",
@@ -218,6 +235,10 @@ def _write_scan_summary(
218
235
  f"- **enable_dependency_graph:** {cfg.enable_dependency_graph}",
219
236
  f"- **structural_graph_enabled:** {cfg.structural_graph_enabled()}",
220
237
  f"- **parser_mode:** `{cfg.parser_mode}`",
238
+ ]
239
+ if parse_results:
240
+ lines.extend(_parse_backend_summary_lines(parse_results))
241
+ lines += [
221
242
  f"- **ui_cfg_max_methods:** {cfg.ui_cfg_max_methods}",
222
243
  f"- **intelligence_transitive_callers:** {cfg.intelligence_transitive_callers}",
223
244
  f"- **emit_system_graph_stats:** {cfg.emit_system_graph_stats}",
@@ -448,6 +469,12 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
448
469
  all_entries = [e for pr in parse_results for e in pr.entries]
449
470
  entry_ids, scan_warnings = _resolve_scan_entry_ids(cfg, g, all_entries)
450
471
  scan_warnings = scan_warnings_pre + scan_warnings
472
+ from md_generator.codeflow.parsers.capability_registry import capability_warnings
473
+
474
+ for lang in sorted({fr.language for fr in parse_results}):
475
+ scan_warnings.extend(
476
+ capability_warnings(lang, parser_mode=cfg.parser_mode, emit_cfg=cfg.emit_cfg),
477
+ )
451
478
  scan_warnings.extend(scan_semantic_warnings)
452
479
 
453
480
  fmts = {x.strip().lower() for x in cfg.formats}
@@ -920,6 +947,7 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
920
947
  warnings=scan_warnings,
921
948
  cfg=cfg,
922
949
  pr_impact=pr_impact_payload,
950
+ parse_results=parse_results,
923
951
  )
924
952
 
925
953
  return out
@@ -211,6 +211,117 @@ def detect_api_entries_js_ts(path: Path, project_root: Path) -> list[EntryRecord
211
211
  return out
212
212
 
213
213
 
214
+ _RUBY_CONTROLLER = re.compile(
215
+ r"class\s+(\w+Controller)\s*<\s*(?:ApplicationController|ActionController)",
216
+ re.I,
217
+ )
218
+ _RUBY_ROUTE = re.compile(
219
+ r"\b(get|post|put|patch|delete)\s+['\"]([^'\"]+)['\"]",
220
+ re.I,
221
+ )
222
+ _SINATRA_ROUTE = re.compile(
223
+ r"\b(get|post|put|patch|delete)\s+['\"]([^'\"]+)['\"]\s+do\b",
224
+ re.I,
225
+ )
226
+ _SWIFT_VAPOR = re.compile(r"@\s*(Get|Post|Put|Delete|Patch|Routes)\b")
227
+
228
+
229
+ def detect_api_entries_ruby(path: Path, project_root: Path) -> list[EntryRecord]:
230
+ if path.suffix.lower() != ".rb":
231
+ return []
232
+ try:
233
+ text = path.read_text(encoding="utf-8", errors="replace")
234
+ except OSError:
235
+ return []
236
+ key = path.resolve().relative_to(project_root.resolve()).as_posix()
237
+ fp = str(path.resolve())
238
+ out: list[EntryRecord] = []
239
+ seen: set[str] = set()
240
+ for m in _RUBY_CONTROLLER.finditer(text):
241
+ cls = m.group(1)
242
+ for dm in re.finditer(rf"\bdef\s+(\w+)", text[m.end() :]):
243
+ mname = dm.group(1)
244
+ if mname.startswith("_"):
245
+ continue
246
+ sid = _sid(key, cls, mname)
247
+ if sid in seen:
248
+ continue
249
+ seen.add(sid)
250
+ out.append(
251
+ EntryRecord(
252
+ symbol_id=sid,
253
+ kind=EntryKind.API_REST,
254
+ label="Rails controller action (regex)",
255
+ file_path=fp,
256
+ line=text[: m.start() + dm.start()].count("\n") + 1,
257
+ ),
258
+ )
259
+ break
260
+ for m in _SINATRA_ROUTE.finditer(text):
261
+ verb, route_path = m.group(1).lower(), m.group(2)
262
+ sid = f"{key}::sinatra.{verb}.{route_path}"
263
+ if sid not in seen:
264
+ seen.add(sid)
265
+ out.append(
266
+ EntryRecord(
267
+ symbol_id=sid,
268
+ kind=EntryKind.API_REST,
269
+ label="Sinatra route (regex)",
270
+ file_path=fp,
271
+ line=text[: m.start()].count("\n") + 1,
272
+ ),
273
+ )
274
+ for m in _RUBY_ROUTE.finditer(text):
275
+ verb, route_path = m.group(1).lower(), m.group(2)
276
+ sid = f"{key}::routes.{verb}.{route_path}"
277
+ if sid not in seen:
278
+ seen.add(sid)
279
+ out.append(
280
+ EntryRecord(
281
+ symbol_id=sid,
282
+ kind=EntryKind.API_REST,
283
+ label=f"Rails route ({verb}) (regex)",
284
+ file_path=fp,
285
+ line=text[: m.start()].count("\n") + 1,
286
+ ),
287
+ )
288
+ return out
289
+
290
+
291
+ def detect_api_entries_swift(path: Path, project_root: Path) -> list[EntryRecord]:
292
+ if path.suffix.lower() != ".swift":
293
+ return []
294
+ try:
295
+ text = path.read_text(encoding="utf-8", errors="replace")
296
+ except OSError:
297
+ return []
298
+ if not _SWIFT_VAPOR.search(text):
299
+ return []
300
+ key = path.resolve().relative_to(project_root.resolve()).as_posix()
301
+ fp = str(path.resolve())
302
+ out: list[EntryRecord] = []
303
+ seen: set[str] = set()
304
+ for m in re.finditer(r"func\s+(\w+)\s*\(", text):
305
+ mname = m.group(1)
306
+ before = text[max(0, m.start() - 120) : m.start()]
307
+ if not _SWIFT_VAPOR.search(before):
308
+ continue
309
+ sid = _sid(key, None, mname)
310
+ if sid in seen:
311
+ continue
312
+ seen.add(sid)
313
+ out.append(
314
+ EntryRecord(
315
+ symbol_id=sid,
316
+ kind=EntryKind.API_REST,
317
+ label="Vapor HTTP route (regex)",
318
+ file_path=fp,
319
+ line=text[: m.start()].count("\n") + 1,
320
+ ),
321
+ )
322
+ return out
323
+
324
+
214
325
  def detect_api_entries(path: Path, project_root: Path) -> list[EntryRecord]:
215
326
  suf = path.suffix.lower()
216
327
  if suf == ".py":
@@ -219,4 +330,8 @@ def detect_api_entries(path: Path, project_root: Path) -> list[EntryRecord]:
219
330
  return detect_api_entries_java(path, project_root)
220
331
  if suf in (".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"):
221
332
  return detect_api_entries_js_ts(path, project_root)
333
+ if suf == ".rb":
334
+ return detect_api_entries_ruby(path, project_root)
335
+ if suf == ".swift":
336
+ return detect_api_entries_swift(path, project_root)
222
337
  return []
@@ -12,6 +12,7 @@ from md_generator.codeflow.config.codeflow_yaml import (
12
12
  from md_generator.codeflow.detectors.api_detector import detect_api_entries
13
13
  from md_generator.codeflow.detectors.kafka_detector import detect_kafka_entries
14
14
  from md_generator.codeflow.detectors.liferay_portlet_detector import detect_liferay_portlet_entries
15
+ from md_generator.codeflow.detectors.rails_detector import detect_rails_entries
15
16
  from md_generator.codeflow.models.ir import EntryKind, EntryRecord, FileParseResult
16
17
 
17
18
  # TYPE_CHECKING would avoid circular import; ScanConfig is lightweight dataclass
@@ -43,6 +44,7 @@ def apply_entry_detectors(
43
44
  if not pr:
44
45
  continue
45
46
  pr.entries.extend(detect_api_entries(p, project_root))
47
+ pr.entries.extend(detect_rails_entries(p, project_root))
46
48
  pr.entries.extend(detect_liferay_portlet_entries(p, project_root, extra_portlet_bases=portlet_extras))
47
49
  pr.entries.extend(detect_kafka_entries(p, project_root))
48
50
 
@@ -0,0 +1,89 @@
1
+ """Rails router DSL, engines, and ActionCable entry hints."""
2
+
3
+ from __future__ import annotations
4
+
5
+ import re
6
+ from pathlib import Path
7
+
8
+ from md_generator.codeflow.models.ir import EntryKind, EntryRecord
9
+ from md_generator.codeflow.parsers.treesitter_common import rel_key
10
+
11
+ _HTTP_VERB_ROUTE = re.compile(
12
+ r"\b(get|post|put|patch|delete|head|options)\s+['\"]([^'\"]+)['\"]",
13
+ re.IGNORECASE,
14
+ )
15
+ _ROOT_ROUTE = re.compile(r"\broot\s+['\"]?(?:to\s*=>\s*)?['\"]?(\w+#\w+|\w+)", re.IGNORECASE)
16
+ _RESOURCES = re.compile(r"\bresources\s+:([\w]+)")
17
+ _RESOURCE = re.compile(r"\bresource\s+:([\w]+)")
18
+ _NAMESPACE = re.compile(r"\bnamespace\s+:([\w]+)")
19
+ _MOUNT_ENGINE = re.compile(r"\bmount\s+([\w:]+(?:::Engine)?)", re.IGNORECASE)
20
+ _ACTIONCABLE_CHANNEL = re.compile(
21
+ r"class\s+(\w+)\s*<\s*(?:ApplicationCable::Channel|ActionCable::Channel::Base)",
22
+ re.IGNORECASE,
23
+ )
24
+ _SUBSCRIBED_METHOD = re.compile(r"\bdef\s+(subscribed|receive|unsubscribed)\b")
25
+
26
+
27
+ def detect_rails_entries(path: Path, project_root: Path) -> list[EntryRecord]:
28
+ if path.suffix.lower() != ".rb":
29
+ return []
30
+ try:
31
+ text = path.read_text(encoding="utf-8", errors="replace")
32
+ except OSError:
33
+ return []
34
+ key = rel_key(path, project_root)
35
+ fp = str(path.resolve())
36
+ out: list[EntryRecord] = []
37
+ seen: set[str] = set()
38
+
39
+ def add(sid: str, label: str, line: int, *, kind: EntryKind = EntryKind.API_REST) -> None:
40
+ if sid in seen:
41
+ return
42
+ seen.add(sid)
43
+ out.append(
44
+ EntryRecord(symbol_id=sid, kind=kind, label=label, file_path=fp, line=line),
45
+ )
46
+
47
+ lines = text.splitlines()
48
+ for i, line in enumerate(lines, start=1):
49
+ for m in _HTTP_VERB_ROUTE.finditer(line):
50
+ verb, route_path = m.group(1).lower(), m.group(2)
51
+ add(
52
+ f"{key}::routes.{verb}.{route_path}",
53
+ f"Rails route ({verb.upper()} {route_path})",
54
+ i,
55
+ )
56
+ mroot = _ROOT_ROUTE.search(line)
57
+ if mroot:
58
+ add(f"{key}::routes.root.{mroot.group(1)}", "Rails root route", i)
59
+ for m in _RESOURCES.finditer(line):
60
+ add(f"{key}::routes.resources.{m.group(1)}", f"Rails resources :{m.group(1)}", i)
61
+ for m in _RESOURCE.finditer(line):
62
+ add(f"{key}::routes.resource.{m.group(1)}", f"Rails resource :{m.group(1)}", i)
63
+ for m in _NAMESPACE.finditer(line):
64
+ add(f"{key}::routes.namespace.{m.group(1)}", f"Rails namespace :{m.group(1)}", i)
65
+ for m in _MOUNT_ENGINE.finditer(line):
66
+ mount_target = m.group(1)
67
+ add(f"{key}::routes.mount.{mount_target}", f"Rails mount {mount_target}", i)
68
+
69
+ if _ACTIONCABLE_CHANNEL.search(text) and _SUBSCRIBED_METHOD.search(text):
70
+ ch = _ACTIONCABLE_CHANNEL.search(text)
71
+ cname = ch.group(1) if ch else "Channel"
72
+ line_no = text[: ch.start()].count("\n") + 1 if ch else 1
73
+ for m in _SUBSCRIBED_METHOD.finditer(text):
74
+ mname = m.group(1)
75
+ add(
76
+ f"{key}::{cname}.{mname}",
77
+ f"ActionCable {mname}",
78
+ text[: m.start()].count("\n") + 1,
79
+ kind=EntryKind.QUEUE,
80
+ )
81
+ if not any(e.symbol_id.endswith(".subscribed") for e in out):
82
+ add(
83
+ f"{key}::{cname}.subscribed",
84
+ "ActionCable channel",
85
+ line_no,
86
+ kind=EntryKind.QUEUE,
87
+ )
88
+
89
+ return out
@@ -14,6 +14,14 @@ LANG_EXTENSIONS: dict[str, frozenset[str]] = {
14
14
  "cpp": frozenset({".c", ".h", ".cc", ".cpp", ".cxx", ".hpp", ".hh", ".hxx"}),
15
15
  "go": frozenset({".go"}),
16
16
  "php": frozenset({".php"}),
17
+ "rust": frozenset({".rs"}),
18
+ "kotlin": frozenset({".kt", ".kts"}),
19
+ "csharp": frozenset({".cs"}),
20
+ "swift": frozenset({".swift"}),
21
+ "ruby": frozenset({".rb"}),
22
+ "lua": frozenset({".lua"}),
23
+ "scala": frozenset({".scala", ".sc"}),
24
+ "zig": frozenset({".zig"}),
17
25
  }
18
26
 
19
27
  # All keys used when ``languages`` is ``mixed``
@@ -38,6 +46,14 @@ def normalize_language_filter(languages: str) -> frozenset[str]:
38
46
  parts.append("tsx")
39
47
  elif p in ("c", "c++", "cxx", "cpp", "cplusplus"):
40
48
  parts.append("cpp")
49
+ elif p == "rs":
50
+ parts.append("rust")
51
+ elif p == "kt":
52
+ parts.append("kotlin")
53
+ elif p in ("cs", "c#", "csharp"):
54
+ parts.append("csharp")
55
+ elif p == "rb":
56
+ parts.append("ruby")
41
57
  else:
42
58
  parts.append(p)
43
59
  return frozenset(parts) if parts else MIXED_LANG_KEYS
@@ -108,10 +108,15 @@ class StructuralEdge:
108
108
  line: int | None = None
109
109
 
110
110
 
111
+ ParseBackend = Literal["native", "treesitter"]
112
+
113
+
111
114
  @dataclass
112
115
  class FileParseResult:
113
116
  path: Path
114
117
  language: str
118
+ parse_backend: ParseBackend = "native"
119
+ grammar_package: str | None = None
115
120
  symbol_ids: list[str] = field(default_factory=list)
116
121
  calls: list[CallSite] = field(default_factory=list)
117
122
  branches: list[BranchPoint] = field(default_factory=list)
@@ -125,3 +130,5 @@ class FileParseResult:
125
130
  structural_edges: list[StructuralEdge] = field(default_factory=list)
126
131
  # Java compilation unit package (``a.b.c``), for FQN resolution; other languages ignore.
127
132
  java_package: str | None = None
133
+ # Tree-sitter reported syntax errors in the parse tree; partial extraction may still apply.
134
+ parse_had_errors: bool = False
@@ -0,0 +1,70 @@
1
+ """Tree-sitter C# → IRMethod (minimal)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+
7
+ from tree_sitter import Parser
8
+
9
+ from md_generator.codeflow.models.ir import FileParseResult
10
+ from md_generator.codeflow.models.ir_cfg import IRMethod, IRStmt
11
+ from md_generator.codeflow.parsers.treesitter_common import decode_text, rel_key, sid
12
+ from md_generator.codeflow.parsers.treesitter_csharp_parser import csharp_language
13
+
14
+
15
+ def populate_ir_methods_csharp_treesitter(fr: FileParseResult, project_root: Path) -> None:
16
+ if fr.parse_backend != "treesitter":
17
+ fr.ir_methods = []
18
+ return
19
+ loaded = csharp_language()
20
+ if loaded is None:
21
+ fr.ir_methods = []
22
+ return
23
+ lang, _ = loaded
24
+ source = fr.path.read_bytes()
25
+ tree = Parser(lang).parse(source)
26
+ key = rel_key(fr.path, project_root.resolve())
27
+ fp = str(fr.path.resolve())
28
+ out: list[IRMethod] = []
29
+
30
+ def add_method(node, fq: str | None) -> None: # noqa: ANN001
31
+ name = node.child_by_field_name("name")
32
+ body = node.child_by_field_name("body")
33
+ if not name:
34
+ return
35
+ mname = decode_text(source, name).strip()
36
+ stmts: tuple[IRStmt, ...] = ()
37
+ if body:
38
+ stmts = tuple(
39
+ IRStmt(kind="STATEMENT", label=c.type, line=c.start_point[0] + 1)
40
+ for c in body.children
41
+ if c.is_named
42
+ )
43
+ out.append(
44
+ IRMethod(
45
+ symbol_id=sid(key, fq, mname),
46
+ name=mname,
47
+ file_path=fp,
48
+ language="csharp",
49
+ body=stmts,
50
+ ),
51
+ )
52
+
53
+ def visit_class(node, class_stack: list[str]) -> None: # noqa: ANN001
54
+ name = node.child_by_field_name("name")
55
+ if not name:
56
+ return
57
+ class_stack.append(decode_text(source, name).strip())
58
+ for ch in node.children:
59
+ if ch.type == "method_declaration":
60
+ add_method(ch, ".".join(class_stack))
61
+ elif ch.type == "class_declaration":
62
+ visit_class(ch, class_stack)
63
+ class_stack.pop()
64
+
65
+ for ch in tree.root_node.children:
66
+ if ch.type == "class_declaration":
67
+ visit_class(ch, [])
68
+ elif ch.type == "method_declaration":
69
+ add_method(ch, None)
70
+ fr.ir_methods = out
@@ -0,0 +1,58 @@
1
+ """Tree-sitter Go → IRMethod (minimal)."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pathlib import Path
6
+
7
+ from tree_sitter import Parser
8
+
9
+ from md_generator.codeflow.models.ir import FileParseResult
10
+ from md_generator.codeflow.models.ir_cfg import IRMethod, IRStmt
11
+ from md_generator.codeflow.parsers.treesitter_common import decode_text, rel_key, sid
12
+ from md_generator.codeflow.parsers.treesitter_go_parser import go_language
13
+
14
+
15
+ def populate_ir_methods_go_treesitter(fr: FileParseResult, project_root: Path) -> None:
16
+ if fr.parse_backend != "treesitter":
17
+ fr.ir_methods = []
18
+ return
19
+ loaded = go_language()
20
+ if loaded is None:
21
+ fr.ir_methods = []
22
+ return
23
+ lang, _ = loaded
24
+ source = fr.path.read_bytes()
25
+ tree = Parser(lang).parse(source)
26
+ key = rel_key(fr.path, project_root.resolve())
27
+ fp = str(fr.path.resolve())
28
+ out: list[IRMethod] = []
29
+ for ch in tree.root_node.children:
30
+ if ch.type not in ("function_declaration", "method_declaration"):
31
+ continue
32
+ name = ch.child_by_field_name("name")
33
+ if not name:
34
+ continue
35
+ mname = decode_text(source, name).strip()
36
+ recv = None
37
+ if ch.type == "method_declaration":
38
+ recv_n = ch.child_by_field_name("receiver")
39
+ if recv_n:
40
+ recv = decode_text(source, recv_n).strip().strip("()")
41
+ body = ch.child_by_field_name("body")
42
+ stmts: tuple[IRStmt, ...] = ()
43
+ if body:
44
+ stmts = tuple(
45
+ IRStmt(kind="STATEMENT", label=c.type, line=c.start_point[0] + 1)
46
+ for c in body.children
47
+ if c.is_named
48
+ )
49
+ out.append(
50
+ IRMethod(
51
+ symbol_id=sid(key, recv, mname) if recv else sid(key, None, mname),
52
+ name=mname,
53
+ file_path=fp,
54
+ language="go",
55
+ body=stmts,
56
+ ),
57
+ )
58
+ fr.ir_methods = out