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,377 @@
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
+ # Import PydanticUndefined for v2 compatibility
211
+ try:
212
+ from pydantic_core import PydanticUndefined
213
+ except ImportError:
214
+ PydanticUndefined = type(None) # Fallback for Pydantic v1
215
+
216
+ for field_name, field_info in schema_class.model_fields.items():
217
+ # Build property schema
218
+ prop_schema: Dict[str, Any] = {}
219
+
220
+ # Get type
221
+ field_type = field_info.annotation
222
+ prop_schema.update(ToolSchemaGenerator._type_to_schema(field_type))
223
+
224
+ # Get description from Field
225
+ if hasattr(field_info, "description") and field_info.description:
226
+ prop_schema["description"] = field_info.description
227
+
228
+ # Check if required using Pydantic v2 API (preferred)
229
+ if hasattr(field_info, "is_required") and callable(field_info.is_required):
230
+ if field_info.is_required():
231
+ required.append(field_name)
232
+ elif field_info.default is not None and field_info.default is not PydanticUndefined:
233
+ prop_schema["default"] = field_info.default
234
+ else:
235
+ # Fallback for Pydantic v1
236
+ if field_info.default is None or field_info.default == inspect.Parameter.empty:
237
+ required.append(field_name)
238
+ else:
239
+ prop_schema["default"] = field_info.default
240
+
241
+ properties[field_name] = prop_schema
242
+
243
+ return properties, required
244
+
245
+ @staticmethod
246
+ def _get_description(schema_class: Optional[Type[BaseModel]], method) -> Optional[str]:
247
+ """Get description from schema class docstring or method docstring."""
248
+ if schema_class and schema_class.__doc__:
249
+ return schema_class.__doc__.strip().split("\n")[0]
250
+ if method and method.__doc__:
251
+ # Extract first line of docstring
252
+ doc_lines = method.__doc__.strip().split("\n")
253
+ if doc_lines:
254
+ return doc_lines[0]
255
+ return None
256
+
257
+ @staticmethod
258
+ def generate_schemas_for_tools(
259
+ tool_names: List[str],
260
+ operations: Optional[Dict[str, List[str]]] = None,
261
+ ) -> List[Dict[str, Any]]:
262
+ """
263
+ Generate schemas for multiple tools.
264
+
265
+ Args:
266
+ tool_names: List of tool names
267
+ operations: Optional dict mapping tool names to operations
268
+
269
+ Returns:
270
+ List of function schemas
271
+ """
272
+ schemas = []
273
+ operations = operations or {}
274
+
275
+ for tool_name in tool_names:
276
+ tool_ops = operations.get(tool_name, [None])
277
+
278
+ for op in tool_ops:
279
+ try:
280
+ schema = ToolSchemaGenerator.generate_schema(tool_name, op)
281
+ schemas.append(schema)
282
+ except Exception as e:
283
+ logger.warning(f"Failed to generate schema for {tool_name}.{op}: {e}")
284
+
285
+ return schemas
286
+
287
+ @staticmethod
288
+ def generate_schemas_for_tool_instances(
289
+ tool_instances: Dict[str, BaseTool],
290
+ operations: Optional[Dict[str, List[str]]] = None,
291
+ ) -> List[Dict[str, Any]]:
292
+ """
293
+ Generate schemas for tool instances.
294
+
295
+ This method works directly with tool instances, which is useful
296
+ when tools are pre-configured with state.
297
+
298
+ Args:
299
+ tool_instances: Dict mapping tool names to BaseTool instances
300
+ operations: Optional dict mapping tool names to operations
301
+
302
+ Returns:
303
+ List of function schemas
304
+ """
305
+ schemas = []
306
+ operations = operations or {}
307
+
308
+ for tool_name, tool in tool_instances.items():
309
+ tool_ops = operations.get(tool_name, [None])
310
+
311
+ for op in tool_ops:
312
+ try:
313
+ # Generate function name
314
+ if op:
315
+ function_name = f"{tool_name}_{op}"
316
+ else:
317
+ function_name = tool_name
318
+
319
+ # Get operation method
320
+ if op:
321
+ if not hasattr(tool, op):
322
+ logger.warning(f"Tool {tool_name} has no operation '{op}'")
323
+ continue
324
+ method = getattr(tool, op)
325
+ else:
326
+ method = getattr(tool, "run", None)
327
+ if method is None:
328
+ logger.warning(f"Tool {tool_name} has no 'run' method")
329
+ continue
330
+
331
+ # Try to get Pydantic schema from BaseTool
332
+ schema_class = None
333
+ if hasattr(tool, "_schemas"):
334
+ schema_class = tool._schemas.get(op)
335
+
336
+ # Extract parameters
337
+ if schema_class:
338
+ parameters, required = ToolSchemaGenerator._extract_from_pydantic_schema(schema_class)
339
+ description = ToolSchemaGenerator._get_description(schema_class, method)
340
+ else:
341
+ parameters = ToolSchemaGenerator._extract_parameters(method)
342
+ required = ToolSchemaGenerator._get_required_params(method)
343
+ description = ToolSchemaGenerator._get_description(None, method) or f"{tool_name} tool"
344
+
345
+ schema = {
346
+ "name": function_name,
347
+ "description": description,
348
+ "parameters": {
349
+ "type": "object",
350
+ "properties": parameters,
351
+ "required": required,
352
+ },
353
+ }
354
+ schemas.append(schema)
355
+ except Exception as e:
356
+ logger.warning(f"Failed to generate schema for {tool_name}.{op}: {e}")
357
+
358
+ return schemas
359
+
360
+
361
+ def generate_tool_schema(
362
+ tool_name: str,
363
+ operation: Optional[str] = None,
364
+ description: Optional[str] = None,
365
+ ) -> Dict[str, Any]:
366
+ """
367
+ Convenience function to generate tool schema.
368
+
369
+ Args:
370
+ tool_name: Tool name
371
+ operation: Optional operation name
372
+ description: Optional custom description
373
+
374
+ Returns:
375
+ OpenAI function schema dictionary
376
+ """
377
+ 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
+ ]