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
@@ -39,7 +39,6 @@ class LLMOutputTransformer:
39
39
  "agent_requirements": "required components",
40
40
  "meta_architect": "strategic planner",
41
41
  "intent_parser": "request analyzer",
42
-
43
42
  # Analysis terms
44
43
  "fails most SMART criteria": "lacks several key details",
45
44
  "SMART criteria": "clarity requirements",
@@ -49,7 +48,6 @@ class LLMOutputTransformer:
49
48
  "not Time-bound": "missing timeframe",
50
49
  "high-level goal": "general objective",
51
50
  "actionable task": "specific action item",
52
-
53
51
  # Common phrases
54
52
  "classic example": "typical case",
55
53
  "significant clarification": "more details",
@@ -58,7 +56,7 @@ class LLMOutputTransformer:
58
56
  "problem_analysis": "situation assessment",
59
57
  "intent parsing": "request understanding",
60
58
  "blueprint": "detailed plan",
61
- "roadmap": "action sequence"
59
+ "roadmap": "action sequence",
62
60
  }
63
61
 
64
62
  # Friendly section headers
@@ -71,26 +69,31 @@ class LLMOutputTransformer:
71
69
  "Key Components:": "🔧 Main Elements:",
72
70
  "Confidence:": "📊 Confidence Level:",
73
71
  "Intent Categories:": "🎯 Identified Goals:",
74
- "Complexity:": "📈 Complexity Level:"
72
+ "Complexity:": "📈 Complexity Level:",
75
73
  }
76
74
 
77
75
  # Opening greetings
78
76
  self.greetings = {
79
- 'clarification': "Hello! Thank you for reaching out. Let me help you with your request.",
80
- 'confirmation': "Great! I've carefully analyzed your requirements.",
81
- 'completion': "Excellent! I've completed the analysis.",
82
- 'general': "Thank you for your message."
77
+ "clarification": "Hello! Thank you for reaching out. Let me help you with your request.",
78
+ "confirmation": "Great! I've carefully analyzed your requirements.",
79
+ "completion": "Excellent! I've completed the analysis.",
80
+ "general": "Thank you for your message.",
83
81
  }
84
82
 
85
83
  # Closing messages
86
84
  self.closings = {
87
- 'clarification': "\n\n✨ These details will help me provide you with the most accurate and helpful solution!",
88
- 'confirmation': "\n\n🤝 I'm ready to proceed whenever you are. Feel free to ask any questions or suggest modifications!",
89
- 'completion': "\n\n✅ Everything is set up and ready. Let me know if you need any adjustments!",
90
- 'general': "\n\n💬 Please let me know if you need any clarification!"
85
+ "clarification": "\n\n✨ These details will help me provide you with the most accurate and helpful solution!",
86
+ "confirmation": "\n\n🤝 I'm ready to proceed whenever you are. Feel free to ask any questions or suggest modifications!",
87
+ "completion": "\n\n✅ Everything is set up and ready. Let me know if you need any adjustments!",
88
+ "general": "\n\n💬 Please let me know if you need any clarification!",
91
89
  }
92
90
 
