aiecs 1.0.1__py3-none-any.whl → 1.7.17__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 +435 -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 +3949 -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 +1731 -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 +894 -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 +377 -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 +230 -37
  195. aiecs/llm/client_resolver.py +155 -0
  196. aiecs/llm/clients/__init__.py +38 -0
  197. aiecs/llm/clients/base_client.py +328 -0
  198. aiecs/llm/clients/google_function_calling_mixin.py +415 -0
  199. aiecs/llm/clients/googleai_client.py +314 -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 +1186 -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 +1464 -0
  269. aiecs/tools/docs/document_layout_tool.py +1160 -0
  270. aiecs/tools/docs/document_parser_tool.py +1016 -0
  271. aiecs/tools/docs/document_writer_tool.py +2008 -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 +220 -141
  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.17.dist-info}/METADATA +52 -15
  321. aiecs-1.7.17.dist-info/RECORD +337 -0
  322. aiecs-1.7.17.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.17.dist-info}/WHEEL +0 -0
  339. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/licenses/LICENSE +0 -0
  340. {aiecs-1.0.1.dist-info → aiecs-1.7.17.dist-info}/top_level.txt +0 -0
@@ -14,9 +14,11 @@ from datetime import datetime
14
14
  @dataclass
15
15
  class ConversationParticipant:
16
16
  """Represents a participant in a conversation."""
17
+
17
18
  participant_id: str
18
19
  participant_type: str # 'user', 'master_controller', 'agent'
19
- participant_role: Optional[str] = None # For agents: 'writer', 'researcher', etc.
20
+ # For agents: 'writer', 'researcher', etc.
21
+ participant_role: Optional[str] = None
20
22
  metadata: Dict[str, Any] = field(default_factory=dict)
21
23
 
22
24
  def __post_init__(self):
@@ -27,18 +29,19 @@ class ConversationParticipant:
27
29
  raise ValueError("participant_type cannot be empty")
28
30
 
29
31
  # Validate participant types
30
- valid_types = {'user', 'master_controller', 'agent'}
32
+ valid_types = {"user", "master_controller", "agent"}
31
33
  if self.participant_type not in valid_types:
32
34
  raise ValueError(f"participant_type must be one of {valid_types}")
33
35
 
34
36
  # For agents, role should be specified
35
- if self.participant_type == 'agent' and not self.participant_role:
37
+ if self.participant_type == "agent" and not self.participant_role:
36
38
  raise ValueError("participant_role is required for agent participants")
37
39
 
38
40
 
39
41
  @dataclass
40
42
  class ConversationSession:
41
43
  """Represents an isolated conversation session between participants."""
44
+
42
45
  session_id: str
43
46
  participants: List[ConversationParticipant]
44
47
  session_type: str # 'user_to_mc', 'mc_to_agent', 'agent_to_agent', 'user_to_agent'
@@ -54,7 +57,12 @@ class ConversationSession:
54
57
  raise ValueError("participants list cannot be empty")
55
58
 
56
59
  # Validate session types
57
- valid_session_types = {'user_to_mc', 'mc_to_agent', 'agent_to_agent', 'user_to_agent'}
60
+ valid_session_types = {
61
+ "user_to_mc",
62
+ "mc_to_agent",
63
+ "agent_to_agent",
64
+ "user_to_agent",
65
+ }
58
66
  if self.session_type not in valid_session_types:
59
67
  raise ValueError(f"session_type must be one of {valid_session_types}")
60
68
 
@@ -65,40 +73,46 @@ class ConversationSession:
65
73
  """Validate that participants match the session type."""
66
74
  participant_types = [p.participant_type for p in self.participants]
67
75
 
68
- if self.session_type == 'user_to_mc':
69
- expected_types = {'user', 'master_controller'}
76
+ if self.session_type == "user_to_mc":
77
+ expected_types = {"user", "master_controller"}
70
78
  if not expected_types.issubset(set(participant_types)):
71
- raise ValueError(f"user_to_mc session requires user and master_controller participants")
79
+ raise ValueError("user_to_mc session requires user and master_controller participants")
72
80
 
73
- elif self.session_type == 'mc_to_agent':
74
- expected_types = {'master_controller', 'agent'}
81
+ elif self.session_type == "mc_to_agent":
82
+ expected_types = {"master_controller", "agent"}
75
83
  if not expected_types.issubset(set(participant_types)):
76
- raise ValueError(f"mc_to_agent session requires master_controller and agent participants")
84
+ raise ValueError("mc_to_agent session requires master_controller and agent participants")
77
85
 
78
- elif self.session_type == 'agent_to_agent':
79
- agent_count = sum(1 for p in self.participants if p.participant_type == 'agent')
86
+ elif self.session_type == "agent_to_agent":
87
+ agent_count = sum(1 for p in self.participants if p.participant_type == "agent")
80
88
  if agent_count < 2:
81
- raise ValueError(f"agent_to_agent session requires at least 2 agent participants")
89
+ raise ValueError("agent_to_agent session requires at least 2 agent participants")
82
90
 
