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
@@ -0,0 +1,648 @@
1
+ """
2
+ Collaborative Workflow Engine
3
+
4
+ Orchestrates collaborative workflows within agent communities,
5
+ including brainstorming, problem-solving, and knowledge synthesis.
6
+ """
7
+
8
+ import logging
9
+ from datetime import datetime
10
+ from typing import Dict, List, Any, Optional, TYPE_CHECKING
11
+
12
+ if TYPE_CHECKING:
13
+ from .community_manager import CommunityManager
14
+ from .resource_manager import ResourceManager
15
+ from .decision_engine import DecisionEngine
16
+ import asyncio
17
+
18
+ from .models.community_models import CollaborationSession
19
+ from .exceptions import CommunityValidationError as TaskValidationError
20
+
21
+ logger = logging.getLogger(__name__)
22
+
23
+
24
+ class CollaborativeWorkflowEngine:
25
+ """
26
+ Engine for orchestrating collaborative workflows within agent communities.
27
+ """
28
+
29
+ def __init__(
30
+ self,
31
+ community_manager: Optional["CommunityManager"] = None,
32
+ resource_manager: Optional["ResourceManager"] = None,
33
+ decision_engine: Optional["DecisionEngine"] = None,
34
+ ) -> None:
35
+ """
36
+ Initialize the collaborative workflow engine.
37
+
38
+ Args:
39
+ community_manager: Reference to the community manager
40
+ resource_manager: Reference to the resource manager
41
+ decision_engine: Reference to the decision engine
42
+ """
43
+ self.community_manager = community_manager
44
+ self.resource_manager = resource_manager
45
+ self.decision_engine = decision_engine
46
+
47
+ # Active collaborative sessions
48
+ self.active_sessions: Dict[str, CollaborationSession] = {}
49
+
50
+ # Workflow templates
51
+ self.workflow_templates = {
52
+ "brainstorming": self._brainstorming_workflow,
53
+ "problem_solving": self._problem_solving_workflow,
54
+ "knowledge_synthesis": self._knowledge_synthesis_workflow,
55
+ "decision_making": self._decision_making_workflow,
56
+ "resource_creation": self._resource_creation_workflow,
57
+ "peer_review": self._peer_review_workflow,
58
+ "consensus_building": self._consensus_building_workflow,
59
+ }
60
+
61
+ logger.info("Collaborative workflow engine initialized")
62
+
63
+ async def start_collaborative_session(
64
+ self,
65
+ community_id: str,
66
+ session_leader_id: str,
67
+ session_type: str,
68
+ purpose: str,
69
+ participants: List[str],
70
+ agenda: Optional[List[str]] = None,
71
+ duration_minutes: int = 60,
72
+ session_config: Optional[Dict[str, Any]] = None,
73
+ ) -> str:
74
+ """
75
+ Start a collaborative session.
76
+
77
+ Args:
78
+ community_id: ID of the community
79
+ session_leader_id: ID of the session leader
80
+ session_type: Type of collaborative session
81
+ purpose: Purpose of the session
82
+ participants: List of participant member IDs
83
+ agenda: Optional agenda items
84
+ duration_minutes: Expected duration in minutes
85
+ session_config: Optional session configuration
86
+
87
+ Returns:
88
+ Session ID
89
+ """
90
+ if not self.community_manager:
91
+ raise TaskValidationError("Community manager not available")
92
+
93
+ # Validate community and participants
94
+ community = self.community_manager.communities.get(community_id)
95
+ if not community:
96
+ raise TaskValidationError(f"Community not found: {community_id}")
97
+
98
+ # Create collaboration session
99
+ session = CollaborationSession(
100
+ community_id=community_id,
101
+ participants=participants,
102
+ session_leader=session_leader_id,
103
+ purpose=purpose,
104
+ session_type=session_type,
105
+ ended_at=None,
106
+ agenda=agenda or [],
107
+ metadata=session_config or {},
108
+ )
109
+
110
+ self.active_sessions[session.session_id] = session
111
+
112
+ # Execute workflow template if available
113
+ if session_type in self.workflow_templates:
114
+ workflow_func = self.workflow_templates[session_type]
115
+ await workflow_func(session)
116
+
117
+ logger.info(f"Started collaborative session: {session_type} ({session.session_id})")
118
+ return session.session_id
119
+
120
+ async def _brainstorming_workflow(self, session: CollaborationSession) -> None:
121
+ """
122
+ Execute brainstorming workflow.
123
+
124
+ Phases:
125
+ 1. Idea generation
126
+ 2. Idea collection and categorization
127
+ 3. Idea evaluation and ranking
128
+ 4. Action item creation
129
+ """
130
+ logger.info(f"Starting brainstorming workflow for session {session.session_id}")
131
+
132
+ # Phase 1: Idea Generation
133
+ await self._execute_phase(
134
+ session,
135
+ "idea_generation",
136
+ {
137
+ "instructions": "Generate creative ideas related to the session purpose",
138
+ "time_limit_minutes": 15,
139
+ "parallel_thinking": True,
140
+ },
141
+ )
142
+
143
+ # Phase 2: Idea Collection
144
+ await self._execute_phase(
145
+ session,
146
+ "idea_collection",
147
+ {
148
+ "instructions": "Collect and categorize all generated ideas",
149
+ "time_limit_minutes": 10,
150
+ "collaborative": True,
151
+ },
152
+ )
153
+
154
+ # Phase 3: Idea Evaluation
155
+ await self._execute_phase(
156
+ session,
157
+ "idea_evaluation",
158
+ {
159
+ "instructions": "Evaluate and rank ideas based on feasibility and impact",
160
+ "time_limit_minutes": 15,
161
+ "voting_enabled": True,
162
+ },
163
+ )
164
+
165
+ # Phase 4: Action Planning
166
+ await self._execute_phase(
167
+ session,
168
+ "action_planning",
169
+ {
170
+ "instructions": "Create action items for top-ranked ideas",
171
+ "time_limit_minutes": 10,
172
+ "assign_responsibilities": True,
173
+ },
174
+ )
175
+
176
+ async def _problem_solving_workflow(self, session: CollaborationSession) -> None:
177
+ """
178
+ Execute problem-solving workflow.
179
+
180
+ Phases:
181
+ 1. Problem definition and analysis
182
+ 2. Root cause analysis
183
+ 3. Solution brainstorming
184
+ 4. Solution evaluation and selection
185
+ 5. Implementation planning
186
+ """
187
+ logger.info(f"Starting problem-solving workflow for session {session.session_id}")
188
+
189
+ # Phase 1: Problem Definition
190
+ await self._execute_phase(
191
+ session,
192
+ "problem_definition",
193
+ {
194
+ "instructions": "Define the problem clearly and analyze its scope",
195
+ "time_limit_minutes": 15,
196
+ "structured_analysis": True,
197
+ },
198
+ )
199
+
200
+ # Phase 2: Root Cause Analysis
201
+ await self._execute_phase(
202
+ session,
203
+ "root_cause_analysis",
204
+ {
205
+ "instructions": "Identify root causes using systematic analysis",
206
+ "time_limit_minutes": 20,
207
+ "analysis_methods": ["5_whys", "fishbone", "pareto"],
208
+ },
209
+ )
210
+
211
+ # Phase 3: Solution Brainstorming
212
+ await self._execute_phase(
213
+ session,
214
+ "solution_brainstorming",
215
+ {
216
+ "instructions": "Generate potential solutions for identified root causes",
217
+ "time_limit_minutes": 20,
218
+ "creative_thinking": True,
219
+ },
220
+ )
221
+
222
+ # Phase 4: Solution Evaluation
223
+ await self._execute_phase(
224
+ session,
225
+ "solution_evaluation",
226
+ {
227
+ "instructions": "Evaluate solutions based on criteria matrix",
228
+ "time_limit_minutes": 15,
229
+ "evaluation_criteria": [
230
+ "feasibility",
231
+ "impact",
232
+ "cost",
233
+ "timeline",
234
+ ],
235
+ },
236
+ )
237
+
238
+ # Phase 5: Implementation Planning
239
+ await self._execute_phase(
240
+ session,
241
+ "implementation_planning",
242
+ {
243
+ "instructions": "Create detailed implementation plan for selected solution",
244
+ "time_limit_minutes": 15,
245
+ "create_timeline": True,
246
+ },
247
+ )
248
+
249
+ async def _knowledge_synthesis_workflow(self, session: CollaborationSession) -> None:
250
+ """
251
+ Execute knowledge synthesis workflow.
252
+
253
+ Phases:
254
+ 1. Knowledge gathering
255
+ 2. Information analysis
256
+ 3. Pattern identification
257
+ 4. Synthesis and integration
258
+ 5. Knowledge artifact creation
259
+ """
260
+ logger.info(f"Starting knowledge synthesis workflow for session {session.session_id}")
261
+
262
+ # Phase 1: Knowledge Gathering
263
+ await self._execute_phase(
264
+ session,
265
+ "knowledge_gathering",
266
+ {
267
+ "instructions": "Gather relevant knowledge from community resources and expertise",
268
+ "time_limit_minutes": 20,
269
+ "resource_search": True,
270
+ },
271
+ )
272
+
273
+ # Phase 2: Information Analysis
274
+ await self._execute_phase(
275
+ session,
276
+ "information_analysis",
277
+ {
278
+ "instructions": "Analyze gathered information for relevance and quality",
279
+ "time_limit_minutes": 15,
280
+ "quality_assessment": True,
281
+ },
282
+ )
283
+
284
+ # Phase 3: Pattern Identification
285
+ await self._execute_phase(
286
+ session,
287
+ "pattern_identification",
288
+ {
289
+ "instructions": "Identify patterns, themes, and connections in the information",
290
+ "time_limit_minutes": 20,
291
+ "pattern_analysis": True,
292
+ },
293
+ )
294
+
295
+ # Phase 4: Synthesis
296
+ await self._execute_phase(
297
+ session,
298
+ "synthesis",
299
+ {
300
+ "instructions": "Synthesize information into coherent knowledge structure",
301
+ "time_limit_minutes": 25,
302
+ "collaborative_editing": True,
303
+ },
304
+ )
305
+
306
+ # Phase 5: Artifact Creation
307
+ await self._execute_phase(
308
+ session,
309
+ "artifact_creation",
310
+ {
311
+ "instructions": "Create knowledge artifacts for community sharing",
312
+ "time_limit_minutes": 15,
313
+ "create_resources": True,
314
+ },
315
+ )
316
+
317
+ async def _decision_making_workflow(self, session: CollaborationSession) -> None:
318
+ """
319
+ Execute decision-making workflow.
320
+
321
+ Phases:
322
+ 1. Decision framing
323
+ 2. Option generation
324
+ 3. Criteria definition
325
+ 4. Option evaluation
326
+ 5. Decision and commitment
327
+ """
328
+ logger.info(f"Starting decision-making workflow for session {session.session_id}")
329
+
330
+ # Phase 1: Decision Framing
331
+ await self._execute_phase(
332
+ session,
333
+ "decision_framing",
334
+ {
335
+ "instructions": "Frame the decision clearly with context and constraints",
336
+ "time_limit_minutes": 15,
337
+ "structured_framing": True,
338
+ },
339
+ )
340
+
341
+ # Phase 2: Option Generation
342
+ await self._execute_phase(
343
+ session,
344
+ "option_generation",
345
+ {
346
+ "instructions": "Generate multiple decision options",
347
+ "time_limit_minutes": 20,
348
+ "creative_options": True,
349
+ },
350
+ )
351
+
352
+ # Phase 3: Criteria Definition
353
+ await self._execute_phase(
354
+ session,
355
+ "criteria_definition",
356
+ {
357
+ "instructions": "Define evaluation criteria and their weights",
358
+ "time_limit_minutes": 10,
359
+ "criteria_weighting": True,
360
+ },
361
+ )
362
+
363
+ # Phase 4: Option Evaluation
364
+ await self._execute_phase(
365
+ session,
366
+ "option_evaluation",
367
+ {
368
+ "instructions": "Evaluate options against defined criteria",
369
+ "time_limit_minutes": 20,
370
+ "systematic_evaluation": True,
371
+ },
372
+ )
373
+
374
+ # Phase 5: Decision Making
375
+ await self._execute_phase(
376
+ session,
377
+ "decision_making",
378
+ {
379
+ "instructions": "Make final decision and create commitment plan",
380
+ "time_limit_minutes": 15,
381
+ "consensus_building": True,
382
+ "create_decision": True,
383
+ },
384
+ )
385
+
386
+ async def _resource_creation_workflow(self, session: CollaborationSession) -> None:
387
+ """Execute resource creation workflow."""
388
+ logger.info(f"Starting resource creation workflow for session {session.session_id}")
389
+
390
+ # Phase 1: Resource Planning
391
+ await self._execute_phase(
392
+ session,
393
+ "resource_planning",
394
+ {
395
+ "instructions": "Plan the resource to be created",
396
+ "time_limit_minutes": 15,
397
+ },
398
+ )
399
+
400
+ # Phase 2: Collaborative Creation
401
+ await self._execute_phase(
402
+ session,
403
+ "collaborative_creation",
404
+ {
405
+ "instructions": "Collaboratively create the resource",
406
+ "time_limit_minutes": 30,
407
+ "collaborative_editing": True,
408
+ },
409
+ )
410
+
411
+ # Phase 3: Review and Refinement
412
+ await self._execute_phase(
413
+ session,
414
+ "review_refinement",
415
+ {
416
+ "instructions": "Review and refine the created resource",
417
+ "time_limit_minutes": 15,
418
+ "peer_review": True,
419
+ },
420
+ )
421
+
422
+ async def _peer_review_workflow(self, session: CollaborationSession) -> None:
423
+ """
424
+ Execute peer review workflow.
425
+
426
+ Phases:
427
+ 1. Reviewer assignment
428
+ 2. Individual review
429
+ 3. Review collection and synthesis
430
+ 4. Feedback integration
431
+ 5. Final approval
432
+ """
433
+ logger.info(f"Starting peer review workflow for session {session.session_id}")
434
+
435
+ # Phase 1: Reviewer Assignment
436
+ await self._execute_phase(
437
+ session,
438
+ "reviewer_assignment",
439
+ {
440
+ "instructions": "Assign reviewers based on expertise and availability",
441
+ "time_limit_minutes": 5,
442
+ "min_reviewers": 2,
443
+ "max_reviewers": 5,
444
+ },
445
+ )
446
+
447
+ # Phase 2: Individual Review
448
+ await self._execute_phase(
449
+ session,
450
+ "individual_review",
451
+ {
452
+ "instructions": "Conduct independent review of the material",
453
+ "time_limit_minutes": 30,
454
+ "review_criteria": [
455
+ "accuracy",
456
+ "completeness",
457
+ "clarity",
458
+ "quality",
459
+ ],
460
+ "parallel_reviews": True,
461
+ },
462
+ )
463
+
464
+ # Phase 3: Review Collection
465
+ await self._execute_phase(
466
+ session,
467
+ "review_collection",
468
+ {
469
+ "instructions": "Collect and synthesize all review feedback",
470
+ "time_limit_minutes": 15,
471
+ "identify_conflicts": True,
472
+ "aggregate_scores": True,
473
+ },
474
+ )
475
+
476
+ # Phase 4: Feedback Integration
477
+ await self._execute_phase(
478
+ session,
479
+ "feedback_integration",
480
+ {
481
+ "instructions": "Integrate reviewer feedback into the material",
482
+ "time_limit_minutes": 20,
483
+ "collaborative_editing": True,
484
+ "track_changes": True,
485
+ },
486
+ )
487
+
488
+ # Phase 5: Final Approval
489
+ await self._execute_phase(
490
+ session,
491
+ "final_approval",
492
+ {
493
+ "instructions": "Reviewers provide final approval or request changes",
494
+ "time_limit_minutes": 10,
495
+ "require_consensus": True,
496
+ "approval_threshold": 0.8,
497
+ },
498
+ )
499
+
500
+ async def _consensus_building_workflow(self, session: CollaborationSession) -> None:
501
+ """
502
+ Execute consensus building workflow.
503
+
504
+ Phases:
505
+ 1. Issue presentation and clarification
506
+ 2. Discussion round 1 - Position sharing
507
+ 3. Common ground identification
508
+ 4. Proposal refinement
509
+ 5. Convergence check and agreement
510
+ """
511
+ logger.info(f"Starting consensus building workflow for session {session.session_id}")
512
+
513
+ # Phase 1: Issue Presentation
514
+ await self._execute_phase(
515
+ session,
516
+ "issue_presentation",
517
+ {
518
+ "instructions": "Present the issue clearly and allow clarification questions",
519
+ "time_limit_minutes": 15,
520
+ "clarification_enabled": True,
521
+ },
522
+ )
523
+
524
+ # Phase 2: Position Sharing
525
+ await self._execute_phase(
526
+ session,
527
+ "position_sharing",
528
+ {
529
+ "instructions": "Each member shares their position and rationale",
530
+ "time_limit_minutes": 20,
531
+ "equal_participation": True,
532
+ "capture_positions": True,
533
+ },
534
+ )
535
+
536
+ # Phase 3: Common Ground Identification
537
+ await self._execute_phase(
538
+ session,
539
+ "common_ground_identification",
540
+ {
541
+ "instructions": "Identify areas of agreement and shared values",
542
+ "time_limit_minutes": 15,
543
+ "find_overlaps": True,
544
+ "identify_blockers": True,
545
+ },
546
+ )
547
+
548
+ # Phase 4: Proposal Refinement
549
+ await self._execute_phase(
550
+ session,
551
+ "proposal_refinement",
552
+ {
553
+ "instructions": "Refine proposals to address concerns and maximize agreement",
554
+ "time_limit_minutes": 25,
555
+ "iterative_refinement": True,
556
+ "test_proposals": True,
557
+ },
558
+ )
559
+
560
+ # Phase 5: Convergence Check
561
+ await self._execute_phase(
562
+ session,
563
+ "convergence_check",
564
+ {
565
+ "instructions": "Check for consensus and finalize agreement",
566
+ "time_limit_minutes": 15,
567
+ "consensus_threshold": 0.9,
568
+ "allow_dissent": True,
569
+ "document_agreement": True,
570
+ },
571
+ )
572
+
573
+ async def _execute_phase(
574
+ self,
575
+ session: CollaborationSession,
576
+ phase_name: str,
577
+ phase_config: Dict[str, Any],
578
+ ) -> None:
579
+ """
580
+ Execute a workflow phase.
581
+
582
+ Args:
583
+ session: Collaboration session
584
+ phase_name: Name of the phase
585
+ phase_config: Phase configuration
586
+ """
587
+ logger.info(f"Executing phase '{phase_name}' for session {session.session_id}")
588
+
589
+ # Record phase execution
590
+ phase_result = {
591
+ "phase_name": phase_name,
592
+ "started_at": datetime.utcnow().isoformat(),
593
+ "config": phase_config,
594
+ "participants": session.participants,
595
+ "outputs": [],
596
+ }
597
+
598
+ # Simulate phase execution (in real implementation, this would
599
+ # coordinate agent activities)
600
+ phase_config.get("time_limit_minutes", 10)
601
+ await asyncio.sleep(1) # Simulate processing time
602
+
603
+ phase_result["completed_at"] = datetime.utcnow().isoformat()
604
+ phase_result["status"] = "completed"
605
+
606
+ # Store phase result in session metadata
607
+ if "phases" not in session.metadata:
608
+ session.metadata["phases"] = []
609
+ session.metadata["phases"].append(phase_result)
610
+
611
+ logger.info(f"Completed phase '{phase_name}' for session {session.session_id}")
612
+
613
+ async def end_session(self, session_id: str) -> Dict[str, Any]:
614
+ """
615
+ End a collaborative session and generate summary.
616
+
617
+ Args:
618
+ session_id: ID of the session to end
619
+
620
+ Returns:
621
+ Session summary
622
+ """
623
+ if session_id not in self.active_sessions:
624
+ raise TaskValidationError(f"Session not found: {session_id}")
625
+
626
+ session = self.active_sessions[session_id]
627
+ session.status = "completed"
628
+ session.ended_at = datetime.utcnow()
629
+
630
+ # Generate session summary
631
+ summary = {
632
+ "session_id": session_id,
633
+ "session_type": session.session_type,
634
+ "purpose": session.purpose,
635
+ "participants": session.participants,
636
+ "duration_minutes": (session.ended_at - session.started_at).total_seconds() / 60,
637
+ "outcomes": session.action_items,
638
+ "resources_created": session.resources_created,
639
+ "decisions_made": session.decisions_made,
640
+ "phases_completed": len(session.metadata.get("phases", [])),
641
+ "status": session.status,
642
+ }
643
+
644
+ # Remove from active sessions
645
+ del self.active_sessions[session_id]
646
+
647
+ logger.info(f"Ended collaborative session {session_id}")
648
+ return summary