93
- def transform_message(self, content: str, message_type: str = 'general', preserve_structure: bool = True) -> str:
91
+ def transform_message(
92
+ self,
93
+ content: str,
94
+ message_type: str = "general",
95
+ preserve_structure: bool = True,
96
+ ) -> str:
94
97
  """
95
98
  Transform LLM output to be more readable while preserving content.
96
99
 
@@ -109,9 +112,9 @@ class LLMOutputTransformer:
109
112
  transformed_content = self._enhance_readability(content)
110
113
 
111
114
  # Special handling for different message types
112
- if message_type == 'clarification':
115
+ if message_type == "clarification":
113
116
  transformed_content = self._enhance_clarification(transformed_content)
114
- elif message_type == 'confirmation':
117
+ elif message_type == "confirmation":
115
118
  transformed_content = self._enhance_confirmation(transformed_content)
116
119
 
117
120
  result += "\n\n" + transformed_content
@@ -123,11 +126,11 @@ class LLMOutputTransformer:
123
126
 
124
127
  def _add_greeting(self, message_type: str) -> str:
125
128
  """Add an appropriate greeting based on message type."""
126
- return self.greetings.get(message_type, self.greetings['general'])
129
+ return self.greetings.get(message_type, self.greetings["general"])
127
130
 
128
131
  def _add_closing(self, message_type: str) -> str:
129
132
  """Add an appropriate closing based on message type."""
130
- return self.closings.get(message_type, self.closings['general'])
133
+ return self.closings.get(message_type, self.closings["general"])
131
134
 
132
135
  def _enhance_readability(self, content: str) -> str:
133
136
  """Enhance readability by replacing technical terms and improving formatting."""
@@ -140,7 +143,12 @@ class LLMOutputTransformer:
140
143
  # Replace technical terms with friendly alternatives
141
144
  for technical, friendly in self.technical_replacements.items():
142
145
  # Case-insensitive replacement
143
- result = re.sub(rf'\b{re.escape(technical)}\b', friendly, result, flags=re.IGNORECASE)
146
+ result = re.sub(
147
+ rf"\b{re.escape(technical)}\b",
148
+ friendly,
149
+ result,
150
+ flags=re.IGNORECASE,
151
+ )
144
152
 
145
153
  # Improve JSON-like structures visibility
146
154
  result = self._format_json_structures(result)
@@ -160,7 +168,7 @@ class LLMOutputTransformer:
160
168
  r"(💭 My Analysis:)(.*?)(?=\n\n|$)",
161
169
  lambda m: f"{m.group(1)}\n{self._make_reasoning_conversational(m.group(2))}",
162
170
  content,
163
- flags=re.DOTALL
171
+ flags=re.DOTALL,
164
172
  )
165
173
 
166
174
  # Format questions better
@@ -175,7 +183,7 @@ class LLMOutputTransformer:
175
183
  r"I have generated a detailed (.*?):(.*?)(?=Do you|Would you|$)",
176
184
  r"I've prepared a comprehensive \1 for you:\n\n\2\n",
177
185
  content,
178
- flags=re.DOTALL
186
+ flags=re.DOTALL,
179
187
  )
180
188
 
181
189
  # Format proposed plans better
@@ -183,7 +191,7 @@ class LLMOutputTransformer:
183
191
  r"Proposed plan:(.*?)(?=Do you|Would you|$)",
184
192
  r"📋 **Proposed Approach:**\n\1\n",
185
193
  content,
186
- flags=re.DOTALL
194
+ flags=re.DOTALL,
187
195
  )
188
196
 
189
197
  return content
@@ -194,7 +202,7 @@ class LLMOutputTransformer:
194
202
  reasoning = self._convert_perspective(reasoning)
195
203
 
196
204
  # Split into sentences for processing
197
- sentences = reasoning.strip().split('.')
205
+ sentences = reasoning.strip().split(".")
198
206
  conversational_parts = []
199
207
 
200
208
  for i, sentence in enumerate(sentences):
@@ -204,8 +212,13 @@ class LLMOutputTransformer:
204
212
 
205
213
  # Make the first sentence more natural
206
214
  if i == 0:
207
- # Remove phrases like "is a classic example of" to be more direct
208
- sentence = re.sub(r"is a (?:classic|typical|clear) example of", "seems to be", sentence)
215
+ # Remove phrases like "is a classic example of" to be more
216
+ # direct
217
+ sentence = re.sub(
218
+ r"is a (?:classic|typical|clear) example of",
219
+ "seems to be",
220
+ sentence,
221
+ )
209
222
  sentence = "Looking at what you've shared, " + sentence.lower()
210
223
  # For sentences about what's missing
211
224
  elif any(word in sentence.lower() for word in ["lacks", "missing", "doesn't have", "without"]):
@@ -213,7 +226,12 @@ class LLMOutputTransformer:
213
226
  sentence = "I notice that it " + sentence.lower()
214
227
  # For sentences about what's not clear
215
228
  elif "not" in sentence.lower() and any(word in sentence.lower() for word in ["specific", "clear", "measurable"]):
216
- sentence = re.sub(r"it is not", "it isn't quite", sentence, flags=re.IGNORECASE)
229
+ sentence = re.sub(
230
+ r"it is not",
231
+ "it isn't quite",
232
+ sentence,
233
+ flags=re.IGNORECASE,
234
+ )
217
235
  if not sentence.lower().startswith(("i ", "this ")):
218
236
  sentence = "I can see that " + sentence.lower()
219
237
  # For requirement sentences
@@ -226,9 +244,9 @@ class LLMOutputTransformer:
226
244
 
227
245
  conversational_parts.append(sentence)
228
246
 
229
- result = '. '.join(conversational_parts)
230
- if result and not result.endswith('.'):
231
- result += '.'
247
+ result = ". ".join(conversational_parts)
248
+ if result and not result.endswith("."):
249
+ result += "."
232
250
 
233
251
  return result
234
252
 
@@ -246,7 +264,12 @@ class LLMOutputTransformer:
246
264
 
247
265
  # Replace impersonal constructions
248
266
  text = re.sub(r"it is (?:a|an)", "this is", text, flags=re.IGNORECASE)
249
- text = re.sub(r"this is (?:a|an) vague", "this seems vague", text, flags=re.IGNORECASE)
267
+ text = re.sub(
268
+ r"this is (?:a|an) vague",
269
+ "this seems vague",
270
+ text,
271
+ flags=re.IGNORECASE,
272
+ )
250
273
 
251
274
  return text
252
275
 
@@ -264,9 +287,9 @@ class LLMOutputTransformer:
264
287
  formatted = "📝 Questions to Help Me Understand Better:\n\n"
265
288
  for i, q in enumerate(questions, 1):
266
289
  # Clean up the question
267
- q = q.strip().strip('-*•')
268
- if not q.endswith('?'):
269
- q += '?'
290
+ q = q.strip().strip("-*•")
291
+ if not q.endswith("?"):
292
+ q += "?"
270
293
  formatted += f"**{i}.** {q}\n\n"
271
294
 
272
295
  # Replace the original questions section
@@ -277,18 +300,19 @@ class LLMOutputTransformer:
277
300
  def _extract_questions(self, text: str) -> List[str]:
278
301
  """Extract individual questions from text."""
279
302
  # Split by semicolons or line breaks
280
- parts = re.split(r'[;\n]', text)
303
+ parts = re.split(r"[;\n]", text)
281
304
  questions = []
282
305
 
283
306
  for part in parts:
284
307
  part = part.strip()
285
- if part and not part.startswith('*Reason:'):
308
+ if part and not part.startswith("*Reason:"):
286
309
  questions.append(part)
287
310
 
288
311
  return questions
289
312
 
290
313
  def _format_json_structures(self, content: str) -> str:
291
314
  """Format JSON-like structures to be more readable."""
315
+
292
316
  # Find JSON-like structures
293
317
  def format_dict(match):
294
318
  try:
@@ -300,32 +324,37 @@ class LLMOutputTransformer:
300
324
  formatted = formatted.replace(",", ",\n ")
301
325
  formatted = formatted.replace("}", "\n}")
302
326
  return formatted
303
- except:
327
+ except Exception:
304
328
  return match.group(0)
305
329
 
306
330
  # Apply to simple dictionaries
307
- content = re.sub(r'\{[^{}]+\}', format_dict, content)
331
+ content = re.sub(r"\{[^{}]+\}", format_dict, content)
308
332
 
309
333
  return content
310
334
 
311
335
  def _enhance_bullet_points(self, content: str) -> str:
312
336
  """Enhance bullet points for better visibility."""
313
337
  # Replace various bullet point styles with a consistent one
314
- content = re.sub(r'^[-*•]\s*', '', content, flags=re.MULTILINE)
315
- content = re.sub(r'^\d+\.\s*', lambda m: f"**{m.group(0)}**", content, flags=re.MULTILINE)
338
+ content = re.sub(r"^[-*•]\s*", "", content, flags=re.MULTILINE)
339
+ content = re.sub(
340
+ r"^\d+\.\s*",
341
+ lambda m: f"**{m.group(0)}**",
342
+ content,
343
+ flags=re.MULTILINE,
344
+ )
316
345
 
317
346
  return content
318
347
 
319
348
  def _improve_spacing(self, content: str) -> str:
320
349
  """Improve spacing for better readability."""
321
350
  # Add space before emoji headers
322
- content = re.sub(r'(?<!\n)(💭|📝|🔍|💡|🔧|📊|🎯|📈)', r'\n\n\1', content)
351
+ content = re.sub(r"(?<!\n)(💭|📝|🔍|💡|🔧|📊|🎯|📈)", r"\n\n\1", content)
323
352
 
324
353
  # Ensure proper spacing after headers
325
- content = re.sub(r'(💭|📝|🔍|💡|🔧|📊|🎯|📈)(.*?):', r'\1\2:\n', content)
354
+ content = re.sub(r"(💭|📝|🔍|💡|🔧|📊|🎯|📈)(.*?):", r"\1\2:\n", content)
326
355
 
327
356
  # Clean up excessive newlines
328
- content = re.sub(r'\n{3,}', '\n\n', content)
357
+ content = re.sub(r"\n{3,}", "\n\n", content)
329
358
 
330
359
  return content.strip()
331
360
 
@@ -334,7 +363,7 @@ class LLMOutputTransformer:
334
363
  def format_clarification_message(
335
364
  questions: List[str],
336
365
  round_number: int = 1,
337
- reasoning: Optional[str] = None
366
+ reasoning: Optional[str] = None,
338
367
  ) -> str:
339
368
  """