83
- elif self.session_type == 'user_to_agent':
84
- expected_types = {'user', 'agent'}
91
+ elif self.session_type == "user_to_agent":
92
+ expected_types = {"user", "agent"}
85
93
  if not expected_types.issubset(set(participant_types)):
86
- raise ValueError(f"user_to_agent session requires user and agent participants")
94
+ raise ValueError("user_to_agent session requires user and agent participants")
87
95
 
88
96
  def generate_session_key(self) -> str:
89
97
  """Generate a unique session key for conversation isolation."""
90
- if self.session_type == 'user_to_mc':
98
+ if self.session_type == "user_to_mc":
91
99
  return self.session_id
92
- elif self.session_type == 'mc_to_agent':
93
- agent_role = next((p.participant_role for p in self.participants if p.participant_type == 'agent'), 'unknown')
100
+ elif self.session_type == "mc_to_agent":
101
+ agent_role = next(
102
+ (p.participant_role for p in self.participants if p.participant_type == "agent"),
103
+ "unknown",
104
+ )
94
105
  return f"{self.session_id}_mc_to_{agent_role}"
95
- elif self.session_type == 'agent_to_agent':
96
- agent_roles = [p.participant_role for p in self.participants if p.participant_type == 'agent']
106
+ elif self.session_type == "agent_to_agent":
107
+ agent_roles = [p.participant_role for p in self.participants if p.participant_type == "agent"]
97
108
  if len(agent_roles) >= 2:
98
109
  return f"{self.session_id}_{agent_roles[0]}_to_{agent_roles[1]}"
99
110
  return f"{self.session_id}_agent_to_agent"
100
- elif self.session_type == 'user_to_agent':
101
- agent_role = next((p.participant_role for p in self.participants if p.participant_type == 'agent'), 'unknown')
111
+ elif self.session_type == "user_to_agent":
112
+ agent_role = next(
113
+ (p.participant_role for p in self.participants if p.participant_type == "agent"),
114
+ "unknown",
115
+ )
102
116
  return f"{self.session_id}_user_to_{agent_role}"
103
117
  else:
104
118
  return self.session_id
@@ -124,25 +138,25 @@ class ConversationSession:
124
138
  "participant_id": p.participant_id,
125
139
  "participant_type": p.participant_type,
126
140
  "participant_role": p.participant_role,
127
- "metadata": p.metadata
141
+ "metadata": p.metadata,
128
142
  }
129
143
  for p in self.participants
130
144
  ],
131
145
  "session_type": self.session_type,
132
146
  "created_at": self.created_at.isoformat(),
133
147
  "last_activity": self.last_activity.isoformat(),
134
- "metadata": self.metadata
148
+ "metadata": self.metadata,
135
149
  }
136
150
 
137
151
  @classmethod
138
- def from_dict(cls, data: Dict[str, Any]) -> 'ConversationSession':
152
+ def from_dict(cls, data: Dict[str, Any]) -> "ConversationSession":
139
153
  """Create from dictionary."""
140
154
  participants = [
141
155
  ConversationParticipant(
142
156
  participant_id=p["participant_id"],
143
157
  participant_type=p["participant_type"],
144
158
  participant_role=p.get("participant_role"),
145
- metadata=p.get("metadata", {})
159
+ metadata=p.get("metadata", {}),
146
160
  )
147
161
  for p in data["participants"]
148
162
  ]
@@ -153,13 +167,14 @@ class ConversationSession:
153
167
  session_type=data["session_type"],
154
168
  created_at=datetime.fromisoformat(data["created_at"]),
155
169
  last_activity=datetime.fromisoformat(data["last_activity"]),
156
- metadata=data.get("metadata", {})
170
+ metadata=data.get("metadata", {}),
157
171
  )
158
172
 
159
173
 
160
174
  @dataclass
161
175
  class AgentCommunicationMessage:
162
176
  """Message for agent-to-agent or controller-to-agent communication."""
177
+
163
178
  message_id: str
164
179
  session_key: str
165
180
  sender_id: str
@@ -169,7 +184,8 @@ class AgentCommunicationMessage:
169
184
  recipient_type: str # 'agent', 'master_controller', 'user'
170
185
  recipient_role: Optional[str] # For agents
171
186
  content: str
172
- message_type: str # 'task_assignment', 'result_report', 'collaboration_request', 'feedback', 'communication'
187
+ # 'task_assignment', 'result_report', 'collaboration_request', 'feedback', 'communication'
188
+ message_type: str
173
189
  timestamp: datetime
174
190
  metadata: Dict[str, Any] = field(default_factory=dict)
175
191
 
@@ -188,9 +204,16 @@ class AgentCommunicationMessage:
188
204
 
189
205
  # Validate message types
190
206
  valid_message_types = {
191
- 'task_assignment', 'result_report', 'collaboration_request',
192
- 'feedback', 'communication', 'status_update', 'error_report',
193
- 'task_completion', 'progress_update', 'clarification_request'
207
+ "task_assignment",
208
+ "result_report",
209
+ "collaboration_request",
210
+ "feedback",
211
+ "communication",
212
+ "status_update",
213
+ "error_report",
214
+ "task_completion",
215
+ "progress_update",
216
+ "clarification_request",
194
217
  }
