aiecs 1.3.5__tar.gz → 1.3.8__tar.gz
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.
- {aiecs-1.3.5/aiecs.egg-info → aiecs-1.3.8}/PKG-INFO +1 -1
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/__init__.py +1 -1
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/persistence/redis_client.py +48 -3
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/vertex_client.py +20 -2
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/main.py +2 -2
- {aiecs-1.3.5 → aiecs-1.3.8/aiecs.egg-info}/PKG-INFO +1 -1
- {aiecs-1.3.5 → aiecs-1.3.8}/pyproject.toml +1 -1
- {aiecs-1.3.5 → aiecs-1.3.8}/LICENSE +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/MANIFEST.in +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/README.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/__main__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/aiecs_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/application/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/application/executors/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/application/executors/operation_executor.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/config/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/config/config.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/config/registry.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/core/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/core/interface/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/core/interface/execution_interface.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/core/interface/storage_interface.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/agent_adapter.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/analytics.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/collaborative_workflow.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/communication_hub.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/community_builder.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/community_integration.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/community_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/decision_engine.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/exceptions.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/models/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/models/community_models.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/resource_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/community/shared_context_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/context/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/context/context_engine.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/context/conversation_models.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/execution/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/execution/model.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/task/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/task/dsl_processor.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/task/model.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/domain/task/task_context.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/messaging/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/messaging/celery_task_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/messaging/websocket_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/monitoring/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/monitoring/executor_metrics.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/monitoring/global_metrics_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/monitoring/structured_logger.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/monitoring/tracing_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/persistence/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/persistence/context_engine_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/persistence/database_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/infrastructure/persistence/file_storage.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/callbacks/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/callbacks/custom_callbacks.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/client_factory.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/base_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/googleai_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/openai_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/clients/xai_client.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/config/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/config/config_loader.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/config/config_validator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/config/model_config.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/utils/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/llm/utils/validate_config.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/aid/VERSION_MANAGEMENT.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/aid/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/aid/version_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/README_DEPENDENCY_CHECKER.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/dependency_checker.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/dependency_fixer.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/download_nlp_data.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/quick_dependency_check.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_check/setup_nlp_data.sh +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/run_weasel_patch.sh +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/README.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/check_type_annotations.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/validate_tool_schemas.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/tools_develop/verify_tools.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tasks/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tasks/worker.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/intelligence/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/intelligence/data_fusion.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/intelligence/query_analyzer.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/intelligence/search_enhancer.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/monitoring/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/monitoring/metrics.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/base.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/census.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/fred.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/newsapi.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/providers/worldbank.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/reliability/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/reliability/error_handler.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/reliability/fallback_strategy.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/utils/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/apisource/utils/validators.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/base_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/ai_document_orchestrator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/ai_document_writer_orchestrator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/content_insertion_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/document_creator_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/document_layout_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/document_parser_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/docs/document_writer_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/langchain_adapter.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/schema_generator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/analyzers.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/cache.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/constants.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/context.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/core.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/deduplicator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/error_handler.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/metrics.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/rate_limiter.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/search_tool/schemas.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/ai_data_analysis_orchestrator.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/ai_insight_generator_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/ai_report_orchestrator_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/data_loader_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/data_profiler_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/data_transformer_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/data_visualizer_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/model_trainer_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/statistics/statistical_analyzer_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/chart_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/classfire_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/image_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/office_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/pandas_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/report_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/research_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/scraper_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/task_tools/stats_tool.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/temp_file_manager.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/tool_executor/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/tools/tool_executor/tool_executor.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/LLM_output_structor.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/base_callback.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/cache_provider.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/execution_utils.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/logging.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/prompt_loader.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/utils/token_usage_repository.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/ws/__init__.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs/ws/socket_server.py +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs.egg-info/SOURCES.txt +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs.egg-info/dependency_links.txt +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs.egg-info/entry_points.txt +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs.egg-info/requires.txt +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/aiecs.egg-info/top_level.txt +0 -0
- {aiecs-1.3.5 → aiecs-1.3.8}/setup.cfg +0 -0
|
@@ -5,7 +5,7 @@ A powerful Python middleware framework for building AI-powered applications
|
|
|
5
5
|
with tool orchestration, task execution, and multi-provider LLM support.
|
|
6
6
|
"""
|
|
7
7
|
|
|
8
|
-
__version__ = "1.3.
|
|
8
|
+
__version__ = "1.3.8"
|
|
9
9
|
__author__ = "AIECS Team"
|
|
10
10
|
__email__ = "iretbl@gmail.com"
|
|
11
11
|
|
|
@@ -74,10 +74,55 @@ class RedisClient:
|
|
|
74
74
|
client = await self.get_client()
|
|
75
75
|
return await client.hgetall(name)
|
|
76
76
|
|
|
77
|
-
async def hset(
|
|
78
|
-
|
|
77
|
+
async def hset(
|
|
78
|
+
self,
|
|
79
|
+
name: str,
|
|
80
|
+
key: Optional[str] = None,
|
|
81
|
+
value: Optional[str] = None,
|
|
82
|
+
mapping: Optional[dict] = None
|
|
83
|
+
) -> int:
|
|
84
|
+
"""Set hash fields
|
|
85
|
+
|
|
86
|
+
Supports two calling patterns:
|
|
87
|
+
1. hset(name, key, value) - Set single field (positional)
|
|
88
|
+
2. hset(name, key=key, value=value) - Set single field (keyword)
|
|
89
|
+
3. hset(name, mapping={...}) - Set multiple fields
|
|
90
|
+
|
|
91
|
+
Args:
|
|
92
|
+
name: Redis hash key name
|
|
93
|
+
key: Field name (for single field set)
|
|
94
|
+
value: Field value (for single field set)
|
|
95
|
+
mapping: Dictionary of field-value pairs (for multiple fields)
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
Number of fields that were added
|
|
99
|
+
|
|
100
|
+
Raises:
|
|
101
|
+
ValueError: If neither (key, value) nor mapping is provided
|
|
102
|
+
|
|
103
|
+
Examples:
|
|
104
|
+
# Single field with positional args
|
|
105
|
+
await redis_client.hset("myhash", "field1", "value1")
|
|
106
|
+
|
|
107
|
+
# Single field with keyword args
|
|
108
|
+
await redis_client.hset("myhash", key="field1", value="value1")
|
|
109
|
+
|
|
110
|
+
# Multiple fields with mapping
|
|
111
|
+
await redis_client.hset("myhash", mapping={"field1": "value1", "field2": "value2"})
|
|
112
|
+
"""
|
|
79
113
|
client = await self.get_client()
|
|
80
|
-
|
|
114
|
+
|
|
115
|
+
if mapping is not None:
|
|
116
|
+
# Multiple fields mode
|
|
117
|
+
return await client.hset(name, mapping=mapping)
|
|
118
|
+
elif key is not None and value is not None:
|
|
119
|
+
# Single field mode
|
|
120
|
+
return await client.hset(name, key=key, value=value)
|
|
121
|
+
else:
|
|
122
|
+
raise ValueError(
|
|
123
|
+
"Either provide (key, value) or mapping parameter. "
|
|
124
|
+
f"Got: key={key}, value={value}, mapping={mapping}"
|
|
125
|
+
)
|
|
81
126
|
|
|
82
127
|
async def expire(self, name: str, time: int) -> bool:
|
|
83
128
|
"""Set expiration time"""
|
|
@@ -170,11 +170,29 @@ class VertexAIClient(BaseLLMClient):
|
|
|
170
170
|
fixed_count = 0
|
|
171
171
|
|
|
172
172
|
for i, part in enumerate(text_parts):
|
|
173
|
+
# Check for thinking content that needs formatting
|
|
174
|
+
needs_thinking_format = False
|
|
175
|
+
|
|
173
176
|
if '<thinking>' in part and '</thinking>' not in part:
|
|
174
|
-
# Incomplete thinking tag: add closing tag
|
|
177
|
+
# Incomplete <thinking> tag: add closing tag
|
|
175
178
|
part = part + '\n</thinking>'
|
|
176
|
-
|
|
179
|
+
needs_thinking_format = True
|
|
177
180
|
self.logger.debug(f" Part {i+1}: Incomplete <thinking> tag fixed")
|
|
181
|
+
elif part.startswith('thinking') and '</thinking>' not in part:
|
|
182
|
+
# thinking\n format: convert to <thinking>...</thinking>
|
|
183
|
+
if part.startswith('thinking\n'):
|
|
184
|
+
# thinking\n格式:提取内容并包装
|
|
185
|
+
content = part[8:] # 跳过 "thinking\n"
|
|
186
|
+
else:
|
|
187
|
+
# thinking开头但无换行:提取内容并包装
|
|
188
|
+
content = part[7:] # 跳过 "thinking"
|
|
189
|
+
|
|
190
|
+
part = f"<thinking>\n{content}\n</thinking>"
|
|
191
|
+
needs_thinking_format = True
|
|
192
|
+
self.logger.debug(f" Part {i+1}: thinking\\n format converted to <thinking> tags")
|
|
193
|
+
|
|
194
|
+
if needs_thinking_format:
|
|
195
|
+
fixed_count += 1
|
|
178
196
|
|
|
179
197
|
processed_parts.append(part)
|
|
180
198
|
|
|
@@ -142,7 +142,7 @@ async def lifespan(app: FastAPI):
|
|
|
142
142
|
app = FastAPI(
|
|
143
143
|
title="AIECS - AI Execute Services",
|
|
144
144
|
description="Middleware service for AI-powered task execution and tool orchestration",
|
|
145
|
-
version="1.3.
|
|
145
|
+
version="1.3.8",
|
|
146
146
|
lifespan=lifespan
|
|
147
147
|
)
|
|
148
148
|
|
|
@@ -167,7 +167,7 @@ async def health_check():
|
|
|
167
167
|
return {
|
|
168
168
|
"status": "healthy",
|
|
169
169
|
"service": "aiecs",
|
|
170
|
-
"version": "1.3.
|
|
170
|
+
"version": "1.3.8"
|
|
171
171
|
}
|
|
172
172
|
|
|
173
173
|
|
|
@@ -28,7 +28,7 @@ pytest-timeout = "^2.4.0"
|
|
|
28
28
|
|
|
29
29
|
[project]
|
|
30
30
|
name = "aiecs"
|
|
31
|
-
version = "1.3.
|
|
31
|
+
version = "1.3.8"
|
|
32
32
|
description = "AI Execute Services - A middleware framework for AI-powered task execution and tool orchestration"
|
|
33
33
|
authors = [
|
|
34
34
|
{name = "AIECS Team", email = "iretbl@gmail.com"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md
RENAMED
|
File without changes
|
|
File without changes
|
{aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py
RENAMED
|
File without changes
|
{aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh
RENAMED
|
File without changes
|
{aiecs-1.3.5 → aiecs-1.3.8}/aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|