mdengine 0.10.0__tar.gz → 0.11.1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mdengine-0.10.0 → mdengine-0.11.1}/PKG-INFO +19 -2
- {mdengine-0.10.0 → mdengine-0.11.1}/README.md +1 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/pyproject.toml +24 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/__init__.py +1 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/cli/main.py +3 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/extractor.py +28 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/api_detector.py +115 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/entry_detector.py +2 -0
- mdengine-0.11.1/src/md_generator/codeflow/detectors/rails_detector.py +89 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/lang_dispatch.py +16 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/ir.py +7 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_csharp_adapter.py +70 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_go_adapter.py +58 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_java_adapter.py +120 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_kotlin_adapter.py +76 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_lua_adapter.py +54 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_php_adapter.py +65 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_python_adapter.py +100 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_ruby_adapter.py +70 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_rust_adapter.py +58 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_scala_adapter.py +71 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_swift_adapter.py +70 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/adapters/treesitter_zig_adapter.py +54 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/base.py +28 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/capability_registry.py +195 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/go_parser.py +6 -1
- mdengine-0.11.1/src/md_generator/codeflow/parsers/ir_enrich.py +117 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/java_parser.py +6 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/php_parser.py +6 -1
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/python_parser.py +6 -1
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_common.py +149 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_csharp_parser.py +173 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_entry_helpers.py +29 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_go_parser.py +71 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_java_parser.py +242 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +6 -1
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_kotlin_parser.py +179 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_lua_parser.py +112 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_php_parser.py +71 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_python_parser.py +94 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_ruby_parser.py +229 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_rust_parser.py +159 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_scala_parser.py +143 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_swift_parser.py +171 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/treesitter_zig_parser.py +75 -0
- mdengine-0.11.1/src/md_generator/codeflow/parsers/unified_parser.py +119 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/engine_cli.py +8 -2
- mdengine-0.11.1/src/md_generator/sap/__init__.py +17 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/authorization/extractor.py +24 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/governance/classifier.py +52 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/lineage/builder.py +39 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/relationships/engine.py +35 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/semantics/entity_mapper.py +20 -0
- mdengine-0.11.1/src/md_generator/sap/analyzer/validation/extractor.py +35 -0
- mdengine-0.11.1/src/md_generator/sap/api/main.py +85 -0
- mdengine-0.11.1/src/md_generator/sap/api/mcp_server.py +16 -0
- mdengine-0.11.1/src/md_generator/sap/api/run.py +15 -0
- mdengine-0.11.1/src/md_generator/sap/api/schemas.py +47 -0
- mdengine-0.11.1/src/md_generator/sap/api/settings.py +31 -0
- mdengine-0.11.1/src/md_generator/sap/api/zip_export.py +25 -0
- mdengine-0.11.1/src/md_generator/sap/cli/main.py +125 -0
- mdengine-0.11.1/src/md_generator/sap/config/default.yaml +62 -0
- mdengine-0.11.1/src/md_generator/sap/core/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/core/cache.py +51 -0
- mdengine-0.11.1/src/md_generator/sap/core/errors.py +17 -0
- mdengine-0.11.1/src/md_generator/sap/core/export_manifest.py +48 -0
- mdengine-0.11.1/src/md_generator/sap/core/extractor.py +18 -0
- mdengine-0.11.1/src/md_generator/sap/core/features.py +17 -0
- mdengine-0.11.1/src/md_generator/sap/core/job_manager.py +176 -0
- mdengine-0.11.1/src/md_generator/sap/core/link_graph.py +49 -0
- mdengine-0.11.1/src/md_generator/sap/core/run_config.py +151 -0
- mdengine-0.11.1/src/md_generator/sap/core/run_context.py +25 -0
- mdengine-0.11.1/src/md_generator/sap/graph/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/graph/builder.py +97 -0
- mdengine-0.11.1/src/md_generator/sap/graph/exporters/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/graph/exporters/json_export.py +13 -0
- mdengine-0.11.1/src/md_generator/sap/graph/exporters/mermaid_export.py +49 -0
- mdengine-0.11.1/src/md_generator/sap/graph/relations.py +15 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/builders/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/builders/entity_builder.py +170 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/builders/slug.py +11 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/builders/writer.py +164 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/chunking/chunk_strategy.py +98 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/chunking/registry.py +22 -0
- mdengine-0.11.1/src/md_generator/sap/markdown/chunking/writer.py +51 -0
- mdengine-0.11.1/src/md_generator/sap/models/entities/__init__.py +4 -0
- mdengine-0.11.1/src/md_generator/sap/models/entities/kinds.py +19 -0
- mdengine-0.11.1/src/md_generator/sap/models/entities/sap_object.py +30 -0
- mdengine-0.11.1/src/md_generator/sap/models/metadata/__init__.py +14 -0
- mdengine-0.11.1/src/md_generator/sap/models/metadata/abap.py +62 -0
- mdengine-0.11.1/src/md_generator/sap/models/metadata/cds.py +46 -0
- mdengine-0.11.1/src/md_generator/sap/models/metadata/ddic.py +44 -0
- mdengine-0.11.1/src/md_generator/sap/orchestration/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/orchestration/pipeline.py +195 -0
- mdengine-0.11.1/src/md_generator/sap/parser/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/parser/abap/__init__.py +3 -0
- mdengine-0.11.1/src/md_generator/sap/parser/abap/lexer.py +82 -0
- mdengine-0.11.1/src/md_generator/sap/parser/abap/parser.py +159 -0
- mdengine-0.11.1/src/md_generator/sap/parser/bapi/parser.py +48 -0
- mdengine-0.11.1/src/md_generator/sap/parser/base.py +29 -0
- mdengine-0.11.1/src/md_generator/sap/parser/cds/parser.py +71 -0
- mdengine-0.11.1/src/md_generator/sap/parser/ddic/parser.py +94 -0
- mdengine-0.11.1/src/md_generator/sap/parser/discovery.py +49 -0
- mdengine-0.11.1/src/md_generator/sap/parser/idoc/parser.py +45 -0
- mdengine-0.11.1/src/md_generator/sap/parser/odata/parser.py +73 -0
- mdengine-0.11.1/src/md_generator/sap/parser/registry.py +79 -0
- mdengine-0.11.1/src/md_generator/sap/parser/rfc/__init__.py +1 -0
- mdengine-0.11.1/src/md_generator/sap/parser/transport/parser.py +56 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/PKG-INFO +19 -2
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/SOURCES.txt +90 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/entry_points.txt +3 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/requires.txt +18 -0
- mdengine-0.10.0/src/md_generator/codeflow/parsers/ir_enrich.py +0 -41
- mdengine-0.10.0/src/md_generator/codeflow/parsers/unified_parser.py +0 -31
- {mdengine-0.10.0 → mdengine-0.11.1}/LICENSE +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/setup.cfg +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/extractors.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/semantic_api.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/cache_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/html.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/html_unified.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/mermaid.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/anomaly.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/call_expander.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/clustering.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/embeddings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/enricher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/event_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/export_schema.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/hotpath.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/nl_query.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/path_probability.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/query_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/relations.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/collector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/rules/java_rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/utils/tools_root.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/worker/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/artifacts/serialize.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/log_record.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/adapters/otel.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/telemetry_event.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/core/schema/validation.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_introspect.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/access_odbc.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/factory.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/access_upload.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/base_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/cli_ops.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/export_manifest.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/link_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/merge.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/partition.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/distributed/worker_pool.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/audit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/classification.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/lineage.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/governance/retention.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/aggregators.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/aggregation/timeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/embeddings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/clustering/vectorizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/preset_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/generic.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/json.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/logback.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/presets/springboot.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/config/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/errors.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/execution_context.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/lifecycle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/plugins.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/cross_source.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/request_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/session_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/correlation/trace_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/incident_summary.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/service_report.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/documentation/troubleshooting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/correlation.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/hash_generator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/fingerprinting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/grouping.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/incident_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incidents/severity.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/checkpoint.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/incremental/resume_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/archive_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/batch_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/file_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/ingestion/stream_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/heuristics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/linking/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/linking/link_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/entropy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/noise_reduction/filter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/number_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/path_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/pii_redactor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/token_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/json_line_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/level_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/logger_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/multiline_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/parser_registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/regex_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/parser/timestamp_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/bm25_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/hybrid_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/search_index.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/search/vector_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/service/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/service/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/kafka_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/redis_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/stdin_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/tail_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/streaming/websocket_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/causal_chain.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/ordering.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/timeline_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/timeline/timeline_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/topology/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/topology/discovery.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/concurrency.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/io.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/regex.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/utils/time.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/assets_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/chunk_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/cluster_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/correlation_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/incident_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/log/writers/summary_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_logs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/otel/otel_spans.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/execution_context.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/runtime/stage_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/classifier_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/discovery.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/enricher_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/parser_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/plugin_protocol.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/stage_protocol.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/sdk/writer_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/md_flatten.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/text/xml_parse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/registry.json +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/generate.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/tools/skill_builder/routing.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.10.0 → mdengine-0.11.1}/src/mdengine.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mdengine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.1
|
|
4
4
|
Summary: Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown.
|
|
5
5
|
Author: mdengine contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -113,6 +113,11 @@ Requires-Dist: openapi-spec-validator>=0.7.0; extra == "openapi"
|
|
|
113
113
|
Provides-Extra: codeflow
|
|
114
114
|
Requires-Dist: networkx>=3.2.0; extra == "codeflow"
|
|
115
115
|
Requires-Dist: javalang>=0.13.0; extra == "codeflow"
|
|
116
|
+
Provides-Extra: sap
|
|
117
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "sap"
|
|
118
|
+
Requires-Dist: networkx>=3.2.0; extra == "sap"
|
|
119
|
+
Requires-Dist: pydantic>=2.0.0; extra == "sap"
|
|
120
|
+
Requires-Dist: pydantic-settings>=2.0.0; extra == "sap"
|
|
116
121
|
Provides-Extra: codeflow-worker
|
|
117
122
|
Requires-Dist: celery>=5.3.0; extra == "codeflow-worker"
|
|
118
123
|
Requires-Dist: redis>=5.0.0; extra == "codeflow-worker"
|
|
@@ -121,6 +126,18 @@ Requires-Dist: tree-sitter>=0.21.0; extra == "codeflow-treesitter"
|
|
|
121
126
|
Requires-Dist: tree-sitter-javascript>=0.21.0; extra == "codeflow-treesitter"
|
|
122
127
|
Requires-Dist: tree-sitter-typescript>=0.23.0; extra == "codeflow-treesitter"
|
|
123
128
|
Requires-Dist: tree-sitter-cpp>=0.23.0; extra == "codeflow-treesitter"
|
|
129
|
+
Requires-Dist: tree-sitter-java>=0.23.0; extra == "codeflow-treesitter"
|
|
130
|
+
Requires-Dist: tree-sitter-python>=0.23.0; extra == "codeflow-treesitter"
|
|
131
|
+
Requires-Dist: tree-sitter-go>=0.23.0; extra == "codeflow-treesitter"
|
|
132
|
+
Requires-Dist: tree-sitter-php>=0.23.0; extra == "codeflow-treesitter"
|
|
133
|
+
Requires-Dist: tree-sitter-rust>=0.23.0; extra == "codeflow-treesitter"
|
|
134
|
+
Requires-Dist: tree-sitter-kotlin>=0.23.0; extra == "codeflow-treesitter"
|
|
135
|
+
Requires-Dist: tree-sitter-c-sharp>=0.23.0; extra == "codeflow-treesitter"
|
|
136
|
+
Requires-Dist: tree-sitter-swift>=0.7.2; extra == "codeflow-treesitter"
|
|
137
|
+
Requires-Dist: tree-sitter-ruby>=0.23.0; extra == "codeflow-treesitter"
|
|
138
|
+
Requires-Dist: tree-sitter-lua>=0.2.0; extra == "codeflow-treesitter"
|
|
139
|
+
Requires-Dist: tree-sitter-scala>=0.6.0; extra == "codeflow-treesitter"
|
|
140
|
+
Requires-Dist: tree-sitter-zig>=0.2.0; extra == "codeflow-treesitter"
|
|
124
141
|
Provides-Extra: codeflow-clang
|
|
125
142
|
Requires-Dist: clang>=16.0.0; extra == "codeflow-clang"
|
|
126
143
|
Provides-Extra: codeflow-semantic
|
|
@@ -300,7 +317,7 @@ pip install "mdengine[all]"
|
|
|
300
317
|
| `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
|
|
301
318
|
| `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
|
|
302
319
|
| `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
|
|
303
|
-
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C
|
|
320
|
+
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
|
|
304
321
|
| `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
|
|
305
322
|
| `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
|
|
306
323
|
| `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
|
|
@@ -82,7 +82,7 @@ pip install "mdengine[all]"
|
|
|
82
82
|
| `openapi` | **OpenAPI / Swagger → Markdown** (`prance`, `openapi-spec-validator`, PyYAML) |
|
|
83
83
|
| `codeflow` | **Static codeflow / call graphs → Markdown** (`networkx`, `javalang`; core scanners) |
|
|
84
84
|
| `codeflow-worker` | Optional **Celery + Redis** workers for the codeflow API async path |
|
|
85
|
-
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C
|
|
85
|
+
| `codeflow-treesitter` | **Tree-sitter** parsers (JS/TS/TSX, C++, Java, Python, Go, PHP); use `--parser-mode treesitter` — see [codeflow-to-md/docs/parser-backends.md](codeflow-to-md/docs/parser-backends.md) |
|
|
86
86
|
| `codeflow-clang` | **libclang** bindings for C/C++ parsing when used by the codeflow pipeline |
|
|
87
87
|
| `codeflow-semantic` | **Semantic clustering** (SentenceTransformers, scikit-learn, numpy; large install) |
|
|
88
88
|
| `log` | **Log files → Markdown** (`pandas`, PyYAML, date parsing) |
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mdengine"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.11.1"
|
|
8
8
|
description = "Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -117,6 +117,12 @@ codeflow = [
|
|
|
117
117
|
"networkx>=3.2.0",
|
|
118
118
|
"javalang>=0.13.0",
|
|
119
119
|
]
|
|
120
|
+
sap = [
|
|
121
|
+
"pyyaml>=6.0.0",
|
|
122
|
+
"networkx>=3.2.0",
|
|
123
|
+
"pydantic>=2.0.0",
|
|
124
|
+
"pydantic-settings>=2.0.0",
|
|
125
|
+
]
|
|
120
126
|
# Optional: horizontal workers for codeflow API (Celery + Redis). Default job path uses threads.
|
|
121
127
|
codeflow-worker = [
|
|
122
128
|
"celery>=5.3.0",
|
|
@@ -127,6 +133,18 @@ codeflow-treesitter = [
|
|
|
127
133
|
"tree-sitter-javascript>=0.21.0",
|
|
128
134
|
"tree-sitter-typescript>=0.23.0",
|
|
129
135
|
"tree-sitter-cpp>=0.23.0",
|
|
136
|
+
"tree-sitter-java>=0.23.0",
|
|
137
|
+
"tree-sitter-python>=0.23.0",
|
|
138
|
+
"tree-sitter-go>=0.23.0",
|
|
139
|
+
"tree-sitter-php>=0.23.0",
|
|
140
|
+
"tree-sitter-rust>=0.23.0",
|
|
141
|
+
"tree-sitter-kotlin>=0.23.0",
|
|
142
|
+
"tree-sitter-c-sharp>=0.23.0",
|
|
143
|
+
"tree-sitter-swift>=0.7.2",
|
|
144
|
+
"tree-sitter-ruby>=0.23.0",
|
|
145
|
+
"tree-sitter-lua>=0.2.0",
|
|
146
|
+
"tree-sitter-scala>=0.6.0",
|
|
147
|
+
"tree-sitter-zig>=0.2.0",
|
|
130
148
|
]
|
|
131
149
|
codeflow-clang = [
|
|
132
150
|
"clang>=16.0.0",
|
|
@@ -278,6 +296,9 @@ md-codeflow-mcp = "md_generator.codeflow.api.mcp_server:main"
|
|
|
278
296
|
md-log = "md_generator.log.cli.main:main"
|
|
279
297
|
md-log-api = "md_generator.log.api.run:main"
|
|
280
298
|
md-log-mcp = "md_generator.log.api.mcp_server:main"
|
|
299
|
+
md-sap = "md_generator.sap.cli.main:main"
|
|
300
|
+
md-sap-api = "md_generator.sap.api.run:main"
|
|
301
|
+
md-sap-mcp = "md_generator.sap.api.mcp_server:main"
|
|
281
302
|
md-otel = "md_generator.otel.cli.main:main"
|
|
282
303
|
mdengine = "md_generator.engine_cli:main"
|
|
283
304
|
|
|
@@ -290,6 +311,7 @@ include = ["md_generator*"]
|
|
|
290
311
|
"md_generator.graph.config" = ["*.yaml"]
|
|
291
312
|
"md_generator.openapi.config" = ["*.yaml"]
|
|
292
313
|
"md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
|
|
314
|
+
"md_generator.sap.config" = ["*.yaml"]
|
|
293
315
|
"md_generator.tools.assistant" = ["data/**/*"]
|
|
294
316
|
|
|
295
317
|
[tool.pytest.ini_options]
|
|
@@ -313,5 +335,6 @@ testpaths = [
|
|
|
313
335
|
"openapi-to-md/tests",
|
|
314
336
|
"codeflow-to-md/tests",
|
|
315
337
|
"log-to-md/tests",
|
|
338
|
+
"sap-to-md/tests",
|
|
316
339
|
]
|
|
317
340
|
markers = ["integration: optional dependency or slower checks"]
|
|
@@ -76,6 +76,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
76
76
|
default="mixed",
|
|
77
77
|
help=(
|
|
78
78
|
"mixed | python | java | javascript | typescript | tsx | cpp | go | php | "
|
|
79
|
+
"rust | kotlin | csharp | swift | ruby | lua | scala | zig | "
|
|
79
80
|
"comma-separated (e.g. python,javascript). Aliases: js→javascript, ts→typescript."
|
|
80
81
|
),
|
|
81
82
|
)
|
|
@@ -377,7 +378,8 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
377
378
|
"--parser-mode",
|
|
378
379
|
choices=("auto", "treesitter", "external"),
|
|
379
380
|
default="auto",
|
|
380
|
-
help="
|
|
381
|
+
help="auto=native parsers; treesitter=Tree-sitter for java/python/go/php/cpp (+ JS/TS when installed); "
|
|
382
|
+
"external=clang only for C++",
|
|
381
383
|
)
|
|
382
384
|
scan.add_argument(
|
|
383
385
|
"--ui-cfg-max-methods",
|
|
@@ -172,6 +172,22 @@ def _resolve_scan_entry_ids(cfg: ScanConfig, g: CodeflowGraph, all_entries: list
|
|
|
172
172
|
return entry_ids, warnings
|
|
173
173
|
|
|
174
174
|
|
|
175
|
+
def _parse_backend_summary_lines(parse_results: list[FileParseResult]) -> list[str]:
|
|
176
|
+
from collections import Counter
|
|
177
|
+
|
|
178
|
+
counts: Counter[tuple[str, str, str | None]] = Counter()
|
|
179
|
+
for fr in parse_results:
|
|
180
|
+
counts[(fr.language, fr.parse_backend, fr.grammar_package)] += 1
|
|
181
|
+
if not counts:
|
|
182
|
+
return []
|
|
183
|
+
lines = ["## Parse backends", ""]
|
|
184
|
+
for (lang, backend, gram), n in sorted(counts.items()):
|
|
185
|
+
gpart = f" (`{gram}`)" if gram else ""
|
|
186
|
+
lines.append(f"- **{lang}** / {backend}{gpart}: {n} file(s)")
|
|
187
|
+
lines.append("")
|
|
188
|
+
return lines
|
|
189
|
+
|
|
190
|
+
|
|
175
191
|
def _write_scan_summary(
|
|
176
192
|
path: Path,
|
|
177
193
|
*,
|
|
@@ -183,6 +199,7 @@ def _write_scan_summary(
|
|
|
183
199
|
warnings: list[str],
|
|
184
200
|
cfg: ScanConfig,
|
|
185
201
|
pr_impact: dict[str, Any] | None = None,
|
|
202
|
+
parse_results: list[FileParseResult] | None = None,
|
|
186
203
|
) -> None:
|
|
187
204
|
lines = [
|
|
188
205
|
"# Scan summary",
|
|
@@ -218,6 +235,10 @@ def _write_scan_summary(
|
|
|
218
235
|
f"- **enable_dependency_graph:** {cfg.enable_dependency_graph}",
|
|
219
236
|
f"- **structural_graph_enabled:** {cfg.structural_graph_enabled()}",
|
|
220
237
|
f"- **parser_mode:** `{cfg.parser_mode}`",
|
|
238
|
+
]
|
|
239
|
+
if parse_results:
|
|
240
|
+
lines.extend(_parse_backend_summary_lines(parse_results))
|
|
241
|
+
lines += [
|
|
221
242
|
f"- **ui_cfg_max_methods:** {cfg.ui_cfg_max_methods}",
|
|
222
243
|
f"- **intelligence_transitive_callers:** {cfg.intelligence_transitive_callers}",
|
|
223
244
|
f"- **emit_system_graph_stats:** {cfg.emit_system_graph_stats}",
|
|
@@ -448,6 +469,12 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
|
|
|
448
469
|
all_entries = [e for pr in parse_results for e in pr.entries]
|
|
449
470
|
entry_ids, scan_warnings = _resolve_scan_entry_ids(cfg, g, all_entries)
|
|
450
471
|
scan_warnings = scan_warnings_pre + scan_warnings
|
|
472
|
+
from md_generator.codeflow.parsers.capability_registry import capability_warnings
|
|
473
|
+
|
|
474
|
+
for lang in sorted({fr.language for fr in parse_results}):
|
|
475
|
+
scan_warnings.extend(
|
|
476
|
+
capability_warnings(lang, parser_mode=cfg.parser_mode, emit_cfg=cfg.emit_cfg),
|
|
477
|
+
)
|
|
451
478
|
scan_warnings.extend(scan_semantic_warnings)
|
|
452
479
|
|
|
453
480
|
fmts = {x.strip().lower() for x in cfg.formats}
|
|
@@ -920,6 +947,7 @@ def run_scan(cfg: ScanConfig, *, workspace: LoadedWorkspace | None = None) -> Pa
|
|
|
920
947
|
warnings=scan_warnings,
|
|
921
948
|
cfg=cfg,
|
|
922
949
|
pr_impact=pr_impact_payload,
|
|
950
|
+
parse_results=parse_results,
|
|
923
951
|
)
|
|
924
952
|
|
|
925
953
|
return out
|
|
@@ -211,6 +211,117 @@ def detect_api_entries_js_ts(path: Path, project_root: Path) -> list[EntryRecord
|
|
|
211
211
|
return out
|
|
212
212
|
|
|
213
213
|
|
|
214
|
+
_RUBY_CONTROLLER = re.compile(
|
|
215
|
+
r"class\s+(\w+Controller)\s*<\s*(?:ApplicationController|ActionController)",
|
|
216
|
+
re.I,
|
|
217
|
+
)
|
|
218
|
+
_RUBY_ROUTE = re.compile(
|
|
219
|
+
r"\b(get|post|put|patch|delete)\s+['\"]([^'\"]+)['\"]",
|
|
220
|
+
re.I,
|
|
221
|
+
)
|
|
222
|
+
_SINATRA_ROUTE = re.compile(
|
|
223
|
+
r"\b(get|post|put|patch|delete)\s+['\"]([^'\"]+)['\"]\s+do\b",
|
|
224
|
+
re.I,
|
|
225
|
+
)
|
|
226
|
+
_SWIFT_VAPOR = re.compile(r"@\s*(Get|Post|Put|Delete|Patch|Routes)\b")
|
|
227
|
+
|
|
228
|
+
|
|
229
|
+
def detect_api_entries_ruby(path: Path, project_root: Path) -> list[EntryRecord]:
|
|
230
|
+
if path.suffix.lower() != ".rb":
|
|
231
|
+
return []
|
|
232
|
+
try:
|
|
233
|
+
text = path.read_text(encoding="utf-8", errors="replace")
|
|
234
|
+
except OSError:
|
|
235
|
+
return []
|
|
236
|
+
key = path.resolve().relative_to(project_root.resolve()).as_posix()
|
|
237
|
+
fp = str(path.resolve())
|
|
238
|
+
out: list[EntryRecord] = []
|
|
239
|
+
seen: set[str] = set()
|
|
240
|
+
for m in _RUBY_CONTROLLER.finditer(text):
|
|
241
|
+
cls = m.group(1)
|
|
242
|
+
for dm in re.finditer(rf"\bdef\s+(\w+)", text[m.end() :]):
|
|
243
|
+
mname = dm.group(1)
|
|
244
|
+
if mname.startswith("_"):
|
|
245
|
+
continue
|
|
246
|
+
sid = _sid(key, cls, mname)
|
|
247
|
+
if sid in seen:
|
|
248
|
+
continue
|
|
249
|
+
seen.add(sid)
|
|
250
|
+
out.append(
|
|
251
|
+
EntryRecord(
|
|
252
|
+
symbol_id=sid,
|
|
253
|
+
kind=EntryKind.API_REST,
|
|
254
|
+
label="Rails controller action (regex)",
|
|
255
|
+
file_path=fp,
|
|
256
|
+
line=text[: m.start() + dm.start()].count("\n") + 1,
|
|
257
|
+
),
|
|
258
|
+
)
|
|
259
|
+
break
|
|
260
|
+
for m in _SINATRA_ROUTE.finditer(text):
|
|
261
|
+
verb, route_path = m.group(1).lower(), m.group(2)
|
|
262
|
+
sid = f"{key}::sinatra.{verb}.{route_path}"
|
|
263
|
+
if sid not in seen:
|
|
264
|
+
seen.add(sid)
|
|
265
|
+
out.append(
|
|
266
|
+
EntryRecord(
|
|
267
|
+
symbol_id=sid,
|
|
268
|
+
kind=EntryKind.API_REST,
|
|
269
|
+
label="Sinatra route (regex)",
|
|
270
|
+
file_path=fp,
|
|
271
|
+
line=text[: m.start()].count("\n") + 1,
|
|
272
|
+
),
|
|
273
|
+
)
|
|
274
|
+
for m in _RUBY_ROUTE.finditer(text):
|
|
275
|
+
verb, route_path = m.group(1).lower(), m.group(2)
|
|
276
|
+
sid = f"{key}::routes.{verb}.{route_path}"
|
|
277
|
+
if sid not in seen:
|
|
278
|
+
seen.add(sid)
|
|
279
|
+
out.append(
|
|
280
|
+
EntryRecord(
|
|
281
|
+
symbol_id=sid,
|
|
282
|
+
kind=EntryKind.API_REST,
|
|
283
|
+
label=f"Rails route ({verb}) (regex)",
|
|
284
|
+
file_path=fp,
|
|
285
|
+
line=text[: m.start()].count("\n") + 1,
|
|
286
|
+
),
|
|
287
|
+
)
|
|
288
|
+
return out
|
|
289
|
+
|
|
290
|
+
|
|
291
|
+
def detect_api_entries_swift(path: Path, project_root: Path) -> list[EntryRecord]:
|
|
292
|
+
if path.suffix.lower() != ".swift":
|
|
293
|
+
return []
|
|
294
|
+
try:
|
|
295
|
+
text = path.read_text(encoding="utf-8", errors="replace")
|
|
296
|
+
except OSError:
|
|
297
|
+
return []
|
|
298
|
+
if not _SWIFT_VAPOR.search(text):
|
|
299
|
+
return []
|
|
300
|
+
key = path.resolve().relative_to(project_root.resolve()).as_posix()
|
|
301
|
+
fp = str(path.resolve())
|
|
302
|
+
out: list[EntryRecord] = []
|
|
303
|
+
seen: set[str] = set()
|
|
304
|
+
for m in re.finditer(r"func\s+(\w+)\s*\(", text):
|
|
305
|
+
mname = m.group(1)
|
|
306
|
+
before = text[max(0, m.start() - 120) : m.start()]
|
|
307
|
+
if not _SWIFT_VAPOR.search(before):
|
|
308
|
+
continue
|
|
309
|
+
sid = _sid(key, None, mname)
|
|
310
|
+
if sid in seen:
|
|
311
|
+
continue
|
|
312
|
+
seen.add(sid)
|
|
313
|
+
out.append(
|
|
314
|
+
EntryRecord(
|
|
315
|
+
symbol_id=sid,
|
|
316
|
+
kind=EntryKind.API_REST,
|
|
317
|
+
label="Vapor HTTP route (regex)",
|
|
318
|
+
file_path=fp,
|
|
319
|
+
line=text[: m.start()].count("\n") + 1,
|
|
320
|
+
),
|
|
321
|
+
)
|
|
322
|
+
return out
|
|
323
|
+
|
|
324
|
+
|
|
214
325
|
def detect_api_entries(path: Path, project_root: Path) -> list[EntryRecord]:
|
|
215
326
|
suf = path.suffix.lower()
|
|
216
327
|
if suf == ".py":
|
|
@@ -219,4 +330,8 @@ def detect_api_entries(path: Path, project_root: Path) -> list[EntryRecord]:
|
|
|
219
330
|
return detect_api_entries_java(path, project_root)
|
|
220
331
|
if suf in (".js", ".jsx", ".mjs", ".cjs", ".ts", ".tsx", ".mts", ".cts"):
|
|
221
332
|
return detect_api_entries_js_ts(path, project_root)
|
|
333
|
+
if suf == ".rb":
|
|
334
|
+
return detect_api_entries_ruby(path, project_root)
|
|
335
|
+
if suf == ".swift":
|
|
336
|
+
return detect_api_entries_swift(path, project_root)
|
|
222
337
|
return []
|
|
@@ -12,6 +12,7 @@ from md_generator.codeflow.config.codeflow_yaml import (
|
|
|
12
12
|
from md_generator.codeflow.detectors.api_detector import detect_api_entries
|
|
13
13
|
from md_generator.codeflow.detectors.kafka_detector import detect_kafka_entries
|
|
14
14
|
from md_generator.codeflow.detectors.liferay_portlet_detector import detect_liferay_portlet_entries
|
|
15
|
+
from md_generator.codeflow.detectors.rails_detector import detect_rails_entries
|
|
15
16
|
from md_generator.codeflow.models.ir import EntryKind, EntryRecord, FileParseResult
|
|
16
17
|
|
|
17
18
|
# TYPE_CHECKING would avoid circular import; ScanConfig is lightweight dataclass
|
|
@@ -43,6 +44,7 @@ def apply_entry_detectors(
|
|
|
43
44
|
if not pr:
|
|
44
45
|
continue
|
|
45
46
|
pr.entries.extend(detect_api_entries(p, project_root))
|
|
47
|
+
pr.entries.extend(detect_rails_entries(p, project_root))
|
|
46
48
|
pr.entries.extend(detect_liferay_portlet_entries(p, project_root, extra_portlet_bases=portlet_extras))
|
|
47
49
|
pr.entries.extend(detect_kafka_entries(p, project_root))
|
|
48
50
|
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
"""Rails router DSL, engines, and ActionCable entry hints."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
import re
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from md_generator.codeflow.models.ir import EntryKind, EntryRecord
|
|
9
|
+
from md_generator.codeflow.parsers.treesitter_common import rel_key
|
|
10
|
+
|
|
11
|
+
_HTTP_VERB_ROUTE = re.compile(
|
|
12
|
+
r"\b(get|post|put|patch|delete|head|options)\s+['\"]([^'\"]+)['\"]",
|
|
13
|
+
re.IGNORECASE,
|
|
14
|
+
)
|
|
15
|
+
_ROOT_ROUTE = re.compile(r"\broot\s+['\"]?(?:to\s*=>\s*)?['\"]?(\w+#\w+|\w+)", re.IGNORECASE)
|
|
16
|
+
_RESOURCES = re.compile(r"\bresources\s+:([\w]+)")
|
|
17
|
+
_RESOURCE = re.compile(r"\bresource\s+:([\w]+)")
|
|
18
|
+
_NAMESPACE = re.compile(r"\bnamespace\s+:([\w]+)")
|
|
19
|
+
_MOUNT_ENGINE = re.compile(r"\bmount\s+([\w:]+(?:::Engine)?)", re.IGNORECASE)
|
|
20
|
+
_ACTIONCABLE_CHANNEL = re.compile(
|
|
21
|
+
r"class\s+(\w+)\s*<\s*(?:ApplicationCable::Channel|ActionCable::Channel::Base)",
|
|
22
|
+
re.IGNORECASE,
|
|
23
|
+
)
|
|
24
|
+
_SUBSCRIBED_METHOD = re.compile(r"\bdef\s+(subscribed|receive|unsubscribed)\b")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def detect_rails_entries(path: Path, project_root: Path) -> list[EntryRecord]:
|
|
28
|
+
if path.suffix.lower() != ".rb":
|
|
29
|
+
return []
|
|
30
|
+
try:
|
|
31
|
+
text = path.read_text(encoding="utf-8", errors="replace")
|
|
32
|
+
except OSError:
|
|
33
|
+
return []
|
|
34
|
+
key = rel_key(path, project_root)
|
|
35
|
+
fp = str(path.resolve())
|
|
36
|
+
out: list[EntryRecord] = []
|
|
37
|
+
seen: set[str] = set()
|
|
38
|
+
|
|
39
|
+
def add(sid: str, label: str, line: int, *, kind: EntryKind = EntryKind.API_REST) -> None:
|
|
40
|
+
if sid in seen:
|
|
41
|
+
return
|
|
42
|
+
seen.add(sid)
|
|
43
|
+
out.append(
|
|
44
|
+
EntryRecord(symbol_id=sid, kind=kind, label=label, file_path=fp, line=line),
|
|
45
|
+
)
|
|
46
|
+
|
|
47
|
+
lines = text.splitlines()
|
|
48
|
+
for i, line in enumerate(lines, start=1):
|
|
49
|
+
for m in _HTTP_VERB_ROUTE.finditer(line):
|
|
50
|
+
verb, route_path = m.group(1).lower(), m.group(2)
|
|
51
|
+
add(
|
|
52
|
+
f"{key}::routes.{verb}.{route_path}",
|
|
53
|
+
f"Rails route ({verb.upper()} {route_path})",
|
|
54
|
+
i,
|
|
55
|
+
)
|
|
56
|
+
mroot = _ROOT_ROUTE.search(line)
|
|
57
|
+
if mroot:
|
|
58
|
+
add(f"{key}::routes.root.{mroot.group(1)}", "Rails root route", i)
|
|
59
|
+
for m in _RESOURCES.finditer(line):
|
|
60
|
+
add(f"{key}::routes.resources.{m.group(1)}", f"Rails resources :{m.group(1)}", i)
|
|
61
|
+
for m in _RESOURCE.finditer(line):
|
|
62
|
+
add(f"{key}::routes.resource.{m.group(1)}", f"Rails resource :{m.group(1)}", i)
|
|
63
|
+
for m in _NAMESPACE.finditer(line):
|
|
64
|
+
add(f"{key}::routes.namespace.{m.group(1)}", f"Rails namespace :{m.group(1)}", i)
|
|
65
|
+
for m in _MOUNT_ENGINE.finditer(line):
|
|
66
|
+
mount_target = m.group(1)
|
|
67
|
+
add(f"{key}::routes.mount.{mount_target}", f"Rails mount {mount_target}", i)
|
|
68
|
+
|
|
69
|
+
if _ACTIONCABLE_CHANNEL.search(text) and _SUBSCRIBED_METHOD.search(text):
|
|
70
|
+
ch = _ACTIONCABLE_CHANNEL.search(text)
|
|
71
|
+
cname = ch.group(1) if ch else "Channel"
|
|
72
|
+
line_no = text[: ch.start()].count("\n") + 1 if ch else 1
|
|
73
|
+
for m in _SUBSCRIBED_METHOD.finditer(text):
|
|
74
|
+
mname = m.group(1)
|
|
75
|
+
add(
|
|
76
|
+
f"{key}::{cname}.{mname}",
|
|
77
|
+
f"ActionCable {mname}",
|
|
78
|
+
text[: m.start()].count("\n") + 1,
|
|
79
|
+
kind=EntryKind.QUEUE,
|
|
80
|
+
)
|
|
81
|
+
if not any(e.symbol_id.endswith(".subscribed") for e in out):
|
|
82
|
+
add(
|
|
83
|
+
f"{key}::{cname}.subscribed",
|
|
84
|
+
"ActionCable channel",
|
|
85
|
+
line_no,
|
|
86
|
+
kind=EntryKind.QUEUE,
|
|
87
|
+
)
|
|
88
|
+
|
|
89
|
+
return out
|
|
@@ -14,6 +14,14 @@ LANG_EXTENSIONS: dict[str, frozenset[str]] = {
|
|
|
14
14
|
"cpp": frozenset({".c", ".h", ".cc", ".cpp", ".cxx", ".hpp", ".hh", ".hxx"}),
|
|
15
15
|
"go": frozenset({".go"}),
|
|
16
16
|
"php": frozenset({".php"}),
|
|
17
|
+
"rust": frozenset({".rs"}),
|
|
18
|
+
"kotlin": frozenset({".kt", ".kts"}),
|
|
19
|
+
"csharp": frozenset({".cs"}),
|
|
20
|
+
"swift": frozenset({".swift"}),
|
|
21
|
+
"ruby": frozenset({".rb"}),
|
|
22
|
+
"lua": frozenset({".lua"}),
|
|
23
|
+
"scala": frozenset({".scala", ".sc"}),
|
|
24
|
+
"zig": frozenset({".zig"}),
|
|
17
25
|
}
|
|
18
26
|
|
|
19
27
|
# All keys used when ``languages`` is ``mixed``
|
|
@@ -38,6 +46,14 @@ def normalize_language_filter(languages: str) -> frozenset[str]:
|
|
|
38
46
|
parts.append("tsx")
|
|
39
47
|
elif p in ("c", "c++", "cxx", "cpp", "cplusplus"):
|
|
40
48
|
parts.append("cpp")
|
|
49
|
+
elif p == "rs":
|
|
50
|
+
parts.append("rust")
|
|
51
|
+
elif p == "kt":
|
|
52
|
+
parts.append("kotlin")
|
|
53
|
+
elif p in ("cs", "c#", "csharp"):
|
|
54
|
+
parts.append("csharp")
|
|
55
|
+
elif p == "rb":
|
|
56
|
+
parts.append("ruby")
|
|
41
57
|
else:
|
|
42
58
|
parts.append(p)
|
|
43
59
|
return frozenset(parts) if parts else MIXED_LANG_KEYS
|
|
@@ -108,10 +108,15 @@ class StructuralEdge:
|
|
|
108
108
|
line: int | None = None
|
|
109
109
|
|
|
110
110
|
|
|
111
|
+
ParseBackend = Literal["native", "treesitter"]
|
|
112
|
+
|
|
113
|
+
|
|
111
114
|
@dataclass
|
|
112
115
|
class FileParseResult:
|
|
113
116
|
path: Path
|
|
114
117
|
language: str
|
|
118
|
+
parse_backend: ParseBackend = "native"
|
|
119
|
+
grammar_package: str | None = None
|
|
115
120
|
symbol_ids: list[str] = field(default_factory=list)
|
|
116
121
|
calls: list[CallSite] = field(default_factory=list)
|
|
117
122
|
branches: list[BranchPoint] = field(default_factory=list)
|
|
@@ -125,3 +130,5 @@ class FileParseResult:
|
|
|
125
130
|
structural_edges: list[StructuralEdge] = field(default_factory=list)
|
|
126
131
|
# Java compilation unit package (``a.b.c``), for FQN resolution; other languages ignore.
|
|
127
132
|
java_package: str | None = None
|
|
133
|
+
# Tree-sitter reported syntax errors in the parse tree; partial extraction may still apply.
|
|
134
|
+
parse_had_errors: bool = False
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"""Tree-sitter C# → IRMethod (minimal)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from tree_sitter import Parser
|
|
8
|
+
|
|
9
|
+
from md_generator.codeflow.models.ir import FileParseResult
|
|
10
|
+
from md_generator.codeflow.models.ir_cfg import IRMethod, IRStmt
|
|
11
|
+
from md_generator.codeflow.parsers.treesitter_common import decode_text, rel_key, sid
|
|
12
|
+
from md_generator.codeflow.parsers.treesitter_csharp_parser import csharp_language
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def populate_ir_methods_csharp_treesitter(fr: FileParseResult, project_root: Path) -> None:
|
|
16
|
+
if fr.parse_backend != "treesitter":
|
|
17
|
+
fr.ir_methods = []
|
|
18
|
+
return
|
|
19
|
+
loaded = csharp_language()
|
|
20
|
+
if loaded is None:
|
|
21
|
+
fr.ir_methods = []
|
|
22
|
+
return
|
|
23
|
+
lang, _ = loaded
|
|
24
|
+
source = fr.path.read_bytes()
|
|
25
|
+
tree = Parser(lang).parse(source)
|
|
26
|
+
key = rel_key(fr.path, project_root.resolve())
|
|
27
|
+
fp = str(fr.path.resolve())
|
|
28
|
+
out: list[IRMethod] = []
|
|
29
|
+
|
|
30
|
+
def add_method(node, fq: str | None) -> None: # noqa: ANN001
|
|
31
|
+
name = node.child_by_field_name("name")
|
|
32
|
+
body = node.child_by_field_name("body")
|
|
33
|
+
if not name:
|
|
34
|
+
return
|
|
35
|
+
mname = decode_text(source, name).strip()
|
|
36
|
+
stmts: tuple[IRStmt, ...] = ()
|
|
37
|
+
if body:
|
|
38
|
+
stmts = tuple(
|
|
39
|
+
IRStmt(kind="STATEMENT", label=c.type, line=c.start_point[0] + 1)
|
|
40
|
+
for c in body.children
|
|
41
|
+
if c.is_named
|
|
42
|
+
)
|
|
43
|
+
out.append(
|
|
44
|
+
IRMethod(
|
|
45
|
+
symbol_id=sid(key, fq, mname),
|
|
46
|
+
name=mname,
|
|
47
|
+
file_path=fp,
|
|
48
|
+
language="csharp",
|
|
49
|
+
body=stmts,
|
|
50
|
+
),
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
def visit_class(node, class_stack: list[str]) -> None: # noqa: ANN001
|
|
54
|
+
name = node.child_by_field_name("name")
|
|
55
|
+
if not name:
|
|
56
|
+
return
|
|
57
|
+
class_stack.append(decode_text(source, name).strip())
|
|
58
|
+
for ch in node.children:
|
|
59
|
+
if ch.type == "method_declaration":
|
|
60
|
+
add_method(ch, ".".join(class_stack))
|
|
61
|
+
elif ch.type == "class_declaration":
|
|
62
|
+
visit_class(ch, class_stack)
|
|
63
|
+
class_stack.pop()
|
|
64
|
+
|
|
65
|
+
for ch in tree.root_node.children:
|
|
66
|
+
if ch.type == "class_declaration":
|
|
67
|
+
visit_class(ch, [])
|
|
68
|
+
elif ch.type == "method_declaration":
|
|
69
|
+
add_method(ch, None)
|
|
70
|
+
fr.ir_methods = out
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"""Tree-sitter Go → IRMethod (minimal)."""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from tree_sitter import Parser
|
|
8
|
+
|
|
9
|
+
from md_generator.codeflow.models.ir import FileParseResult
|
|
10
|
+
from md_generator.codeflow.models.ir_cfg import IRMethod, IRStmt
|
|
11
|
+
from md_generator.codeflow.parsers.treesitter_common import decode_text, rel_key, sid
|
|
12
|
+
from md_generator.codeflow.parsers.treesitter_go_parser import go_language
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def populate_ir_methods_go_treesitter(fr: FileParseResult, project_root: Path) -> None:
|
|
16
|
+
if fr.parse_backend != "treesitter":
|
|
17
|
+
fr.ir_methods = []
|
|
18
|
+
return
|
|
19
|
+
loaded = go_language()
|
|
20
|
+
if loaded is None:
|
|
21
|
+
fr.ir_methods = []
|
|
22
|
+
return
|
|
23
|
+
lang, _ = loaded
|
|
24
|
+
source = fr.path.read_bytes()
|
|
25
|
+
tree = Parser(lang).parse(source)
|
|
26
|
+
key = rel_key(fr.path, project_root.resolve())
|
|
27
|
+
fp = str(fr.path.resolve())
|
|
28
|
+
out: list[IRMethod] = []
|
|
29
|
+
for ch in tree.root_node.children:
|
|
30
|
+
if ch.type not in ("function_declaration", "method_declaration"):
|
|
31
|
+
continue
|
|
32
|
+
name = ch.child_by_field_name("name")
|
|
33
|
+
if not name:
|
|
34
|
+
continue
|
|
35
|
+
mname = decode_text(source, name).strip()
|
|
36
|
+
recv = None
|
|
37
|
+
if ch.type == "method_declaration":
|
|
38
|
+
recv_n = ch.child_by_field_name("receiver")
|
|
39
|
+
if recv_n:
|
|
40
|
+
recv = decode_text(source, recv_n).strip().strip("()")
|
|
41
|
+
body = ch.child_by_field_name("body")
|
|
42
|
+
stmts: tuple[IRStmt, ...] = ()
|
|
43
|
+
if body:
|
|
44
|
+
stmts = tuple(
|
|
45
|
+
IRStmt(kind="STATEMENT", label=c.type, line=c.start_point[0] + 1)
|
|
46
|
+
for c in body.children
|
|
47
|
+
if c.is_named
|
|
48
|
+
)
|
|
49
|
+
out.append(
|
|
50
|
+
IRMethod(
|
|
51
|
+
symbol_id=sid(key, recv, mname) if recv else sid(key, None, mname),
|
|
52
|
+
name=mname,
|
|
53
|
+
file_path=fp,
|
|
54
|
+
language="go",
|
|
55
|
+
body=stmts,
|
|
56
|
+
),
|
|
57
|
+
)
|
|
58
|
+
fr.ir_methods = out
|