mdengine 0.10.0__tar.gz → 0.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mdengine-0.10.0 → mdengine-0.11.0}/PKG-INFO +6 -1
- {mdengine-0.10.0 → mdengine-0.11.0}/pyproject.toml +12 -1
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/__init__.py +1 -1
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/engine_cli.py +8 -2
- mdengine-0.11.0/src/md_generator/sap/__init__.py +17 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/authorization/extractor.py +24 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/governance/classifier.py +52 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/lineage/builder.py +39 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/relationships/engine.py +35 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/semantics/entity_mapper.py +20 -0
- mdengine-0.11.0/src/md_generator/sap/analyzer/validation/extractor.py +35 -0
- mdengine-0.11.0/src/md_generator/sap/api/main.py +85 -0
- mdengine-0.11.0/src/md_generator/sap/api/mcp_server.py +16 -0
- mdengine-0.11.0/src/md_generator/sap/api/run.py +15 -0
- mdengine-0.11.0/src/md_generator/sap/api/schemas.py +47 -0
- mdengine-0.11.0/src/md_generator/sap/api/settings.py +31 -0
- mdengine-0.11.0/src/md_generator/sap/api/zip_export.py +25 -0
- mdengine-0.11.0/src/md_generator/sap/cli/main.py +125 -0
- mdengine-0.11.0/src/md_generator/sap/config/default.yaml +62 -0
- mdengine-0.11.0/src/md_generator/sap/core/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/core/cache.py +51 -0
- mdengine-0.11.0/src/md_generator/sap/core/errors.py +17 -0
- mdengine-0.11.0/src/md_generator/sap/core/export_manifest.py +48 -0
- mdengine-0.11.0/src/md_generator/sap/core/extractor.py +18 -0
- mdengine-0.11.0/src/md_generator/sap/core/features.py +17 -0
- mdengine-0.11.0/src/md_generator/sap/core/job_manager.py +176 -0
- mdengine-0.11.0/src/md_generator/sap/core/link_graph.py +49 -0
- mdengine-0.11.0/src/md_generator/sap/core/run_config.py +151 -0
- mdengine-0.11.0/src/md_generator/sap/core/run_context.py +25 -0
- mdengine-0.11.0/src/md_generator/sap/graph/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/graph/builder.py +97 -0
- mdengine-0.11.0/src/md_generator/sap/graph/exporters/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/graph/exporters/json_export.py +13 -0
- mdengine-0.11.0/src/md_generator/sap/graph/exporters/mermaid_export.py +49 -0
- mdengine-0.11.0/src/md_generator/sap/graph/relations.py +15 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/builders/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/builders/entity_builder.py +170 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/builders/slug.py +11 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/builders/writer.py +164 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/chunking/chunk_strategy.py +98 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/chunking/registry.py +22 -0
- mdengine-0.11.0/src/md_generator/sap/markdown/chunking/writer.py +51 -0
- mdengine-0.11.0/src/md_generator/sap/models/entities/__init__.py +4 -0
- mdengine-0.11.0/src/md_generator/sap/models/entities/kinds.py +19 -0
- mdengine-0.11.0/src/md_generator/sap/models/entities/sap_object.py +30 -0
- mdengine-0.11.0/src/md_generator/sap/models/metadata/__init__.py +14 -0
- mdengine-0.11.0/src/md_generator/sap/models/metadata/abap.py +62 -0
- mdengine-0.11.0/src/md_generator/sap/models/metadata/cds.py +46 -0
- mdengine-0.11.0/src/md_generator/sap/models/metadata/ddic.py +44 -0
- mdengine-0.11.0/src/md_generator/sap/orchestration/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/orchestration/pipeline.py +195 -0
- mdengine-0.11.0/src/md_generator/sap/parser/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/parser/abap/__init__.py +3 -0
- mdengine-0.11.0/src/md_generator/sap/parser/abap/lexer.py +82 -0
- mdengine-0.11.0/src/md_generator/sap/parser/abap/parser.py +159 -0
- mdengine-0.11.0/src/md_generator/sap/parser/bapi/parser.py +48 -0
- mdengine-0.11.0/src/md_generator/sap/parser/base.py +29 -0
- mdengine-0.11.0/src/md_generator/sap/parser/cds/parser.py +71 -0
- mdengine-0.11.0/src/md_generator/sap/parser/ddic/parser.py +94 -0
- mdengine-0.11.0/src/md_generator/sap/parser/discovery.py +49 -0
- mdengine-0.11.0/src/md_generator/sap/parser/idoc/parser.py +45 -0
- mdengine-0.11.0/src/md_generator/sap/parser/odata/parser.py +73 -0
- mdengine-0.11.0/src/md_generator/sap/parser/registry.py +79 -0
- mdengine-0.11.0/src/md_generator/sap/parser/rfc/__init__.py +1 -0
- mdengine-0.11.0/src/md_generator/sap/parser/transport/parser.py +56 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/PKG-INFO +6 -1
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/SOURCES.txt +62 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/entry_points.txt +3 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/requires.txt +6 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/LICENSE +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/README.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/setup.cfg +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/extractors.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/archive/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/analyzers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/analyzers/flow_analyzer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/semantic_api.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/api/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/config/codeflow_yaml.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/cache_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/api_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/entry_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/entry_rank.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/event_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/kafka_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/detectors/liferay_portlet_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/business_rules_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_paths_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_paths_mermaid.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cfg_render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/cytoscape_enrich.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/entry_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/flow_summary.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/flow_tree.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/html.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/html_unified.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/mermaid.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/generators/sequence.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/anomaly.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/call_expander.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_copy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cfg_model.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cluster_labeling.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/clustering.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/cross_repo_resolver.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/dependency_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/diff_analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/embeddings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/enricher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/event_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/export_schema.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/hotpath.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/maven_hints.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/multi_repo.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/multigraph_utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/nl_query.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/path_enumerator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/path_probability.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/query_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/relations.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/runtime_integration.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/semantic_enricher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/semantic_index.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/sqlite_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/graph/tsconfig_cross_repo.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/git_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/ingestion/loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/lang_dispatch.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/ir.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/models/ir_cfg.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/cpp_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/go_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/ir_from_dump.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/java_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/php_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/python_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/adapters/treesitter_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/base.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/cpp_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/go_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/ir_enrich.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/java_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/php_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/python_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/treesitter_js_ts_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/parsers/unified_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/collector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/cpp_rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/rules/java_rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/python_edge_counter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/trace_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/runtime/tracer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/utils/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/utils/tools_root.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/worker/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/codeflow/worker/celery_optional.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/mdaf_validate.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/artifacts/serialize.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/log_record.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/adapters/otel.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/telemetry_event.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/core/schema/validation.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_introspect.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/access_odbc.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/factory.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/mongo_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/mysql_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/oracle_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/postgres_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sql_common.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sqlite_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/adapters/sqlserver_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/access_upload.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/api/sqlite_upload.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/base_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/cli_ops.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/dot_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/filter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/mermaid_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/mermaid_render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/model.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/erd/render.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/export_manifest.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/link_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/db/mcp/stream.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/merge.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/partition.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/distributed/worker_pool.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/audit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/classification.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/lineage.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/governance/retention.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/factory.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/neo4j_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/adapters/networkx_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/base_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/graph_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/viz.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/graph/mcp/stream.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/staging.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/api/zip_bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/base.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/easy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/paddle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/backends/tesseract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/emit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/io_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/image/utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/aggregators.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/dataframe_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/aggregation/timeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/artifact_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/chunking/chunk_strategy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/embeddings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/kmeans_cluster.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/semantic_grouping.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/clustering/vectorizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/preset_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/generic.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/json.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/logback.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/presets/springboot.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/config/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/errors.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/execution_context.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/job_manager.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/lifecycle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/plugins.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/correlation_scoring.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/cross_source.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/request_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/session_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/correlation/trace_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/incident_summary.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/service_report.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/documentation/troubleshooting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/embedding_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/chroma_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/faiss_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/jsonl_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/embeddings/exporters/parquet_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/correlation.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/fingerprinting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/hash_generator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/pattern_matcher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/enrichment/severity_ranker.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/artifact_adapter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/fingerprinting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/grouping.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/incident_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incidents/severity.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/checkpoint.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/incremental/resume_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/archive_bridge.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/archive_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/batch_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/encoding_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/file_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/ingestion/stream_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/anomaly_detection.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/dependency_analysis.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/heuristics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/intelligence/root_cause_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_builder.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_exporter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/graph_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/knowledge_graph/relation_extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/linking/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/linking/link_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/aliases.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/backlinks.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/markdown_intelligence/cross_refs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/mcp/sse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/dedupe.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/entropy.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/noise_reduction/filter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/number_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/path_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/pii_redactor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/token_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/normalization/uuid_normalizer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/json_line_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/level_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/logger_detector.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/multiline_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/parser_registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/regex_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/stacktrace_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/parser/timestamp_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/bm25_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/hybrid_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/search_index.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/search/vector_search.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/service/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/service/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/kafka_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/redis_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/stdin_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/stream_coordinator.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/tail_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/streaming/websocket_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/causal_chain.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/ordering.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/timeline_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/timeline/timeline_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/topology/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/topology/discovery.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/concurrency.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/io.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/regex.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/utils/time.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_sequence.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_timeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/visualization/mermaid_topology.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/assets_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/chunk_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/cluster_markdown.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/correlation_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/frontmatter_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/incident_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/log/writers/summary_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/audio/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/document_converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/job_store.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/video/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/whisper_language.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/formatter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/metadata.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/service.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/media/youtube/transcript.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/schemas.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/config/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/config/default.yaml +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/converters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/converters/swagger2_to_openapi3.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/run_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/core/zip_export.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/rules.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/enrichers/sample_body.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/generators/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/generators/dependency_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/loaders/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/loaders/spec_loader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/mcp/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/mcp/server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/models/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/models/domain.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/operations.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/normalizers/schema_flatten.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/parsers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/parsers/openapi_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/resolvers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/resolvers/ref_resolver.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/writers/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/openapi/writers/markdown_writer.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/cli/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/cli/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_logs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_models.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_parser.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/otel/otel_spans.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/api/zip_bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/md_emit.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/pdf_extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/pdf/utils.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/run.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/chunker.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/extractor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/html_to_md.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/pipeline.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/playwright/playwright_fetcher.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/embedded_extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/ooxml_media.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/post_assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/text_formatting.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_pdf_md/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_pdf_md/convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_word_md/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/vendor_word_md/convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/ppt/zip_deep.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/execution_context.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/metrics.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/runtime/stage_engine.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/classifier_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/discovery.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/enricher_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/parser_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/plugin_protocol.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/stage_protocol.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/sdk/writer_plugin.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/format_detect.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_json.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_txt.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_emit_xml.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/md_flatten.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/text/xml_parse.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/claude.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/cursor.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/adapters/openai.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/agent.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/bundle.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/chunks.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/cli.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/dependency-graph.json +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/registry.json +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/global-skill.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-archive/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-codeflow/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-db/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-global/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-graph/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-image/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-log/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-media/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-openapi/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-pdf/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-playwright/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-ppt/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-text/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-url/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-word/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-ai-xlsx/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/SKILL.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/entrypoints.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/example.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/mdengine-reference/references/http-api-mcp.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/archive.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/codeflow.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/db.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/graph.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/image.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/media.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/openapi.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/pdf.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/playwright.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/ppt.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/text.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/url.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/word.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/data/skills/modules/xlsx.md +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/rag.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/assistant/registry.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/__main__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/dependency_graph.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/generate.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/pyproject_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/tools/skill_builder/routing.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/convert_runner.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/mcp_setup.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/query_options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/api/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/convert_impl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/crawl.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/extract.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/fetch.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/html_to_md.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/options.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/page_convert.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/post_convert_assets.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/url/robots_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/convert_util.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/jobs.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/main.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/api/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/artifact.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/word/settings.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/api/__init__.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/api/app.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/convert_config.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/converter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/converter_core.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/excel_reader.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/markdown_emitter.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/md_generator/xlsx/mcp_server.py +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/dependency_links.txt +0 -0
- {mdengine-0.10.0 → mdengine-0.11.0}/src/mdengine.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mdengine
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.11.0
|
|
4
4
|
Summary: Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown.
|
|
5
5
|
Author: mdengine contributors
|
|
6
6
|
License-Expression: MIT
|
|
@@ -113,6 +113,11 @@ Requires-Dist: openapi-spec-validator>=0.7.0; extra == "openapi"
|
|
|
113
113
|
Provides-Extra: codeflow
|
|
114
114
|
Requires-Dist: networkx>=3.2.0; extra == "codeflow"
|
|
115
115
|
Requires-Dist: javalang>=0.13.0; extra == "codeflow"
|
|
116
|
+
Provides-Extra: sap
|
|
117
|
+
Requires-Dist: pyyaml>=6.0.0; extra == "sap"
|
|
118
|
+
Requires-Dist: networkx>=3.2.0; extra == "sap"
|
|
119
|
+
Requires-Dist: pydantic>=2.0.0; extra == "sap"
|
|
120
|
+
Requires-Dist: pydantic-settings>=2.0.0; extra == "sap"
|
|
116
121
|
Provides-Extra: codeflow-worker
|
|
117
122
|
Requires-Dist: celery>=5.3.0; extra == "codeflow-worker"
|
|
118
123
|
Requires-Dist: redis>=5.0.0; extra == "codeflow-worker"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "mdengine"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.11.0"
|
|
8
8
|
description = "Convert PDF, Office, images, audio, video, text/JSON/XML, ZIP archives, web URLs, databases, graphs, and OpenAPI specs to Markdown."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -117,6 +117,12 @@ codeflow = [
|
|
|
117
117
|
"networkx>=3.2.0",
|
|
118
118
|
"javalang>=0.13.0",
|
|
119
119
|
]
|
|
120
|
+
sap = [
|
|
121
|
+
"pyyaml>=6.0.0",
|
|
122
|
+
"networkx>=3.2.0",
|
|
123
|
+
"pydantic>=2.0.0",
|
|
124
|
+
"pydantic-settings>=2.0.0",
|
|
125
|
+
]
|
|
120
126
|
# Optional: horizontal workers for codeflow API (Celery + Redis). Default job path uses threads.
|
|
121
127
|
codeflow-worker = [
|
|
122
128
|
"celery>=5.3.0",
|
|
@@ -278,6 +284,9 @@ md-codeflow-mcp = "md_generator.codeflow.api.mcp_server:main"
|
|
|
278
284
|
md-log = "md_generator.log.cli.main:main"
|
|
279
285
|
md-log-api = "md_generator.log.api.run:main"
|
|
280
286
|
md-log-mcp = "md_generator.log.api.mcp_server:main"
|
|
287
|
+
md-sap = "md_generator.sap.cli.main:main"
|
|
288
|
+
md-sap-api = "md_generator.sap.api.run:main"
|
|
289
|
+
md-sap-mcp = "md_generator.sap.api.mcp_server:main"
|
|
281
290
|
md-otel = "md_generator.otel.cli.main:main"
|
|
282
291
|
mdengine = "md_generator.engine_cli:main"
|
|
283
292
|
|
|
@@ -290,6 +299,7 @@ include = ["md_generator*"]
|
|
|
290
299
|
"md_generator.graph.config" = ["*.yaml"]
|
|
291
300
|
"md_generator.openapi.config" = ["*.yaml"]
|
|
292
301
|
"md_generator.log.config" = ["*.yaml", "presets/*.yaml"]
|
|
302
|
+
"md_generator.sap.config" = ["*.yaml"]
|
|
293
303
|
"md_generator.tools.assistant" = ["data/**/*"]
|
|
294
304
|
|
|
295
305
|
[tool.pytest.ini_options]
|
|
@@ -313,5 +323,6 @@ testpaths = [
|
|
|
313
323
|
"openapi-to-md/tests",
|
|
314
324
|
"codeflow-to-md/tests",
|
|
315
325
|
"log-to-md/tests",
|
|
326
|
+
"sap-to-md/tests",
|
|
316
327
|
]
|
|
317
328
|
markers = ["integration: optional dependency or slower checks"]
|
|
@@ -8,7 +8,8 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
8
8
|
if len(argv) < 1:
|
|
9
9
|
print(
|
|
10
10
|
"Usage: mdengine ai assist … | mdengine ai export … | mdengine skill build … | mdengine db-to-md … | "
|
|
11
|
-
"mdengine log-to-md … | mdengine
|
|
11
|
+
"mdengine log-to-md … | mdengine sap-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | "
|
|
12
|
+
"mdengine codeflow-to-md scan …",
|
|
12
13
|
file=sys.stderr,
|
|
13
14
|
)
|
|
14
15
|
return 2
|
|
@@ -73,9 +74,14 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
73
74
|
from md_generator.codeflow.cli.main import main as cf_main
|
|
74
75
|
|
|
75
76
|
return cf_main(argv[1:])
|
|
77
|
+
if argv[0] == "sap-to-md":
|
|
78
|
+
from md_generator.sap.cli.main import main as sap_main
|
|
79
|
+
|
|
80
|
+
return sap_main(argv[1:])
|
|
76
81
|
print(
|
|
77
82
|
"Usage: mdengine ai assist … | mdengine ai export … | mdengine skill build … | mdengine db-to-md … | "
|
|
78
|
-
"mdengine log-to-md … | mdengine
|
|
83
|
+
"mdengine log-to-md … | mdengine sap-to-md … | mdengine graph-to-md … | mdengine openapi-to-md generate … | "
|
|
84
|
+
"mdengine codeflow-to-md scan …",
|
|
79
85
|
file=sys.stderr,
|
|
80
86
|
)
|
|
81
87
|
return 2
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"""SAP artifact intelligence: parse, analyze, and export AI-ready Markdown."""
|
|
2
|
+
|
|
3
|
+
from md_generator.sap.core.extractor import extract_to_markdown
|
|
4
|
+
from md_generator.sap.core.run_config import SapRunConfig, load_run_config
|
|
5
|
+
from md_generator.sap.models.entities.kinds import SapObjectKind
|
|
6
|
+
from md_generator.sap.models.entities.sap_object import SapObject
|
|
7
|
+
|
|
8
|
+
__all__ = [
|
|
9
|
+
"__version__",
|
|
10
|
+
"extract_to_markdown",
|
|
11
|
+
"SapRunConfig",
|
|
12
|
+
"load_run_config",
|
|
13
|
+
"SapObject",
|
|
14
|
+
"SapObjectKind",
|
|
15
|
+
]
|
|
16
|
+
|
|
17
|
+
__version__ = "0.1.0"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from md_generator.sap.models.entities.kinds import SapObjectKind
|
|
6
|
+
from md_generator.sap.models.entities.sap_object import SapObject
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def extract_authorization(objects: list[SapObject]) -> list[dict[str, Any]]:
|
|
10
|
+
checks: list[dict[str, Any]] = []
|
|
11
|
+
for obj in objects:
|
|
12
|
+
meta = obj.raw_metadata or {}
|
|
13
|
+
if obj.kind != SapObjectKind.PROGRAM or "abap" not in meta:
|
|
14
|
+
continue
|
|
15
|
+
for a in meta["abap"].get("auth_checks", []):
|
|
16
|
+
checks.append(
|
|
17
|
+
{
|
|
18
|
+
"program": obj.name,
|
|
19
|
+
"object": a.get("object"),
|
|
20
|
+
"fields": a.get("fields", []),
|
|
21
|
+
"line": a.get("line"),
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
return checks
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
PII_PATTERNS = [
|
|
7
|
+
(re.compile(r"EMAIL", re.I), "PII"),
|
|
8
|
+
(re.compile(r"\b(SSN|SOCIAL.?SECURITY)\b", re.I), "PII"),
|
|
9
|
+
(re.compile(r"\b(PHONE|MOBILE|TELNR)\b", re.I), "PII"),
|
|
10
|
+
(re.compile(r"\b(NAME|FIRSTNAME|LASTNAME|NACHN|VORNA)\b", re.I), "PII"),
|
|
11
|
+
]
|
|
12
|
+
FINANCIAL_PATTERNS = [
|
|
13
|
+
(re.compile(r"\b(AMOUNT|BETRW|WRBTR|DMBTR|NETWR)\b", re.I), "FINANCIAL"),
|
|
14
|
+
(re.compile(r"\b(IBAN|BANK|BANKL|BANKN)\b", re.I), "FINANCIAL"),
|
|
15
|
+
(re.compile(r"\b(TAX|STCEG|MWSKZ)\b", re.I), "FINANCIAL"),
|
|
16
|
+
]
|
|
17
|
+
HR_PATTERNS = [
|
|
18
|
+
(re.compile(r"\b(SALARY|LGART|BETRG)\b", re.I), "HR_SENSITIVE"),
|
|
19
|
+
(re.compile(r"^PA\d", re.I), "HR_TABLE"),
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def classify_field(field_name: str, *, table_name: str = "", domain: str = "") -> str | None:
|
|
24
|
+
for pat, label in PII_PATTERNS + FINANCIAL_PATTERNS + HR_PATTERNS:
|
|
25
|
+
if pat.search(field_name) or pat.search(domain):
|
|
26
|
+
return label
|
|
27
|
+
if table_name.upper().startswith("PA"):
|
|
28
|
+
return "HR_TABLE"
|
|
29
|
+
if table_name.upper() in ("BKPF", "BSEG", "BSID", "BSAD"):
|
|
30
|
+
return "FINANCIAL_TABLE"
|
|
31
|
+
return None
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def classify_objects(objects: list[Any]) -> list[dict[str, Any]]:
|
|
35
|
+
out: list[dict[str, Any]] = []
|
|
36
|
+
for obj in objects:
|
|
37
|
+
meta = getattr(obj, "raw_metadata", {}) or {}
|
|
38
|
+
ddic = meta.get("ddic")
|
|
39
|
+
if isinstance(ddic, dict):
|
|
40
|
+
for f in ddic.get("fields", []):
|
|
41
|
+
fname = f.get("name", "")
|
|
42
|
+
cls = classify_field(fname, table_name=obj.name, domain=f.get("domain", ""))
|
|
43
|
+
if cls:
|
|
44
|
+
out.append(
|
|
45
|
+
{
|
|
46
|
+
"field": fname,
|
|
47
|
+
"table": obj.name,
|
|
48
|
+
"classification": cls,
|
|
49
|
+
"object_id": obj.object_id,
|
|
50
|
+
}
|
|
51
|
+
)
|
|
52
|
+
return out
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import networkx as nx
|
|
6
|
+
|
|
7
|
+
from md_generator.sap.models.entities.sap_object import SapObject
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def build_lineage_metadata(
|
|
11
|
+
objects: list[SapObject],
|
|
12
|
+
graph: nx.MultiDiGraph | None,
|
|
13
|
+
) -> dict[str, list[dict[str, Any]]]:
|
|
14
|
+
lineage: dict[str, list[dict[str, Any]]] = {}
|
|
15
|
+
for obj in objects:
|
|
16
|
+
oid = obj.object_id
|
|
17
|
+
entry: dict[str, Any] = {
|
|
18
|
+
"object_id": oid,
|
|
19
|
+
"name": obj.name,
|
|
20
|
+
"kind": obj.kind.value,
|
|
21
|
+
"source_path": str(obj.source_path) if obj.source_path else None,
|
|
22
|
+
"upstream": [],
|
|
23
|
+
"downstream": [],
|
|
24
|
+
}
|
|
25
|
+
if graph and oid in graph:
|
|
26
|
+
for pred in graph.predecessors(oid):
|
|
27
|
+
entry["upstream"].append({"id": pred, "relations": _edge_types(graph, pred, oid)})
|
|
28
|
+
for succ in graph.successors(oid):
|
|
29
|
+
entry["downstream"].append({"id": succ, "relations": _edge_types(graph, oid, succ)})
|
|
30
|
+
lineage[oid] = [entry]
|
|
31
|
+
return lineage
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
def _edge_types(g: nx.MultiDiGraph, u: str, v: str) -> list[str]:
|
|
35
|
+
types: list[str] = []
|
|
36
|
+
if g.has_edge(u, v):
|
|
37
|
+
for _, data in g[u][v].items():
|
|
38
|
+
types.append(data.get("relation", "LINK"))
|
|
39
|
+
return types
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
import networkx as nx
|
|
6
|
+
|
|
7
|
+
from md_generator.sap.models.entities.sap_object import SapObject
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
def summarize_relationships(
|
|
11
|
+
graph: nx.MultiDiGraph,
|
|
12
|
+
objects: list[SapObject],
|
|
13
|
+
*,
|
|
14
|
+
cap: int = 80,
|
|
15
|
+
) -> dict[str, list[dict[str, Any]]]:
|
|
16
|
+
by_id = {o.object_id: o for o in objects}
|
|
17
|
+
out: dict[str, list[dict[str, Any]]] = {}
|
|
18
|
+
for obj in objects:
|
|
19
|
+
oid = obj.object_id
|
|
20
|
+
rels: list[dict[str, Any]] = []
|
|
21
|
+
if oid not in graph:
|
|
22
|
+
out[oid] = rels
|
|
23
|
+
continue
|
|
24
|
+
for _, tgt, data in graph.out_edges(oid, data=True):
|
|
25
|
+
rels.append(
|
|
26
|
+
{
|
|
27
|
+
"target_id": tgt,
|
|
28
|
+
"target_name": by_id[tgt].name if tgt in by_id else tgt,
|
|
29
|
+
"relation": data.get("relation", "LINK"),
|
|
30
|
+
}
|
|
31
|
+
)
|
|
32
|
+
if len(rels) >= cap:
|
|
33
|
+
break
|
|
34
|
+
out[oid] = rels
|
|
35
|
+
return out
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import re
|
|
4
|
+
|
|
5
|
+
_PREFIX_RE = re.compile(r"^[ZY]_?", re.I)
|
|
6
|
+
_CAMEL_RE = re.compile(r"([a-z])([A-Z])")
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def infer_semantic_entity(view_name: str, annotations: dict[str, str] | None = None) -> str:
|
|
10
|
+
if annotations:
|
|
11
|
+
for k, v in annotations.items():
|
|
12
|
+
if "businessobject" in k.lower() or "semantics.businessobject" in k.lower():
|
|
13
|
+
return v.strip().strip("'\"")
|
|
14
|
+
name = _PREFIX_RE.sub("", view_name)
|
|
15
|
+
name = name.replace("_", " ")
|
|
16
|
+
name = _CAMEL_RE.sub(r"\1 \2", name)
|
|
17
|
+
parts = [p for p in name.split() if p and p.upper() not in ("I", "C", "VIEW", "DDIC")]
|
|
18
|
+
if parts:
|
|
19
|
+
return " ".join(p.capitalize() for p in parts)
|
|
20
|
+
return view_name
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from typing import Any
|
|
4
|
+
|
|
5
|
+
from md_generator.sap.models.entities.kinds import SapObjectKind
|
|
6
|
+
from md_generator.sap.models.entities.sap_object import SapObject
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def extract_validations(objects: list[SapObject]) -> list[dict[str, Any]]:
|
|
10
|
+
rules: list[dict[str, Any]] = []
|
|
11
|
+
for obj in objects:
|
|
12
|
+
meta = obj.raw_metadata or {}
|
|
13
|
+
if obj.kind == SapObjectKind.PROGRAM and "abap" in meta:
|
|
14
|
+
for v in meta["abap"].get("validations", []):
|
|
15
|
+
rules.append(
|
|
16
|
+
{
|
|
17
|
+
"source": obj.name,
|
|
18
|
+
"source_kind": obj.kind.value,
|
|
19
|
+
"rule_type": v.get("rule_type"),
|
|
20
|
+
"expression": v.get("expression"),
|
|
21
|
+
"line": v.get("line"),
|
|
22
|
+
}
|
|
23
|
+
)
|
|
24
|
+
if obj.kind == SapObjectKind.CDS_VIEW and "cds" in meta:
|
|
25
|
+
for k, val in meta["cds"].get("annotations", {}).items():
|
|
26
|
+
if "assert" in k.lower():
|
|
27
|
+
rules.append(
|
|
28
|
+
{
|
|
29
|
+
"source": obj.name,
|
|
30
|
+
"source_kind": obj.kind.value,
|
|
31
|
+
"rule_type": "cds_assert",
|
|
32
|
+
"expression": f"{k}={val}",
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
return rules
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from contextlib import asynccontextmanager
|
|
4
|
+
from pathlib import Path
|
|
5
|
+
|
|
6
|
+
from fastapi import FastAPI, HTTPException, Request
|
|
7
|
+
from fastapi.middleware.cors import CORSMiddleware
|
|
8
|
+
from fastapi.responses import FileResponse, Response
|
|
9
|
+
from pydantic import ValidationError
|
|
10
|
+
|
|
11
|
+
from md_generator.sap.api.schemas import SapToMdRunBody
|
|
12
|
+
from md_generator.sap.api.settings import SapApiSettings, cors_list, sqlite_path_resolved
|
|
13
|
+
from md_generator.sap.api.zip_export import build_sap_markdown_zip_bytes
|
|
14
|
+
from md_generator.sap.core.job_manager import SapJobManager
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@asynccontextmanager
|
|
18
|
+
async def lifespan(app: FastAPI):
|
|
19
|
+
settings = SapApiSettings()
|
|
20
|
+
ws = Path(settings.job_workspace_root) if settings.job_workspace_root else None
|
|
21
|
+
jobs = SapJobManager(sqlite_path=sqlite_path_resolved(settings), workspace_root=ws)
|
|
22
|
+
app.state.settings = settings
|
|
23
|
+
app.state.jobs = jobs
|
|
24
|
+
yield
|
|
25
|
+
jobs.close()
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
app = FastAPI(title="sap-to-md", lifespan=lifespan)
|
|
29
|
+
_bootstrap = SapApiSettings()
|
|
30
|
+
app.add_middleware(
|
|
31
|
+
CORSMiddleware,
|
|
32
|
+
allow_origins=cors_list(_bootstrap),
|
|
33
|
+
allow_credentials="*" not in cors_list(_bootstrap),
|
|
34
|
+
allow_methods=["*"],
|
|
35
|
+
allow_headers=["*"],
|
|
36
|
+
)
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
@app.get("/health")
|
|
40
|
+
async def health() -> dict[str, str]:
|
|
41
|
+
return {"status": "ok"}
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
@app.post("/sap-to-md/run")
|
|
45
|
+
async def sap_run_sync(body: SapToMdRunBody) -> Response:
|
|
46
|
+
try:
|
|
47
|
+
cfg = body.to_run_config()
|
|
48
|
+
except ValidationError as e:
|
|
49
|
+
raise HTTPException(status_code=422, detail=e.errors()) from e
|
|
50
|
+
if not cfg.input_paths:
|
|
51
|
+
raise HTTPException(status_code=400, detail="input.paths required")
|
|
52
|
+
data = build_sap_markdown_zip_bytes(cfg)
|
|
53
|
+
return Response(
|
|
54
|
+
content=data,
|
|
55
|
+
media_type="application/zip",
|
|
56
|
+
headers={"Content-Disposition": 'attachment; filename="sap-md.zip"'},
|
|
57
|
+
)
|
|
58
|
+
|
|
59
|
+
|
|
60
|
+
@app.post("/sap-to-md/job")
|
|
61
|
+
async def sap_enqueue(body: SapToMdRunBody, request: Request) -> dict[str, str]:
|
|
62
|
+
cfg = body.to_run_config()
|
|
63
|
+
if not cfg.input_paths:
|
|
64
|
+
raise HTTPException(status_code=400, detail="input.paths required")
|
|
65
|
+
jobs: SapJobManager = request.app.state.jobs
|
|
66
|
+
job_id = jobs.enqueue(cfg)
|
|
67
|
+
return {"job_id": job_id}
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
@app.get("/sap-to-md/job/{job_id}")
|
|
71
|
+
async def sap_job_status(job_id: str, request: Request) -> dict:
|
|
72
|
+
jobs: SapJobManager = request.app.state.jobs
|
|
73
|
+
rec = jobs.get(job_id)
|
|
74
|
+
if not rec:
|
|
75
|
+
raise HTTPException(status_code=404, detail="job not found")
|
|
76
|
+
return rec.to_api_dict()
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
@app.get("/sap-to-md/job/{job_id}/download")
|
|
80
|
+
async def sap_job_download(job_id: str, request: Request) -> FileResponse:
|
|
81
|
+
jobs: SapJobManager = request.app.state.jobs
|
|
82
|
+
rec = jobs.get(job_id)
|
|
83
|
+
if not rec or rec.status != "COMPLETED" or not rec.zip_path:
|
|
84
|
+
raise HTTPException(status_code=404, detail="zip not ready")
|
|
85
|
+
return FileResponse(rec.zip_path, filename="sap-md.zip", media_type="application/zip")
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main() -> None:
|
|
7
|
+
"""Run sap-to-md API (MCP mount can be added when mdengine[mcp] is installed)."""
|
|
8
|
+
import uvicorn
|
|
9
|
+
|
|
10
|
+
host = os.environ.get("SAP_TO_MD_HOST", "127.0.0.1")
|
|
11
|
+
port = int(os.environ.get("SAP_TO_MD_PORT", "8020"))
|
|
12
|
+
uvicorn.run("md_generator.sap.api.main:app", host=host, port=port, reload=False)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
if __name__ == "__main__":
|
|
16
|
+
main()
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import os
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
def main() -> None:
|
|
7
|
+
import uvicorn
|
|
8
|
+
|
|
9
|
+
host = os.environ.get("SAP_TO_MD_HOST", "127.0.0.1")
|
|
10
|
+
port = int(os.environ.get("SAP_TO_MD_PORT", "8020"))
|
|
11
|
+
uvicorn.run("md_generator.sap.api.main:app", host=host, port=port, reload=False)
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
if __name__ == "__main__":
|
|
15
|
+
main()
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
from typing import Any
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel, Field, model_validator
|
|
7
|
+
|
|
8
|
+
from md_generator.sap.core.features import FEATURES
|
|
9
|
+
from md_generator.sap.core.run_config import SapRunConfig
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
class InputSection(BaseModel):
|
|
13
|
+
paths: list[str] = Field(default_factory=list)
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
class OutputSection(BaseModel):
|
|
17
|
+
path: str = "output/sap-md"
|
|
18
|
+
split_files: bool = True
|
|
19
|
+
write_manifest: bool = True
|
|
20
|
+
markdown_cross_links: bool = True
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class FeaturesSection(BaseModel):
|
|
24
|
+
include: list[str] | None = None
|
|
25
|
+
exclude: list[str] = Field(default_factory=list)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class SapToMdRunBody(BaseModel):
|
|
29
|
+
input: InputSection = Field(default_factory=InputSection)
|
|
30
|
+
output: OutputSection = Field(default_factory=OutputSection)
|
|
31
|
+
features: FeaturesSection = Field(default_factory=FeaturesSection)
|
|
32
|
+
chunking: dict[str, Any] = Field(default_factory=dict)
|
|
33
|
+
graph: dict[str, Any] = Field(default_factory=dict)
|
|
34
|
+
performance: dict[str, Any] = Field(default_factory=dict)
|
|
35
|
+
|
|
36
|
+
@model_validator(mode="after")
|
|
37
|
+
def check_features(self) -> SapToMdRunBody:
|
|
38
|
+
if self.features.include:
|
|
39
|
+
bad = set(self.features.include) - FEATURES
|
|
40
|
+
if bad:
|
|
41
|
+
raise ValueError(f"Unknown features: {sorted(bad)}")
|
|
42
|
+
return self
|
|
43
|
+
|
|
44
|
+
def to_run_config(self) -> SapRunConfig:
|
|
45
|
+
from md_generator.sap.core.run_config import load_run_config
|
|
46
|
+
|
|
47
|
+
return load_run_config(None, self.model_dump()).normalized()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from pathlib import Path
|
|
4
|
+
|
|
5
|
+
from pydantic_settings import BaseSettings, SettingsConfigDict
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
class SapApiSettings(BaseSettings):
|
|
9
|
+
model_config = SettingsConfigDict(
|
|
10
|
+
env_prefix="SAP_TO_MD_",
|
|
11
|
+
env_file=".env",
|
|
12
|
+
extra="ignore",
|
|
13
|
+
)
|
|
14
|
+
|
|
15
|
+
job_sqlite_path: str | None = None
|
|
16
|
+
job_workspace_root: str | None = None
|
|
17
|
+
cors_origins: str = "*"
|
|
18
|
+
max_sync_zip_mb: int = 80
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
def cors_list(settings: SapApiSettings) -> list[str]:
|
|
22
|
+
raw = (settings.cors_origins or "*").strip()
|
|
23
|
+
if raw == "*":
|
|
24
|
+
return ["*"]
|
|
25
|
+
return [o.strip() for o in raw.split(",") if o.strip()]
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def sqlite_path_resolved(settings: SapApiSettings) -> Path | None:
|
|
29
|
+
if settings.job_sqlite_path:
|
|
30
|
+
return Path(settings.job_sqlite_path)
|
|
31
|
+
return None
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import tempfile
|
|
4
|
+
import zipfile
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
|
|
7
|
+
from md_generator.sap.core.extractor import extract_to_markdown
|
|
8
|
+
from md_generator.sap.core.run_config import SapRunConfig
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
def build_sap_markdown_zip_bytes(cfg: SapRunConfig) -> bytes:
|
|
12
|
+
with tempfile.TemporaryDirectory() as tmp:
|
|
13
|
+
root = Path(tmp) / "out"
|
|
14
|
+
cfg = cfg.with_output(root)
|
|
15
|
+
extract_to_markdown(cfg)
|
|
16
|
+
buf = tempfile.NamedTemporaryFile(delete=False, suffix=".zip")
|
|
17
|
+
buf.close()
|
|
18
|
+
zpath = Path(buf.name)
|
|
19
|
+
with zipfile.ZipFile(zpath, "w", zipfile.ZIP_DEFLATED) as zf:
|
|
20
|
+
for p in sorted(root.rglob("*")):
|
|
21
|
+
if p.is_file():
|
|
22
|
+
zf.write(p, p.relative_to(root).as_posix())
|
|
23
|
+
data = zpath.read_bytes()
|
|
24
|
+
zpath.unlink(missing_ok=True)
|
|
25
|
+
return data
|