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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (340) hide show
  1. aiecs/__init__.py +13 -16
  2. aiecs/__main__.py +7 -7
  3. aiecs/aiecs_client.py +269 -75
  4. aiecs/application/executors/operation_executor.py +79 -54
  5. aiecs/application/knowledge_graph/__init__.py +7 -0
  6. aiecs/application/knowledge_graph/builder/__init__.py +37 -0
  7. aiecs/application/knowledge_graph/builder/data_quality.py +302 -0
  8. aiecs/application/knowledge_graph/builder/data_reshaping.py +293 -0
  9. aiecs/application/knowledge_graph/builder/document_builder.py +369 -0
  10. aiecs/application/knowledge_graph/builder/graph_builder.py +490 -0
  11. aiecs/application/knowledge_graph/builder/import_optimizer.py +396 -0
  12. aiecs/application/knowledge_graph/builder/schema_inference.py +462 -0
  13. aiecs/application/knowledge_graph/builder/schema_mapping.py +563 -0
  14. aiecs/application/knowledge_graph/builder/structured_pipeline.py +1384 -0
  15. aiecs/application/knowledge_graph/builder/text_chunker.py +317 -0
  16. aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
  17. aiecs/application/knowledge_graph/extractors/base.py +98 -0
  18. aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +422 -0
  19. aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +347 -0
  20. aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +241 -0
  21. aiecs/application/knowledge_graph/fusion/__init__.py +78 -0
  22. aiecs/application/knowledge_graph/fusion/ab_testing.py +395 -0
  23. aiecs/application/knowledge_graph/fusion/abbreviation_expander.py +327 -0
  24. aiecs/application/knowledge_graph/fusion/alias_index.py +597 -0
  25. aiecs/application/knowledge_graph/fusion/alias_matcher.py +384 -0
  26. aiecs/application/knowledge_graph/fusion/cache_coordinator.py +343 -0
  27. aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +433 -0
  28. aiecs/application/knowledge_graph/fusion/entity_linker.py +511 -0
  29. aiecs/application/knowledge_graph/fusion/evaluation_dataset.py +240 -0
  30. aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +632 -0
  31. aiecs/application/knowledge_graph/fusion/matching_config.py +489 -0
  32. aiecs/application/knowledge_graph/fusion/name_normalizer.py +352 -0
  33. aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +183 -0
  34. aiecs/application/knowledge_graph/fusion/semantic_name_matcher.py +464 -0
  35. aiecs/application/knowledge_graph/fusion/similarity_pipeline.py +534 -0
  36. aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
  37. aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +342 -0
  38. aiecs/application/knowledge_graph/pattern_matching/query_executor.py +366 -0
  39. aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
  40. aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +195 -0
  41. aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
  42. aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
  43. aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +341 -0
  44. aiecs/application/knowledge_graph/reasoning/inference_engine.py +500 -0
  45. aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +163 -0
  46. aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
  47. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
  48. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +913 -0
  49. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +866 -0
  50. aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +475 -0
  51. aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +396 -0
  52. aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +208 -0
  53. aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +170 -0
  54. aiecs/application/knowledge_graph/reasoning/query_planner.py +855 -0
  55. aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +518 -0
  56. aiecs/application/knowledge_graph/retrieval/__init__.py +27 -0
  57. aiecs/application/knowledge_graph/retrieval/query_intent_classifier.py +211 -0
  58. aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +592 -0
  59. aiecs/application/knowledge_graph/retrieval/strategy_types.py +23 -0
  60. aiecs/application/knowledge_graph/search/__init__.py +59 -0
  61. aiecs/application/knowledge_graph/search/hybrid_search.py +457 -0
  62. aiecs/application/knowledge_graph/search/reranker.py +293 -0
  63. aiecs/application/knowledge_graph/search/reranker_strategies.py +535 -0
  64. aiecs/application/knowledge_graph/search/text_similarity.py +392 -0
  65. aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
  66. aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +305 -0
  67. aiecs/application/knowledge_graph/traversal/path_scorer.py +271 -0
  68. aiecs/application/knowledge_graph/validators/__init__.py +13 -0
  69. aiecs/application/knowledge_graph/validators/relation_validator.py +239 -0
  70. aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
  71. aiecs/application/knowledge_graph/visualization/graph_visualizer.py +313 -0
  72. aiecs/common/__init__.py +9 -0
  73. aiecs/common/knowledge_graph/__init__.py +17 -0
  74. aiecs/common/knowledge_graph/runnable.py +471 -0
  75. aiecs/config/__init__.py +20 -5
  76. aiecs/config/config.py +762 -31
  77. aiecs/config/graph_config.py +131 -0
  78. aiecs/config/tool_config.py +399 -0
  79. aiecs/core/__init__.py +29 -13
  80. aiecs/core/interface/__init__.py +2 -2
  81. aiecs/core/interface/execution_interface.py +22 -22
  82. aiecs/core/interface/storage_interface.py +37 -88
  83. aiecs/core/registry/__init__.py +31 -0
  84. aiecs/core/registry/service_registry.py +92 -0
  85. aiecs/domain/__init__.py +270 -1
  86. aiecs/domain/agent/__init__.py +191 -0
  87. aiecs/domain/agent/base_agent.py +3870 -0
  88. aiecs/domain/agent/exceptions.py +99 -0
  89. aiecs/domain/agent/graph_aware_mixin.py +569 -0
  90. aiecs/domain/agent/hybrid_agent.py +1435 -0
  91. aiecs/domain/agent/integration/__init__.py +29 -0
  92. aiecs/domain/agent/integration/context_compressor.py +216 -0
  93. aiecs/domain/agent/integration/context_engine_adapter.py +587 -0
  94. aiecs/domain/agent/integration/protocols.py +281 -0
  95. aiecs/domain/agent/integration/retry_policy.py +218 -0
  96. aiecs/domain/agent/integration/role_config.py +213 -0
  97. aiecs/domain/agent/knowledge_aware_agent.py +1892 -0
  98. aiecs/domain/agent/lifecycle.py +291 -0
  99. aiecs/domain/agent/llm_agent.py +692 -0
  100. aiecs/domain/agent/memory/__init__.py +12 -0
  101. aiecs/domain/agent/memory/conversation.py +1124 -0
  102. aiecs/domain/agent/migration/__init__.py +14 -0
  103. aiecs/domain/agent/migration/conversion.py +163 -0
  104. aiecs/domain/agent/migration/legacy_wrapper.py +86 -0
  105. aiecs/domain/agent/models.py +884 -0
  106. aiecs/domain/agent/observability.py +479 -0
  107. aiecs/domain/agent/persistence.py +449 -0
  108. aiecs/domain/agent/prompts/__init__.py +29 -0
  109. aiecs/domain/agent/prompts/builder.py +159 -0
  110. aiecs/domain/agent/prompts/formatters.py +187 -0
  111. aiecs/domain/agent/prompts/template.py +255 -0
  112. aiecs/domain/agent/registry.py +253 -0
  113. aiecs/domain/agent/tool_agent.py +444 -0
  114. aiecs/domain/agent/tools/__init__.py +15 -0
  115. aiecs/domain/agent/tools/schema_generator.py +364 -0
  116. aiecs/domain/community/__init__.py +155 -0
  117. aiecs/domain/community/agent_adapter.py +469 -0
  118. aiecs/domain/community/analytics.py +432 -0
  119. aiecs/domain/community/collaborative_workflow.py +648 -0
  120. aiecs/domain/community/communication_hub.py +634 -0
  121. aiecs/domain/community/community_builder.py +320 -0
  122. aiecs/domain/community/community_integration.py +796 -0
  123. aiecs/domain/community/community_manager.py +803 -0
  124. aiecs/domain/community/decision_engine.py +849 -0
  125. aiecs/domain/community/exceptions.py +231 -0
  126. aiecs/domain/community/models/__init__.py +33 -0
  127. aiecs/domain/community/models/community_models.py +234 -0
  128. aiecs/domain/community/resource_manager.py +461 -0
  129. aiecs/domain/community/shared_context_manager.py +589 -0
  130. aiecs/domain/context/__init__.py +40 -10
  131. aiecs/domain/context/context_engine.py +1910 -0
  132. aiecs/domain/context/conversation_models.py +87 -53
  133. aiecs/domain/context/graph_memory.py +582 -0
  134. aiecs/domain/execution/model.py +12 -4
  135. aiecs/domain/knowledge_graph/__init__.py +19 -0
  136. aiecs/domain/knowledge_graph/models/__init__.py +52 -0
  137. aiecs/domain/knowledge_graph/models/entity.py +148 -0
  138. aiecs/domain/knowledge_graph/models/evidence.py +178 -0
  139. aiecs/domain/knowledge_graph/models/inference_rule.py +184 -0
  140. aiecs/domain/knowledge_graph/models/path.py +171 -0
  141. aiecs/domain/knowledge_graph/models/path_pattern.py +171 -0
  142. aiecs/domain/knowledge_graph/models/query.py +261 -0
  143. aiecs/domain/knowledge_graph/models/query_plan.py +181 -0
  144. aiecs/domain/knowledge_graph/models/relation.py +202 -0
  145. aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
  146. aiecs/domain/knowledge_graph/schema/entity_type.py +131 -0
  147. aiecs/domain/knowledge_graph/schema/graph_schema.py +253 -0
  148. aiecs/domain/knowledge_graph/schema/property_schema.py +143 -0
  149. aiecs/domain/knowledge_graph/schema/relation_type.py +163 -0
  150. aiecs/domain/knowledge_graph/schema/schema_manager.py +691 -0
  151. aiecs/domain/knowledge_graph/schema/type_enums.py +209 -0
  152. aiecs/domain/task/dsl_processor.py +172 -56
  153. aiecs/domain/task/model.py +20 -8
  154. aiecs/domain/task/task_context.py +27 -24
  155. aiecs/infrastructure/__init__.py +0 -2
  156. aiecs/infrastructure/graph_storage/__init__.py +11 -0
  157. aiecs/infrastructure/graph_storage/base.py +837 -0
  158. aiecs/infrastructure/graph_storage/batch_operations.py +458 -0
  159. aiecs/infrastructure/graph_storage/cache.py +424 -0
  160. aiecs/infrastructure/graph_storage/distributed.py +223 -0
  161. aiecs/infrastructure/graph_storage/error_handling.py +380 -0
  162. aiecs/infrastructure/graph_storage/graceful_degradation.py +294 -0
  163. aiecs/infrastructure/graph_storage/health_checks.py +378 -0
  164. aiecs/infrastructure/graph_storage/in_memory.py +1197 -0
  165. aiecs/infrastructure/graph_storage/index_optimization.py +446 -0
  166. aiecs/infrastructure/graph_storage/lazy_loading.py +431 -0
  167. aiecs/infrastructure/graph_storage/metrics.py +344 -0
  168. aiecs/infrastructure/graph_storage/migration.py +400 -0
  169. aiecs/infrastructure/graph_storage/pagination.py +483 -0
  170. aiecs/infrastructure/graph_storage/performance_monitoring.py +456 -0
  171. aiecs/infrastructure/graph_storage/postgres.py +1563 -0
  172. aiecs/infrastructure/graph_storage/property_storage.py +353 -0
  173. aiecs/infrastructure/graph_storage/protocols.py +76 -0
  174. aiecs/infrastructure/graph_storage/query_optimizer.py +642 -0
  175. aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
  176. aiecs/infrastructure/graph_storage/sqlite.py +1373 -0
  177. aiecs/infrastructure/graph_storage/streaming.py +487 -0
  178. aiecs/infrastructure/graph_storage/tenant.py +412 -0
  179. aiecs/infrastructure/messaging/celery_task_manager.py +92 -54
  180. aiecs/infrastructure/messaging/websocket_manager.py +51 -35
  181. aiecs/infrastructure/monitoring/__init__.py +22 -0
  182. aiecs/infrastructure/monitoring/executor_metrics.py +45 -11
  183. aiecs/infrastructure/monitoring/global_metrics_manager.py +212 -0
  184. aiecs/infrastructure/monitoring/structured_logger.py +3 -7
  185. aiecs/infrastructure/monitoring/tracing_manager.py +63 -35
  186. aiecs/infrastructure/persistence/__init__.py +14 -1
  187. aiecs/infrastructure/persistence/context_engine_client.py +184 -0
  188. aiecs/infrastructure/persistence/database_manager.py +67 -43
  189. aiecs/infrastructure/persistence/file_storage.py +180 -103
  190. aiecs/infrastructure/persistence/redis_client.py +74 -21
  191. aiecs/llm/__init__.py +73 -25
  192. aiecs/llm/callbacks/__init__.py +11 -0
  193. aiecs/llm/{custom_callbacks.py → callbacks/custom_callbacks.py} +26 -19
  194. aiecs/llm/client_factory.py +224 -36
  195. aiecs/llm/client_resolver.py +155 -0
  196. aiecs/llm/clients/__init__.py +38 -0
  197. aiecs/llm/clients/base_client.py +324 -0
  198. aiecs/llm/clients/google_function_calling_mixin.py +457 -0
  199. aiecs/llm/clients/googleai_client.py +241 -0
  200. aiecs/llm/clients/openai_client.py +158 -0
  201. aiecs/llm/clients/openai_compatible_mixin.py +367 -0
  202. aiecs/llm/clients/vertex_client.py +897 -0
  203. aiecs/llm/clients/xai_client.py +201 -0
  204. aiecs/llm/config/__init__.py +51 -0
  205. aiecs/llm/config/config_loader.py +272 -0
  206. aiecs/llm/config/config_validator.py +206 -0
  207. aiecs/llm/config/model_config.py +143 -0
  208. aiecs/llm/protocols.py +149 -0
  209. aiecs/llm/utils/__init__.py +10 -0
  210. aiecs/llm/utils/validate_config.py +89 -0
  211. aiecs/main.py +140 -121
  212. aiecs/scripts/aid/VERSION_MANAGEMENT.md +138 -0
  213. aiecs/scripts/aid/__init__.py +19 -0
  214. aiecs/scripts/aid/module_checker.py +499 -0
  215. aiecs/scripts/aid/version_manager.py +235 -0
  216. aiecs/scripts/{DEPENDENCY_SYSTEM_SUMMARY.md → dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md} +1 -0
  217. aiecs/scripts/{README_DEPENDENCY_CHECKER.md → dependance_check/README_DEPENDENCY_CHECKER.md} +1 -0
  218. aiecs/scripts/dependance_check/__init__.py +15 -0
  219. aiecs/scripts/dependance_check/dependency_checker.py +1835 -0
  220. aiecs/scripts/{dependency_fixer.py → dependance_check/dependency_fixer.py} +192 -90
  221. aiecs/scripts/{download_nlp_data.py → dependance_check/download_nlp_data.py} +203 -71
  222. aiecs/scripts/dependance_patch/__init__.py +7 -0
  223. aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
  224. aiecs/scripts/{fix_weasel_validator.py → dependance_patch/fix_weasel/fix_weasel_validator.py} +21 -14
  225. aiecs/scripts/{patch_weasel_library.sh → dependance_patch/fix_weasel/patch_weasel_library.sh} +1 -1
  226. aiecs/scripts/knowledge_graph/__init__.py +3 -0
  227. aiecs/scripts/knowledge_graph/run_threshold_experiments.py +212 -0
  228. aiecs/scripts/migrations/multi_tenancy/README.md +142 -0
  229. aiecs/scripts/tools_develop/README.md +671 -0
  230. aiecs/scripts/tools_develop/README_CONFIG_CHECKER.md +273 -0
  231. aiecs/scripts/tools_develop/TOOLS_CONFIG_GUIDE.md +1287 -0
  232. aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
  233. aiecs/scripts/tools_develop/__init__.py +21 -0
  234. aiecs/scripts/tools_develop/check_all_tools_config.py +548 -0
  235. aiecs/scripts/tools_develop/check_type_annotations.py +257 -0
  236. aiecs/scripts/tools_develop/pre-commit-schema-coverage.sh +66 -0
  237. aiecs/scripts/tools_develop/schema_coverage.py +511 -0
  238. aiecs/scripts/tools_develop/validate_tool_schemas.py +475 -0
  239. aiecs/scripts/tools_develop/verify_executor_config_fix.py +98 -0
  240. aiecs/scripts/tools_develop/verify_tools.py +352 -0
  241. aiecs/tasks/__init__.py +0 -1
  242. aiecs/tasks/worker.py +115 -47
  243. aiecs/tools/__init__.py +194 -72
  244. aiecs/tools/apisource/__init__.py +99 -0
  245. aiecs/tools/apisource/intelligence/__init__.py +19 -0
  246. aiecs/tools/apisource/intelligence/data_fusion.py +632 -0
  247. aiecs/tools/apisource/intelligence/query_analyzer.py +417 -0
  248. aiecs/tools/apisource/intelligence/search_enhancer.py +385 -0
  249. aiecs/tools/apisource/monitoring/__init__.py +9 -0
  250. aiecs/tools/apisource/monitoring/metrics.py +330 -0
  251. aiecs/tools/apisource/providers/__init__.py +112 -0
  252. aiecs/tools/apisource/providers/base.py +671 -0
  253. aiecs/tools/apisource/providers/census.py +397 -0
  254. aiecs/tools/apisource/providers/fred.py +535 -0
  255. aiecs/tools/apisource/providers/newsapi.py +409 -0
  256. aiecs/tools/apisource/providers/worldbank.py +352 -0
  257. aiecs/tools/apisource/reliability/__init__.py +12 -0
  258. aiecs/tools/apisource/reliability/error_handler.py +363 -0
  259. aiecs/tools/apisource/reliability/fallback_strategy.py +376 -0
  260. aiecs/tools/apisource/tool.py +832 -0
  261. aiecs/tools/apisource/utils/__init__.py +9 -0
  262. aiecs/tools/apisource/utils/validators.py +334 -0
  263. aiecs/tools/base_tool.py +415 -21
  264. aiecs/tools/docs/__init__.py +121 -0
  265. aiecs/tools/docs/ai_document_orchestrator.py +607 -0
  266. aiecs/tools/docs/ai_document_writer_orchestrator.py +2350 -0
  267. aiecs/tools/docs/content_insertion_tool.py +1320 -0
  268. aiecs/tools/docs/document_creator_tool.py +1323 -0
  269. aiecs/tools/docs/document_layout_tool.py +1160 -0
  270. aiecs/tools/docs/document_parser_tool.py +1011 -0
  271. aiecs/tools/docs/document_writer_tool.py +1829 -0
  272. aiecs/tools/knowledge_graph/__init__.py +17 -0
  273. aiecs/tools/knowledge_graph/graph_reasoning_tool.py +807 -0
  274. aiecs/tools/knowledge_graph/graph_search_tool.py +944 -0
  275. aiecs/tools/knowledge_graph/kg_builder_tool.py +524 -0
  276. aiecs/tools/langchain_adapter.py +300 -138
  277. aiecs/tools/schema_generator.py +455 -0
  278. aiecs/tools/search_tool/__init__.py +100 -0
  279. aiecs/tools/search_tool/analyzers.py +581 -0
  280. aiecs/tools/search_tool/cache.py +264 -0
  281. aiecs/tools/search_tool/constants.py +128 -0
  282. aiecs/tools/search_tool/context.py +224 -0
  283. aiecs/tools/search_tool/core.py +778 -0
  284. aiecs/tools/search_tool/deduplicator.py +119 -0
  285. aiecs/tools/search_tool/error_handler.py +242 -0
  286. aiecs/tools/search_tool/metrics.py +343 -0
  287. aiecs/tools/search_tool/rate_limiter.py +172 -0
  288. aiecs/tools/search_tool/schemas.py +275 -0
  289. aiecs/tools/statistics/__init__.py +80 -0
  290. aiecs/tools/statistics/ai_data_analysis_orchestrator.py +646 -0
  291. aiecs/tools/statistics/ai_insight_generator_tool.py +508 -0
  292. aiecs/tools/statistics/ai_report_orchestrator_tool.py +684 -0
  293. aiecs/tools/statistics/data_loader_tool.py +555 -0
  294. aiecs/tools/statistics/data_profiler_tool.py +638 -0
  295. aiecs/tools/statistics/data_transformer_tool.py +580 -0
  296. aiecs/tools/statistics/data_visualizer_tool.py +498 -0
  297. aiecs/tools/statistics/model_trainer_tool.py +507 -0
  298. aiecs/tools/statistics/statistical_analyzer_tool.py +472 -0
  299. aiecs/tools/task_tools/__init__.py +49 -36
  300. aiecs/tools/task_tools/chart_tool.py +200 -184
  301. aiecs/tools/task_tools/classfire_tool.py +268 -267
  302. aiecs/tools/task_tools/image_tool.py +175 -131
  303. aiecs/tools/task_tools/office_tool.py +226 -146
  304. aiecs/tools/task_tools/pandas_tool.py +477 -121
  305. aiecs/tools/task_tools/report_tool.py +390 -142
  306. aiecs/tools/task_tools/research_tool.py +149 -79
  307. aiecs/tools/task_tools/scraper_tool.py +339 -145
  308. aiecs/tools/task_tools/stats_tool.py +448 -209
  309. aiecs/tools/temp_file_manager.py +26 -24
  310. aiecs/tools/tool_executor/__init__.py +18 -16
  311. aiecs/tools/tool_executor/tool_executor.py +364 -52
  312. aiecs/utils/LLM_output_structor.py +74 -48
  313. aiecs/utils/__init__.py +14 -3
  314. aiecs/utils/base_callback.py +0 -3
  315. aiecs/utils/cache_provider.py +696 -0
  316. aiecs/utils/execution_utils.py +50 -31
  317. aiecs/utils/prompt_loader.py +1 -0
  318. aiecs/utils/token_usage_repository.py +37 -11
  319. aiecs/ws/socket_server.py +14 -4
  320. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/METADATA +52 -15
  321. aiecs-1.7.6.dist-info/RECORD +337 -0
  322. aiecs-1.7.6.dist-info/entry_points.txt +13 -0
  323. aiecs/config/registry.py +0 -19
  324. aiecs/domain/context/content_engine.py +0 -982
  325. aiecs/llm/base_client.py +0 -99
  326. aiecs/llm/openai_client.py +0 -125
  327. aiecs/llm/vertex_client.py +0 -186
  328. aiecs/llm/xai_client.py +0 -184
  329. aiecs/scripts/dependency_checker.py +0 -857
  330. aiecs/scripts/quick_dependency_check.py +0 -269
  331. aiecs/tools/task_tools/search_api.py +0 -7
  332. aiecs-1.0.1.dist-info/RECORD +0 -90
  333. aiecs-1.0.1.dist-info/entry_points.txt +0 -7
  334. /aiecs/scripts/{setup_nlp_data.sh → dependance_check/setup_nlp_data.sh} +0 -0
  335. /aiecs/scripts/{README_WEASEL_PATCH.md → dependance_patch/fix_weasel/README_WEASEL_PATCH.md} +0 -0
  336. /aiecs/scripts/{fix_weasel_validator.sh → dependance_patch/fix_weasel/fix_weasel_validator.sh} +0 -0
  337. /aiecs/scripts/{run_weasel_patch.sh → dependance_patch/fix_weasel/run_weasel_patch.sh} +0 -0
  338. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/WHEEL +0 -0
  339. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/licenses/LICENSE +0 -0
  340. {aiecs-1.0.1.dist-info → aiecs-1.7.6.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,364 @@
1
+ """
2
+ Tool Schema Generator
3
+
4
+ Generate OpenAI-style function schemas from AIECS tools.
5
+ """
6
+
7
+ import inspect
8
+ import logging
9
+ from typing import Dict, Any, List, Optional, Type, Tuple
10
+ from pydantic import BaseModel
11
+ from aiecs.tools import get_tool, BaseTool
12
+
13
+ logger = logging.getLogger(__name__)
14
+
15
+
16
+ class ToolSchemaGenerator:
17
+ """
18
+ Generates OpenAI-style function calling schemas from AIECS tools.
19
+
20
+ Example:
21
+ generator = ToolSchemaGenerator()
22
+ schema = generator.generate_schema("search", "search_web")
23
+ """
24
+
25
+ @staticmethod
26
+ def generate_schema(
27
+ tool_name: str,
28
+ operation: Optional[str] = None,
29
+ description: Optional[str] = None,
30
+ ) -> Dict[str, Any]:
31
+ """
32
+ Generate OpenAI function schema for a tool operation.
33
+
34
+ This method prioritizes Pydantic schemas from BaseTool for accurate
35
+ parameter descriptions and types.
36
+
37
+ Args:
38
+ tool_name: Tool name
39
+ operation: Optional operation name
40
+ description: Optional custom description
41
+
42
+ Returns:
43
+ OpenAI function schema dictionary
44
+ """
45
+ try:
46
+ tool = get_tool(tool_name)
47
+ except Exception as e:
48
+ logger.error(f"Failed to get tool {tool_name}: {e}")
49
+ raise
50
+
51
+ # Generate function name
52
+ if operation:
53
+ function_name = f"{tool_name}_{operation}"
54
+ else:
55
+ function_name = tool_name
56
+
57
+ # Get operation method if specified
58
+ if operation:
59
+ if not hasattr(tool, operation):
60
+ raise ValueError(f"Tool {tool_name} has no operation '{operation}'")
61
+ method = getattr(tool, operation)
62
+ else:
63
+ # Default to 'run' method
64
+ method = getattr(tool, "run", None)
65
+ if method is None:
66
+ raise ValueError(f"Tool {tool_name} has no 'run' method")
67
+
68
+ # Try to get Pydantic schema from BaseTool first
69
+ schema_class = None
70
+ if isinstance(tool, BaseTool) and hasattr(tool, "_schemas"):
71
+ schema_class = tool._schemas.get(operation)
72
+
73
+ # Extract parameters - prefer Pydantic schema if available
74
+ if schema_class:
75
+ parameters, required = ToolSchemaGenerator._extract_from_pydantic_schema(schema_class)
76
+ # Get description from schema class docstring or method docstring
77
+ if not description:
78
+ description = ToolSchemaGenerator._get_description(schema_class, method)
79
+ else:
80
+ # Fallback to method signature inspection
81
+ parameters = ToolSchemaGenerator._extract_parameters(method)
82
+ required = ToolSchemaGenerator._get_required_params(method)
83
+ if not description:
84
+ description = ToolSchemaGenerator._get_description(None, method) or f"{tool_name} tool"
85
+
86
+ # Build schema
87
+ schema = {
88
+ "name": function_name,
89
+ "description": description,
90
+ "parameters": {
91
+ "type": "object",
92
+ "properties": parameters,
93
+ "required": required,
94
+ },
95
+ }
96
+
97
+ return schema
98
+
99
+ @staticmethod
100
+ def _extract_parameters(method) -> Dict[str, Dict[str, Any]]:
101
+ """Extract parameter schemas from method."""
102
+ sig = inspect.signature(method)
103
+ parameters = {}
104
+
105
+ for param_name, param in sig.parameters.items():
106
+ # Skip 'self' and 'op' parameters
107
+ if param_name in ["self", "op", "cls"]:
108
+ continue
109
+
110
+ param_schema = ToolSchemaGenerator._param_to_schema(param_name, param)
111
+ if param_schema:
112
+ parameters[param_name] = param_schema
113
+
114
+ return parameters
115
+
116
+ @staticmethod
117
+ def _param_to_schema(param_name: str, param: inspect.Parameter) -> Optional[Dict[str, Any]]:
118
+ """Convert parameter to JSON schema."""
119
+ schema: Dict[str, Any] = {}
120
+
121
+ # Try to infer type from annotation
122
+ if param.annotation != inspect.Parameter.empty:
123
+ schema.update(ToolSchemaGenerator._type_to_schema(param.annotation))
124
+
125
+ # Add default if present
126
+ if param.default != inspect.Parameter.empty:
127
+ schema["default"] = param.default
128
+
129
+ # If no type info, default to string
130
+ if "type" not in schema:
131
+ schema["type"] = "string"
132
+
133
+ return schema
134
+
135
+ @staticmethod
136
+ def _type_to_schema(type_hint) -> Dict[str, Any]:
137
+ """Convert Python type hint to JSON schema type."""
138
+ # Handle string annotations
139
+ if isinstance(type_hint, str):
140
+ if type_hint == "str":
141
+ return {"type": "string"}
142
+ elif type_hint == "int":
143
+ return {"type": "integer"}
144
+ elif type_hint == "float":
145
+ return {"type": "number"}
146
+ elif type_hint == "bool":
147
+ return {"type": "boolean"}
148
+ elif type_hint.startswith("List"):
149
+ return {"type": "array"}
150
+ elif type_hint.startswith("Dict"):
151
+ return {"type": "object"}
152
+ else:
153
+ return {"type": "string"}
154
+
155
+ # Handle actual types
156
+ if type_hint == str:
157
+ return {"type": "string"}
158
+ elif type_hint == int:
159
+ return {"type": "integer"}
160
+ elif type_hint == float:
161
+ return {"type": "number"}
162
+ elif type_hint == bool:
163
+ return {"type": "boolean"}
164
+ elif hasattr(type_hint, "__origin__"):
165
+ # Generic types (List, Dict, etc.)
166
+ origin = type_hint.__origin__
167
+ if origin == list:
168
+ return {"type": "array"}
169
+ elif origin == dict:
170
+ return {"type": "object"}
171
+ else:
172
+ return {"type": "string"}
173
+ else:
174
+ return {"type": "string"}
175
+
176
+ @staticmethod
177
+ def _get_required_params(method) -> List[str]:
178
+ """Get list of required parameter names."""
179
+ sig = inspect.signature(method)
180
+ required = []
181
+
182
+ for param_name, param in sig.parameters.items():
183
+ # Skip 'self' and 'op' parameters
184
+ if param_name in ["self", "op", "cls"]:
185
+ continue
186
+
187
+ # Required if no default value
188
+ if param.default == inspect.Parameter.empty:
189
+ required.append(param_name)
190
+
191
+ return required
192
+
193
+ @staticmethod
194
+ def _extract_from_pydantic_schema(schema_class: Type[BaseModel]) -> Tuple[Dict[str, Dict[str, Any]], List[str]]:
195
+ """
196
+ Extract parameters from Pydantic schema class.
197
+
198
+ Args:
199
+ schema_class: Pydantic BaseModel class
200
+
201
+ Returns:
202
+ Tuple of (properties dict, required fields list)
203
+ """
204
+ properties = {}
205
+ required = []
206
+
207
+ if not hasattr(schema_class, "model_fields"):
208
+ return properties, required
209
+
210
+ for field_name, field_info in schema_class.model_fields.items():
211
+ # Build property schema
212
+ prop_schema: Dict[str, Any] = {}
213
+
214
+ # Get type
215
+ field_type = field_info.annotation
216
+ prop_schema.update(ToolSchemaGenerator._type_to_schema(field_type))
217
+
218
+ # Get description from Field
219
+ if hasattr(field_info, "description") and field_info.description:
220
+ prop_schema["description"] = field_info.description
221
+
222
+ # Get default value
223
+ if field_info.default is not None and field_info.default != inspect.Parameter.empty:
224
+ prop_schema["default"] = field_info.default
225
+ else:
226
+ required.append(field_name)
227
+
228
+ properties[field_name] = prop_schema
229
+
230
+ return properties, required
231
+
232
+ @staticmethod
233
+ def _get_description(schema_class: Optional[Type[BaseModel]], method) -> Optional[str]:
234
+ """Get description from schema class docstring or method docstring."""
235
+ if schema_class and schema_class.__doc__:
236
+ return schema_class.__doc__.strip().split("\n")[0]
237
+ if method and method.__doc__:
238
+ # Extract first line of docstring
239
+ doc_lines = method.__doc__.strip().split("\n")
240
+ if doc_lines:
241
+ return doc_lines[0]
242
+ return None
243
+
244
+ @staticmethod
245
+ def generate_schemas_for_tools(
246
+ tool_names: List[str],
247
+ operations: Optional[Dict[str, List[str]]] = None,
248
+ ) -> List[Dict[str, Any]]:
249
+ """
250
+ Generate schemas for multiple tools.
251
+
252
+ Args:
253
+ tool_names: List of tool names
254
+ operations: Optional dict mapping tool names to operations
255
+
256
+ Returns:
257
+ List of function schemas
258
+ """
259
+ schemas = []
260
+ operations = operations or {}
261
+
262
+ for tool_name in tool_names:
263
+ tool_ops = operations.get(tool_name, [None])
264
+
265
+ for op in tool_ops:
266
+ try:
267
+ schema = ToolSchemaGenerator.generate_schema(tool_name, op)
268
+ schemas.append(schema)
269
+ except Exception as e:
270
+ logger.warning(f"Failed to generate schema for {tool_name}.{op}: {e}")
271
+
272
+ return schemas
273
+
274
+ @staticmethod
275
+ def generate_schemas_for_tool_instances(
276
+ tool_instances: Dict[str, BaseTool],
277
+ operations: Optional[Dict[str, List[str]]] = None,
278
+ ) -> List[Dict[str, Any]]:
279
+ """
280
+ Generate schemas for tool instances.
281
+
282
+ This method works directly with tool instances, which is useful
283
+ when tools are pre-configured with state.
284
+
285
+ Args:
286
+ tool_instances: Dict mapping tool names to BaseTool instances
287
+ operations: Optional dict mapping tool names to operations
288
+
289
+ Returns:
290
+ List of function schemas
291
+ """
292
+ schemas = []
293
+ operations = operations or {}
294
+
295
+ for tool_name, tool in tool_instances.items():
296
+ tool_ops = operations.get(tool_name, [None])
297
+
298
+ for op in tool_ops:
299
+ try:
300
+ # Generate function name
301
+ if op:
302
+ function_name = f"{tool_name}_{op}"
303
+ else:
304
+ function_name = tool_name
305
+
306
+ # Get operation method
307
+ if op:
308
+ if not hasattr(tool, op):
309
+ logger.warning(f"Tool {tool_name} has no operation '{op}'")
310
+ continue
311
+ method = getattr(tool, op)
312
+ else:
313
+ method = getattr(tool, "run", None)
314
+ if method is None:
315
+ logger.warning(f"Tool {tool_name} has no 'run' method")
316
+ continue
317
+
318
+ # Try to get Pydantic schema from BaseTool
319
+ schema_class = None
320
+ if hasattr(tool, "_schemas"):
321
+ schema_class = tool._schemas.get(op)
322
+
323
+ # Extract parameters
324
+ if schema_class:
325
+ parameters, required = ToolSchemaGenerator._extract_from_pydantic_schema(schema_class)
326
+ description = ToolSchemaGenerator._get_description(schema_class, method)
327
+ else:
328
+ parameters = ToolSchemaGenerator._extract_parameters(method)
329
+ required = ToolSchemaGenerator._get_required_params(method)
330
+ description = ToolSchemaGenerator._get_description(None, method) or f"{tool_name} tool"
331
+
332
+ schema = {
333
+ "name": function_name,
334
+ "description": description,
335
+ "parameters": {
336
+ "type": "object",
337
+ "properties": parameters,
338
+ "required": required,
339
+ },
340
+ }
341
+ schemas.append(schema)
342
+ except Exception as e:
343
+ logger.warning(f"Failed to generate schema for {tool_name}.{op}: {e}")
344
+
345
+ return schemas
346
+
347
+
348
+ def generate_tool_schema(
349
+ tool_name: str,
350
+ operation: Optional[str] = None,
351
+ description: Optional[str] = None,
352
+ ) -> Dict[str, Any]:
353
+ """
354
+ Convenience function to generate tool schema.
355
+
356
+ Args:
357
+ tool_name: Tool name
358
+ operation: Optional operation name
359
+ description: Optional custom description
360
+
361
+ Returns:
362
+ OpenAI function schema dictionary
363
+ """
364
+ return ToolSchemaGenerator.generate_schema(tool_name, operation, description)
@@ -0,0 +1,155 @@
1
+ """
2
+ Community Domain Module
3
+
4
+ Provides agent community collaboration features including governance,
5
+ resource sharing, decision-making, and collaborative workflows.
6
+
7
+ This module enables developers to:
8
+ - Create and manage agent communities
9
+ - Facilitate agent-to-agent communication
10
+ - Share resources and knowledge between agents
11
+ - Make collective decisions through various governance models
12
+ - Run collaborative workflows and sessions
13
+
14
+ Version: 1.0.0
15
+ """
16
+
17
+ __version__ = "1.0.0"
18
+
19
+ # Core managers
20
+ from .community_manager import CommunityManager, MemberLifecycleHooks
21
+ from .community_integration import CommunityIntegration
22
+ from .decision_engine import (
23
+ DecisionEngine,
24
+ ConsensusAlgorithm,
25
+ ConflictResolutionStrategy,
26
+ )
27
+ from .resource_manager import ResourceManager
28
+ from .collaborative_workflow import CollaborativeWorkflowEngine
29
+ from .analytics import CommunityAnalytics
30
+
31
+ # Communication and context
32
+ from .communication_hub import (
33
+ CommunicationHub,
34
+ Message,
35
+ Event,
36
+ MessageType,
37
+ EventType,
38
+ )
39
+ from .shared_context_manager import (
40
+ SharedContextManager,
41
+ SharedContext,
42
+ ContextScope,
43
+ ConflictResolutionStrategy as ContextConflictStrategy,
44
+ )
45
+
46
+ # Agent adapters
47
+ from .agent_adapter import (
48
+ AgentAdapter,
49
+ StandardLLMAdapter,
50
+ CustomAgentAdapter,
51
+ AgentAdapterRegistry,
52
+ AgentCapability,
53
+ )
54
+
55
+ # Builder
56
+ from .community_builder import CommunityBuilder, builder
57
+
58
+ # Models
59
+ from .models import (
60
+ CommunityRole,
61
+ GovernanceType,
62
+ DecisionStatus,
63
+ ResourceType,
64
+ CommunityMember,
65
+ CommunityResource,
66
+ CommunityDecision,
67
+ AgentCommunity,
68
+ CollaborationSession,
69
+ )
70
+
71
+ # Exceptions
72
+ from .exceptions import (
73
+ CommunityException,
74
+ CommunityNotFoundError,
75
+ MemberNotFoundError,
76
+ ResourceNotFoundError,
77
+ DecisionNotFoundError,
78
+ AccessDeniedError,
79
+ MembershipError,
80
+ VotingError,
81
+ GovernanceError,
82
+ CollaborationError,
83
+ CommunityInitializationError,
84
+ CommunityValidationError,
85
+ QuorumNotMetError,
86
+ ConflictResolutionError,
87
+ CommunityCapacityError,
88
+ AgentAdapterError,
89
+ CommunicationError,
90
+ ContextError,
91
+ )
92
+
93
+ __all__ = [
94
+ # Version
95
+ "__version__",
96
+ # Core managers
97
+ "CommunityManager",
98
+ "CommunityIntegration",
99
+ "DecisionEngine",
100
+ "ResourceManager",
101
+ "CollaborativeWorkflowEngine",
102
+ "CommunityAnalytics",
103
+ "MemberLifecycleHooks",
104
+ # Communication and context
105
+ "CommunicationHub",
106
+ "Message",
107
+ "Event",
108
+ "MessageType",
109
+ "EventType",
110
+ "SharedContextManager",
111
+ "SharedContext",
112
+ "ContextScope",
113
+ "ContextConflictStrategy",
114
+ # Agent adapters
115
+ "AgentAdapter",
116
+ "StandardLLMAdapter",
117
+ "CustomAgentAdapter",
118
+ "AgentAdapterRegistry",
119
+ "AgentCapability",
120
+ # Builder
121
+ "CommunityBuilder",
122
+ "builder",
123
+ # Enums
124
+ "CommunityRole",
125
+ "GovernanceType",
126
+ "DecisionStatus",
127
+ "ResourceType",
128
+ "ConsensusAlgorithm",
129
+ "ConflictResolutionStrategy",
130
+ # Models
131
+ "CommunityMember",
132
+ "CommunityResource",
133
+ "CommunityDecision",
134
+ "AgentCommunity",
135
+ "CollaborationSession",
136
+ # Exceptions
137
+ "CommunityException",
138
+ "CommunityNotFoundError",
139
+ "MemberNotFoundError",
140
+ "ResourceNotFoundError",
141
+ "DecisionNotFoundError",
142
+ "AccessDeniedError",
143
+ "MembershipError",
144
+ "VotingError",
145
+ "GovernanceError",
146
+ "CollaborationError",
147
+ "CommunityInitializationError",
148
+ "CommunityValidationError",
149
+ "QuorumNotMetError",
150
+ "ConflictResolutionError",
151
+ "CommunityCapacityError",
152
+ "AgentAdapterError",
153
+ "CommunicationError",
154
+ "ContextError",
155
+ ]