aiecs 1.5.1__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.
Files changed (302) hide show
  1. aiecs/__init__.py +72 -0
  2. aiecs/__main__.py +41 -0
  3. aiecs/aiecs_client.py +469 -0
  4. aiecs/application/__init__.py +10 -0
  5. aiecs/application/executors/__init__.py +10 -0
  6. aiecs/application/executors/operation_executor.py +363 -0
  7. aiecs/application/knowledge_graph/__init__.py +7 -0
  8. aiecs/application/knowledge_graph/builder/__init__.py +37 -0
  9. aiecs/application/knowledge_graph/builder/document_builder.py +375 -0
  10. aiecs/application/knowledge_graph/builder/graph_builder.py +356 -0
  11. aiecs/application/knowledge_graph/builder/schema_mapping.py +531 -0
  12. aiecs/application/knowledge_graph/builder/structured_pipeline.py +443 -0
  13. aiecs/application/knowledge_graph/builder/text_chunker.py +319 -0
  14. aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
  15. aiecs/application/knowledge_graph/extractors/base.py +100 -0
  16. aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +327 -0
  17. aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +349 -0
  18. aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +244 -0
  19. aiecs/application/knowledge_graph/fusion/__init__.py +23 -0
  20. aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +387 -0
  21. aiecs/application/knowledge_graph/fusion/entity_linker.py +343 -0
  22. aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +580 -0
  23. aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +189 -0
  24. aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
  25. aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +344 -0
  26. aiecs/application/knowledge_graph/pattern_matching/query_executor.py +378 -0
  27. aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
  28. aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +199 -0
  29. aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
  30. aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
  31. aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +347 -0
  32. aiecs/application/knowledge_graph/reasoning/inference_engine.py +504 -0
  33. aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +167 -0
  34. aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
  35. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
  36. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +630 -0
  37. aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +654 -0
  38. aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +477 -0
  39. aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +390 -0
  40. aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +217 -0
  41. aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +169 -0
  42. aiecs/application/knowledge_graph/reasoning/query_planner.py +872 -0
  43. aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +554 -0
  44. aiecs/application/knowledge_graph/retrieval/__init__.py +19 -0
  45. aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +596 -0
  46. aiecs/application/knowledge_graph/search/__init__.py +59 -0
  47. aiecs/application/knowledge_graph/search/hybrid_search.py +423 -0
  48. aiecs/application/knowledge_graph/search/reranker.py +295 -0
  49. aiecs/application/knowledge_graph/search/reranker_strategies.py +553 -0
  50. aiecs/application/knowledge_graph/search/text_similarity.py +398 -0
  51. aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
  52. aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +329 -0
  53. aiecs/application/knowledge_graph/traversal/path_scorer.py +269 -0
  54. aiecs/application/knowledge_graph/validators/__init__.py +13 -0
  55. aiecs/application/knowledge_graph/validators/relation_validator.py +189 -0
  56. aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
  57. aiecs/application/knowledge_graph/visualization/graph_visualizer.py +321 -0
  58. aiecs/common/__init__.py +9 -0
  59. aiecs/common/knowledge_graph/__init__.py +17 -0
  60. aiecs/common/knowledge_graph/runnable.py +484 -0
  61. aiecs/config/__init__.py +16 -0
  62. aiecs/config/config.py +498 -0
  63. aiecs/config/graph_config.py +137 -0
  64. aiecs/config/registry.py +23 -0
  65. aiecs/core/__init__.py +46 -0
  66. aiecs/core/interface/__init__.py +34 -0
  67. aiecs/core/interface/execution_interface.py +152 -0
  68. aiecs/core/interface/storage_interface.py +171 -0
  69. aiecs/domain/__init__.py +289 -0
  70. aiecs/domain/agent/__init__.py +189 -0
  71. aiecs/domain/agent/base_agent.py +697 -0
  72. aiecs/domain/agent/exceptions.py +103 -0
  73. aiecs/domain/agent/graph_aware_mixin.py +559 -0
  74. aiecs/domain/agent/hybrid_agent.py +490 -0
  75. aiecs/domain/agent/integration/__init__.py +26 -0
  76. aiecs/domain/agent/integration/context_compressor.py +222 -0
  77. aiecs/domain/agent/integration/context_engine_adapter.py +252 -0
  78. aiecs/domain/agent/integration/retry_policy.py +219 -0
  79. aiecs/domain/agent/integration/role_config.py +213 -0
  80. aiecs/domain/agent/knowledge_aware_agent.py +646 -0
  81. aiecs/domain/agent/lifecycle.py +296 -0
  82. aiecs/domain/agent/llm_agent.py +300 -0
  83. aiecs/domain/agent/memory/__init__.py +12 -0
  84. aiecs/domain/agent/memory/conversation.py +197 -0
  85. aiecs/domain/agent/migration/__init__.py +14 -0
  86. aiecs/domain/agent/migration/conversion.py +160 -0
  87. aiecs/domain/agent/migration/legacy_wrapper.py +90 -0
  88. aiecs/domain/agent/models.py +317 -0
  89. aiecs/domain/agent/observability.py +407 -0
  90. aiecs/domain/agent/persistence.py +289 -0
  91. aiecs/domain/agent/prompts/__init__.py +29 -0
  92. aiecs/domain/agent/prompts/builder.py +161 -0
  93. aiecs/domain/agent/prompts/formatters.py +189 -0
  94. aiecs/domain/agent/prompts/template.py +255 -0
  95. aiecs/domain/agent/registry.py +260 -0
  96. aiecs/domain/agent/tool_agent.py +257 -0
  97. aiecs/domain/agent/tools/__init__.py +12 -0
  98. aiecs/domain/agent/tools/schema_generator.py +221 -0
  99. aiecs/domain/community/__init__.py +155 -0
  100. aiecs/domain/community/agent_adapter.py +477 -0
  101. aiecs/domain/community/analytics.py +481 -0
  102. aiecs/domain/community/collaborative_workflow.py +642 -0
  103. aiecs/domain/community/communication_hub.py +645 -0
  104. aiecs/domain/community/community_builder.py +320 -0
  105. aiecs/domain/community/community_integration.py +800 -0
  106. aiecs/domain/community/community_manager.py +813 -0
  107. aiecs/domain/community/decision_engine.py +879 -0
  108. aiecs/domain/community/exceptions.py +225 -0
  109. aiecs/domain/community/models/__init__.py +33 -0
  110. aiecs/domain/community/models/community_models.py +268 -0
  111. aiecs/domain/community/resource_manager.py +457 -0
  112. aiecs/domain/community/shared_context_manager.py +603 -0
  113. aiecs/domain/context/__init__.py +58 -0
  114. aiecs/domain/context/context_engine.py +989 -0
  115. aiecs/domain/context/conversation_models.py +354 -0
  116. aiecs/domain/context/graph_memory.py +467 -0
  117. aiecs/domain/execution/__init__.py +12 -0
  118. aiecs/domain/execution/model.py +57 -0
  119. aiecs/domain/knowledge_graph/__init__.py +19 -0
  120. aiecs/domain/knowledge_graph/models/__init__.py +52 -0
  121. aiecs/domain/knowledge_graph/models/entity.py +130 -0
  122. aiecs/domain/knowledge_graph/models/evidence.py +194 -0
  123. aiecs/domain/knowledge_graph/models/inference_rule.py +186 -0
  124. aiecs/domain/knowledge_graph/models/path.py +179 -0
  125. aiecs/domain/knowledge_graph/models/path_pattern.py +173 -0
  126. aiecs/domain/knowledge_graph/models/query.py +272 -0
  127. aiecs/domain/knowledge_graph/models/query_plan.py +187 -0
  128. aiecs/domain/knowledge_graph/models/relation.py +136 -0
  129. aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
  130. aiecs/domain/knowledge_graph/schema/entity_type.py +135 -0
  131. aiecs/domain/knowledge_graph/schema/graph_schema.py +271 -0
  132. aiecs/domain/knowledge_graph/schema/property_schema.py +155 -0
  133. aiecs/domain/knowledge_graph/schema/relation_type.py +171 -0
  134. aiecs/domain/knowledge_graph/schema/schema_manager.py +496 -0
  135. aiecs/domain/knowledge_graph/schema/type_enums.py +205 -0
  136. aiecs/domain/task/__init__.py +13 -0
  137. aiecs/domain/task/dsl_processor.py +613 -0
  138. aiecs/domain/task/model.py +62 -0
  139. aiecs/domain/task/task_context.py +268 -0
  140. aiecs/infrastructure/__init__.py +24 -0
  141. aiecs/infrastructure/graph_storage/__init__.py +11 -0
  142. aiecs/infrastructure/graph_storage/base.py +601 -0
  143. aiecs/infrastructure/graph_storage/batch_operations.py +449 -0
  144. aiecs/infrastructure/graph_storage/cache.py +429 -0
  145. aiecs/infrastructure/graph_storage/distributed.py +226 -0
  146. aiecs/infrastructure/graph_storage/error_handling.py +390 -0
  147. aiecs/infrastructure/graph_storage/graceful_degradation.py +306 -0
  148. aiecs/infrastructure/graph_storage/health_checks.py +378 -0
  149. aiecs/infrastructure/graph_storage/in_memory.py +514 -0
  150. aiecs/infrastructure/graph_storage/index_optimization.py +483 -0
  151. aiecs/infrastructure/graph_storage/lazy_loading.py +410 -0
  152. aiecs/infrastructure/graph_storage/metrics.py +357 -0
  153. aiecs/infrastructure/graph_storage/migration.py +413 -0
  154. aiecs/infrastructure/graph_storage/pagination.py +471 -0
  155. aiecs/infrastructure/graph_storage/performance_monitoring.py +466 -0
  156. aiecs/infrastructure/graph_storage/postgres.py +871 -0
  157. aiecs/infrastructure/graph_storage/query_optimizer.py +635 -0
  158. aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
  159. aiecs/infrastructure/graph_storage/sqlite.py +623 -0
  160. aiecs/infrastructure/graph_storage/streaming.py +495 -0
  161. aiecs/infrastructure/messaging/__init__.py +13 -0
  162. aiecs/infrastructure/messaging/celery_task_manager.py +383 -0
  163. aiecs/infrastructure/messaging/websocket_manager.py +298 -0
  164. aiecs/infrastructure/monitoring/__init__.py +34 -0
  165. aiecs/infrastructure/monitoring/executor_metrics.py +174 -0
  166. aiecs/infrastructure/monitoring/global_metrics_manager.py +213 -0
  167. aiecs/infrastructure/monitoring/structured_logger.py +48 -0
  168. aiecs/infrastructure/monitoring/tracing_manager.py +410 -0
  169. aiecs/infrastructure/persistence/__init__.py +24 -0
  170. aiecs/infrastructure/persistence/context_engine_client.py +187 -0
  171. aiecs/infrastructure/persistence/database_manager.py +333 -0
  172. aiecs/infrastructure/persistence/file_storage.py +754 -0
  173. aiecs/infrastructure/persistence/redis_client.py +220 -0
  174. aiecs/llm/__init__.py +86 -0
  175. aiecs/llm/callbacks/__init__.py +11 -0
  176. aiecs/llm/callbacks/custom_callbacks.py +264 -0
  177. aiecs/llm/client_factory.py +420 -0
  178. aiecs/llm/clients/__init__.py +33 -0
  179. aiecs/llm/clients/base_client.py +193 -0
  180. aiecs/llm/clients/googleai_client.py +181 -0
  181. aiecs/llm/clients/openai_client.py +131 -0
  182. aiecs/llm/clients/vertex_client.py +437 -0
  183. aiecs/llm/clients/xai_client.py +184 -0
  184. aiecs/llm/config/__init__.py +51 -0
  185. aiecs/llm/config/config_loader.py +275 -0
  186. aiecs/llm/config/config_validator.py +236 -0
  187. aiecs/llm/config/model_config.py +151 -0
  188. aiecs/llm/utils/__init__.py +10 -0
  189. aiecs/llm/utils/validate_config.py +91 -0
  190. aiecs/main.py +363 -0
  191. aiecs/scripts/__init__.py +3 -0
  192. aiecs/scripts/aid/VERSION_MANAGEMENT.md +97 -0
  193. aiecs/scripts/aid/__init__.py +19 -0
  194. aiecs/scripts/aid/version_manager.py +215 -0
  195. aiecs/scripts/dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md +242 -0
  196. aiecs/scripts/dependance_check/README_DEPENDENCY_CHECKER.md +310 -0
  197. aiecs/scripts/dependance_check/__init__.py +17 -0
  198. aiecs/scripts/dependance_check/dependency_checker.py +938 -0
  199. aiecs/scripts/dependance_check/dependency_fixer.py +391 -0
  200. aiecs/scripts/dependance_check/download_nlp_data.py +396 -0
  201. aiecs/scripts/dependance_check/quick_dependency_check.py +270 -0
  202. aiecs/scripts/dependance_check/setup_nlp_data.sh +217 -0
  203. aiecs/scripts/dependance_patch/__init__.py +7 -0
  204. aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md +126 -0
  205. aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
  206. aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py +128 -0
  207. aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh +82 -0
  208. aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh +188 -0
  209. aiecs/scripts/dependance_patch/fix_weasel/run_weasel_patch.sh +41 -0
  210. aiecs/scripts/tools_develop/README.md +449 -0
  211. aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
  212. aiecs/scripts/tools_develop/__init__.py +21 -0
  213. aiecs/scripts/tools_develop/check_type_annotations.py +259 -0
  214. aiecs/scripts/tools_develop/validate_tool_schemas.py +422 -0
  215. aiecs/scripts/tools_develop/verify_tools.py +356 -0
  216. aiecs/tasks/__init__.py +1 -0
  217. aiecs/tasks/worker.py +172 -0
  218. aiecs/tools/__init__.py +299 -0
  219. aiecs/tools/apisource/__init__.py +99 -0
  220. aiecs/tools/apisource/intelligence/__init__.py +19 -0
  221. aiecs/tools/apisource/intelligence/data_fusion.py +381 -0
  222. aiecs/tools/apisource/intelligence/query_analyzer.py +413 -0
  223. aiecs/tools/apisource/intelligence/search_enhancer.py +388 -0
  224. aiecs/tools/apisource/monitoring/__init__.py +9 -0
  225. aiecs/tools/apisource/monitoring/metrics.py +303 -0
  226. aiecs/tools/apisource/providers/__init__.py +115 -0
  227. aiecs/tools/apisource/providers/base.py +664 -0
  228. aiecs/tools/apisource/providers/census.py +401 -0
  229. aiecs/tools/apisource/providers/fred.py +564 -0
  230. aiecs/tools/apisource/providers/newsapi.py +412 -0
  231. aiecs/tools/apisource/providers/worldbank.py +357 -0
  232. aiecs/tools/apisource/reliability/__init__.py +12 -0
  233. aiecs/tools/apisource/reliability/error_handler.py +375 -0
  234. aiecs/tools/apisource/reliability/fallback_strategy.py +391 -0
  235. aiecs/tools/apisource/tool.py +850 -0
  236. aiecs/tools/apisource/utils/__init__.py +9 -0
  237. aiecs/tools/apisource/utils/validators.py +338 -0
  238. aiecs/tools/base_tool.py +201 -0
  239. aiecs/tools/docs/__init__.py +121 -0
  240. aiecs/tools/docs/ai_document_orchestrator.py +599 -0
  241. aiecs/tools/docs/ai_document_writer_orchestrator.py +2403 -0
  242. aiecs/tools/docs/content_insertion_tool.py +1333 -0
  243. aiecs/tools/docs/document_creator_tool.py +1317 -0
  244. aiecs/tools/docs/document_layout_tool.py +1166 -0
  245. aiecs/tools/docs/document_parser_tool.py +994 -0
  246. aiecs/tools/docs/document_writer_tool.py +1818 -0
  247. aiecs/tools/knowledge_graph/__init__.py +17 -0
  248. aiecs/tools/knowledge_graph/graph_reasoning_tool.py +734 -0
  249. aiecs/tools/knowledge_graph/graph_search_tool.py +923 -0
  250. aiecs/tools/knowledge_graph/kg_builder_tool.py +476 -0
  251. aiecs/tools/langchain_adapter.py +542 -0
  252. aiecs/tools/schema_generator.py +275 -0
  253. aiecs/tools/search_tool/__init__.py +100 -0
  254. aiecs/tools/search_tool/analyzers.py +589 -0
  255. aiecs/tools/search_tool/cache.py +260 -0
  256. aiecs/tools/search_tool/constants.py +128 -0
  257. aiecs/tools/search_tool/context.py +216 -0
  258. aiecs/tools/search_tool/core.py +749 -0
  259. aiecs/tools/search_tool/deduplicator.py +123 -0
  260. aiecs/tools/search_tool/error_handler.py +271 -0
  261. aiecs/tools/search_tool/metrics.py +371 -0
  262. aiecs/tools/search_tool/rate_limiter.py +178 -0
  263. aiecs/tools/search_tool/schemas.py +277 -0
  264. aiecs/tools/statistics/__init__.py +80 -0
  265. aiecs/tools/statistics/ai_data_analysis_orchestrator.py +643 -0
  266. aiecs/tools/statistics/ai_insight_generator_tool.py +505 -0
  267. aiecs/tools/statistics/ai_report_orchestrator_tool.py +694 -0
  268. aiecs/tools/statistics/data_loader_tool.py +564 -0
  269. aiecs/tools/statistics/data_profiler_tool.py +658 -0
  270. aiecs/tools/statistics/data_transformer_tool.py +573 -0
  271. aiecs/tools/statistics/data_visualizer_tool.py +495 -0
  272. aiecs/tools/statistics/model_trainer_tool.py +487 -0
  273. aiecs/tools/statistics/statistical_analyzer_tool.py +459 -0
  274. aiecs/tools/task_tools/__init__.py +86 -0
  275. aiecs/tools/task_tools/chart_tool.py +732 -0
  276. aiecs/tools/task_tools/classfire_tool.py +922 -0
  277. aiecs/tools/task_tools/image_tool.py +447 -0
  278. aiecs/tools/task_tools/office_tool.py +684 -0
  279. aiecs/tools/task_tools/pandas_tool.py +635 -0
  280. aiecs/tools/task_tools/report_tool.py +635 -0
  281. aiecs/tools/task_tools/research_tool.py +392 -0
  282. aiecs/tools/task_tools/scraper_tool.py +715 -0
  283. aiecs/tools/task_tools/stats_tool.py +688 -0
  284. aiecs/tools/temp_file_manager.py +130 -0
  285. aiecs/tools/tool_executor/__init__.py +37 -0
  286. aiecs/tools/tool_executor/tool_executor.py +881 -0
  287. aiecs/utils/LLM_output_structor.py +445 -0
  288. aiecs/utils/__init__.py +34 -0
  289. aiecs/utils/base_callback.py +47 -0
  290. aiecs/utils/cache_provider.py +695 -0
  291. aiecs/utils/execution_utils.py +184 -0
  292. aiecs/utils/logging.py +1 -0
  293. aiecs/utils/prompt_loader.py +14 -0
  294. aiecs/utils/token_usage_repository.py +323 -0
  295. aiecs/ws/__init__.py +0 -0
  296. aiecs/ws/socket_server.py +52 -0
  297. aiecs-1.5.1.dist-info/METADATA +608 -0
  298. aiecs-1.5.1.dist-info/RECORD +302 -0
  299. aiecs-1.5.1.dist-info/WHEEL +5 -0
  300. aiecs-1.5.1.dist-info/entry_points.txt +10 -0
  301. aiecs-1.5.1.dist-info/licenses/LICENSE +225 -0
  302. aiecs-1.5.1.dist-info/top_level.txt +1 -0