340
369
  Format clarification messages with preserved reasoning.
@@ -356,13 +385,10 @@ def format_clarification_message(
356
385
  if reasoning:
357
386
  content += f"\n\nReasoning: {reasoning}"
358
387
 
359
- return transformer.transform_message(content, 'clarification')
388
+ return transformer.transform_message(content, "clarification")
360
389
 
361
390
 
362
- def format_confirmation_message(
363
- content: Union[str, Dict[str, Any]],
364
- confirmation_type: str = 'strategy'
365
- ) -> str:
391
+ def format_confirmation_message(content: Union[str, Dict[str, Any]], confirmation_type: str = "strategy") -> str:
366
392
  """
367
393
  Format confirmation messages with preserved technical details.
368
394
 
@@ -378,7 +404,7 @@ def format_confirmation_message(
378
404
  if isinstance(content, dict):
379
405
  content = json.dumps(content, indent=2)
380
406
 
381
- return transformer.transform_message(content, 'confirmation')
407
+ return transformer.transform_message(content, "confirmation")
382
408
 
383
409
 
384
410
  def enhance_reasoning(reasoning: str) -> str:
aiecs/utils/__init__.py CHANGED
@@ -5,16 +5,27 @@ This module provides utility functions including:
5
5
  - Prompt loading functionality
6
6
  - Token usage tracking
7
7
  - Execution utilities
8
+ - Cache provider interfaces and implementations
8
9
  """
9
10
 
10
11
  from .prompt_loader import get_prompt
11
12
  from .token_usage_repository import TokenUsageRepository
12
13
  from .execution_utils import ExecutionUtils
14
+ from .cache_provider import (
15
+ ICacheProvider,
16
+ LRUCacheProvider,
17
+ DualLayerCacheProvider,
18
+ RedisCacheProvider,
19
+ )
13
20
 
14
21
  __all__ = [
15
- 'get_prompt',
16
- 'TokenUsageRepository',
17
- 'ExecutionUtils',
22
+ "get_prompt",
23
+ "TokenUsageRepository",
24
+ "ExecutionUtils",
25
+ "ICacheProvider",
26
+ "LRUCacheProvider",
27
+ "DualLayerCacheProvider",
28
+ "RedisCacheProvider",
18
29
  ]
19
30
 
20
31
  # Version information
@@ -25,7 +25,6 @@ class CustomAsyncCallbackHandler(ABC):
25
25
  messages: List of message dictionaries, each containing 'role' and 'content' keys
26
26
  **kwargs: Additional parameters such as provider, model, etc.
27
27
  """
28
- pass
29
28
 
30
29
  @abstractmethod
31
30
  async def on_llm_end(self, response: dict, **kwargs: Any) -> None:
@@ -36,7 +35,6 @@ class CustomAsyncCallbackHandler(ABC):
36
35
  response: Response dictionary containing 'content', 'tokens_used', 'model', etc.
37
36
  **kwargs: Additional parameters such as provider, model, etc.
38
37
  """
39
- pass
40
38
 
41
39
  @abstractmethod
42
40
  async def on_llm_error(self, error: Exception, **kwargs: Any) -> None:
@@ -47,4 +45,3 @@ class CustomAsyncCallbackHandler(ABC):
47
45
  error: The exception that occurred during the LLM call
48
46
  **kwargs: Additional parameters such as provider, model, etc.
49
47
  """
50
- pass