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,257 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ 工具类型注解检查器
4
+
5
+ 用于工具开发和维护,检查工具方法的类型注解完整性。
6
+ 帮助开发者确保工具方法有完整的类型注解,为自动 Schema 生成提供基础。
7
+
8
+ 使用方法:
9
+ # 检查所有工具
10
+ aiecs tools check-annotations
11
+
12
+ # 检查特定工具
13
+ aiecs tools check-annotations pandas
14
+
15
+ # 检查多个工具
16
+ aiecs tools check-annotations pandas chart image
17
+ """
18
+
19
+ from aiecs.tools import discover_tools, TOOL_CLASSES
20
+ import sys
21
+ import inspect
22
+ from typing import get_type_hints, Optional, List, Dict
23
+
24
+ # 确保可以导入 aiecs
25
+ import os
26
+
27
+ sys.path.insert(
28
+ 0,
29
+ os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(__file__)))),
30
+ )
31
+
32
+
33
+ def check_method_type_annotations(method, method_name):
34
+ """
35
+ 检查方法的类型注解完整性
36
+
37
+ Returns:
38
+ dict: {
39
+ 'has_annotations': bool,
40
+ 'complete': bool,
41
+ 'params_with_types': list,
42
+ 'params_without_types': list,
43
+ 'has_return_type': bool,
44
+ 'suggestions': list # 改进建议
45
+ }
46
+ """
47
+ try:
48
+ sig = inspect.signature(method)
49
+ type_hints = get_type_hints(method)
50
+ except Exception:
51
+ return {
52
+ "has_annotations": False,
53
+ "complete": False,
54
+ "params_with_types": [],
55
+ "params_without_types": [],
56
+ "has_return_type": False,
57
+ "error": True,
58
+ "suggestions": ["无法获取类型信息,请检查方法定义"],
59
+ }
60
+
61
+ params_with_types = []
62
+ params_without_types = []
63
+ suggestions = []
64
+
65
+ for param_name, param in sig.parameters.items():
66
+ if param_name == "self":
67
+ continue
68
+
69
+ if param_name in type_hints:
70
+ params_with_types.append(param_name)
71
+ else:
72
+ params_without_types.append(param_name)
73
+ suggestions.append(f"为参数 '{param_name}' 添加类型注解")
74
+
75
+ has_return_type = "return" in type_hints
76
+ if not has_return_type:
77
+ suggestions.append("添加返回类型注解")
78
+
79
+ has_any_annotations = len(params_with_types) > 0 or has_return_type
80
+ is_complete = len(params_without_types) == 0 and has_return_type
81
+
82
+ return {
83
+ "has_annotations": has_any_annotations,
84
+ "complete": is_complete,
85
+ "params_with_types": params_with_types,
86
+ "params_without_types": params_without_types,
87
+ "has_return_type": has_return_type,
88
+ "error": False,
89
+ "suggestions": suggestions,
90
+ }
91
+
92
+
93
+ def analyze_tool(tool_name, tool_class):
94
+ """分析单个工具的类型注解情况"""
95
+ methods_info = []
96
+
97
+ for method_name in dir(tool_class):
98
+ # 跳过私有方法和特殊方法
99
+ if method_name.startswith("_"):
100
+ continue
101
+
102
+ # 跳过基类方法
103
+ if method_name in ["run", "run_async", "run_batch"]:
104
+ continue
105
+
106
+ method = getattr(tool_class, method_name)
107
+
108
+ # 跳过非方法属性
109
+ if not callable(method):
110
+ continue
111
+
112
+ # 跳过类(如 Config, Schema 等)
113
+ if isinstance(method, type):
114
+ continue
115
+
116
+ # 检查类型注解
117
+ annotation_info = check_method_type_annotations(method, method_name)
118
+ annotation_info["method_name"] = method_name
119
+
120
+ methods_info.append(annotation_info)
121
+
122
+ return methods_info
123
+
124
+
125
+ def print_tool_report(tool_name: str, methods_info: List[Dict], verbose: bool = False):
126
+ """打印单个工具的报告"""
127
+
128
+ total = len(methods_info)
129
+ complete = sum(1 for m in methods_info if m["complete"])
130
+ sum(1 for m in methods_info if m["has_annotations"] and not m["complete"])
131
+ sum(1 for m in methods_info if not m["has_annotations"])
132
+
133
+ # 计算覆盖率
134
+ coverage = (complete / total * 100) if total > 0 else 0
135
+
136
+ # 状态图标
137
+ if coverage == 100:
138
+ status = "✅"
139
+ elif coverage >= 80:
140
+ status = "⚠️"
141
+ else:
142
+ status = "❌"
143
+
144
+ print(f"\n{status} {tool_name}: {complete}/{total} 方法有完整类型注解 ({coverage:.1f}%)")
145
+
146
+ if verbose or coverage < 100:
147
+ # 显示不完整的方法
148
+ incomplete = [m for m in methods_info if not m["complete"]]
149
+ if incomplete:
150
+ print("\n 需要改进的方法:")
151
+ for method_info in incomplete:
152
+ method_name = method_info["method_name"]
153
+ suggestions = method_info.get("suggestions", [])
154
+
155
+ if method_info["error"]:
156
+ print(f" ✗ {method_name}: 无法获取类型信息")
157
+ elif not method_info["has_annotations"]:
158
+ print(f" ✗ {method_name}: 无类型注解")
159
+ else:
160
+ print(f" ⚠ {method_name}: 部分类型注解")
161
+
162
+ # 显示改进建议
163
+ if suggestions and verbose:
164
+ for suggestion in suggestions:
165
+ print(f" → {suggestion}")
166
+
167
+
168
+ def check_annotations(tool_names: Optional[List[str]] = None, verbose: bool = False):
169
+ """
170
+ 检查工具的类型注解
171
+
172
+ Args:
173
+ tool_names: 要检查的工具名称列表,None 表示检查所有工具
174
+ verbose: 是否显示详细信息
175
+ """
176
+ print("=" * 100)
177
+ print("工具类型注解检查器")
178
+ print("=" * 100)
179
+
180
+ discover_tools()
181
+
182
+ # 确定要检查的工具
183
+ if tool_names:
184
+ tools_to_check = {}
185
+ for name in tool_names:
186
+ if name in TOOL_CLASSES:
187
+ tools_to_check[name] = TOOL_CLASSES[name]
188
+ else:
189
+ print(f"\n❌ 工具 '{name}' 不存在")
190
+
191
+ if not tools_to_check:
192
+ print("\n没有找到要检查的工具")
193
+ return
194
+ else:
195
+ tools_to_check = TOOL_CLASSES
196
+
197
+ # 检查每个工具
198
+ all_stats = []
199
+ for tool_name in sorted(tools_to_check.keys()):
200
+ tool_class = tools_to_check[tool_name]
201
+ methods_info = analyze_tool(tool_name, tool_class)
202
+
203
+ if methods_info:
204
+ print_tool_report(tool_name, methods_info, verbose)
205
+
206
+ total = len(methods_info)
207
+ complete = sum(1 for m in methods_info if m["complete"])
208
+ all_stats.append((tool_name, total, complete))
209
+
210
+ # 总体统计
211
+ if len(all_stats) > 1:
212
+ total_methods = sum(s[1] for s in all_stats)
213
+ total_complete = sum(s[2] for s in all_stats)
214
+ overall_coverage = (total_complete / total_methods * 100) if total_methods > 0 else 0
215
+
216
+ print("\n" + "=" * 100)
217
+ print(f"总体统计: {total_complete}/{total_methods} 方法有完整类型注解 ({overall_coverage:.1f}%)")
218
+ print("=" * 100)
219
+
220
+ print("\n💡 提示:")
221
+ print(" - 完整类型注解包括:所有参数的类型 + 返回类型")
222
+ print(" - 使用 --verbose 查看详细的改进建议")
223
+ print(" - 完整的类型注解是自动 Schema 生成的基础")
224
+
225
+
226
+ def main():
227
+ """命令行入口"""
228
+ import argparse
229
+
230
+ parser = argparse.ArgumentParser(
231
+ description="检查工具方法的类型注解完整性",
232
+ formatter_class=argparse.RawDescriptionHelpFormatter,
233
+ epilog="""
234
+ 示例:
235
+ # 检查所有工具
236
+ aiecs tools check-annotations
237
+
238
+ # 检查特定工具
239
+ aiecs tools check-annotations pandas
240
+
241
+ # 检查多个工具并显示详细信息
242
+ aiecs tools check-annotations pandas chart --verbose
243
+ """,
244
+ )
245
+
246
+ parser.add_argument("tools", nargs="*", help="要检查的工具名称(不指定则检查所有工具)")
247
+
248
+ parser.add_argument("-v", "--verbose", action="store_true", help="显示详细的改进建议")
249
+
250
+ args = parser.parse_args()
251
+
252
+ tool_names = args.tools if args.tools else None
253
+ check_annotations(tool_names, args.verbose)
254
+
255
+
256
+ if __name__ == "__main__":
257
+ main()
@@ -0,0 +1,66 @@
1
+ #!/bin/bash
2
+ # Pre-commit hook for schema coverage validation
3
+ # This script can be used as a git pre-commit hook or standalone
4
+
5
+ set -e
6
+
7
+ # Configuration
8
+ MIN_COVERAGE=${MIN_COVERAGE:-90}
9
+ VERBOSE=${VERBOSE:-false}
10
+
11
+ echo "🔍 Checking schema coverage for all tools..."
12
+ echo "Minimum coverage threshold: ${MIN_COVERAGE}%"
13
+
14
+ # Run schema coverage check
15
+ if command -v aiecs-tools-schema-coverage &> /dev/null; then
16
+ # Use CLI command if available
17
+ if [ "$VERBOSE" = "true" ]; then
18
+ aiecs-tools-schema-coverage --min-coverage "$MIN_COVERAGE" --format json > /tmp/schema_coverage_check.json
19
+ else
20
+ aiecs-tools-schema-coverage --min-coverage "$MIN_COVERAGE" --format json > /tmp/schema_coverage_check.json 2>/dev/null
21
+ fi
22
+
23
+ # Parse JSON to check if any tools are below threshold
24
+ python3 << EOF
25
+ import json
26
+ import sys
27
+
28
+ try:
29
+ with open('/tmp/schema_coverage_check.json', 'r') as f:
30
+ data = json.load(f)
31
+
32
+ summary = data.get('summary', {})
33
+ coverage = summary.get('coverage_percentage', 0)
34
+
35
+ if coverage < $MIN_COVERAGE:
36
+ print(f"❌ Schema coverage is {coverage:.1f}%, below threshold of $MIN_COVERAGE%")
37
+ sys.exit(1)
38
+ else:
39
+ print(f"✅ Schema coverage is {coverage:.1f}%, meets threshold of $MIN_COVERAGE%")
40
+
41
+ # Check individual tools
42
+ tools_below_threshold = []
43
+ for tool_name, tool_data in data.get('tools', {}).items():
44
+ tool_coverage = tool_data.get('coverage_percentage', 0)
45
+ if tool_coverage < $MIN_COVERAGE:
46
+ tools_below_threshold.append((tool_name, tool_coverage))
47
+
48
+ if tools_below_threshold:
49
+ print(f"\n⚠️ {len(tools_below_threshold)} tool(s) below threshold:")
50
+ for tool_name, coverage in sorted(tools_below_threshold, key=lambda x: x[1]):
51
+ print(f" - {tool_name}: {coverage:.1f}%")
52
+ sys.exit(1)
53
+
54
+ sys.exit(0)
55
+ except Exception as e:
56
+ print(f"Error checking coverage: {e}")
57
+ sys.exit(1)
58
+ EOF
59
+
60
+ else
61
+ # Fallback to Python module
62
+ python3 -m aiecs.scripts.tools_develop.validate_tool_schemas --min-coverage "$MIN_COVERAGE" --export-coverage /tmp/schema_coverage.json
63
+ fi
64
+
65
+ echo "✅ Schema coverage check passed!"
66
+