@@ -0,0 +1,277 @@
1
+ """
2
+ Pydantic Schema Definitions for SearchTool Operations
3
+
4
+ Provides input validation, type safety, and automatic documentation
5
+ for all SearchTool operations.
6
+ """
7
+
8
+ from typing import Optional, List
9
+ from pydantic import BaseModel, Field, field_validator
10
+
11
+
12
+ class SearchWebSchema(BaseModel):
13
+ """Schema for search_web operation"""
14
+
15
+ query: str = Field(description="Search query string")
16
+ num_results: int = Field(
17
+ default=10,
18
+ ge=1,
19
+ le=100,
20
+ description="Number of results to return (1-100)",
21
+ )
22
+ start_index: int = Field(
23
+ default=1,
24
+ ge=1,
25
+ le=91,
26
+ description="Starting index for pagination (1-91)",
27
+ )
28
+ language: str = Field(
29
+ default="en",
30
+ description="Language code for results (e.g., 'en', 'zh-CN', 'es')",
31
+ )
32
+ country: str = Field(
33
+ default="us",
34
+ description="Country code for geolocation (e.g., 'us', 'cn', 'uk')",
35
+ )
36
+ safe_search: str = Field(
37
+ default="medium",
38
+ description="Safe search level: 'off', 'medium', or 'high'",
39
+ )
40
+ date_restrict: Optional[str] = Field(
41
+ default=None,
42
+ description="Date restriction (e.g., 'd7' for last 7 days, 'm3' for last 3 months)",
43
+ )
44
+ file_type: Optional[str] = Field(
45
+ default=None,
46
+ description="File type filter (e.g., 'pdf', 'doc', 'xls')",
47
+ )
48
+ exclude_terms: Optional[List[str]] = Field(
49
+ default=None, description="Terms to exclude from search results"
50
+ )
51
+ auto_enhance: bool = Field(
52
+ default=True,
53
+ description="Whether to automatically enhance query based on detected intent",
54
+ )
55
+ return_summary: bool = Field(
56
+ default=False,
57
+ description="Whether to return a structured summary of results",
58
+ )
59
+
60
+ @field_validator("safe_search")
61
+ @classmethod
62
+ def validate_safe_search(cls, v: str) -> str:
63
+ """Validate safe search level"""
64
+ allowed = ["off", "medium", "high"]
65
+ if v not in allowed:
66
+ raise ValueError(f"safe_search must be one of {allowed}")
67
+ return v
68
+
69
+
70
+ class SearchImagesSchema(BaseModel):
71
+ """Schema for search_images operation"""
72
+
73
+ query: str = Field(description="Image search query string")
74
+ num_results: int = Field(
75
+ default=10,
76
+ ge=1,
77
+ le=100,
78
+ description="Number of image results to return (1-100)",
79
+ )
80
+ image_size: Optional[str] = Field(
81
+ default=None,
82
+ description="Image size filter: 'icon', 'small', 'medium', 'large', 'xlarge', 'xxlarge', 'huge'",
83
+ )
84
+ image_type: Optional[str] = Field(
85
+ default=None,
86
+ description="Image type filter: 'clipart', 'face', 'lineart', 'stock', 'photo', 'animated'",
87
+ )
88
+ image_color_type: Optional[str] = Field(
89
+ default=None,
90
+ description="Color type filter: 'color', 'gray', 'mono', 'trans'",
91
+ )
92
+ safe_search: str = Field(
93
+ default="medium",
94
+ description="Safe search level: 'off', 'medium', or 'high'",
95
+ )
96
+
97
+ @field_validator("safe_search")
98
+ @classmethod
99
+ def validate_safe_search(cls, v: str) -> str:
100
+ """Validate safe search level"""
101
+ allowed = ["off", "medium", "high"]
102
+ if v not in allowed:
103
+ raise ValueError(f"safe_search must be one of {allowed}")
104
+ return v
105
+
106
+
107
+ class SearchNewsSchema(BaseModel):
108
+ """Schema for search_news operation"""
109
+
110
+ query: str = Field(description="News search query string")
111
+ num_results: int = Field(
112
+ default=10,
113
+ ge=1,
114
+ le=100,
115
+ description="Number of news results to return (1-100)",
116
+ )
117
+ start_index: int = Field(
118
+ default=1,
119
+ ge=1,
120
+ le=91,
121
+ description="Starting index for pagination (1-91)",
122
+ )
123
+ language: str = Field(
124
+ default="en",
125
+ description="Language code for news articles (e.g., 'en', 'zh-CN', 'es')",
126
+ )
127
+ date_restrict: Optional[str] = Field(
128
+ default=None,
129
+ description="Date restriction (e.g., 'd7' for last 7 days, 'm1' for last month)",
130
+ )
131
+ sort_by: str = Field(
132
+ default="date",
133
+ description="Sort order: 'date' for newest first, 'relevance' for most relevant",
134
+ )
135
+
136
+ @field_validator("sort_by")
137
+ @classmethod
138
+ def validate_sort_by(cls, v: str) -> str:
139
+ """Validate sort order"""
140
+ allowed = ["date", "relevance"]
141
+ if v not in allowed:
142
+ raise ValueError(f"sort_by must be one of {allowed}")
143
+ return v
144
+
145
+
146
+ class SearchVideosSchema(BaseModel):
147
+ """Schema for search_videos operation"""
148
+
149
+ query: str = Field(description="Video search query string")
150
+ num_results: int = Field(
151
+ default=10,
152
+ ge=1,
153
+ le=100,
154
+ description="Number of video results to return (1-100)",
155
+ )
156
+ start_index: int = Field(
157
+ default=1,
158
+ ge=1,
159
+ le=91,
160
+ description="Starting index for pagination (1-91)",
161
+ )
162
+ language: str = Field(
163
+ default="en",
164
+ description="Language code for videos (e.g., 'en', 'zh-CN', 'es')",
165
+ )
166
+ safe_search: str = Field(
167
+ default="medium",
168
+ description="Safe search level: 'off', 'medium', or 'high'",
169
+ )
170
+
171
+ @field_validator("safe_search")
172
+ @classmethod
173
+ def validate_safe_search(cls, v: str) -> str:
174
+ """Validate safe search level"""
175
+ allowed = ["off", "medium", "high"]
176
+ if v not in allowed:
177
+ raise ValueError(f"safe_search must be one of {allowed}")
178
+ return v
179
+
180
+
181
+ class SearchPaginatedSchema(BaseModel):
182
+ """Schema for search_paginated operation"""
183
+
184
+ query: str = Field(description="Search query string")
185
+ total_results: int = Field(
186
+ ge=1,
187
+ le=1000,
188
+ description="Total number of results to retrieve (1-1000)",
189
+ )
190
+ search_type: str = Field(
191
+ default="web",
192
+ description="Type of search: 'web', 'images', 'news', or 'videos'",
193
+ )
194
+
195
+ @field_validator("search_type")
196
+ @classmethod
197
+ def validate_search_type(cls, v: str) -> str:
198
+ """Validate search type"""
199
+ allowed = ["web", "images", "news", "videos"]
200
+ if v not in allowed:
201
+ raise ValueError(f"search_type must be one of {allowed}")
202
+ return v
203
+
204
+
205
+ class SearchBatchSchema(BaseModel):
206
+ """Schema for search_batch operation"""
207
+
208
+ queries: List[str] = Field(description="List of search queries to execute in batch")
209
+ search_type: str = Field(
210
+ default="web",
211
+ description="Type of search: 'web', 'images', 'news', or 'videos'",
212
+ )
213
+ num_results: int = Field(
214
+ default=10,
215
+ ge=1,
216
+ le=100,
217
+ description="Number of results per query (1-100)",
218
+ )
219
+
220
+ @field_validator("queries")
221
+ @classmethod
222
+ def validate_queries(cls, v: List[str]) -> List[str]:
223
+ """Validate queries list"""
224
+ if not v:
225
+ raise ValueError("queries list cannot be empty")
226
+ if len(v) > 50:
227
+ raise ValueError("Maximum 50 queries allowed in batch")
228
+ return v
229
+
230
+ @field_validator("search_type")
231
+ @classmethod
232
+ def validate_search_type(cls, v: str) -> str:
233
+ """Validate search type"""
234
+ allowed = ["web", "images", "news", "videos"]
235
+ if v not in allowed:
236
+ raise ValueError(f"search_type must be one of {allowed}")
237
+ return v
238
+
239
+
240
+ class ValidateCredentialsSchema(BaseModel):
241
+ """Schema for validate_credentials operation (no parameters required)"""
242
+
243
+
244
+ class GetQuotaStatusSchema(BaseModel):
245
+ """Schema for get_quota_status operation (no parameters required)"""
246
+
247
+
248
+ class GetMetricsSchema(BaseModel):
249
+ """Schema for get_metrics operation (no parameters required)"""
250
+
251
+
252
+ class GetMetricsReportSchema(BaseModel):
253
+ """Schema for get_metrics_report operation (no parameters required)"""
254
+
255
+
256
+ class GetHealthScoreSchema(BaseModel):
257
+ """Schema for get_health_score operation (no parameters required)"""
258
+
259
+
260
+ class GetSearchContextSchema(BaseModel):
261
+ """Schema for get_search_context operation (no parameters required)"""
262
+
263
+
264
+ __all__ = [
265
+ "SearchWebSchema",
266
+ "SearchImagesSchema",
267
+ "SearchNewsSchema",
268
+ "SearchVideosSchema",
269
+ "SearchPaginatedSchema",
270
+ "SearchBatchSchema",
271
+ "ValidateCredentialsSchema",
272
+ "GetQuotaStatusSchema",
273
+ "GetMetricsSchema",
274
+ "GetMetricsReportSchema",
275
+ "GetHealthScoreSchema",
276
+ "GetSearchContextSchema",
277
+ ]
@@ -0,0 +1,80 @@
1
+ """
2
+ Statistics and Data Analysis Tools Module
3
+
4
+ This module contains specialized tools for data analysis and statistical operations:
5
+ - data_loader: Universal data loading from multiple file formats
6
+ - data_profiler: Comprehensive data profiling and quality assessment
7
+ - data_transformer: Data cleaning, transformation, and feature engineering
8
+ - data_visualizer: Smart data visualization and chart generation
9
+ - statistical_analyzer: Advanced statistical analysis and hypothesis testing
10
+ - model_trainer: AutoML and machine learning model training
11
+ - ai_data_analysis_orchestrator: AI-powered end-to-end analysis orchestration
12
+ - ai_insight_generator: AI-driven insight discovery and pattern detection
13
+ - ai_report_orchestrator: AI-powered comprehensive report generation
14
+ """
15
+
16
+ # Lazy import strategy to avoid heavy dependencies at import time
17
+ import logging
18
+
19
+ logger = logging.getLogger(__name__)
20
+
21
+ # Define available tools for lazy loading
22
+ _AVAILABLE_STATISTICS_TOOLS = [
23
+ "data_loader_tool",
24
+ "data_profiler_tool",
25
+ "data_transformer_tool",
26
+ "data_visualizer_tool",
27
+ "statistical_analyzer_tool",
28
+ "model_trainer_tool",
29
+ "ai_data_analysis_orchestrator",
30
+ "ai_insight_generator_tool",
31
+ "ai_report_orchestrator_tool",
32
+ ]
33
+
34
+ # Track which tools have been loaded
35
+ _LOADED_STATISTICS_TOOLS = set()
36
+
37
+
38
+ def _lazy_load_statistics_tool(tool_name: str):
39
+ """Lazy load a specific statistics tool module"""
40
+ if tool_name in _LOADED_STATISTICS_TOOLS:
41
+ return
42
+
43
+ try:
44
+ if tool_name == "data_loader_tool":
45
+ pass
46
+ elif tool_name == "data_profiler_tool":
47
+ pass
48
+ elif tool_name == "data_transformer_tool":
49
+ pass
50
+ elif tool_name == "data_visualizer_tool":
51
+ pass
52
+ elif tool_name == "statistical_analyzer_tool":
53
+ pass
54
+ elif tool_name == "model_trainer_tool":
55
+ pass
56
+ elif tool_name == "ai_data_analysis_orchestrator":
57
+ pass
58
+ elif tool_name == "ai_insight_generator_tool":
59
+ pass
60
+ elif tool_name == "ai_report_orchestrator_tool":
61
+ pass
62
+
63
+ _LOADED_STATISTICS_TOOLS.add(tool_name)
64
+ logger.info(f"Successfully loaded statistics tool: {tool_name}")
65
+
66
+ except Exception as e:
67
+ logger.warning(f"Failed to load statistics tool {tool_name}: {e}")
68
+
69
+
70
+ def load_all_statistics_tools():
71
+ """Load all available statistics tools"""
72
+ for tool_name in _AVAILABLE_STATISTICS_TOOLS:
73
+ _lazy_load_statistics_tool(tool_name)
74
+
75
+
76
+ # Auto-load all tools when module is imported
77
+ # This ensures all tools are registered
78
+ load_all_statistics_tools()
79
+
80
+ __all__ = ["load_all_statistics_tools", "_lazy_load_statistics_tool"]