aiecs 1.0.1__py3-none-any.whl → 1.7.6__py3-none-any.whl

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.

Potentially problematic release.


This version of aiecs might be problematic. Click here for more details.

Files changed (340) hide show
  1. aiecs/__init__.py +13 -16
  2. aiecs/__main__.py +7 -7
  3. aiecs/aiecs_client.py +269 -75
  4. aiecs/application/executors/operation_executor.py +79 -54
  5. aiecs/application/knowledge_graph/__init__.py +7 -0
  6. aiecs/application/knowledge_graph/builder/__init__.py +37 -0
  7. aiecs/application/knowledge_graph/builder/data_quality.py +302 -0
  8. aiecs/application/knowledge_graph/builder/data_reshaping.py +293 -0
  9. aiecs/application/knowledge_graph/builder/document_builder.py +369 -0
  10. aiecs/application/knowledge_graph/builder/graph_builder.py +490 -0
  11. aiecs/application/knowledge_graph/builder/import_optimizer.py +396 -0
  12. aiecs/application/knowledge_graph/builder/schema_inference.py +462 -0
  13. aiecs/application/knowledge_graph/builder/schema_mapping.py +563 -0
  14. aiecs/application/knowledge_graph/builder/structured_pipeline.py +1384 -0
  15. aiecs/application/knowledge_graph/builder/text_chunker.py +317 -0
  16. aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
  17. aiecs/application/knowledge_graph/extractors/base.py +98 -0
  18. aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +422 -0
  19. aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +347 -0
  20. aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +241 -0
  21. aiecs/application/knowledge_graph/fusion/__init__.py +78 -0
  22. aiecs/application/knowledge_graph/fusion/ab_testing.py +395 -0
  23. aiecs/application/knowledge_graph/fusion/abbreviation_expander.py +327 -0
  24. aiecs/application/knowledge_graph/fusion/alias_index.py +597 -0
  25. aiecs/application/knowledge_graph/fusion/alias_matcher.py +384 -0
  26. aiecs/application/knowledge_graph/fusion/cache_coordinator.py +343 -0
  27. aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +433 -0
  28. aiecs/application/knowledge_graph/fusion/entity_linker.py +511 -0
  29. aiecs/application/knowledge_graph/fusion/evaluation_dataset.py +240 -0
  30. aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +632 -0
  31. aiecs/application/knowledge_graph/fusion/matching_config.py +489 -0
  32. aiecs/application/knowledge_graph/fusion/name_normalizer.py +352 -0
  33. aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +183 -0
  34. aiecs/application/knowledge_graph/fusion/semantic_name_matcher.py +464 -0
  35. aiecs/application/knowledge_graph/fusion/similarity_pipeline.py +534 -0
  36. aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
  37. aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +342 -0
  38. aiecs/application/knowledge_graph/pattern_matching/query_executor.py +366 -0
  39. aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
  40. aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +195 -0
  41. aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
  42. aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
  43. aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +341 -0
  44. aiecs/application/knowledge_graph/reasoning/inference_engine.py +500 -0
  45. aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +163 -0
  46. aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
  47. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
  48. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +913 -0
  49. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +866 -0
  50. aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +475 -0
  51. aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +396 -0
  52. aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +208 -0
  53. aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +170 -0
  54. aiecs/application/knowledge_graph/reasoning/query_planner.py +855 -0
  55. aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +518 -0
  56. aiecs/application/knowledge_graph/retrieval/__init__.py +27 -0
  57. aiecs/application/knowledge_graph/retrieval/query_intent_classifier.py +211 -0
  58. aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +592 -0
  59. aiecs/application/knowledge_graph/retrieval/strategy_types.py +23 -0
  60. aiecs/application/knowledge_graph/search/__init__.py +59 -0
  61. aiecs/application/knowledge_graph/search/hybrid_search.py +457 -0
  62. aiecs/application/knowledge_graph/search/reranker.py +293 -0
  63. aiecs/application/knowledge_graph/search/reranker_strategies.py +535 -0
  64. aiecs/application/knowledge_graph/search/text_similarity.py +392 -0
  65. aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
  66. aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +305 -0
  67. aiecs/application/knowledge_graph/traversal/path_scorer.py +271 -0
  68. aiecs/application/knowledge_graph/validators/__init__.py +13 -0
  69. aiecs/application/knowledge_graph/validators/relation_validator.py +239 -0
  70. aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
  71. aiecs/application/knowledge_graph/visualization/graph_visualizer.py +313 -0
  72. aiecs/common/__init__.py +9 -0
  73. aiecs/common/knowledge_graph/__init__.py +17 -0
  74. aiecs/common/knowledge_graph/runnable.py +471 -0
  75. aiecs/config/__init__.py +20 -5
  76. aiecs/config/config.py +762 -31
  77. aiecs/config/graph_config.py +131 -0
  78. aiecs/config/tool_config.py +399 -0
  79. aiecs/core/__init__.py +29 -13
  80. aiecs/core/interface/__init__.py +2 -2
  81. aiecs/core/interface/execution_interface.py +22 -22
  82. aiecs/core/interface/storage_interface.py +37 -88
  83. aiecs/core/registry/__init__.py +31 -0
  84. aiecs/core/registry/service_registry.py +92 -0
  85. aiecs/domain/__init__.py +270 -1
  86. aiecs/domain/agent/__init__.py +191 -0
  87. aiecs/domain/agent/base_agent.py +3870 -0
  88. aiecs/domain/agent/exceptions.py +99 -0
  89. aiecs/domain/agent/graph_aware_mixin.py +569 -0
  90. aiecs/domain/agent/hybrid_agent.py +1435 -0
  91. aiecs/domain/agent/integration/__init__.py +29 -0
  92. aiecs/domain/agent/integration/context_compressor.py +216 -0
  93. aiecs/domain/agent/integration/context_engine_adapter.py +587 -0
  94. aiecs/domain/agent/integration/protocols.py +281 -0
  95. aiecs/domain/agent/integration/retry_policy.py +218 -0
  96. aiecs/domain/agent/integration/role_config.py +213 -0
  97. aiecs/domain/agent/knowledge_aware_agent.py +1892 -0
  98. aiecs/domain/agent/lifecycle.py +291 -0
  99. aiecs/domain/agent/llm_agent.py +692 -0
  100. aiecs/domain/agent/memory/__init__.py +12 -0
  101. aiecs/domain/agent/memory/conversation.py +1124 -0
  102. aiecs/domain/agent/migration/__init__.py +14 -0
  103. aiecs/domain/agent/migration/conversion.py +163 -0
  104. aiecs/domain/agent/migration/legacy_wrapper.py +86 -0
  105. aiecs/domain/agent/models.py +884 -0
  106. aiecs/domain/agent/observability.py +479 -0
  107. aiecs/domain/agent/persistence.py +449 -0
  108. aiecs/domain/agent/prompts/__init__.py +29 -0
  109. aiecs/domain/agent/prompts/builder.py +159 -0
  110. aiecs/domain/agent/prompts/formatters.py +187 -0
  111. aiecs/domain/agent/prompts/template.py +255 -0
  112. aiecs/domain/agent/registry.py +253 -0
  113. aiecs/domain/agent/tool_agent.py +444 -0
  114. aiecs/domain/agent/tools/__init__.py +15 -0
  115. aiecs/domain/agent/tools/schema_generator.py +364 -0
  116. aiecs/domain/community/__init__.py +155 -0
  117. aiecs/domain/community/agent_adapter.py +469 -0
  118. aiecs/domain/community/analytics.py +432 -0
  119. aiecs/domain/community/collaborative_workflow.py +648 -0
  120. aiecs/domain/community/communication_hub.py +634 -0
  121. aiecs/domain/community/community_builder.py +320 -0
  122. aiecs/domain/community/community_integration.py +796 -0
  123. aiecs/domain/community/community_manager.py +803 -0
  124. aiecs/domain/community/decision_engine.py +849 -0
  125. aiecs/domain/community/exceptions.py +231 -0
  126. aiecs/domain/community/models/__init__.py +33 -0
  127. aiecs/domain/community/models/community_models.py +234 -0
  128. aiecs/domain/community/resource_manager.py +461 -0
  129. aiecs/domain/community/shared_context_manager.py +589 -0
  130. aiecs/domain/context/__init__.py +40 -10
  131. aiecs/domain/context/context_engine.py +1910 -0
  132. aiecs/domain/context/conversation_models.py +87 -53
  133. aiecs/domain/context/graph_memory.py +582 -0
  134. aiecs/domain/execution/model.py +12 -4
  135. aiecs/domain/knowledge_graph/__init__.py +19 -0
  136. aiecs/domain/knowledge_graph/models/__init__.py +52 -0
  137. aiecs/domain/knowledge_graph/models/entity.py +148 -0
  138. aiecs/domain/knowledge_graph/models/evidence.py +178 -0
  139. aiecs/domain/knowledge_graph/models/inference_rule.py +184 -0
  140. aiecs/domain/knowledge_graph/models/path.py +171 -0
  141. aiecs/domain/knowledge_graph/models/path_pattern.py +171 -0
  142. aiecs/domain/knowledge_graph/models/query.py +261 -0
  143. aiecs/domain/knowledge_graph/models/query_plan.py +181 -0
  144. aiecs/domain/knowledge_graph/models/relation.py +202 -0
  145. aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
  146. aiecs/domain/knowledge_graph/schema/entity_type.py +131 -0
  147. aiecs/domain/knowledge_graph/schema/graph_schema.py +253 -0
  148. aiecs/domain/knowledge_graph/schema/property_schema.py +143 -0
  149. aiecs/domain/knowledge_graph/schema/relation_type.py +163 -0
  150. aiecs/domain/knowledge_graph/schema/schema_manager.py +691 -0
  151. aiecs/domain/knowledge_graph/schema/type_enums.py +209 -0
  152. aiecs/domain/task/dsl_processor.py +172 -56
  153. aiecs/domain/task/model.py +20 -8
  154. aiecs/domain/task/task_context.py +27 -24
  155. aiecs/infrastructure/__init__.py +0 -2
  156. aiecs/infrastructure/graph_storage/__init__.py +11 -0
  157. aiecs/infrastructure/graph_storage/base.py +837 -0
  158. aiecs/infrastructure/graph_storage/batch_operations.py +458 -0
  159. aiecs/infrastructure/graph_storage/cache.py +424 -0
  160. aiecs/infrastructure/graph_storage/distributed.py +223 -0
  161. aiecs/infrastructure/graph_storage/error_handling.py +380 -0
  162. aiecs/infrastructure/graph_storage/graceful_degradation.py +294 -0
  163. aiecs/infrastructure/graph_storage/health_checks.py +378 -0
  164. aiecs/infrastructure/graph_storage/in_memory.py +1197 -0
  165. aiecs/infrastructure/graph_storage/index_optimization.py +446 -0
  166. aiecs/infrastructure/graph_storage/lazy_loading.py +431 -0
  167. aiecs/infrastructure/graph_storage/metrics.py +344 -0
  168. aiecs/infrastructure/graph_storage/migration.py +400 -0
  169. aiecs/infrastructure/graph_storage/pagination.py +483 -0
  170. aiecs/infrastructure/graph_storage/performance_monitoring.py +456 -0
  171. aiecs/infrastructure/graph_storage/postgres.py +1563 -0
  172. aiecs/infrastructure/graph_storage/property_storage.py +353 -0
  173. aiecs/infrastructure/graph_storage/protocols.py +76 -0
  174. aiecs/infrastructure/graph_storage/query_optimizer.py +642 -0
  175. aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
  176. aiecs/infrastructure/graph_storage/sqlite.py +1373 -0
  177. aiecs/infrastructure/graph_storage/streaming.py +487 -0
  178. aiecs/infrastructure/graph_storage/tenant.py +412 -0
  179. aiecs/infrastructure/messaging/celery_task_manager.py +92 -54
  180. aiecs/infrastructure/messaging/websocket_manager.py +51 -35
  181. aiecs/infrastructure/monitoring/__init__.py +22 -0
  182. aiecs/infrastructure/monitoring/executor_metrics.py +45 -11
  183. aiecs/infrastructure/monitoring/global_metrics_manager.py +212 -0
  184. aiecs/infrastructure/monitoring/structured_logger.py +3 -7
  185. aiecs/infrastructure/monitoring/tracing_manager.py +63 -35
  186. aiecs/infrastructure/persistence/__init__.py +14 -1
  187. aiecs/infrastructure/persistence/context_engine_client.py +184 -0
  188. aiecs/infrastructure/persistence/database_manager.py +67 -43
  189. aiecs/infrastructure/persistence/file_storage.py +180 -103
  190. aiecs/infrastructure/persistence/redis_client.py +74 -21
  191. aiecs/llm/__init__.py +73 -25
  192. aiecs/llm/callbacks/__init__.py +11 -0
  193. aiecs/llm/{custom_callbacks.py → callbacks/custom_callbacks.py} +26 -19
  194. aiecs/llm/client_factory.py +224 -36
  195. aiecs/llm/client_resolver.py +155 -0
  196. aiecs/llm/clients/__init__.py +38 -0
  197. aiecs/llm/clients/base_client.py +324 -0
  198. aiecs/llm/clients/google_function_calling_mixin.py +457 -0
  199. aiecs/llm/clients/googleai_client.py +241 -0
  200. aiecs/llm/clients/openai_client.py +158 -0
  201. aiecs/llm/clients/openai_compatible_mixin.py +367 -0
  202. aiecs/llm/clients/vertex_client.py +897 -0
  203. aiecs/llm/clients/xai_client.py +201 -0
  204. aiecs/llm/config/__init__.py +51 -0
  205. aiecs/llm/config/config_loader.py +272 -0
  206. aiecs/llm/config/config_validator.py +206 -0
  207. aiecs/llm/config/model_config.py +143 -0
  208. aiecs/llm/protocols.py +149 -0
  209. aiecs/llm/utils/__init__.py +10 -0
  210. aiecs/llm/utils/validate_config.py +89 -0
  211. aiecs/main.py +140 -121
  212. aiecs/scripts/aid/VERSION_MANAGEMENT.md +138 -0
  213. aiecs/scripts/aid/__init__.py +19 -0
  214. aiecs/scripts/aid/module_checker.py +499 -0
  215. aiecs/scripts/aid/version_manager.py +235 -0
  216. aiecs/scripts/{DEPENDENCY_SYSTEM_SUMMARY.md → dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md} +1 -0
  217. aiecs/scripts/{README_DEPENDENCY_CHECKER.md → dependance_check/README_DEPENDENCY_CHECKER.md} +1 -0
  218. aiecs/scripts/dependance_check/__init__.py +15 -0
  219. aiecs/scripts/dependance_check/dependency_checker.py +1835 -0
  220. aiecs/scripts/{dependency_fixer.py → dependance_check/dependency_fixer.py} +192 -90
  221. aiecs/scripts/{download_nlp_data.py → dependance_check/download_nlp_data.py} +203 -71
  222. aiecs/scripts/dependance_patch/__init__.py +7 -0
  223. aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
  224. aiecs/scripts/{fix_weasel_validator.py → dependance_patch/fix_weasel/fix_weasel_validator.py} +21 -14
  225. aiecs/scripts/{patch_weasel_library.sh → dependance_patch/fix_weasel/patch_weasel_library.sh} +1 -1
  226. aiecs/scripts/knowledge_graph/__init__.py +3 -0
  227. aiecs/scripts/knowledge_graph/run_threshold_experiments.py +212 -0
  228. aiecs/scripts/migrations/multi_tenancy/README.md +142 -0
  229. aiecs/scripts/tools_develop/README.md +671 -0
  230. aiecs/scripts/tools_develop/README_CONFIG_CHECKER.md +273 -0
  231. aiecs/scripts/tools_develop/TOOLS_CONFIG_GUIDE.md +1287 -0
  232. aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
  233. aiecs/scripts/tools_develop/__init__.py +21 -0
  234. aiecs/scripts/tools_develop/check_all_tools_config.py +548 -0
  235. aiecs/scripts/tools_develop/check_type_annotations.py +257 -0
  236. aiecs/scripts/tools_develop/pre-commit-schema-coverage.sh +66 -0
  237. aiecs/scripts/tools_develop/schema_coverage.py +511 -0
  238. aiecs/scripts/tools_develop/validate_tool_schemas.py +475 -0
  239. aiecs/scripts/tools_develop/verify_executor_config_fix.py +98 -0
  240. aiecs/scripts/tools_develop/verify_tools.py +352 -0
  241. aiecs/tasks/__init__.py +0 -1
  242. aiecs/tasks/worker.py +115 -47
  243. aiecs/tools/__init__.py +194 -72
  244. aiecs/tools/apisource/__init__.py +99 -0
  245. aiecs/tools/apisource/intelligence/__init__.py +19 -0
  246. aiecs/tools/apisource/intelligence/data_fusion.py +632 -0
  247. aiecs/tools/apisource/intelligence/query_analyzer.py +417 -0
  248. aiecs/tools/apisource/intelligence/search_enhancer.py +385 -0
  249. aiecs/tools/apisource/monitoring/__init__.py +9 -0
  250. aiecs/tools/apisource/monitoring/metrics.py +330 -0
  251. aiecs/tools/apisource/providers/__init__.py +112 -0
  252. aiecs/tools/apisource/providers/base.py +671 -0
  253. aiecs/tools/apisource/providers/census.py +397 -0
  254. aiecs/tools/apisource/providers/fred.py +535 -0
  255. aiecs/tools/apisource/providers/newsapi.py +409 -0
  256. aiecs/tools/apisource/providers/worldbank.py +352 -0
  257. aiecs/tools/apisource/reliability/__init__.py +12 -0
  258. aiecs/tools/apisource/reliability/error_handler.py +363 -0
  259. aiecs/tools/apisource/reliability/fallback_strategy.py +376 -0
  260. aiecs/tools/apisource/tool.py +832 -0
  261. aiecs/tools/apisource/utils/__init__.py +9 -0
  262. aiecs/tools/apisource/utils/validators.py +334 -0
  263. aiecs/tools/base_tool.py +415 -21
  264. aiecs/tools/docs/__init__.py +121 -0
  265. aiecs/tools/docs/ai_document_orchestrator.py +607 -0
  266. aiecs/tools/docs/ai_document_writer_orchestrator.py +2350 -0
  267. aiecs/tools/docs/content_insertion_tool.py +1320 -0
  268. aiecs/tools/docs/document_creator_tool.py +1323 -0
  269. aiecs/tools/docs/document_layout_tool.py +1160 -0
  270. aiecs/tools/docs/document_parser_tool.py +1011 -0
  271. aiecs/tools/docs/document_writer_tool.py +1829 -0
  272. aiecs/tools/knowledge_graph/__init__.py +17 -0
  273. aiecs/tools/knowledge_graph/graph_reasoning_tool.py +807 -0
  274. aiecs/tools/knowledge_graph/graph_search_tool.py +944 -0
  275. aiecs/tools/knowledge_graph/kg_builder_tool.py +524 -0
  276. aiecs/tools/langchain_adapter.py +300 -138
  277. aiecs/tools/schema_generator.py +455 -0
  278. aiecs/tools/search_tool/__init__.py +100 -0
  279. aiecs/tools/search_tool/analyzers.py +581 -0
  280. aiecs/tools/search_tool/cache.py +264 -0
  281. aiecs/tools/search_tool/constants.py +128 -0
  282. aiecs/tools/search_tool/context.py +224 -0
  283. aiecs/tools/search_tool/core.py +778 -0
  284. aiecs/tools/search_tool/deduplicator.py +119 -0
  285. aiecs/tools/search_tool/error_handler.py +242 -0
  286. aiecs/tools/search_tool/metrics.py +343 -0
  287. aiecs/tools/search_tool/rate_limiter.py +172 -0
  288. aiecs/tools/search_tool/schemas.py +275 -0
  289. aiecs/tools/statistics/__init__.py +80 -0
  290. aiecs/tools/statistics/ai_data_analysis_orchestrator.py +646 -0
  291. aiecs/tools/statistics/ai_insight_generator_tool.py +508 -0
  292. aiecs/tools/statistics/ai_report_orchestrator_tool.py +684 -0
  293. aiecs/tools/statistics/data_loader_tool.py +555 -0
  294. aiecs/tools/statistics/data_profiler_tool.py +638 -0
  295. aiecs/tools/statistics/data_transformer_tool.py +580 -0
  296. aiecs/tools/statistics/data_visualizer_tool.py +498 -0
  297. aiecs/tools/statistics/model_trainer_tool.py +507 -0
  298. aiecs/tools/statistics/statistical_analyzer_tool.py +472 -0
  299. aiecs/tools/task_tools/__init__.py +49 -36
  300. aiecs/tools/task_tools/chart_tool.py +200 -184
  301. aiecs/tools/task_tools/classfire_tool.py +268 -267
  302. aiecs/tools/task_tools/image_tool.py +175 -131
  303. aiecs/tools/task_tools/office_tool.py +226 -146
  304. aiecs/tools/task_tools/pandas_tool.py +477 -121
  305. aiecs/tools/task_tools/report_tool.py +390 -142
  306. aiecs/tools/task_tools/research_tool.py +149 -79
  307. aiecs/tools/task_tools/scraper_tool.py +339 -145
  308. aiecs/tools/task_tools/stats_tool.py +448 -209
  309. aiecs/tools/temp_file_manager.py +26 -24
  310. aiecs/tools/tool_executor/__init__.py +18 -16
  311. aiecs/tools/tool_executor/tool_executor.py +364 -52
  312. aiecs/utils/LLM_output_structor.py +74 -48
  313. aiecs/utils/__init__.py +14 -3
  314. aiecs/utils/base_callback.py +0 -3
  315. aiecs/utils/cache_provider.py +696 -0
  316. aiecs/utils/execution_utils.py +50 -31
  317. aiecs/utils/prompt_loader.py +1 -0
  318. aiecs/utils/token_usage_repository.py +37 -11
  319. aiecs/ws/socket_server.py +14 -4
  320. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/METADATA +52 -15
  321. aiecs-1.7.6.dist-info/RECORD +337 -0
  322. aiecs-1.7.6.dist-info/entry_points.txt +13 -0
  323. aiecs/config/registry.py +0 -19
  324. aiecs/domain/context/content_engine.py +0 -982
  325. aiecs/llm/base_client.py +0 -99
  326. aiecs/llm/openai_client.py +0 -125
  327. aiecs/llm/vertex_client.py +0 -186
  328. aiecs/llm/xai_client.py +0 -184
  329. aiecs/scripts/dependency_checker.py +0 -857
  330. aiecs/scripts/quick_dependency_check.py +0 -269
  331. aiecs/tools/task_tools/search_api.py +0 -7
  332. aiecs-1.0.1.dist-info/RECORD +0 -90
  333. aiecs-1.0.1.dist-info/entry_points.txt +0 -7
  334. /aiecs/scripts/{setup_nlp_data.sh → dependance_check/setup_nlp_data.sh} +0 -0
  335. /aiecs/scripts/{README_WEASEL_PATCH.md → dependance_patch/fix_weasel/README_WEASEL_PATCH.md} +0 -0
  336. /aiecs/scripts/{fix_weasel_validator.sh → dependance_patch/fix_weasel/fix_weasel_validator.sh} +0 -0
  337. /aiecs/scripts/{run_weasel_patch.sh → dependance_patch/fix_weasel/run_weasel_patch.sh} +0 -0
  338. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/WHEEL +0 -0
  339. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/licenses/LICENSE +0 -0
  340. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,12 @@
