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,469 @@
1
+ """
2
+ Agent Adapter System
3
+
4
+ Provides an adapter architecture for integrating custom agents and LLM clients
5
+ into the community system. Supports heterogeneous agent types and extensibility.
6
+ """
7
+
8
+ import asyncio
9
+ import logging
10
+ from abc import ABC, abstractmethod
11
+ from typing import Dict, List, Any, Optional, Type
12
+ from enum import Enum
13
+
14
+ logger = logging.getLogger(__name__)
15
+
16
+
17
+ class AgentCapability(str, Enum):
18
+ """Standard agent capabilities."""
19
+
20
+ TEXT_GENERATION = "text_generation"
21
+ CODE_GENERATION = "code_generation"
22
+ DATA_ANALYSIS = "data_analysis"
23
+ DECISION_MAKING = "decision_making"
24
+ KNOWLEDGE_RETRIEVAL = "knowledge_retrieval"
25
+ TASK_PLANNING = "task_planning"
26
+ IMAGE_PROCESSING = "image_processing"
27
+ AUDIO_PROCESSING = "audio_processing"
28
+ MULTIMODAL = "multimodal"
29
+
30
+
31
+ class AgentAdapter(ABC):
32
+ """
33
+ Abstract base class for agent adapters.
34
+
35
+ Implement this class to integrate custom agent types or LLM clients
36
+ into the community system.
37
+ """
38
+
39
+ def __init__(self, agent_id: str, config: Optional[Dict[str, Any]] = None):
40
+ """
41
+ Initialize the agent adapter.
42
+
43
+ Args:
44
+ agent_id: Unique identifier for the agent
45
+ config: Optional configuration for the agent
46
+ """
47
+ self.agent_id = agent_id
48
+ self.config = config or {}
49
+ self.capabilities: List[AgentCapability] = []
50
+ self.metadata: Dict[str, Any] = {}
51
+ self._initialized = False
52
+
53
+ @abstractmethod
54
+ async def initialize(self) -> bool:
55
+ """
56
+ Initialize the agent adapter.
57
+
58
+ Returns:
59
+ True if initialization was successful
60
+ """
61
+
62
+ @abstractmethod
63
+ async def execute(self, task: str, context: Optional[Dict[str, Any]] = None, **kwargs) -> Dict[str, Any]:
64
+ """
65
+ Execute a task with the agent.
66
+
67
+ Args:
68
+ task: Task description or instruction
69
+ context: Optional context for the task
70
+ **kwargs: Additional parameters
71
+
72
+ Returns:
73
+ Execution result with status and output
74
+ """
75
+
76
+ @abstractmethod
77
+ async def communicate(
78
+ self,
79
+ message: str,
80
+ recipient_id: Optional[str] = None,
81
+ message_type: str = "request",
82
+ **kwargs,
83
+ ) -> Dict[str, Any]:
84
+ """
85
+ Send a message to another agent or broadcast.
86
+
87
+ Args:
88
+ message: Message content
89
+ recipient_id: Optional recipient agent ID (None = broadcast)
90
+ message_type: Type of message (request, response, notification, share)
91
+ **kwargs: Additional message parameters
92
+
93
+ Returns:
94
+ Message delivery status and response
95
+ """
96
+
97
+ @abstractmethod
98
+ async def get_capabilities(self) -> List[AgentCapability]:
99
+ """
100
+ Get the capabilities of this agent.
101
+
102
+ Returns:
103
+ List of agent capabilities
104
+ """
105
+
106
+ @abstractmethod
107
+ async def health_check(self) -> Dict[str, Any]:
108
+ """
109
+ Check the health status of the agent.
110
+
111
+ Returns:
112
+ Health status information
113
+ """
114
+
115
+ async def shutdown(self) -> bool:
116
+ """
117
+ Shutdown the agent adapter gracefully.
118
+
119
+ Returns:
120
+ True if shutdown was successful
121
+ """
122
+ self._initialized = False
123
+ logger.info(f"Agent adapter {self.agent_id} shutdown")
124
+ return True
125
+
126
+
127
+ class StandardLLMAdapter(AgentAdapter):
128
+ """
129
+ Adapter for standard LLM clients (OpenAI, Anthropic, etc.).
130
+ """
131
+
132
+ def __init__(
133
+ self,
134
+ agent_id: str,
135
+ llm_client: Any,
136
+ model_name: str,
137
+ config: Optional[Dict[str, Any]] = None,
138
+ ):
139
+ """
140
+ Initialize standard LLM adapter.
141
+
142
+ Args:
143
+ agent_id: Unique identifier for the agent
144
+ llm_client: The LLM client instance
145
+ model_name: Name of the model
146
+ config: Optional configuration
147
+ """
148
+ super().__init__(agent_id, config)
149
+ self.llm_client = llm_client
150
+ self.model_name = model_name
151
+ self.capabilities = [
152
+ AgentCapability.TEXT_GENERATION,
153
+ AgentCapability.DECISION_MAKING,
154
+ AgentCapability.KNOWLEDGE_RETRIEVAL,
155
+ ]
156
+
157
+ async def initialize(self) -> bool:
158
+ """Initialize the LLM adapter."""
159
+ try:
160
+ # Test connection with simple prompt
161
+ if hasattr(self.llm_client, "health_check"):
162
+ await self.llm_client.health_check()
163
+ self._initialized = True
164
+ logger.info(f"Initialized LLM adapter for {self.model_name}")
165
+ return True
166
+ except Exception as e:
167
+ logger.error(f"Failed to initialize LLM adapter: {e}")
168
+ return False
169
+
170
+ async def execute(self, task: str, context: Optional[Dict[str, Any]] = None, **kwargs) -> Dict[str, Any]:
171
+ """Execute a task with the LLM."""
172
+ if not self._initialized:
173
+ return {"status": "error", "error": "Adapter not initialized"}
174
+
175
+ try:
176
+ # Build prompt from task and context
177
+ prompt = self._build_prompt(task, context)
178
+
179
+ # Call LLM client
180
+ if hasattr(self.llm_client, "generate"):
181
+ response = await self.llm_client.generate(prompt=prompt, model=self.model_name, **kwargs)
182
+ elif hasattr(self.llm_client, "complete"):
183
+ response = await self.llm_client.complete(prompt, **kwargs)
184
+ else:
185
+ response = str(self.llm_client) # Fallback
186
+
187
+ return {
188
+ "status": "success",
189
+ "output": response,
190
+ "agent_id": self.agent_id,
191
+ "model": self.model_name,
192
+ }
193
+ except Exception as e:
194
+ logger.error(f"Error executing task with LLM: {e}")
195
+ return {"status": "error", "error": str(e)}
196
+
197
+ async def communicate(
198
+ self,
199
+ message: str,
200
+ recipient_id: Optional[str] = None,
201
+ message_type: str = "request",
202
+ **kwargs,
203
+ ) -> Dict[str, Any]:
204
+ """Send a message through the LLM."""
205
+ # LLMs typically don't directly communicate, but can format messages
206
+ formatted_message = {
207
+ "from": self.agent_id,
208
+ "to": recipient_id or "broadcast",
209
+ "type": message_type,
210
+ "content": message,
211
+ "model": self.model_name,
212
+ }
213
+
214
+ return {"status": "formatted", "message": formatted_message}
215
+
216
+ async def get_capabilities(self) -> List[AgentCapability]:
217
+ """Get LLM capabilities."""
218
+ return self.capabilities
219
+
220
+ async def health_check(self) -> Dict[str, Any]:
221
+ """Check LLM health."""
222
+ return {
223
+ "status": "healthy" if self._initialized else "not_initialized",
224
+ "agent_id": self.agent_id,
225
+ "model": self.model_name,
226
+ "capabilities": [cap.value for cap in self.capabilities],
227
+ }
228
+
229
+ def _build_prompt(self, task: str, context: Optional[Dict[str, Any]]) -> str:
230
+ """Build prompt from task and context."""
231
+ prompt_parts = []
232
+
233
+ if context:
234
+ if "system" in context:
235
+ prompt_parts.append(f"System: {context['system']}")
236
+ if "history" in context:
237
+ prompt_parts.append(f"History: {context['history']}")
238
+
239
+ prompt_parts.append(f"Task: {task}")
240
+
241
+ return "\n\n".join(prompt_parts)
242
+
243
+
244
+ class CustomAgentAdapter(AgentAdapter):
245
+ """
246
+ Adapter for custom agent implementations.
247
+ Allows developers to wrap any agent implementation.
248
+ """
249
+
250
+ def __init__(
251
+ self,
252
+ agent_id: str,
253
+ agent_instance: Any,
254
+ execute_method: str = "execute",
255
+ capabilities: Optional[List[AgentCapability]] = None,
256
+ config: Optional[Dict[str, Any]] = None,
257
+ ):
258
+ """
259
+ Initialize custom agent adapter.
260
+
261
+ Args:
262
+ agent_id: Unique identifier for the agent
263
+ agent_instance: The custom agent instance
264
+ execute_method: Name of the execute method on the agent
265
+ capabilities: List of agent capabilities
266
+ config: Optional configuration
267
+ """
268
+ super().__init__(agent_id, config)
269
+ self.agent_instance = agent_instance
270
+ self.execute_method = execute_method
271
+ self.capabilities = capabilities or [AgentCapability.TEXT_GENERATION]
272
+
273
+ async def initialize(self) -> bool:
274
+ """Initialize the custom agent."""
275
+ try:
276
+ if hasattr(self.agent_instance, "initialize"):
277
+ if asyncio.iscoroutinefunction(self.agent_instance.initialize):
278
+ await self.agent_instance.initialize()
279
+ else:
280
+ self.agent_instance.initialize()
281
+ self._initialized = True
282
+ logger.info(f"Initialized custom agent adapter for {self.agent_id}")
283
+ return True
284
+ except Exception as e:
285
+ logger.error(f"Failed to initialize custom agent: {e}")
286
+ return False
287
+
288
+ async def execute(self, task: str, context: Optional[Dict[str, Any]] = None, **kwargs) -> Dict[str, Any]:
289
+ """Execute a task with the custom agent."""
290
+ if not self._initialized:
291
+ return {"status": "error", "error": "Adapter not initialized"}
292
+
293
+ try:
294
+ execute_func = getattr(self.agent_instance, self.execute_method, None)
295
+ if not execute_func:
296
+ return {
297
+ "status": "error",
298
+ "error": f"Method {self.execute_method} not found on agent",
299
+ }
300
+
301
+ # Try to call the execute method
302
+ if asyncio.iscoroutinefunction(execute_func):
303
+ result = await execute_func(task, context=context, **kwargs)
304
+ else:
305
+ result = execute_func(task, context=context, **kwargs)
306
+
307
+ return {
308
+ "status": "success",
309
+ "output": result,
310
+ "agent_id": self.agent_id,
311
+ }
312
+ except Exception as e:
313
+ logger.error(f"Error executing task with custom agent: {e}")
314
+ return {"status": "error", "error": str(e)}
315
+
316
+ async def communicate(
317
+ self,
318
+ message: str,
319
+ recipient_id: Optional[str] = None,
320
+ message_type: str = "request",
321
+ **kwargs,
322
+ ) -> Dict[str, Any]:
323
+ """Send a message through the custom agent."""
324
+ if hasattr(self.agent_instance, "send_message"):
325
+ send_func = self.agent_instance.send_message
326
+ if asyncio.iscoroutinefunction(send_func):
327
+ return await send_func(message, recipient_id, message_type, **kwargs)
328
+ else:
329
+ return send_func(message, recipient_id, message_type, **kwargs)
330
+
331
+ # Default message formatting
332
+ return {
333
+ "status": "formatted",
334
+ "message": {
335
+ "from": self.agent_id,
336
+ "to": recipient_id or "broadcast",
337
+ "type": message_type,
338
+ "content": message,
339
+ },
340
+ }
341
+
342
+ async def get_capabilities(self) -> List[AgentCapability]:
343
+ """Get custom agent capabilities."""
344
+ return self.capabilities
345
+
346
+ async def health_check(self) -> Dict[str, Any]:
347
+ """Check custom agent health."""
348
+ if hasattr(self.agent_instance, "health_check"):
349
+ health_func = self.agent_instance.health_check
350
+ if asyncio.iscoroutinefunction(health_func):
351
+ return await health_func()
352
+ else:
353
+ return health_func()
354
+
355
+ return {
356
+ "status": "healthy" if self._initialized else "not_initialized",
357
+ "agent_id": self.agent_id,
358
+ "capabilities": [cap.value for cap in self.capabilities],
359
+ }
360
+
361
+
362
+ class AgentAdapterRegistry:
363
+ """
364
+ Registry for managing agent adapters.
365
+ Allows registration, lookup, and management of agent adapters.
366
+ """
367
+
368
+ def __init__(self) -> None:
369
+ """Initialize the adapter registry."""
370
+ self.adapters: Dict[str, AgentAdapter] = {}
371
+ self.adapter_types: Dict[str, Type[AgentAdapter]] = {
372
+ "standard_llm": StandardLLMAdapter,
373
+ "custom": CustomAgentAdapter,
374
+ }
375
+ logger.info("Agent adapter registry initialized")
376
+
377
+ def register_adapter_type(self, type_name: str, adapter_class: Type[AgentAdapter]) -> None:
378
+ """
379
+ Register a new adapter type.
380
+
381
+ Args:
382
+ type_name: Name for the adapter type
383
+ adapter_class: Adapter class
384
+ """
385
+ self.adapter_types[type_name] = adapter_class
386
+ logger.info(f"Registered adapter type: {type_name}")
387
+
388
+ async def register_adapter(self, adapter: AgentAdapter, auto_initialize: bool = True) -> bool:
389
+ """
390
+ Register an agent adapter.
391
+
392
+ Args:
393
+ adapter: Agent adapter to register
394
+ auto_initialize: Whether to initialize the adapter automatically
395
+
396
+ Returns:
397
+ True if registration was successful
398
+ """
399
+ if adapter.agent_id in self.adapters:
400
+ logger.warning(f"Adapter {adapter.agent_id} already registered, replacing")
401
+
402
+ if auto_initialize and not adapter._initialized:
403
+ success = await adapter.initialize()
404
+ if not success:
405
+ logger.error(f"Failed to initialize adapter {adapter.agent_id}")
406
+ return False
407
+
408
+ self.adapters[adapter.agent_id] = adapter
409
+ logger.info(f"Registered adapter: {adapter.agent_id}")
410
+ return True
411
+
412
+ def get_adapter(self, agent_id: str) -> Optional[AgentAdapter]:
413
+ """
414
+ Get an adapter by agent ID.
415
+
416
+ Args:
417
+ agent_id: ID of the agent
418
+
419
+ Returns:
420
+ Agent adapter or None if not found
421
+ """
422
+ return self.adapters.get(agent_id)
423
+
424
+ def unregister_adapter(self, agent_id: str) -> bool:
425
+ """
426
+ Unregister an adapter.
427
+
428
+ Args:
429
+ agent_id: ID of the agent to unregister
430
+
431
+ Returns:
432
+ True if adapter was unregistered
433
+ """
434
+ if agent_id in self.adapters:
435
+ del self.adapters[agent_id]
436
+ logger.info(f"Unregistered adapter: {agent_id}")
437
+ return True
438
+ return False
439
+
440
+ def list_adapters(self) -> List[str]:
441
+ """
442
+ List all registered adapter IDs.
443
+
444
+ Returns:
445
+ List of adapter IDs
446
+ """
447
+ return list(self.adapters.keys())
448
+
449
+ async def health_check_all(self) -> Dict[str, Dict[str, Any]]:
450
+ """
451
+ Perform health check on all adapters.
452
+
453
+ Returns:
454
+ Dictionary mapping agent IDs to health status
455
+ """
456
+ health_statuses = {}
457
+ for agent_id, adapter in self.adapters.items():
458
+ try:
459
+ status = await adapter.health_check()
460
+ health_statuses[agent_id] = status
461
+ except Exception as e:
462
+ health_statuses[agent_id] = {
463
+ "status": "error",
464
+ "error": str(e),
465
+ }
466
+ return health_statuses
467
+
468
+
469
+ # Import asyncio for async checks