195
218
  if self.message_type not in valid_message_types:
196
219
  raise ValueError(f"message_type must be one of {valid_message_types}")
@@ -211,8 +234,8 @@ class AgentCommunicationMessage:
211
234
  "recipient_id": self.recipient_id,
212
235
  "recipient_type": self.recipient_type,
213
236
  "recipient_role": self.recipient_role,
214
- "message_type": self.message_type
215
- }
237
+ "message_type": self.message_type,
238
+ },
216
239
  }
217
240
 
218
241
  def to_dict(self) -> Dict[str, Any]:
@@ -229,11 +252,11 @@ class AgentCommunicationMessage:
229
252
  "content": self.content,
230
253
  "message_type": self.message_type,
231
254
  "timestamp": self.timestamp.isoformat(),
232
- "metadata": self.metadata
255
+ "metadata": self.metadata,
233
256
  }
234
257
 
235
258
  @classmethod
236
- def from_dict(cls, data: Dict[str, Any]) -> 'AgentCommunicationMessage':
259
+ def from_dict(cls, data: Dict[str, Any]) -> "AgentCommunicationMessage":
237
260
  """Create from dictionary."""
238
261
  return cls(
239
262
  message_id=data["message_id"],
@@ -247,13 +270,18 @@ class AgentCommunicationMessage:
247
270
  content=data["content"],
248
271
  message_type=data["message_type"],
249
272
  timestamp=datetime.fromisoformat(data["timestamp"]),
250
- metadata=data.get("metadata", {})
273
+ metadata=data.get("metadata", {}),
251
274
  )
252
275
 
253
276
 
254
277
  # Conversation isolation utility functions
255
278
 
256
- def create_session_key(session_id: str, session_type: str, participants: List[ConversationParticipant]) -> str:
279
+
280
+ def create_session_key(
281
+ session_id: str,
282
+ session_type: str,
283
+ participants: List[ConversationParticipant],
284
+ ) -> str:
257
285
  """
258
286
  Utility function to create session keys for conversation isolation.
259
287
 
@@ -265,18 +293,24 @@ def create_session_key(session_id: str, session_type: str, participants: List[Co
265
293
  Returns:
266
294
  Generated session key
267
295
  """
268
- if session_type == 'user_to_mc':
296
+ if session_type == "user_to_mc":
269
297
  return session_id
270
- elif session_type == 'mc_to_agent':
271
- agent_role = next((p.participant_role for p in participants if p.participant_type == 'agent'), 'unknown')
298
+ elif session_type == "mc_to_agent":
299
+ agent_role = next(
300
+ (p.participant_role for p in participants if p.participant_type == "agent"),
301
+ "unknown",
302
+ )
272
303
  return f"{session_id}_mc_to_{agent_role}"
273
- elif session_type == 'agent_to_agent':
274
- agent_roles = [p.participant_role for p in participants if p.participant_type == 'agent']
304
+ elif session_type == "agent_to_agent":
305
+ agent_roles = [p.participant_role for p in participants if p.participant_type == "agent"]
275
306
  if len(agent_roles) >= 2:
276
307
  return f"{session_id}_{agent_roles[0]}_to_{agent_roles[1]}"
277
308
  return f"{session_id}_agent_to_agent"
278
- elif session_type == 'user_to_agent':
279
- agent_role = next((p.participant_role for p in participants if p.participant_type == 'agent'), 'unknown')
309
+ elif session_type == "user_to_agent":
310
+ agent_role = next(
311
+ (p.participant_role for p in participants if p.participant_type == "agent"),
312
+ "unknown",
313
+ )
280
314
  return f"{session_id}_user_to_{agent_role}"
281
315
  else:
282
316
  return session_id
@@ -293,14 +327,14 @@ def validate_conversation_isolation_pattern(session_key: str, expected_pattern:
293
327
  Returns:
294
328
  True if the pattern matches, False otherwise
295
329
  """
296
- if expected_pattern == 'user_to_mc':
330
+ if expected_pattern == "user_to_mc":
297
331
  # Should be just the base session_id
298
- return '_' not in session_key or not any(x in session_key for x in ['_mc_to_', '_to_', '_user_to_'])
299
- elif expected_pattern == 'mc_to_agent':
300
- return '_mc_to_' in session_key
301
- elif expected_pattern == 'agent_to_agent':
302
- return '_to_' in session_key and '_mc_to_' not in session_key and '_user_to_' not in session_key
303
- elif expected_pattern == 'user_to_agent':
304
- return '_user_to_' in session_key
332
+ return "_" not in session_key or not any(x in session_key for x in ["_mc_to_", "_to_", "_user_to_"])
333
+ elif expected_pattern == "mc_to_agent":
334
+ return "_mc_to_" in session_key
335
+ elif expected_pattern == "agent_to_agent":
336
+ return "_to_" in session_key and "_mc_to_" not in session_key and "_user_to_" not in session_key
337
+ elif expected_pattern == "user_to_agent":
338
+ return "_user_to_" in session_key
305
339
  else:
306
340
  return False