mdengine 0.8.1__tar.gz → 0.10.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (682) hide show
  1. {mdengine-0.8.1/src/mdengine.egg-info → mdengine-0.10.0}/PKG-INFO +214 -15
  2. {mdengine-0.8.1 → mdengine-0.10.0}/README.md +173 -14
  3. {mdengine-0.8.1 → mdengine-0.10.0}/pyproject.toml +54 -2
  4. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/__init__.py +1 -1
  5. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/convert_runner.py +3 -3
  6. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/main.py +15 -6
  7. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/mcp_setup.py +10 -7
  8. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/convert_impl.py +71 -118
  9. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/converter.py +14 -8
  10. mdengine-0.10.0/src/md_generator/archive/extractors.py +304 -0
  11. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/job_manager.py +5 -0
  12. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/schemas.py +162 -0
  13. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/cli/main.py +191 -1
  14. mdengine-0.10.0/src/md_generator/codeflow/core/cache_manager.py +110 -0
  15. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/core/extractor.py +433 -76
  16. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/core/run_config.py +41 -0
  17. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +22 -1
  18. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/entry_markdown.py +222 -16
  19. mdengine-0.10.0/src/md_generator/codeflow/generators/html_unified.py +487 -0
  20. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/markdown.py +24 -5
  21. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/analysis.py +32 -9
  22. mdengine-0.10.0/src/md_generator/codeflow/graph/anomaly.py +109 -0
  23. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/builder.py +4 -0
  24. mdengine-0.10.0/src/md_generator/codeflow/graph/cluster_labeling.py +271 -0
  25. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/clustering.py +3 -1
  26. mdengine-0.10.0/src/md_generator/codeflow/graph/cross_repo_resolver.py +200 -0
  27. mdengine-0.10.0/src/md_generator/codeflow/graph/dependency_builder.py +166 -0
  28. mdengine-0.10.0/src/md_generator/codeflow/graph/diff_analysis.py +149 -0
  29. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/embeddings.py +24 -1
  30. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/enricher.py +26 -8
  31. mdengine-0.10.0/src/md_generator/codeflow/graph/hotpath.py +94 -0
  32. mdengine-0.10.0/src/md_generator/codeflow/graph/maven_hints.py +37 -0
  33. mdengine-0.10.0/src/md_generator/codeflow/graph/multi_repo.py +157 -0
  34. mdengine-0.10.0/src/md_generator/codeflow/graph/nl_query.py +267 -0
  35. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/relations.py +3 -0
  36. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/runtime_integration.py +10 -1
  37. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/semantic_enricher.py +17 -0
  38. mdengine-0.10.0/src/md_generator/codeflow/graph/sqlite_export.py +183 -0
  39. mdengine-0.10.0/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +127 -0
  40. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/ingestion/git_loader.py +77 -0
  41. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/cpp_parser.py +14 -0
  42. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/python_parser.py +53 -1
  43. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +67 -0
  44. mdengine-0.10.0/src/md_generator/codeflow/parsers/unified_parser.py +31 -0
  45. mdengine-0.10.0/src/md_generator/codeflow/runtime/python_edge_counter.py +44 -0
  46. mdengine-0.10.0/src/md_generator/codeflow/runtime/trace_runner.py +110 -0
  47. mdengine-0.10.0/src/md_generator/core/__init__.py +15 -0
  48. mdengine-0.10.0/src/md_generator/core/artifacts/__init__.py +16 -0
  49. mdengine-0.10.0/src/md_generator/core/artifacts/mdaf_validate.py +35 -0
  50. mdengine-0.10.0/src/md_generator/core/artifacts/models.py +60 -0
  51. mdengine-0.10.0/src/md_generator/core/artifacts/serialize.py +59 -0
  52. mdengine-0.10.0/src/md_generator/core/schema/__init__.py +3 -0
  53. mdengine-0.10.0/src/md_generator/core/schema/adapters/__init__.py +1 -0
  54. mdengine-0.10.0/src/md_generator/core/schema/adapters/log_record.py +24 -0
  55. mdengine-0.10.0/src/md_generator/core/schema/adapters/otel.py +31 -0
  56. mdengine-0.10.0/src/md_generator/core/schema/telemetry_event.py +15 -0
  57. mdengine-0.10.0/src/md_generator/core/schema/validation.py +16 -0
  58. mdengine-0.10.0/src/md_generator/db/adapters/access_adapter.py +143 -0
  59. mdengine-0.10.0/src/md_generator/db/adapters/access_introspect.py +122 -0
  60. mdengine-0.10.0/src/md_generator/db/adapters/access_odbc.py +108 -0
  61. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/factory.py +10 -0
  62. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/mysql_adapter.py +14 -0
  63. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/postgres_adapter.py +14 -0
  64. mdengine-0.10.0/src/md_generator/db/adapters/sqlserver_adapter.py +323 -0
  65. mdengine-0.10.0/src/md_generator/db/api/access_upload.py +89 -0
  66. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/main.py +82 -0
  67. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/schemas.py +5 -1
  68. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/settings.py +1 -0
  69. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/sqlite_upload.py +4 -0
  70. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/cli/main.py +28 -1
  71. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/base_adapter.py +11 -0
  72. mdengine-0.10.0/src/md_generator/db/core/cli_ops.py +57 -0
  73. mdengine-0.10.0/src/md_generator/db/core/export_manifest.py +65 -0
  74. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/extractor.py +74 -9
  75. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/job_manager.py +45 -13
  76. mdengine-0.10.0/src/md_generator/db/core/link_graph.py +69 -0
  77. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/markdown_writer.py +55 -7
  78. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/models.py +21 -0
  79. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/run_config.py +14 -0
  80. mdengine-0.10.0/src/md_generator/distributed/__init__.py +5 -0
  81. mdengine-0.10.0/src/md_generator/distributed/merge.py +21 -0
  82. mdengine-0.10.0/src/md_generator/distributed/partition.py +12 -0
  83. mdengine-0.10.0/src/md_generator/distributed/worker_pool.py +43 -0
  84. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/engine_cli.py +22 -2
  85. mdengine-0.10.0/src/md_generator/governance/__init__.py +11 -0
  86. mdengine-0.10.0/src/md_generator/governance/audit.py +13 -0
  87. mdengine-0.10.0/src/md_generator/governance/classification.py +31 -0
  88. mdengine-0.10.0/src/md_generator/governance/lineage.py +34 -0
  89. mdengine-0.10.0/src/md_generator/governance/retention.py +7 -0
  90. mdengine-0.10.0/src/md_generator/log/__init__.py +6 -0
  91. mdengine-0.10.0/src/md_generator/log/aggregation/__init__.py +1 -0
  92. mdengine-0.10.0/src/md_generator/log/aggregation/aggregators.py +20 -0
  93. mdengine-0.10.0/src/md_generator/log/aggregation/dataframe_builder.py +39 -0
  94. mdengine-0.10.0/src/md_generator/log/aggregation/metrics.py +34 -0
  95. mdengine-0.10.0/src/md_generator/log/aggregation/timeline.py +15 -0
  96. mdengine-0.10.0/src/md_generator/log/api/__init__.py +1 -0
  97. mdengine-0.10.0/src/md_generator/log/api/main.py +257 -0
  98. mdengine-0.10.0/src/md_generator/log/api/mcp_server.py +29 -0
  99. mdengine-0.10.0/src/md_generator/log/api/run.py +15 -0
  100. mdengine-0.10.0/src/md_generator/log/api/schemas.py +112 -0
  101. mdengine-0.10.0/src/md_generator/log/api/settings.py +32 -0
  102. mdengine-0.10.0/src/md_generator/log/chunking/__init__.py +4 -0
  103. mdengine-0.10.0/src/md_generator/log/chunking/artifact_adapter.py +20 -0
  104. mdengine-0.10.0/src/md_generator/log/chunking/chunk_engine.py +23 -0
  105. mdengine-0.10.0/src/md_generator/log/chunking/chunk_models.py +14 -0
  106. mdengine-0.10.0/src/md_generator/log/chunking/chunk_registry.py +144 -0
  107. mdengine-0.10.0/src/md_generator/log/chunking/chunk_strategy.py +20 -0
  108. mdengine-0.10.0/src/md_generator/log/cli/__init__.py +1 -0
  109. mdengine-0.10.0/src/md_generator/log/cli/main.py +147 -0
  110. mdengine-0.10.0/src/md_generator/log/clustering/__init__.py +1 -0
  111. mdengine-0.10.0/src/md_generator/log/clustering/embeddings.py +3 -0
  112. mdengine-0.10.0/src/md_generator/log/clustering/kmeans_cluster.py +12 -0
  113. mdengine-0.10.0/src/md_generator/log/clustering/semantic_grouping.py +7 -0
  114. mdengine-0.10.0/src/md_generator/log/clustering/vectorizer.py +13 -0
  115. mdengine-0.10.0/src/md_generator/log/config/__init__.py +1 -0
  116. mdengine-0.10.0/src/md_generator/log/config/default.yaml +138 -0
  117. mdengine-0.10.0/src/md_generator/log/config/preset_loader.py +85 -0
  118. mdengine-0.10.0/src/md_generator/log/config/presets/__init__.py +1 -0
  119. mdengine-0.10.0/src/md_generator/log/config/presets/generic.yaml +3 -0
  120. mdengine-0.10.0/src/md_generator/log/config/presets/json.yaml +4 -0
  121. mdengine-0.10.0/src/md_generator/log/config/presets/logback.yaml +5 -0
  122. mdengine-0.10.0/src/md_generator/log/config/presets/springboot.yaml +3 -0
  123. mdengine-0.10.0/src/md_generator/log/config/schemas.py +262 -0
  124. mdengine-0.10.0/src/md_generator/log/core/__init__.py +1 -0
  125. mdengine-0.10.0/src/md_generator/log/core/errors.py +25 -0
  126. mdengine-0.10.0/src/md_generator/log/core/execution_context.py +10 -0
  127. mdengine-0.10.0/src/md_generator/log/core/extractor.py +20 -0
  128. mdengine-0.10.0/src/md_generator/log/core/job_manager.py +274 -0
  129. mdengine-0.10.0/src/md_generator/log/core/lifecycle.py +15 -0
  130. mdengine-0.10.0/src/md_generator/log/core/pipeline.py +392 -0
  131. mdengine-0.10.0/src/md_generator/log/core/plugins.py +80 -0
  132. mdengine-0.10.0/src/md_generator/log/core/run_config.py +270 -0
  133. mdengine-0.10.0/src/md_generator/log/core/zip_export.py +31 -0
  134. mdengine-0.10.0/src/md_generator/log/correlation/correlation_engine.py +51 -0
  135. mdengine-0.10.0/src/md_generator/log/correlation/correlation_models.py +31 -0
  136. mdengine-0.10.0/src/md_generator/log/correlation/correlation_scoring.py +33 -0
  137. mdengine-0.10.0/src/md_generator/log/correlation/cross_source.py +69 -0
  138. mdengine-0.10.0/src/md_generator/log/correlation/request_parser.py +12 -0
  139. mdengine-0.10.0/src/md_generator/log/correlation/session_parser.py +10 -0
  140. mdengine-0.10.0/src/md_generator/log/correlation/trace_parser.py +12 -0
  141. mdengine-0.10.0/src/md_generator/log/documentation/__init__.py +9 -0
  142. mdengine-0.10.0/src/md_generator/log/documentation/incident_summary.py +19 -0
  143. mdengine-0.10.0/src/md_generator/log/documentation/service_report.py +19 -0
  144. mdengine-0.10.0/src/md_generator/log/documentation/troubleshooting.py +15 -0
  145. mdengine-0.10.0/src/md_generator/log/embeddings/embedding_exporter.py +38 -0
  146. mdengine-0.10.0/src/md_generator/log/embeddings/exporters/chroma_exporter.py +11 -0
  147. mdengine-0.10.0/src/md_generator/log/embeddings/exporters/faiss_exporter.py +10 -0
  148. mdengine-0.10.0/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +15 -0
  149. mdengine-0.10.0/src/md_generator/log/embeddings/exporters/parquet_exporter.py +20 -0
  150. mdengine-0.10.0/src/md_generator/log/enrichment/__init__.py +1 -0
  151. mdengine-0.10.0/src/md_generator/log/enrichment/correlation.py +7 -0
  152. mdengine-0.10.0/src/md_generator/log/enrichment/fingerprinting.py +11 -0
  153. mdengine-0.10.0/src/md_generator/log/enrichment/hash_generator.py +8 -0
  154. mdengine-0.10.0/src/md_generator/log/enrichment/pattern_matcher.py +24 -0
  155. mdengine-0.10.0/src/md_generator/log/enrichment/severity_ranker.py +14 -0
  156. mdengine-0.10.0/src/md_generator/log/incidents/__init__.py +4 -0
  157. mdengine-0.10.0/src/md_generator/log/incidents/artifact_adapter.py +27 -0
  158. mdengine-0.10.0/src/md_generator/log/incidents/fingerprinting.py +33 -0
  159. mdengine-0.10.0/src/md_generator/log/incidents/grouping.py +23 -0
  160. mdengine-0.10.0/src/md_generator/log/incidents/incident_engine.py +82 -0
  161. mdengine-0.10.0/src/md_generator/log/incidents/models.py +49 -0
  162. mdengine-0.10.0/src/md_generator/log/incidents/severity.py +21 -0
  163. mdengine-0.10.0/src/md_generator/log/incremental/__init__.py +11 -0
  164. mdengine-0.10.0/src/md_generator/log/incremental/checkpoint.py +38 -0
  165. mdengine-0.10.0/src/md_generator/log/incremental/engine.py +34 -0
  166. mdengine-0.10.0/src/md_generator/log/incremental/resume_reader.py +41 -0
  167. mdengine-0.10.0/src/md_generator/log/ingestion/__init__.py +1 -0
  168. mdengine-0.10.0/src/md_generator/log/ingestion/archive_bridge.py +52 -0
  169. mdengine-0.10.0/src/md_generator/log/ingestion/archive_loader.py +25 -0
  170. mdengine-0.10.0/src/md_generator/log/ingestion/batch_reader.py +45 -0
  171. mdengine-0.10.0/src/md_generator/log/ingestion/encoding_detector.py +15 -0
  172. mdengine-0.10.0/src/md_generator/log/ingestion/file_loader.py +23 -0
  173. mdengine-0.10.0/src/md_generator/log/ingestion/stream_reader.py +36 -0
  174. mdengine-0.10.0/src/md_generator/log/intelligence/anomaly_detection.py +8 -0
  175. mdengine-0.10.0/src/md_generator/log/intelligence/dependency_analysis.py +12 -0
  176. mdengine-0.10.0/src/md_generator/log/intelligence/heuristics.py +15 -0
  177. mdengine-0.10.0/src/md_generator/log/intelligence/root_cause_engine.py +47 -0
  178. mdengine-0.10.0/src/md_generator/log/knowledge_graph/graph_builder.py +18 -0
  179. mdengine-0.10.0/src/md_generator/log/knowledge_graph/graph_exporter.py +28 -0
  180. mdengine-0.10.0/src/md_generator/log/knowledge_graph/graph_models.py +17 -0
  181. mdengine-0.10.0/src/md_generator/log/knowledge_graph/relation_extractor.py +34 -0
  182. mdengine-0.10.0/src/md_generator/log/linking/__init__.py +3 -0
  183. mdengine-0.10.0/src/md_generator/log/linking/link_graph.py +62 -0
  184. mdengine-0.10.0/src/md_generator/log/markdown_intelligence/__init__.py +4 -0
  185. mdengine-0.10.0/src/md_generator/log/markdown_intelligence/aliases.py +13 -0
  186. mdengine-0.10.0/src/md_generator/log/markdown_intelligence/backlinks.py +26 -0
  187. mdengine-0.10.0/src/md_generator/log/markdown_intelligence/cross_refs.py +11 -0
  188. mdengine-0.10.0/src/md_generator/log/mcp/__init__.py +1 -0
  189. mdengine-0.10.0/src/md_generator/log/mcp/server.py +84 -0
  190. mdengine-0.10.0/src/md_generator/log/mcp/sse.py +8 -0
  191. mdengine-0.10.0/src/md_generator/log/noise_reduction/__init__.py +3 -0
  192. mdengine-0.10.0/src/md_generator/log/noise_reduction/dedupe.py +22 -0
  193. mdengine-0.10.0/src/md_generator/log/noise_reduction/entropy.py +15 -0
  194. mdengine-0.10.0/src/md_generator/log/noise_reduction/filter.py +26 -0
  195. mdengine-0.10.0/src/md_generator/log/normalization/__init__.py +1 -0
  196. mdengine-0.10.0/src/md_generator/log/normalization/number_normalizer.py +9 -0
  197. mdengine-0.10.0/src/md_generator/log/normalization/path_normalizer.py +12 -0
  198. mdengine-0.10.0/src/md_generator/log/normalization/pii_redactor.py +16 -0
  199. mdengine-0.10.0/src/md_generator/log/normalization/token_normalizer.py +44 -0
  200. mdengine-0.10.0/src/md_generator/log/normalization/uuid_normalizer.py +11 -0
  201. mdengine-0.10.0/src/md_generator/log/parser/__init__.py +3 -0
  202. mdengine-0.10.0/src/md_generator/log/parser/json_line_parser.py +59 -0
  203. mdengine-0.10.0/src/md_generator/log/parser/level_detector.py +25 -0
  204. mdengine-0.10.0/src/md_generator/log/parser/logger_detector.py +10 -0
  205. mdengine-0.10.0/src/md_generator/log/parser/models.py +49 -0
  206. mdengine-0.10.0/src/md_generator/log/parser/multiline_parser.py +172 -0
  207. mdengine-0.10.0/src/md_generator/log/parser/parser_registry.py +71 -0
  208. mdengine-0.10.0/src/md_generator/log/parser/regex_parser.py +28 -0
  209. mdengine-0.10.0/src/md_generator/log/parser/stacktrace_parser.py +29 -0
  210. mdengine-0.10.0/src/md_generator/log/parser/timestamp_parser.py +9 -0
  211. mdengine-0.10.0/src/md_generator/log/search/bm25_search.py +38 -0
  212. mdengine-0.10.0/src/md_generator/log/search/cli.py +25 -0
  213. mdengine-0.10.0/src/md_generator/log/search/hybrid_search.py +13 -0
  214. mdengine-0.10.0/src/md_generator/log/search/search_index.py +12 -0
  215. mdengine-0.10.0/src/md_generator/log/search/vector_search.py +8 -0
  216. mdengine-0.10.0/src/md_generator/log/service/__init__.py +1 -0
  217. mdengine-0.10.0/src/md_generator/log/service/service.py +18 -0
  218. mdengine-0.10.0/src/md_generator/log/streaming/__init__.py +3 -0
  219. mdengine-0.10.0/src/md_generator/log/streaming/kafka_reader.py +39 -0
  220. mdengine-0.10.0/src/md_generator/log/streaming/redis_reader.py +40 -0
  221. mdengine-0.10.0/src/md_generator/log/streaming/stdin_reader.py +9 -0
  222. mdengine-0.10.0/src/md_generator/log/streaming/stream_coordinator.py +44 -0
  223. mdengine-0.10.0/src/md_generator/log/streaming/tail_reader.py +17 -0
  224. mdengine-0.10.0/src/md_generator/log/streaming/websocket_reader.py +38 -0
  225. mdengine-0.10.0/src/md_generator/log/timeline/causal_chain.py +15 -0
  226. mdengine-0.10.0/src/md_generator/log/timeline/ordering.py +12 -0
  227. mdengine-0.10.0/src/md_generator/log/timeline/timeline_engine.py +25 -0
  228. mdengine-0.10.0/src/md_generator/log/timeline/timeline_models.py +14 -0
  229. mdengine-0.10.0/src/md_generator/log/topology/__init__.py +3 -0
  230. mdengine-0.10.0/src/md_generator/log/topology/discovery.py +57 -0
  231. mdengine-0.10.0/src/md_generator/log/utils/__init__.py +1 -0
  232. mdengine-0.10.0/src/md_generator/log/utils/concurrency.py +23 -0
  233. mdengine-0.10.0/src/md_generator/log/utils/io.py +12 -0
  234. mdengine-0.10.0/src/md_generator/log/utils/regex.py +9 -0
  235. mdengine-0.10.0/src/md_generator/log/utils/time.py +18 -0
  236. mdengine-0.10.0/src/md_generator/log/visualization/__init__.py +4 -0
  237. mdengine-0.10.0/src/md_generator/log/visualization/mermaid_sequence.py +21 -0
  238. mdengine-0.10.0/src/md_generator/log/visualization/mermaid_timeline.py +21 -0
  239. mdengine-0.10.0/src/md_generator/log/visualization/mermaid_topology.py +24 -0
  240. mdengine-0.10.0/src/md_generator/log/writers/__init__.py +1 -0
  241. mdengine-0.10.0/src/md_generator/log/writers/assets_writer.py +11 -0
  242. mdengine-0.10.0/src/md_generator/log/writers/chunk_writer.py +56 -0
  243. mdengine-0.10.0/src/md_generator/log/writers/cluster_markdown.py +17 -0
  244. mdengine-0.10.0/src/md_generator/log/writers/correlation_writer.py +29 -0
  245. mdengine-0.10.0/src/md_generator/log/writers/frontmatter_writer.py +46 -0
  246. mdengine-0.10.0/src/md_generator/log/writers/incident_writer.py +67 -0
  247. mdengine-0.10.0/src/md_generator/log/writers/markdown_writer.py +80 -0
  248. mdengine-0.10.0/src/md_generator/log/writers/summary_writer.py +46 -0
  249. mdengine-0.10.0/src/md_generator/otel/__init__.py +1 -0
  250. mdengine-0.10.0/src/md_generator/otel/cli/__init__.py +0 -0
  251. mdengine-0.10.0/src/md_generator/otel/cli/main.py +34 -0
  252. mdengine-0.10.0/src/md_generator/otel/otel_logs.py +22 -0
  253. mdengine-0.10.0/src/md_generator/otel/otel_metrics.py +12 -0
  254. mdengine-0.10.0/src/md_generator/otel/otel_models.py +20 -0
  255. mdengine-0.10.0/src/md_generator/otel/otel_parser.py +22 -0
  256. mdengine-0.10.0/src/md_generator/otel/otel_spans.py +26 -0
  257. mdengine-0.10.0/src/md_generator/runtime/__init__.py +4 -0
  258. mdengine-0.10.0/src/md_generator/runtime/execution_context.py +13 -0
  259. mdengine-0.10.0/src/md_generator/runtime/metrics.py +27 -0
  260. mdengine-0.10.0/src/md_generator/runtime/stage_engine.py +25 -0
  261. mdengine-0.10.0/src/md_generator/sdk/__init__.py +3 -0
  262. mdengine-0.10.0/src/md_generator/sdk/classifier_plugin.py +8 -0
  263. mdengine-0.10.0/src/md_generator/sdk/discovery.py +20 -0
  264. mdengine-0.10.0/src/md_generator/sdk/enricher_plugin.py +3 -0
  265. mdengine-0.10.0/src/md_generator/sdk/parser_plugin.py +11 -0
  266. mdengine-0.10.0/src/md_generator/sdk/plugin_protocol.py +10 -0
  267. mdengine-0.10.0/src/md_generator/sdk/stage_protocol.py +30 -0
  268. mdengine-0.10.0/src/md_generator/sdk/writer_plugin.py +8 -0
  269. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/main.py +9 -0
  270. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/mcp_setup.py +10 -4
  271. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/query_options.py +5 -1
  272. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/convert_impl.py +41 -17
  273. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/converter.py +15 -0
  274. mdengine-0.10.0/src/md_generator/text/md_flatten.py +167 -0
  275. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/options.py +4 -0
  276. mdengine-0.10.0/src/md_generator/text/xml_parse.py +31 -0
  277. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/dependency-graph.json +6 -0
  278. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/registry.json +46 -3
  279. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +3 -2
  280. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +1 -1
  281. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +4 -3
  282. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +1 -1
  283. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +2 -1
  284. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +1 -1
  285. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +1 -1
  286. mdengine-0.10.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +76 -0
  287. mdengine-0.10.0/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +43 -0
  288. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +1 -1
  289. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +1 -1
  290. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +1 -1
  291. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +1 -1
  292. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +1 -1
  293. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +4 -3
  294. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +1 -1
  295. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +1 -1
  296. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +1 -1
  297. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +1 -0
  298. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +23 -1
  299. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +3 -2
  300. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +3 -2
  301. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/generate.py +8 -0
  302. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/routing.py +7 -2
  303. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/post_convert_assets.py +8 -7
  304. {mdengine-0.8.1 → mdengine-0.10.0/src/mdengine.egg-info}/PKG-INFO +214 -15
  305. {mdengine-0.8.1 → mdengine-0.10.0}/src/mdengine.egg-info/SOURCES.txt +226 -0
  306. {mdengine-0.8.1 → mdengine-0.10.0}/src/mdengine.egg-info/entry_points.txt +4 -0
  307. {mdengine-0.8.1 → mdengine-0.10.0}/src/mdengine.egg-info/requires.txt +50 -0
  308. mdengine-0.8.1/src/md_generator/codeflow/generators/html_unified.py +0 -285
  309. mdengine-0.8.1/src/md_generator/codeflow/graph/sqlite_export.py +0 -56
  310. {mdengine-0.8.1 → mdengine-0.10.0}/LICENSE +0 -0
  311. {mdengine-0.8.1 → mdengine-0.10.0}/setup.cfg +0 -0
  312. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/__init__.py +0 -0
  313. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/__init__.py +0 -0
  314. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/jobs.py +0 -0
  315. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/mcp_server.py +0 -0
  316. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/query_options.py +0 -0
  317. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/api/settings.py +0 -0
  318. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/archive/options.py +0 -0
  319. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/__init__.py +0 -0
  320. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
  321. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
  322. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/__init__.py +0 -0
  323. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/main.py +0 -0
  324. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
  325. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/run.py +0 -0
  326. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
  327. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/settings.py +0 -0
  328. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/api/sse.py +0 -0
  329. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
  330. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/config/__init__.py +0 -0
  331. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
  332. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/core/__init__.py +0 -0
  333. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
  334. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
  335. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/entry_detector.py +0 -0
  336. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
  337. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
  338. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
  339. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
  340. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
  341. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
  342. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
  343. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
  344. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
  345. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
  346. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
  347. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/html.py +0 -0
  348. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
  349. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
  350. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
  351. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
  352. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
  353. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
  354. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
  355. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
  356. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
  357. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
  358. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
  359. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
  360. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
  361. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
  362. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
  363. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
  364. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
  365. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
  366. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/mcp/server.py +0 -0
  367. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/models/__init__.py +0 -0
  368. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/models/ir.py +0 -0
  369. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
  370. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
  371. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
  372. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
  373. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
  374. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
  375. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
  376. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
  377. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
  378. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
  379. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/base.py +0 -0
  380. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/go_parser.py +0 -0
  381. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/ir_enrich.py +0 -0
  382. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/java_parser.py +0 -0
  383. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/parsers/php_parser.py +0 -0
  384. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
  385. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/rules/collector.py +0 -0
  386. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
  387. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
  388. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
  389. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
  390. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
  391. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
  392. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
  393. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
  394. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/__init__.py +0 -0
  395. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/__init__.py +0 -0
  396. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
  397. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
  398. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/sql_common.py +0 -0
  399. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
  400. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/__init__.py +0 -0
  401. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/mcp_server.py +0 -0
  402. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/api/run.py +0 -0
  403. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/cli/__init__.py +0 -0
  404. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/config/__init__.py +0 -0
  405. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/config/default.yaml +0 -0
  406. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/__init__.py +0 -0
  407. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/__init__.py +0 -0
  408. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
  409. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/filter.py +0 -0
  410. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
  411. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
  412. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/model.py +0 -0
  413. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
  414. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/erd/render.py +0 -0
  415. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/util.py +0 -0
  416. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/core/zip_export.py +0 -0
  417. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/mcp/__init__.py +0 -0
  418. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/mcp/server.py +0 -0
  419. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/mcp/sse.py +0 -0
  420. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/db/mcp/stream.py +0 -0
  421. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/__init__.py +0 -0
  422. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/adapters/__init__.py +0 -0
  423. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/adapters/factory.py +0 -0
  424. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
  425. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
  426. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/__init__.py +0 -0
  427. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/main.py +0 -0
  428. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/mcp_server.py +0 -0
  429. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/run.py +0 -0
  430. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/schemas.py +0 -0
  431. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/api/settings.py +0 -0
  432. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/cli/__init__.py +0 -0
  433. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/cli/main.py +0 -0
  434. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/config/__init__.py +0 -0
  435. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/config/default.yaml +0 -0
  436. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/__init__.py +0 -0
  437. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/base_adapter.py +0 -0
  438. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/extractor.py +0 -0
  439. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/graph_builder.py +0 -0
  440. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/job_manager.py +0 -0
  441. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
  442. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/models.py +0 -0
  443. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/run_config.py +0 -0
  444. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/viz.py +0 -0
  445. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/core/zip_export.py +0 -0
  446. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/mcp/__init__.py +0 -0
  447. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/mcp/server.py +0 -0
  448. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/mcp/sse.py +0 -0
  449. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/graph/mcp/stream.py +0 -0
  450. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/__init__.py +0 -0
  451. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/__init__.py +0 -0
  452. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/main.py +0 -0
  453. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/mcp_server.py +0 -0
  454. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/query_options.py +0 -0
  455. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/settings.py +0 -0
  456. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/staging.py +0 -0
  457. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/api/zip_bundle.py +0 -0
  458. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/backends/__init__.py +0 -0
  459. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/backends/base.py +0 -0
  460. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/backends/easy.py +0 -0
  461. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/backends/paddle.py +0 -0
  462. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/backends/tesseract.py +0 -0
  463. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/convert_impl.py +0 -0
  464. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/converter.py +0 -0
  465. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/emit.py +0 -0
  466. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/io_util.py +0 -0
  467. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/image/utils.py +0 -0
  468. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/__init__.py +0 -0
  469. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/__init__.py +0 -0
  470. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/__init__.py +0 -0
  471. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/main.py +0 -0
  472. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
  473. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
  474. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/run.py +0 -0
  475. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/api/settings.py +0 -0
  476. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/converter.py +0 -0
  477. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/formatter.py +0 -0
  478. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/audio/service.py +0 -0
  479. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/document_converter.py +0 -0
  480. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/job_store.py +0 -0
  481. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/__init__.py +0 -0
  482. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/__init__.py +0 -0
  483. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/main.py +0 -0
  484. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
  485. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
  486. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/run.py +0 -0
  487. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/api/settings.py +0 -0
  488. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/converter.py +0 -0
  489. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/formatter.py +0 -0
  490. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/video/service.py +0 -0
  491. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/whisper_language.py +0 -0
  492. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/__init__.py +0 -0
  493. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
  494. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/main.py +0 -0
  495. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
  496. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
  497. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/run.py +0 -0
  498. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/api/settings.py +0 -0
  499. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/converter.py +0 -0
  500. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/formatter.py +0 -0
  501. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/metadata.py +0 -0
  502. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/service.py +0 -0
  503. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/media/youtube/transcript.py +0 -0
  504. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/__init__.py +0 -0
  505. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/__init__.py +0 -0
  506. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/main.py +0 -0
  507. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
  508. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/run.py +0 -0
  509. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/schemas.py +0 -0
  510. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/api/settings.py +0 -0
  511. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/cli/__init__.py +0 -0
  512. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/cli/main.py +0 -0
  513. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/config/__init__.py +0 -0
  514. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/config/default.yaml +0 -0
  515. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/converters/__init__.py +0 -0
  516. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
  517. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/core/__init__.py +0 -0
  518. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/core/extractor.py +0 -0
  519. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/core/run_config.py +0 -0
  520. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/core/zip_export.py +0 -0
  521. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
  522. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
  523. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
  524. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/generators/__init__.py +0 -0
  525. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
  526. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
  527. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
  528. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
  529. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/mcp/server.py +0 -0
  530. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/models/__init__.py +0 -0
  531. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/models/domain.py +0 -0
  532. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
  533. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
  534. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
  535. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
  536. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
  537. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
  538. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
  539. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/writers/__init__.py +0 -0
  540. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
  541. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/__init__.py +0 -0
  542. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/api/__init__.py +0 -0
  543. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/api/main.py +0 -0
  544. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
  545. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/api/settings.py +0 -0
  546. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
  547. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/converter.py +0 -0
  548. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/md_emit.py +0 -0
  549. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/pdf_extract.py +0 -0
  550. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/pdf/utils.py +0 -0
  551. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/__init__.py +0 -0
  552. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/__init__.py +0 -0
  553. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
  554. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/jobs.py +0 -0
  555. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/main.py +0 -0
  556. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
  557. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
  558. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/run.py +0 -0
  559. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/api/settings.py +0 -0
  560. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/assets.py +0 -0
  561. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/chunker.py +0 -0
  562. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/cli.py +0 -0
  563. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/extractor.py +0 -0
  564. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/html_to_md.py +0 -0
  565. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/options.py +0 -0
  566. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/pipeline.py +0 -0
  567. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
  568. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/__init__.py +0 -0
  569. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/__init__.py +0 -0
  570. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
  571. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/jobs.py +0 -0
  572. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/main.py +0 -0
  573. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
  574. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
  575. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/query_options.py +0 -0
  576. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/api/settings.py +0 -0
  577. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/convert_impl.py +0 -0
  578. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/converter.py +0 -0
  579. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/embedded_extract.py +0 -0
  580. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/ooxml_media.py +0 -0
  581. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/options.py +0 -0
  582. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/post_assets.py +0 -0
  583. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/text_formatting.py +0 -0
  584. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
  585. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
  586. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
  587. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
  588. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/ppt/zip_deep.py +0 -0
  589. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/__init__.py +0 -0
  590. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/__init__.py +0 -0
  591. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/convert_runner.py +0 -0
  592. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/jobs.py +0 -0
  593. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/mcp_server.py +0 -0
  594. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/api/settings.py +0 -0
  595. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/format_detect.py +0 -0
  596. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/md_emit_json.py +0 -0
  597. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/md_emit_txt.py +0 -0
  598. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/text/md_emit_xml.py +0 -0
  599. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/__init__.py +0 -0
  600. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/__init__.py +0 -0
  601. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
  602. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
  603. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
  604. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
  605. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/agent.py +0 -0
  606. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/bundle.py +0 -0
  607. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/chunks.py +0 -0
  608. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/cli.py +0 -0
  609. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
  610. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
  611. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
  612. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
  613. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
  614. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
  615. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
  616. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
  617. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
  618. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
  619. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
  620. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
  621. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
  622. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
  623. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
  624. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
  625. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
  626. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
  627. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
  628. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
  629. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
  630. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
  631. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
  632. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
  633. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
  634. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
  635. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
  636. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
  637. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
  638. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/rag.py +0 -0
  639. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/assistant/registry.py +0 -0
  640. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
  641. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
  642. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
  643. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
  644. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/__init__.py +0 -0
  645. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/__init__.py +0 -0
  646. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/convert_runner.py +0 -0
  647. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/jobs.py +0 -0
  648. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/main.py +0 -0
  649. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/mcp_server.py +0 -0
  650. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/mcp_setup.py +0 -0
  651. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/query_options.py +0 -0
  652. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/api/settings.py +0 -0
  653. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/assets.py +0 -0
  654. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/convert_impl.py +0 -0
  655. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/converter.py +0 -0
  656. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/crawl.py +0 -0
  657. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/extract.py +0 -0
  658. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/fetch.py +0 -0
  659. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/html_to_md.py +0 -0
  660. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/options.py +0 -0
  661. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/page_convert.py +0 -0
  662. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/url/robots_util.py +0 -0
  663. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/__init__.py +0 -0
  664. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/api/__init__.py +0 -0
  665. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/api/convert_util.py +0 -0
  666. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/api/jobs.py +0 -0
  667. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/api/main.py +0 -0
  668. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/api/mcp_server.py +0 -0
  669. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/artifact.py +0 -0
  670. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/converter.py +0 -0
  671. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/word/settings.py +0 -0
  672. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/__init__.py +0 -0
  673. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/api/__init__.py +0 -0
  674. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/api/app.py +0 -0
  675. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/convert_config.py +0 -0
  676. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/converter.py +0 -0
  677. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/converter_core.py +0 -0
  678. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/excel_reader.py +0 -0
  679. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
  680. {mdengine-0.8.1 → mdengine-0.10.0}/src/md_generator/xlsx/mcp_server.py +0 -0
  681. {mdengine-0.8.1 → mdengine-0.10.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
  682. {mdengine-0.8.1 → mdengine-0.10.0}/src/mdengine.egg-info/top_level.txt +0 -0
@@ -1,12 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mdengine
3
- Version: 0.8.1
3
+ Version: 0.10.0
4
4
  Summary: Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown.
5
5
  Author: mdengine contributors
6
6
  License-Expression: MIT
7
7
  Project-URL: Homepage, https://github.com/vishal7090/md-generator
8
8
  Project-URL: Repository, https://github.com/vishal7090/md-generator
9
9
  Project-URL: Issues, https://github.com/vishal7090/md-generator/issues
10
+ Project-URL: Documentation, https://vishal7090.github.io/md-generator/
10
11
  Keywords: markdown,pdf,docx,pptx,xlsx,ocr,zip,url,html,youtube,playwright,database,openapi,codeflow
11
12
  Classifier: Programming Language :: Python :: 3
12
13
  Classifier: Programming Language :: Python :: 3 :: Only
@@ -43,9 +44,14 @@ Requires-Dist: paddlepaddle>=2.5.0; extra == "image-ocr"
43
44
  Requires-Dist: paddleocr>=2.7.0.3; extra == "image-ocr"
44
45
  Requires-Dist: easyocr>=1.7.0; extra == "image-ocr"
45
46
  Provides-Extra: text
47
+ Requires-Dist: xmltodict>=0.13.0; extra == "text"
48
+ Requires-Dist: lxml>=5.0.0; extra == "text"
46
49
  Provides-Extra: archive
47
50
  Requires-Dist: Pillow>=10.0.0; extra == "archive"
48
51
  Requires-Dist: pytesseract>=0.3.10; extra == "archive"
52
+ Provides-Extra: archive-formats
53
+ Requires-Dist: py7zr>=0.21.0; extra == "archive-formats"
54
+ Requires-Dist: patoolib>=2.0.0; extra == "archive-formats"
49
55
  Provides-Extra: url
50
56
  Requires-Dist: httpx>=0.27.0; extra == "url"
51
57
  Requires-Dist: beautifulsoup4>=4.12.0; extra == "url"
@@ -92,6 +98,7 @@ Requires-Dist: sqlalchemy>=2.0.0; extra == "db"
92
98
  Requires-Dist: pyyaml>=6.0.0; extra == "db"
93
99
  Requires-Dist: psycopg2-binary>=2.9.9; extra == "db"
94
100
  Requires-Dist: pymysql>=1.1.0; extra == "db"
101
+ Requires-Dist: pyodbc>=5.0.0; extra == "db"
95
102
  Requires-Dist: oracledb>=2.0.0; extra == "db"
96
103
  Requires-Dist: pymongo>=4.6.0; extra == "db"
97
104
  Requires-Dist: mermaid-py>=0.8.0; extra == "db"
@@ -120,6 +127,29 @@ Provides-Extra: codeflow-semantic
120
127
  Requires-Dist: numpy>=1.24.0; extra == "codeflow-semantic"
121
128
  Requires-Dist: scikit-learn>=1.3.0; extra == "codeflow-semantic"
122
129
  Requires-Dist: sentence-transformers>=3.0.0; extra == "codeflow-semantic"
130
+ Provides-Extra: log
131
+ Requires-Dist: pandas>=2.0.0; extra == "log"
132
+ Requires-Dist: python-dateutil>=2.8.0; extra == "log"
133
+ Requires-Dist: pyyaml>=6.0.0; extra == "log"
134
+ Provides-Extra: log-cluster
135
+ Requires-Dist: scikit-learn>=1.3.0; extra == "log-cluster"
136
+ Provides-Extra: log-semantic
137
+ Requires-Dist: numpy>=1.24.0; extra == "log-semantic"
138
+ Requires-Dist: scikit-learn>=1.3.0; extra == "log-semantic"
139
+ Requires-Dist: sentence-transformers>=3.0.0; extra == "log-semantic"
140
+ Provides-Extra: log-pretty
141
+ Requires-Dist: loguru>=0.7.0; extra == "log-pretty"
142
+ Provides-Extra: log-otel-proto
143
+ Requires-Dist: opentelemetry-proto>=1.27.0; extra == "log-otel-proto"
144
+ Requires-Dist: protobuf>=4.25.0; extra == "log-otel-proto"
145
+ Provides-Extra: log-export-parquet
146
+ Requires-Dist: pyarrow>=14.0.0; extra == "log-export-parquet"
147
+ Provides-Extra: log-stream-kafka
148
+ Requires-Dist: kafka-python>=2.0.2; extra == "log-stream-kafka"
149
+ Provides-Extra: log-stream-redis
150
+ Requires-Dist: redis>=5.0.0; extra == "log-stream-redis"
151
+ Provides-Extra: log-stream-ws
152
+ Requires-Dist: websockets>=12.0; extra == "log-stream-ws"
123
153
  Provides-Extra: api
124
154
  Requires-Dist: fastapi>=0.115.0; extra == "api"
125
155
  Requires-Dist: uvicorn[standard]>=0.32.0; extra == "api"
@@ -129,6 +159,14 @@ Requires-Dist: pydantic-settings>=2.0.0; extra == "api"
129
159
  Provides-Extra: mcp
130
160
  Requires-Dist: mcp>=1.2.0; extra == "mcp"
131
161
  Requires-Dist: fastmcp>=2.3.0; extra == "mcp"
162
+ Provides-Extra: docs
163
+ Requires-Dist: mkdocs-material; extra == "docs"
164
+ Requires-Dist: mkdocstrings; extra == "docs"
165
+ Requires-Dist: mkdocstrings-python; extra == "docs"
166
+ Requires-Dist: pymdown-extensions; extra == "docs"
167
+ Requires-Dist: mkdocs-mermaid2-plugin; extra == "docs"
168
+ Requires-Dist: mkdocs-git-revision-date-localized-plugin; extra == "docs"
169
+ Requires-Dist: mike; extra == "docs"
132
170
  Provides-Extra: skill-openai
133
171
  Requires-Dist: openai>=1.30.0; extra == "skill-openai"
134
172
  Provides-Extra: skill-rag-chroma
@@ -148,6 +186,8 @@ Requires-Dist: mdengine[graph]; extra == "dev"
148
186
  Requires-Dist: mdengine[openapi]; extra == "dev"
149
187
  Requires-Dist: mdengine[codeflow]; extra == "dev"
150
188
  Requires-Dist: mdengine[codeflow-treesitter]; extra == "dev"
189
+ Requires-Dist: mdengine[log]; extra == "dev"
190
+ Requires-Dist: mdengine[log-cluster]; extra == "dev"
151
191
  Provides-Extra: all
152
192
  Requires-Dist: pymupdf>=1.24.0; extra == "all"
153
193
  Requires-Dist: pdfplumber>=0.11.0; extra == "all"
@@ -185,7 +225,7 @@ Single Python distribution for converting **PDF**, **Word (.docx)**, **PowerPoin
185
225
  - **Python:** 3.10+
186
226
  - **License:** [MIT](LICENSE)
187
227
 
188
- **Quick links:** [On a new computer](#on-a-new-computer) · [Command-line execution](#command-line-execution) · [Python library](#python-library) · [Audio and video](#audio-and-video-to-markdown) · [HTTP API](#http-api-fastapi) · [MCP](#mcp-model-context-protocol) · [AI assistant CLI](#ai-assistant-cli) · [Development](#development) · [Code of Conduct](CODE_OF_CONDUCT.md)
228
+ **Quick links:** [On a new computer](#on-a-new-computer) · [Command-line execution](#command-line-execution) · [Python library](#python-library) · [Audio and video](#audio-and-video-to-markdown) · [HTTP API](#http-api-fastapi) · [MCP](#mcp-model-context-protocol) · [AI assistant CLI](#ai-assistant-cli) · [Development](#development) · [Published documentation](https://vishal7090.github.io/md-generator/) · [Code of Conduct](CODE_OF_CONDUCT.md)
189
229
 
190
230
  ---
191
231
 
@@ -254,9 +294,23 @@ pip install "mdengine[all]"
254
294
  | `url-full` | `url` plus PDF/Word/PPTX/XLSX/archive stack for **post-converting** downloaded linked files to Markdown |
255
295
  | `audio` | **Audio → Markdown** via Whisper (`openai-whisper`); ships `imageio-ffmpeg` for a bundled **ffmpeg** when none is on `PATH` |
256
296
  | `video` | **Video → Markdown** (ffmpeg extracts mono 16 kHz WAV, then same Whisper stack as `audio`) |
297
+ | `youtube` | **YouTube → Markdown** (captions + page metadata; `youtube-transcript-api`, httpx, BeautifulSoup, lxml) |
298
+ | `playwright` | **Playwright-rendered SPA → Markdown** (`playwright` + same HTML stack as `url`; run `playwright install chromium` after install) |
299
+ | `db` | **Database metadata → Markdown** (SQLAlchemy, drivers, `mermaid-py` for ERD helpers) |
300
+ | `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
301
+ | `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
302
+ | `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 |
304
+ | `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
305
+ | `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
306
+ | `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
307
+ | `log-cluster` | Log pipeline **clustering** (scikit-learn) |
308
+ | `log-semantic` | Log pipeline **semantic** helpers (SentenceTransformers + scikit-learn; large) |
309
+ | `log-pretty` | Optional **loguru** for pretty console diagnostics during log conversion |
257
310
  | `api` | FastAPI, uvicorn, httpx, pydantic-settings |
258
311
  | `mcp` | MCP servers (`mcp`, `fastmcp` where used) |
259
312
  | `graph` | **Graph → Markdown** (Neo4j Bolt + NetworkX GraphML/GML): `networkx`, `neo4j`, `pyyaml` |
313
+ | `docs` | **MkDocs** site tooling (Material, mkdocstrings, Mermaid plugin, mike) for maintainers publishing reference docs |
260
314
  | `dev` | pytest + API/MCP test helpers |
261
315
  | `all` | Large superset of dependencies (use only if you need everything) |
262
316
  | `skill-openai` | Optional helpers for OpenAI-style calls with assembled skill context (`md_generator.tools.assistant`) |
@@ -317,7 +371,17 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
317
371
  | `md-openapi` | `md_generator.openapi.cli.main:main` | `pip install "mdengine[openapi]"` then `md-openapi generate --file openapi.yaml --output ./docs` (or `mdengine openapi-to-md generate …`) |
318
372
  | `md-openapi-api` | `md_generator.openapi.api.run:main` | FastAPI on port **8015** (`OPENAPI_TO_MD_PORT`): `POST /openapi-to-md/generate` (OpenAPI upload → ZIP), `/health`, MCP at **`/mcp`** |
319
373
  | `md-openapi-mcp` | `md_generator.openapi.api.mcp_server:main` | Standalone MCP: `api_validate_openapi_yaml`, `api_generate_readme_markdown`, `api_run_sync_zip_base64` |
320
- | `mdengine` | `md_generator.engine_cli:main` | `mdengine ai assist …`, `mdengine ai export …`, `mdengine skill build …`, `mdengine db-to-md …`, `mdengine graph-to-md …`, `mdengine openapi-to-md generate …` |
374
+ | `md-playwright` | `md_generator.playwright.cli:main` | `pip install "mdengine[playwright]"` then `md-playwright https://spa.example/app ./spa-out` (after `playwright install chromium`) |
375
+ | `md-playwright-api` | `md_generator.playwright.api.run:main` | FastAPI + MCP on port **8014** (`PLAYWRIGHT_TO_MD_API_PORT` / settings); see [HTTP API](#http-api-fastapi) |
376
+ | `md-playwright-mcp` | `md_generator.playwright.api.mcp_server:main` | Standalone MCP for Playwright capture tools |
377
+ | `md-codeflow` | `md_generator.codeflow.cli.main:main` | Same as `codeflow` — `md-codeflow scan …` (alias of packaged `codeflow` script) |
378
+ | `codeflow` | `md_generator.codeflow.cli.main:main` | `pip install "mdengine[codeflow]"` then `codeflow scan path/to/src --output ./out --lang java` |
379
+ | `md-codeflow-api` | `md_generator.codeflow.api.run:main` | FastAPI on port **8016** (`CODEFLOW_TO_MD_PORT`); upload/workspace job flow + MCP at **`/mcp`** when MCP extras resolve |
380
+ | `md-codeflow-mcp` | `md_generator.codeflow.api.mcp_server:main` | Standalone **stdio** MCP for codeflow tools |
381
+ | `md-log` | `md_generator.log.cli.main:main` | `pip install "mdengine[log]"` then `md-log --config log.yaml` (or `mdengine log-to-md …`) |
382
+ | `md-log-api` | `md_generator.log.api.run:main` | FastAPI on port **8012** (`LOG_TO_MD_PORT`); set a different port if **`md-graph-api`** or **`md-video-api`** already uses **8012** |
383
+ | `md-log-mcp` | `md_generator.log.api.mcp_server:main` | Standalone MCP (`stdio` \| `sse` \| `streamable-http`) |
384
+ | `mdengine` | `md_generator.engine_cli:main` | `mdengine ai assist …`, `mdengine ai export …`, `mdengine skill build …`, `mdengine db-to-md …`, `mdengine log-to-md …`, `mdengine graph-to-md …`, `mdengine openapi-to-md generate …`, `mdengine codeflow-to-md scan …` |
321
385
 
322
386
  **openapi-to-md (`md-openapi`):** OpenAPI **3.x** is parsed directly; **Swagger 2.0** (`swagger: "2.0"`) documents are **converted in-process** to OpenAPI 3.0.3 (deterministic, in-repo converter) before `$ref` resolution. Edge-heavy specs (unusual OAuth2 flows, vendor extensions) may still need fixes after conversion.
323
387
 
@@ -327,6 +391,14 @@ If the shell reports “command not found”, ensure the Python **Scripts** dire
327
391
 
328
392
  **db-to-md SQLite:** set **`database.type: sqlite`** and **`database.uri`** to a SQLAlchemy URL such as **`sqlite:///my.db`** or **`sqlite:////C:/data/my.db`**. The default SQLite catalog is **`main`**; packaged YAML that still has **`schema: public`** is normalized to **`main`** when the type is SQLite. CLI: **`--type sqlite`**. Stored routines, sequences, and partitions are not used by SQLite and stay empty; tables, indexes, views, triggers, and ERD (via FK introspection) follow the same export path as other SQL engines.
329
393
 
394
+ **db-to-md SQL Server:** set **`database.type: mssql`** (aliases: `sqlserver`) and a **`mssql+pyodbc://`** URI with an ODBC driver query (for example `?driver=ODBC+Driver+18+for+SQL+Server`). Set **`database.schema`** to the SQL Server schema (default **`dbo`**). Optional features: **`synonyms`**, **`dependencies`** (lineage from `sys.sql_expression_dependencies`). Table/column/routine **MS_Description** extended properties are exported when present. Requires **`pyodbc`** (`mdengine[db]`).
395
+
396
+ **db-to-md Microsoft Access:** set **`database.type: access`** with a file path via **`mssql+pyodbc:///?odbc_connect=...`** (built automatically from uploads) or use **`POST /db-to-md/run/access`** / **`POST /db-to-md/job/access`** to upload **`.mdb` / `.accdb`** files (Windows + Microsoft Access ODBC driver). Saved **Query** objects are exported as views (SELECT) or query procedures (action queries). Requires **`pyodbc`** and an Access-compatible ODBC driver.
397
+
398
+ **db-to-md CLI validation:** **`md-db --test-connection`** (or **`mdengine db-to-md --test-connection`**) checks connectivity without exporting. **`--list-schemas`** prints schema/catalog names (`--output-format json` optional).
399
+
400
+ **db-to-md export manifest:** every run can write **`export_manifest.json`** at the output root (counts, file list, ERD paths). Control with **`output.write_manifest`** (default true). **`output.markdown_cross_links`** adds **Related** links between tables via foreign keys when using split files (default true).
401
+
330
402
  **db-to-md API SQLite upload:** **`POST /db-to-md/run/sqlite`** — `multipart/form-data` with field **`file`** (the `.sqlite` / `.db` bytes; must start with the standard `SQLite format 3` header) and optional **`config`** (JSON string with the same shape as a normal run body minus `database`: `schema`, `output`, `features`, `execution`, `limits`, `erd`). Returns the metadata ZIP immediately. **`POST /db-to-md/job/sqlite`** — same form fields; saves the file under the job workspace and runs the existing job pipeline (`GET /db-to-md/job/{id}/download` when complete). Upload size cap: env **`DB_TO_MD_MAX_SQLITE_UPLOAD_MB`** (default **256**). Large ZIPs may still require the async job path if they exceed **`DB_TO_MD_MAX_SYNC_ZIP_MB`** on the sync upload route.
331
403
 
332
404
  **graph-to-md (Neo4j + NetworkX):** library lives under [`md_generator/graph/`](src/md_generator/graph/). **Sources:** **`networkx`** (GraphML/GML via `graph.graph_file` or `--graph-file`) or **`neo4j`** (`graph.uri`, `graph.user`, `graph.password`, optional `graph.database` for `session(database=…)`). **Output layout:** by default **`output.combine_markdown: true`** writes **`nodes.md`**, **`relationship.md`**, and **`graph_summary.md`** (summary plus embedded nodes and relationships). Set **`combine_markdown: false`** or CLI **`--individual` / `--markdown-layout individual`** for per-entity files under **`nodes/`** and **`relationships/`**. **Diagrams:** **`viz.mermaid: true`** (default) writes **`graph/graph.mmd`** and embeds a fenced Mermaid block in the export **`README.md`** (no Graphviz required). **`viz.enabled: true`** or CLI **`--viz`** also writes **`graph/graph.dot`** and runs **`dot`** for PNG/SVG/PDF when Graphviz is on `PATH` (or **`GRAPHVIZ_DOT`**). CLI **`--no-mermaid`** disables Mermaid; **`--depth`**, **`--start-node`**, **`--max-nodes`**, **`--max-edges`** bound traversal. Packaged defaults: [`src/md_generator/graph/config/default.yaml`](src/md_generator/graph/config/default.yaml). Tests: **`graph-to-md/tests/`**; API image: [`graph-to-md/Dockerfile.api`](graph-to-md/Dockerfile.api).
@@ -350,6 +422,10 @@ md-url https://example.com/page ./page-bundle --artifact-layout
350
422
  md-audio ./voice.mp3 ./voice.md --model tiny
351
423
  md-video ./screen.mp4 ./screen.md --model base
352
424
  pip install "mdengine[graph]" && md-graph --source neo4j --uri neo4j://localhost:7687 --user neo4j --password secret --database neo4j --output ./graph-out --viz
425
+ pip install "mdengine[playwright]" && playwright install chromium && md-playwright https://example.com/app ./spa-out
426
+ pip install "mdengine[openapi]" && md-openapi generate --file openapi.yaml --output ./openapi-md
427
+ pip install "mdengine[log]" && md-log --config log.yaml
428
+ md-codeflow scan ./src --output ./cf-out --lang python
353
429
  ```
354
430
 
355
431
  **Windows PowerShell** (same commands; use backslashes for paths if you prefer)
@@ -362,6 +438,9 @@ md-audio .\voice.mp3 .\voice.md --model tiny
362
438
  md-video .\screen.mp4 .\screen.md --model base
363
439
  pip install "mdengine[graph]"
364
440
  md-graph --source neo4j --uri neo4j://localhost:7687 --user neo4j --password secret --database neo4j --output .\graph-out --viz
441
+ pip install "mdengine[playwright]"
442
+ playwright install chromium
443
+ md-playwright https://example.com/app .\spa-out
365
444
  ```
366
445
 
367
446
  **Windows CMD**
@@ -396,19 +475,19 @@ python pdf-to-md\converter.py input.pdf out.md
396
475
  PYTHONPATH=src python pdf-to-md/converter.py input.pdf out.md
397
476
  ```
398
477
 
399
- ### 6. Convert every file in `docs/` (strictly command-line)
478
+ ### 6. Convert every file in `example/` (strictly command-line)
400
479
 
401
- To process **all supported files** under the [`docs/`](docs/) folder using only the installed **`md-*`** tools (no Python snippets), use the batch driver:
480
+ To process **all supported files** under the [`example/`](example/) folder using only the installed **`md-*`** tools (no Python snippets), use the batch driver:
402
481
 
403
482
  | Platform | Command (run from **repository root** unless noted) |
404
483
  |----------|------------------------------------------------------|
405
484
  | Windows | `powershell -ExecutionPolicy Bypass -File scripts/run-docs-cli.ps1` |
406
- | Windows | Or double-click / run [`docs/run-all-cli.cmd`](docs/run-all-cli.cmd) (changes to repo root, then runs the script on `docs\`) |
485
+ | Windows | Or double-click / run [`example/run-all-cli.cmd`](example/run-all-cli.cmd) (changes to repo root, then runs the script on `example\`) |
407
486
  | macOS / Linux | `bash scripts/run-docs-cli.sh` |
408
487
 
409
488
  Optional environment variables for the shell script: `DOCS_DIR`, `OUT_DIR`, `IMAGE_ENGINES` (default `tess`). PowerShell script parameters: `-DocsDir`, `-OutDir`, `-ImageEngines`.
410
489
 
411
- Outputs are written to **`docs/cli-output/<basename>/`** (one subfolder per input file). **`.csv`** files are converted with **`md-xlsx`** (same engine as Excel). **`.md`** files are skipped.
490
+ Outputs are written to **`example/cli-output/<basename>/`** (one subfolder per input file). **`.csv`** files are converted with **`md-xlsx`** (same engine as Excel). **`.md`** files are skipped.
412
491
 
413
492
  ---
414
493
 
@@ -529,6 +608,113 @@ convert_zip(
529
608
 
530
609
  `repo_root` on `ConvertOptions` is **deprecated and ignored**; converters are loaded in-process from `md_generator`.
531
610
 
611
+ ### URL (HTML)
612
+
613
+ ```python
614
+ from pathlib import Path
615
+
616
+ import httpx
617
+ from md_generator.url.convert_impl import run_single
618
+ from md_generator.url.options import ConvertOptions
619
+
620
+ with httpx.Client(follow_redirects=True, timeout=30.0) as client:
621
+ run_single(
622
+ "https://example.com/",
623
+ Path("web-out"),
624
+ ConvertOptions(artifact_layout=True, verbose=False),
625
+ client,
626
+ )
627
+ ```
628
+
629
+ See [url-to-md/README.md](url-to-md/README.md) for crawl modes, post-convert assets, and API bodies.
630
+
631
+ ### Playwright (SPA)
632
+
633
+ ```python
634
+ import asyncio
635
+ from pathlib import Path
636
+
637
+ from md_generator.playwright.options import PlaywrightOptions
638
+ from md_generator.playwright.pipeline import convert_url_to_md
639
+
640
+ async def main() -> None:
641
+ await convert_url_to_md(
642
+ "https://example.com/app",
643
+ Path("spa-out"),
644
+ PlaywrightOptions(),
645
+ )
646
+
647
+ asyncio.run(main())
648
+ ```
649
+
650
+ Install browsers once: `playwright install chromium`.
651
+
652
+ ### Database metadata (db-to-md)
653
+
654
+ ```python
655
+ from pathlib import Path
656
+
657
+ from md_generator.db.core.extractor import extract_to_markdown
658
+ from md_generator.db.core.run_config import load_run_config
659
+
660
+ cfg = load_run_config(Path("db-export.yaml"))
661
+ extract_to_markdown(cfg)
662
+ ```
663
+
664
+ YAML shape and ERD options are covered above under **db-to-md** CLI notes.
665
+
666
+ ### Graph (Neo4j / NetworkX)
667
+
668
+ ```python
669
+ from pathlib import Path
670
+
671
+ from md_generator.graph.core.extractor import extract_to_markdown
672
+ from md_generator.graph.core.run_config import load_graph_run_config
673
+
674
+ cfg = load_graph_run_config(Path("graph-export.yaml"))
675
+ extract_to_markdown(cfg)
676
+ ```
677
+
678
+ ### OpenAPI → Markdown
679
+
680
+ ```python
681
+ from pathlib import Path
682
+
683
+ from md_generator.openapi.core.extractor import extract_to_markdown
684
+ from md_generator.openapi.core.run_config import ApiRunConfig
685
+
686
+ cfg = ApiRunConfig(file=Path("openapi.yaml"), output_path=Path("api-md"))
687
+ extract_to_markdown(cfg)
688
+ ```
689
+
690
+ Use `load_api_run_config(Path("openapi-md.yaml"))` when you prefer a single YAML file for input/output/format defaults.
691
+
692
+ ### Log files (log-to-md)
693
+
694
+ ```python
695
+ from pathlib import Path
696
+
697
+ from md_generator.log.core.extractor import extract_to_markdown
698
+ from md_generator.log.core.run_config import load_run_config as load_log_run_config
699
+
700
+ cfg = load_log_run_config(Path("log-export.yaml"))
701
+ extract_to_markdown(cfg)
702
+ ```
703
+
704
+ ### Codeflow (static call graphs)
705
+
706
+ ```python
707
+ from pathlib import Path
708
+
709
+ from md_generator.codeflow.core.extractor import run_scan
710
+ from md_generator.codeflow.core.run_config import ScanConfig
711
+
712
+ cfg = ScanConfig(project_root=Path("my-service/src"), output_path=Path("codeflow-out"), languages="java")
713
+ run_scan(cfg)
714
+ ```
715
+
716
+ More flags and language notes: [Development](#development) (section **Codeflow**) and [`codeflow-to-md/docs/graph-and-outputs.md`](codeflow-to-md/docs/graph-and-outputs.md).
717
+
532
718
  ---
533
719
 
534
720
  ## Audio and video to Markdown
@@ -645,7 +831,7 @@ Equivalent modules: `python -m md_generator.media.audio.api.mcp_server`, `python
645
831
 
646
832
  ### Thin shims (repo clone)
647
833
 
648
- [`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/).
834
+ [`audio-to-md/converter.py`](audio-to-md/converter.py), [`video-to-md/converter.py`](video-to-md/converter.py), and [`youtube-to-md/converter.py`](youtube-to-md/converter.py) delegate to the same `main` as `md-audio` / `md-video` / `md-youtube`. Tests and `pytest.ini` live under `audio-to-md/tests/`, `video-to-md/tests/`, and `youtube-to-md/tests/`. [`db-to-md/converter.py`](db-to-md/converter.py) delegates to `md-db`; tests live under `db-to-md/tests/`. **graph-to-md** uses `md-graph` / `mdengine graph-to-md` directly (no thin `converter.py` shim); tests live under [`graph-to-md/tests/`](graph-to-md/tests/). [`openapi-to-md/converter.py`](openapi-to-md/converter.py) delegates to `md-openapi`; tests live under [`openapi-to-md/tests/`](openapi-to-md/tests/); example OpenAPI and output notes: [`openapi-to-md/examples/`](openapi-to-md/examples/). [`log-to-md/converter.py`](log-to-md/converter.py) delegates to `md-log`; tests under [`log-to-md/tests/`](log-to-md/tests/). [`codeflow-to-md/converter.py`](codeflow-to-md/converter.py) invokes the same CLI entrypoint as `md-codeflow` / `codeflow`; tests under [`codeflow-to-md/tests/`](codeflow-to-md/tests/). [`url-to-md/converter.py`](url-to-md/converter.py) matches `md-url`; tests under [`url-to-md/tests/`](url-to-md/tests/). [`playwright-to-md/tests/`](playwright-to-md/tests/) cover the Playwright pipeline (no root `converter.py` shim required).
649
835
 
650
836
  ---
651
837
 
@@ -681,23 +867,28 @@ Install `mdengine[api]` plus the format extra(s), then run the **`app`** object
681
867
  | Audio (Whisper) | `md_generator.media.audio.api.main:create_app` (use **`--factory`**) or `…main:app` | `audio`, `api`, `mcp` |
682
868
  | Video (Whisper) | `md_generator.media.video.api.main:create_app` (use **`--factory`**) or `…main:app` | `video`, `api`, `mcp` |
683
869
  | YouTube | `md_generator.media.youtube.api.main:create_app` (use **`--factory`**) or `…main:app` | `youtube`, `api`, `mcp` |
870
+ | Codeflow (workspace scans) | `md_generator.codeflow.api.main:app` | `codeflow`, `api`, `mcp` |
871
+ | Log files → Markdown | `md_generator.log.api.main:app` | `log`, `api`, `mcp` |
684
872
 
685
- Examples:
873
+ Examples (ports are **illustrative** so several services can run together; each `md-*-api` / `run` module has its own **default** — set `*_PORT` / `*_API_PORT` env vars to match your layout):
686
874
 
687
875
  ```bash
688
876
  uvicorn md_generator.pdf.api.main:app --host 127.0.0.1 --port 8001
689
877
  uvicorn md_generator.word.api.main:app --host 127.0.0.1 --port 8002
690
- uvicorn md_generator.archive.api.main:app --host 127.0.0.1 --port 8010
691
- uvicorn md_generator.url.api.main:app --host 127.0.0.1 --port 8011
878
+ uvicorn md_generator.archive.api.main:app --host 127.0.0.1 --port 8008
879
+ uvicorn md_generator.url.api.main:app --host 127.0.0.1 --port 8017
880
+ uvicorn md_generator.db.api.main:app --host 127.0.0.1 --port 8010
692
881
  uvicorn md_generator.playwright.api.main:app --host 127.0.0.1 --port 8014
693
- uvicorn md_generator.graph.api.main:app --host 127.0.0.1 --port 8012
882
+ uvicorn md_generator.graph.api.main:app --host 127.0.0.1 --port 8020
694
883
  uvicorn md_generator.openapi.api.main:app --host 127.0.0.1 --port 8015
884
+ uvicorn md_generator.codeflow.api.main:app --host 127.0.0.1 --port 8016
885
+ uvicorn md_generator.log.api.main:app --host 127.0.0.1 --port 8018
695
886
  uvicorn md_generator.media.audio.api.main:create_app --factory --host 127.0.0.1 --port 8011
696
887
  uvicorn md_generator.media.video.api.main:create_app --factory --host 127.0.0.1 --port 8012
697
888
  uvicorn md_generator.media.youtube.api.main:create_app --factory --host 127.0.0.1 --port 8013
698
889
  ```
699
890
 
700
- **Port note:** **`md-graph-api`** and **`md-video-api`** both default to **8012**; set **`GRAPH_TO_MD_PORT`** or **`MD_VIDEO_API_PORT`** when you need both on one machine. **`md-openapi-api`** defaults to **8015** (`OPENAPI_TO_MD_PORT`) so it does not collide with **`md-youtube-api`** (**8013**) or **`md-playwright-api`** (**8014**).
891
+ **Port note:** **`md-graph-api`**, **`md-video-api`**, and **`md-log-api`** all default to **8012** in their respective `run.py` modules. Run only one on that port, or set **`GRAPH_TO_MD_PORT`**, **`MD_VIDEO_API_PORT`**, and **`LOG_TO_MD_PORT`** so each process listens on a unique port. **`md-db-api`** defaults to **8010** (not shown colliding with the archive example above, which uses **8008** on purpose). **`md-openapi-api`** defaults to **8015** (`OPENAPI_TO_MD_PORT`). **`md-youtube-api`** defaults to **8013**; **`md-playwright-api`** / **`PLAYWRIGHT_TO_MD_API_PORT`** default to **8014**. **`md-codeflow-api`** defaults to **8016** (`CODEFLOW_TO_MD_PORT`).
701
892
 
702
893
  ### MCP over HTTP on the same server
703
894
 
@@ -720,6 +911,8 @@ Prefixes differ per service (often read from a `.env` file next to the process):
720
911
  | Database metadata | `DB_TO_MD_` | `DB_TO_MD_JOB_SQLITE_PATH`, `DB_TO_MD_JOB_WORKSPACE_ROOT`, `DB_TO_MD_CORS_ORIGINS`, `DB_TO_MD_MAX_SYNC_ZIP_MB`, `DB_TO_MD_HOST`, `DB_TO_MD_PORT` (default **8010**) |
721
912
  | Graph metadata | `GRAPH_TO_MD_` | `GRAPH_TO_MD_JOB_SQLITE_PATH`, `GRAPH_TO_MD_JOB_WORKSPACE_ROOT`, `GRAPH_TO_MD_CORS_ORIGINS`, `GRAPH_TO_MD_MAX_SYNC_ZIP_MB`, `GRAPH_TO_MD_HOST`, `GRAPH_TO_MD_PORT` (default **8012**) |
722
913
  | OpenAPI → Markdown | `OPENAPI_TO_MD_` | `OPENAPI_TO_MD_CORS_ORIGINS`, `OPENAPI_TO_MD_MAX_SYNC_ZIP_MB`, `OPENAPI_TO_MD_HOST`, `OPENAPI_TO_MD_PORT` (default **8015**) |
914
+ | Codeflow API | `CODEFLOW_TO_MD_` / `CODEFLOW_` | `CODEFLOW_TO_MD_HOST`, `CODEFLOW_TO_MD_PORT` (default **8016**); in-app limits: `CODEFLOW_MAX_UPLOAD_ZIP_MB`, `CODEFLOW_MAX_SYNC_ZIP_MB`, `CODEFLOW_JOB_WORKSPACE_ROOT`, `CODEFLOW_SQLITE_PATH`, CORS via `CODEFLOW_CORS` |
915
+ | Log API | `LOG_TO_MD_` | `LOG_TO_MD_HOST`, `LOG_TO_MD_PORT` (default **8012** — change if **graph** or **video** API uses that port), `LOG_TO_MD_CORS_ORIGINS`, `LOG_TO_MD_MAX_SYNC_ZIP_MB`, `LOG_TO_MD_MAX_LOG_UPLOAD_MB`, workspace / SQLite paths |
723
916
  | Audio API | `MD_AUDIO_` | `MD_AUDIO_MAX_UPLOAD_MB`, `MD_AUDIO_MAX_SYNC_UPLOAD_MB`, `MD_AUDIO_JOB_TTL_SECONDS`, `MD_AUDIO_TEMP_DIR`, `MD_AUDIO_CORS_ORIGINS`, `MD_AUDIO_API_HOST`, `MD_AUDIO_API_PORT` |
724
917
  | Video API | `MD_VIDEO_` | Same pattern as audio with `MD_VIDEO_*` (defaults: larger upload/sync caps, port **8012**) |
725
918
  | YouTube API | `MD_YOUTUBE_` | `MD_YOUTUBE_JOB_TTL_SECONDS`, `MD_YOUTUBE_TEMP_DIR`, `MD_YOUTUBE_CORS_ORIGINS`, `MD_YOUTUBE_API_HOST`, `MD_YOUTUBE_API_PORT` (default **8013**); optional `MD_YOUTUBE_YTDLP` path for audio fallback |
@@ -746,13 +939,15 @@ Two usage patterns:
746
939
  | PPTX | `python -m md_generator.ppt.api.mcp_server` (see module docstring for flags) |
747
940
  | Image | `python -m md_generator.image.api.mcp_server` (see module for CLI) |
748
941
  | URL / HTML | `python -m md_generator.url.api.mcp_server` / `--transport sse` / `--transport streamable-http` |
749
- | Playwright / SPA | `md-playwright-mcp` or `python -m md_generator.playwright.api.mcp_server` / `--transport sse` / `--transport streamable-http` |
942
+ | Playwright / SPA | `md-playwright`, `md-playwright-api`, `md-playwright-mcp`, or `python -m md_generator.playwright.api.mcp_server` / `--transport sse` / `--transport streamable-http` |
750
943
  | Audio | `md-audio-mcp` or `python -m md_generator.media.audio.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
751
944
  | Video | `md-video-mcp` or `python -m md_generator.media.video.api.mcp_server` — same transports |
752
945
  | YouTube | `md-youtube-mcp` or `python -m md_generator.media.youtube.api.mcp_server` — same transports |
753
946
  | Database metadata | `md-db-mcp` or `python -m md_generator.db.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
754
947
  | Graph (Neo4j / NetworkX) | `md-graph-mcp` or `python -m md_generator.graph.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
755
948
  | OpenAPI → Markdown | `md-openapi-mcp` or `python -m md_generator.openapi.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
949
+ | Codeflow | `md-codeflow-mcp` or `python -m md_generator.codeflow.api.mcp_server` — **stdio** MCP (see module for details) |
950
+ | Log files | `md-log-mcp` or `python -m md_generator.log.api.mcp_server` — `--transport stdio` (default), `sse`, `streamable-http` |
756
951
 
757
952
  **Word** and **XLSX** also ship a small runner script in the repo:
758
953
 
@@ -881,7 +1076,9 @@ pip install -e ".[dev,all]" # or a smaller subset of extras
881
1076
  python -m pytest
882
1077
  ```
883
1078
 
884
- Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, and **[`tool-assistant/tests/`](tool-assistant/tests/)** for the skill SDK; `pyproject.toml` sets `pythonpath = ["src"]` so **`md_generator`** (including **`md_generator.tools.assistant`**) resolves without a manual `PYTHONPATH` when you use `pytest` from the config.
1079
+ Tests live under each legacy folder’s `tests/` directory (e.g. `pdf-to-md/tests/`), plus **`url-to-md/tests/`**, **`playwright-to-md/tests/`**, **`youtube-to-md/tests/`**, **`graph-to-md/tests/`**, **`openapi-to-md/tests/`**, **`codeflow-to-md/tests/`**, **`log-to-md/tests/`**, and **[`tool-assistant/tests/`](tool-assistant/tests/)** for the skill SDK; `pyproject.toml` sets `pythonpath = ["src"]` so **`md_generator`** (including **`md_generator.tools.assistant`**) resolves without a manual `PYTHONPATH` when you use `pytest` from the config.
1080
+
1081
+ **Docs site (maintainers):** install **`mdengine[docs]`**, then build or serve the MkDocs project from the repo root (`mkdocs.yml`). The published site URL is listed under **Documentation** in `[project.urls]` on PyPI ([GitHub Pages build](https://vishal7090.github.io/md-generator/)).
885
1082
 
886
1083
  ### Codeflow (`md_generator.codeflow`)
887
1084
 
@@ -913,6 +1110,8 @@ python -m md_generator.codeflow.cli.main scan path/to/src --output ./codeflow-ou
913
1110
  | Path | Role |
914
1111
  |------|------|
915
1112
  | `LICENSE` | MIT license text |
1113
+ | `docs/` | **MkDocs** source (module guides, `index.md`); build with **`mdengine[docs]`** |
1114
+ | `mkdocs.yml` | MkDocs configuration |
916
1115
  | `CODE_OF_CONDUCT.md` | [Contributor Covenant](https://www.contributor-covenant.org/) 2.1 |
917
1116
  | `src/md_generator/` | **Library source** (all formats + `api` subpackages); **audio/video** under [`media/audio/`](src/md_generator/media/audio/) and [`media/video/`](src/md_generator/media/video/); **graph-to-md** under [`graph/`](src/md_generator/graph/) |
918
1117
  | `pyproject.toml` | Packaging, extras, CLI entry points, pytest |