1
+ """
2
+ Knowledge Graph Profiling
3
+
4
+ Performance profiling and analysis tools for knowledge graph operations.
5
+ """
6
+
7
+ from aiecs.application.knowledge_graph.profiling.query_profiler import (
8
+ QueryProfiler,
9
+ QueryProfile,
10
+ )
11
+
12
+ __all__ = ["QueryProfiler", "QueryProfile"]
@@ -0,0 +1,195 @@
1
+ """
2
+ Query Plan Visualizer
3
+
4
+ Visualize query execution plans and performance profiles.
5
+ """
6
+
7
+ from typing import Dict, Any, List
8
+ from aiecs.application.knowledge_graph.profiling.query_profiler import (
9
+ QueryProfile,
10
+ )
11
+ from aiecs.domain.knowledge_graph.models.query_plan import QueryPlan
12
+
13
+
14
+ class QueryPlanVisualizer:
15
+ """
16
+ Visualize query plans and execution profiles
17
+
18
+ Generates text-based visualizations of query plans and performance data.
19
+
20
+ Example:
21
+ ```python
22
+ visualizer = QueryPlanVisualizer()
23
+
24
+ # Visualize query plan
25
+ plan_viz = visualizer.visualize_plan(query_plan)
26
+ print(plan_viz)
27
+
28
+ # Visualize execution profile
29
+ profile_viz = visualizer.visualize_profile(query_profile)
30
+ print(profile_viz)
31
+ ```
32
+ """
33
+
34
+ def visualize_plan(self, plan: QueryPlan, show_costs: bool = True) -> str:
35
+ """
36
+ Visualize a query plan
37
+
38
+ Args:
39
+ plan: Query plan to visualize
40
+ show_costs: Whether to show cost estimates
41
+
42
+ Returns:
43
+ Text visualization of the plan
44
+ """
45
+ lines = []
46
+ lines.append("=" * 60)
47
+ lines.append("QUERY PLAN")
48
+ lines.append("=" * 60)
49
+
50
+ if show_costs:
51
+ total_cost = plan.calculate_total_cost()
52
+ lines.append(f"Total Estimated Cost: {total_cost:.2f}")
53
+ lines.append("")
54
+
55
+ for i, step in enumerate(plan.steps, 1):
56
+ lines.append(f"Step {i}: {step.operation.value}")
57
+ lines.append(f" Description: {step.description}")
58
+
59
+ if show_costs:
60
+ lines.append(f" Estimated Cost: {step.estimated_cost:.2f}")
61
+
62
+ if step.depends_on:
63
+ lines.append(f" Depends On: {', '.join(step.depends_on)}")
64
+
65
+ if step.metadata:
66
+ lines.append(f" Metadata: {step.metadata}")
67
+
68
+ lines.append("")
69
+
70
+ lines.append("=" * 60)
71
+ return "\n".join(lines)
72
+
73
+ def visualize_profile(self, profile: QueryProfile, show_steps: bool = True) -> str:
74
+ """
75
+ Visualize a query execution profile
76
+
77
+ Args:
78
+ profile: Query profile to visualize
79
+ show_steps: Whether to show individual steps
80
+
81
+ Returns:
82
+ Text visualization of the profile
83
+ """
84
+ lines = []
85
+ lines.append("=" * 60)
86
+ lines.append("QUERY EXECUTION PROFILE")
87
+ lines.append("=" * 60)
88
+ lines.append(f"Query ID: {profile.query_id}")
89
+ lines.append(f"Query Type: {profile.query_type}")
90
+ lines.append(f"Total Duration: {profile.duration_ms:.2f}ms")
91
+ lines.append("")
92
+
93
+ if show_steps and profile.steps:
94
+ lines.append("Execution Steps:")
95
+ lines.append("-" * 60)
96
+
97
+ for i, step in enumerate(profile.steps, 1):
98
+ duration = step["duration_ms"]
99
+ percentage = (duration / profile.duration_ms * 100) if profile.duration_ms else 0
100
+
101
+ lines.append(f"{i}. {step['name']}")
102
+ lines.append(f" Duration: {duration:.2f}ms ({percentage:.1f}%)")
103
+
104
+ # Show bar chart
105
+ bar_length = int(percentage / 2) # Scale to 50 chars max
106
+ bar = "█" * bar_length
107
+ lines.append(f" [{bar:<50}]")
108
+
109
+ if step.get("metadata"):
110
+ lines.append(f" Metadata: {step['metadata']}")
111
+
112
+ lines.append("")
113
+
114
+ if profile.metadata:
115
+ lines.append("Query Metadata:")
116
+ for key, value in profile.metadata.items():
117
+ lines.append(f" {key}: {value}")
118
+ lines.append("")
119
+
120
+ lines.append("=" * 60)
121
+ return "\n".join(lines)
122
+
123
+ def visualize_comparison(self, profiles: List[QueryProfile]) -> str:
124
+ """
125
+ Visualize comparison of multiple query profiles
126
+
127
+ Args:
128
+ profiles: List of profiles to compare
129
+
130
+ Returns:
131
+ Text visualization comparing profiles
132
+ """
133
+ if not profiles:
134
+ return "No profiles to compare"
135
+
136
+ lines = []
137
+ lines.append("=" * 60)
138
+ lines.append("QUERY PROFILE COMPARISON")
139
+ lines.append("=" * 60)
140
+
141
+ # Summary table
142
+ lines.append(f"{'Query ID':<20} {'Type':<15} {'Duration (ms)':<15}")
143
+ lines.append("-" * 60)
144
+
145
+ for profile in profiles:
146
+ duration = f"{profile.duration_ms:.2f}" if profile.duration_ms else "N/A"
147
+ lines.append(f"{profile.query_id:<20} {profile.query_type:<15} {duration:<15}")
148
+
149
+ lines.append("")
150
+
151
+ # Statistics
152
+ durations = [p.duration_ms for p in profiles if p.duration_ms]
153
+ if durations:
154
+ lines.append("Statistics:")
155
+ lines.append(f" Average: {sum(durations) / len(durations):.2f}ms")
156
+ lines.append(f" Min: {min(durations):.2f}ms")
157
+ lines.append(f" Max: {max(durations):.2f}ms")
158
+
159
+ lines.append("=" * 60)
160
+ return "\n".join(lines)
161
+
162
+ def export_to_json(self, profile: QueryProfile) -> Dict[str, Any]:
163
+ """
164
+ Export profile to JSON format
165
+
166
+ Args:
167
+ profile: Query profile to export
168
+
169
+ Returns:
170
+ Dictionary representation suitable for JSON export
171
+ """
172
+ return profile.to_dict()
173
+
174
+ def generate_flamegraph_data(self, profile: QueryProfile) -> List[Dict[str, Any]]:
175
+ """
176
+ Generate data for flamegraph visualization
177
+
178
+ Args:
179
+ profile: Query profile
180
+
181
+ Returns:
182
+ List of flamegraph data points
183
+ """
184
+ data = []
185
+
186
+ for step in profile.steps:
187
+ data.append(
188
+ {
189
+ "name": step["name"],
190
+ "value": step["duration_ms"],
191
+ "percentage": ((step["duration_ms"] / profile.duration_ms * 100) if profile.duration_ms else 0),
192
+ }
193
+ )
194
+
195
+ return data
@@ -0,0 +1,223 @@
1
+ """
2
+ Query Profiler for Knowledge Graph
3
+
4
+ Provides detailed profiling and timing metrics for graph queries.
5
+ """
6
+
7
+ import time
8
+ import logging
9
+ from typing import Dict, Any, List, Optional
10
+ from dataclasses import dataclass, field
11
+ from contextlib import asynccontextmanager
12
+ from datetime import datetime
13
+
14
+ logger = logging.getLogger(__name__)
15
+
16
+
17
+ @dataclass
18
+ class QueryProfile:
19
+ """
20
+ Profile data for a single query execution
21
+
22
+ Attributes:
23
+ query_id: Unique identifier for the query
24
+ query_type: Type of query (search, traverse, etc.)
25
+ start_time: When the query started
26
+ end_time: When the query completed
27
+ duration_ms: Total duration in milliseconds
28
+ steps: List of execution steps with timing
29
+ metadata: Additional query metadata
30
+ """
31
+
32
+ query_id: str
33
+ query_type: str
34
+ start_time: datetime
35
+ end_time: Optional[datetime] = None
36
+ duration_ms: Optional[float] = None
37
+ steps: List[Dict[str, Any]] = field(default_factory=list)
38
+ metadata: Dict[str, Any] = field(default_factory=dict)
39
+
40
+ def complete(self) -> None:
41
+ """Mark query as complete and calculate duration"""
42
+ self.end_time = datetime.utcnow()
43
+ if self.start_time:
44
+ delta = self.end_time - self.start_time
45
+ self.duration_ms = delta.total_seconds() * 1000
46
+
47
+ def add_step(
48
+ self,
49
+ name: str,
50
+ duration_ms: float,
51
+ metadata: Optional[Dict[str, Any]] = None,
52
+ ) -> None:
53
+ """Add an execution step"""
54
+ self.steps.append(
55
+ {
56
+ "name": name,
57
+ "duration_ms": duration_ms,
58
+ "metadata": metadata or {},
59
+ }
60
+ )
61
+
62
+ def to_dict(self) -> Dict[str, Any]:
63
+ """Convert to dictionary"""
64
+ return {
65
+ "query_id": self.query_id,
66
+ "query_type": self.query_type,
67
+ "start_time": self.start_time.isoformat(),
68
+ "end_time": self.end_time.isoformat() if self.end_time else None,
69
+ "duration_ms": self.duration_ms,
70
+ "steps": self.steps,
71
+ "metadata": self.metadata,
72
+ }
73
+
74
+
75
+ class QueryProfiler:
76
+ """
77
+ Query profiler for detailed performance analysis
78
+
79
+ Tracks query execution with step-by-step timing and metadata.
80
+
81
+ Example:
82
+ ```python
83
+ profiler = QueryProfiler()
84
+
85
+ # Profile a query
86
+ async with profiler.profile("search_query", "vector_search") as profile:
87
+ # Step 1
88
+ async with profiler.step(profile, "embedding_lookup"):
89
+ embedding = await get_embedding(query)
90
+
91
+ # Step 2
92
+ async with profiler.step(profile, "vector_search"):
93
+ results = await search(embedding)
94
+
95
+ # Get profile
96
+ profile_data = profiler.get_profile("search_query")
97
+ print(f"Total: {profile_data.duration_ms}ms")
98
+ for step in profile_data.steps:
99
+ print(f" {step['name']}: {step['duration_ms']}ms")
100
+ ```
101
+ """
102
+
103
+ def __init__(self, max_profiles: int = 1000):
104
+ """
105
+ Initialize query profiler
106
+
107
+ Args:
108
+ max_profiles: Maximum number of profiles to keep in memory
109
+ """
110
+ self.max_profiles = max_profiles
111
+ self.profiles: Dict[str, QueryProfile] = {}
112
+ self._profile_order: List[str] = []
113
+
114
+ @asynccontextmanager
115
+ async def profile(
116
+ self,
117
+ query_id: str,
118
+ query_type: str,
119
+ metadata: Optional[Dict[str, Any]] = None,
120
+ ):
121
+ """
122
+ Context manager for profiling a query
123
+
124
+ Args:
125
+ query_id: Unique identifier for the query
126
+ query_type: Type of query
127
+ metadata: Additional metadata
128
+
129
+ Yields:
130
+ QueryProfile object
131
+ """
132
+ # Create profile
133
+ profile = QueryProfile(
134
+ query_id=query_id,
135
+ query_type=query_type,
136
+ start_time=datetime.utcnow(),
137
+ metadata=metadata or {},
138
+ )
139
+
140
+ try:
141
+ yield profile
142
+ finally:
143
+ # Complete profile
144
+ profile.complete()
145
+
146
+ # Store profile
147
+ self._store_profile(profile)
148
+
149
+ @asynccontextmanager
150
+ async def step(
151
+ self,
152
+ profile: QueryProfile,
153
+ step_name: str,
154
+ metadata: Optional[Dict[str, Any]] = None,
155
+ ):
156
+ """
157
+ Context manager for profiling a query step
158
+
159
+ Args:
160
+ profile: Parent query profile
161
+ step_name: Name of the step
162
+ metadata: Additional metadata
163
+ """
164
+ start_time = time.perf_counter()
165
+
166
+ try:
167
+ yield
168
+ finally:
169
+ end_time = time.perf_counter()
170
+ duration_ms = (end_time - start_time) * 1000
171
+ profile.add_step(step_name, duration_ms, metadata)
172
+
173
+ def _store_profile(self, profile: QueryProfile) -> None:
174
+ """Store profile with LRU eviction"""
175
+ # Add to storage
176
+ self.profiles[profile.query_id] = profile
177
+ self._profile_order.append(profile.query_id)
178
+
179
+ # Evict oldest if over limit
180
+ while len(self._profile_order) > self.max_profiles:
181
+ oldest_id = self._profile_order.pop(0)
182
+ if oldest_id in self.profiles:
183
+ del self.profiles[oldest_id]
184
+
185
+ def get_profile(self, query_id: str) -> Optional[QueryProfile]:
186
+ """Get profile by query ID"""
187
+ return self.profiles.get(query_id)
188
+
189
+ def get_all_profiles(self) -> List[QueryProfile]:
190
+ """Get all stored profiles"""
191
+ return list(self.profiles.values())
192
+
193
+ def get_stats(self) -> Dict[str, Any]:
194
+ """Get profiling statistics"""
195
+ if not self.profiles:
196
+ return {
197
+ "total_queries": 0,
198
+ "avg_duration_ms": 0,
199
+ "min_duration_ms": 0,
200
+ "max_duration_ms": 0,
201
+ }
202
+
203
+ durations = [p.duration_ms for p in self.profiles.values() if p.duration_ms]
204
+
205
+ return {
206
+ "total_queries": len(self.profiles),
207
+ "avg_duration_ms": (sum(durations) / len(durations) if durations else 0),
208
+ "min_duration_ms": min(durations) if durations else 0,
209
+ "max_duration_ms": max(durations) if durations else 0,
210
+ "query_types": self._get_query_type_stats(),
211
+ }
212
+
213
+ def _get_query_type_stats(self) -> Dict[str, int]:
214
+ """Get statistics by query type"""
215
+ stats: Dict[str, int] = {}
216
+ for profile in self.profiles.values():
217
+ stats[profile.query_type] = stats.get(profile.query_type, 0) + 1
218
+ return stats
219
+
220
+ def clear(self) -> None:
221
+ """Clear all profiles"""
222
+ self.profiles.clear()
223
+ self._profile_order.clear()
@@ -0,0 +1,27 @@
1
+ """
2
+ Knowledge Graph Reasoning Module
3
+
4
+ Provides query planning, multi-hop reasoning, and inference capabilities.
5
+ """
6
+
7
+ from aiecs.application.knowledge_graph.reasoning.query_planner import (
8
+ QueryPlanner,
9
+ )
10
+ from aiecs.application.knowledge_graph.reasoning.reasoning_engine import (
11
+ ReasoningEngine,
12
+ )
13
+ from aiecs.application.knowledge_graph.reasoning.inference_engine import (
14
+ InferenceEngine,
15
+ InferenceCache,
16
+ )
17
+ from aiecs.application.knowledge_graph.reasoning.evidence_synthesis import (
18
+ EvidenceSynthesizer,
19
+ )
20
+
21
+ __all__ = [
22
+ "QueryPlanner",
23
+ "ReasoningEngine",
24
+ "InferenceEngine",
25
+ "InferenceCache",
26
+ "EvidenceSynthesizer",
27
+ ]