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.
- aiecs/__init__.py +72 -0
- aiecs/__main__.py +41 -0
- aiecs/aiecs_client.py +469 -0
- aiecs/application/__init__.py +10 -0
- aiecs/application/executors/__init__.py +10 -0
- aiecs/application/executors/operation_executor.py +363 -0
- aiecs/application/knowledge_graph/__init__.py +7 -0
- aiecs/application/knowledge_graph/builder/__init__.py +37 -0
- aiecs/application/knowledge_graph/builder/document_builder.py +375 -0
- aiecs/application/knowledge_graph/builder/graph_builder.py +356 -0
- aiecs/application/knowledge_graph/builder/schema_mapping.py +531 -0
- aiecs/application/knowledge_graph/builder/structured_pipeline.py +443 -0
- aiecs/application/knowledge_graph/builder/text_chunker.py +319 -0
- aiecs/application/knowledge_graph/extractors/__init__.py +27 -0
- aiecs/application/knowledge_graph/extractors/base.py +100 -0
- aiecs/application/knowledge_graph/extractors/llm_entity_extractor.py +327 -0
- aiecs/application/knowledge_graph/extractors/llm_relation_extractor.py +349 -0
- aiecs/application/knowledge_graph/extractors/ner_entity_extractor.py +244 -0
- aiecs/application/knowledge_graph/fusion/__init__.py +23 -0
- aiecs/application/knowledge_graph/fusion/entity_deduplicator.py +387 -0
- aiecs/application/knowledge_graph/fusion/entity_linker.py +343 -0
- aiecs/application/knowledge_graph/fusion/knowledge_fusion.py +580 -0
- aiecs/application/knowledge_graph/fusion/relation_deduplicator.py +189 -0
- aiecs/application/knowledge_graph/pattern_matching/__init__.py +21 -0
- aiecs/application/knowledge_graph/pattern_matching/pattern_matcher.py +344 -0
- aiecs/application/knowledge_graph/pattern_matching/query_executor.py +378 -0
- aiecs/application/knowledge_graph/profiling/__init__.py +12 -0
- aiecs/application/knowledge_graph/profiling/query_plan_visualizer.py +199 -0
- aiecs/application/knowledge_graph/profiling/query_profiler.py +223 -0
- aiecs/application/knowledge_graph/reasoning/__init__.py +27 -0
- aiecs/application/knowledge_graph/reasoning/evidence_synthesis.py +347 -0
- aiecs/application/knowledge_graph/reasoning/inference_engine.py +504 -0
- aiecs/application/knowledge_graph/reasoning/logic_form_parser.py +167 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/__init__.py +79 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_builder.py +513 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_nodes.py +630 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/ast_validator.py +654 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/error_handler.py +477 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/parser.py +390 -0
- aiecs/application/knowledge_graph/reasoning/logic_parser/query_context.py +217 -0
- aiecs/application/knowledge_graph/reasoning/logic_query_integration.py +169 -0
- aiecs/application/knowledge_graph/reasoning/query_planner.py +872 -0
- aiecs/application/knowledge_graph/reasoning/reasoning_engine.py +554 -0
- aiecs/application/knowledge_graph/retrieval/__init__.py +19 -0
- aiecs/application/knowledge_graph/retrieval/retrieval_strategies.py +596 -0
- aiecs/application/knowledge_graph/search/__init__.py +59 -0
- aiecs/application/knowledge_graph/search/hybrid_search.py +423 -0
- aiecs/application/knowledge_graph/search/reranker.py +295 -0
- aiecs/application/knowledge_graph/search/reranker_strategies.py +553 -0
- aiecs/application/knowledge_graph/search/text_similarity.py +398 -0
- aiecs/application/knowledge_graph/traversal/__init__.py +15 -0
- aiecs/application/knowledge_graph/traversal/enhanced_traversal.py +329 -0
- aiecs/application/knowledge_graph/traversal/path_scorer.py +269 -0
- aiecs/application/knowledge_graph/validators/__init__.py +13 -0
- aiecs/application/knowledge_graph/validators/relation_validator.py +189 -0
- aiecs/application/knowledge_graph/visualization/__init__.py +11 -0
- aiecs/application/knowledge_graph/visualization/graph_visualizer.py +321 -0
- aiecs/common/__init__.py +9 -0
- aiecs/common/knowledge_graph/__init__.py +17 -0
- aiecs/common/knowledge_graph/runnable.py +484 -0
- aiecs/config/__init__.py +16 -0
- aiecs/config/config.py +498 -0
- aiecs/config/graph_config.py +137 -0
- aiecs/config/registry.py +23 -0
- aiecs/core/__init__.py +46 -0
- aiecs/core/interface/__init__.py +34 -0
- aiecs/core/interface/execution_interface.py +152 -0
- aiecs/core/interface/storage_interface.py +171 -0
- aiecs/domain/__init__.py +289 -0
- aiecs/domain/agent/__init__.py +189 -0
- aiecs/domain/agent/base_agent.py +697 -0
- aiecs/domain/agent/exceptions.py +103 -0
- aiecs/domain/agent/graph_aware_mixin.py +559 -0
- aiecs/domain/agent/hybrid_agent.py +490 -0
- aiecs/domain/agent/integration/__init__.py +26 -0
- aiecs/domain/agent/integration/context_compressor.py +222 -0
- aiecs/domain/agent/integration/context_engine_adapter.py +252 -0
- aiecs/domain/agent/integration/retry_policy.py +219 -0
- aiecs/domain/agent/integration/role_config.py +213 -0
- aiecs/domain/agent/knowledge_aware_agent.py +646 -0
- aiecs/domain/agent/lifecycle.py +296 -0
- aiecs/domain/agent/llm_agent.py +300 -0
- aiecs/domain/agent/memory/__init__.py +12 -0
- aiecs/domain/agent/memory/conversation.py +197 -0
- aiecs/domain/agent/migration/__init__.py +14 -0
- aiecs/domain/agent/migration/conversion.py +160 -0
- aiecs/domain/agent/migration/legacy_wrapper.py +90 -0
- aiecs/domain/agent/models.py +317 -0
- aiecs/domain/agent/observability.py +407 -0
- aiecs/domain/agent/persistence.py +289 -0
- aiecs/domain/agent/prompts/__init__.py +29 -0
- aiecs/domain/agent/prompts/builder.py +161 -0
- aiecs/domain/agent/prompts/formatters.py +189 -0
- aiecs/domain/agent/prompts/template.py +255 -0
- aiecs/domain/agent/registry.py +260 -0
- aiecs/domain/agent/tool_agent.py +257 -0
- aiecs/domain/agent/tools/__init__.py +12 -0
- aiecs/domain/agent/tools/schema_generator.py +221 -0
- aiecs/domain/community/__init__.py +155 -0
- aiecs/domain/community/agent_adapter.py +477 -0
- aiecs/domain/community/analytics.py +481 -0
- aiecs/domain/community/collaborative_workflow.py +642 -0
- aiecs/domain/community/communication_hub.py +645 -0
- aiecs/domain/community/community_builder.py +320 -0
- aiecs/domain/community/community_integration.py +800 -0
- aiecs/domain/community/community_manager.py +813 -0
- aiecs/domain/community/decision_engine.py +879 -0
- aiecs/domain/community/exceptions.py +225 -0
- aiecs/domain/community/models/__init__.py +33 -0
- aiecs/domain/community/models/community_models.py +268 -0
- aiecs/domain/community/resource_manager.py +457 -0
- aiecs/domain/community/shared_context_manager.py +603 -0
- aiecs/domain/context/__init__.py +58 -0
- aiecs/domain/context/context_engine.py +989 -0
- aiecs/domain/context/conversation_models.py +354 -0
- aiecs/domain/context/graph_memory.py +467 -0
- aiecs/domain/execution/__init__.py +12 -0
- aiecs/domain/execution/model.py +57 -0
- aiecs/domain/knowledge_graph/__init__.py +19 -0
- aiecs/domain/knowledge_graph/models/__init__.py +52 -0
- aiecs/domain/knowledge_graph/models/entity.py +130 -0
- aiecs/domain/knowledge_graph/models/evidence.py +194 -0
- aiecs/domain/knowledge_graph/models/inference_rule.py +186 -0
- aiecs/domain/knowledge_graph/models/path.py +179 -0
- aiecs/domain/knowledge_graph/models/path_pattern.py +173 -0
- aiecs/domain/knowledge_graph/models/query.py +272 -0
- aiecs/domain/knowledge_graph/models/query_plan.py +187 -0
- aiecs/domain/knowledge_graph/models/relation.py +136 -0
- aiecs/domain/knowledge_graph/schema/__init__.py +23 -0
- aiecs/domain/knowledge_graph/schema/entity_type.py +135 -0
- aiecs/domain/knowledge_graph/schema/graph_schema.py +271 -0
- aiecs/domain/knowledge_graph/schema/property_schema.py +155 -0
- aiecs/domain/knowledge_graph/schema/relation_type.py +171 -0
- aiecs/domain/knowledge_graph/schema/schema_manager.py +496 -0
- aiecs/domain/knowledge_graph/schema/type_enums.py +205 -0
- aiecs/domain/task/__init__.py +13 -0
- aiecs/domain/task/dsl_processor.py +613 -0
- aiecs/domain/task/model.py +62 -0
- aiecs/domain/task/task_context.py +268 -0
- aiecs/infrastructure/__init__.py +24 -0
- aiecs/infrastructure/graph_storage/__init__.py +11 -0
- aiecs/infrastructure/graph_storage/base.py +601 -0
- aiecs/infrastructure/graph_storage/batch_operations.py +449 -0
- aiecs/infrastructure/graph_storage/cache.py +429 -0
- aiecs/infrastructure/graph_storage/distributed.py +226 -0
- aiecs/infrastructure/graph_storage/error_handling.py +390 -0
- aiecs/infrastructure/graph_storage/graceful_degradation.py +306 -0
- aiecs/infrastructure/graph_storage/health_checks.py +378 -0
- aiecs/infrastructure/graph_storage/in_memory.py +514 -0
- aiecs/infrastructure/graph_storage/index_optimization.py +483 -0
- aiecs/infrastructure/graph_storage/lazy_loading.py +410 -0
- aiecs/infrastructure/graph_storage/metrics.py +357 -0
- aiecs/infrastructure/graph_storage/migration.py +413 -0
- aiecs/infrastructure/graph_storage/pagination.py +471 -0
- aiecs/infrastructure/graph_storage/performance_monitoring.py +466 -0
- aiecs/infrastructure/graph_storage/postgres.py +871 -0
- aiecs/infrastructure/graph_storage/query_optimizer.py +635 -0
- aiecs/infrastructure/graph_storage/schema_cache.py +290 -0
- aiecs/infrastructure/graph_storage/sqlite.py +623 -0
- aiecs/infrastructure/graph_storage/streaming.py +495 -0
- aiecs/infrastructure/messaging/__init__.py +13 -0
- aiecs/infrastructure/messaging/celery_task_manager.py +383 -0
- aiecs/infrastructure/messaging/websocket_manager.py +298 -0
- aiecs/infrastructure/monitoring/__init__.py +34 -0
- aiecs/infrastructure/monitoring/executor_metrics.py +174 -0
- aiecs/infrastructure/monitoring/global_metrics_manager.py +213 -0
- aiecs/infrastructure/monitoring/structured_logger.py +48 -0
- aiecs/infrastructure/monitoring/tracing_manager.py +410 -0
- aiecs/infrastructure/persistence/__init__.py +24 -0
- aiecs/infrastructure/persistence/context_engine_client.py +187 -0
- aiecs/infrastructure/persistence/database_manager.py +333 -0
- aiecs/infrastructure/persistence/file_storage.py +754 -0
- aiecs/infrastructure/persistence/redis_client.py +220 -0
- aiecs/llm/__init__.py +86 -0
- aiecs/llm/callbacks/__init__.py +11 -0
- aiecs/llm/callbacks/custom_callbacks.py +264 -0
- aiecs/llm/client_factory.py +420 -0
- aiecs/llm/clients/__init__.py +33 -0
- aiecs/llm/clients/base_client.py +193 -0
- aiecs/llm/clients/googleai_client.py +181 -0
- aiecs/llm/clients/openai_client.py +131 -0
- aiecs/llm/clients/vertex_client.py +437 -0
- aiecs/llm/clients/xai_client.py +184 -0
- aiecs/llm/config/__init__.py +51 -0
- aiecs/llm/config/config_loader.py +275 -0
- aiecs/llm/config/config_validator.py +236 -0
- aiecs/llm/config/model_config.py +151 -0
- aiecs/llm/utils/__init__.py +10 -0
- aiecs/llm/utils/validate_config.py +91 -0
- aiecs/main.py +363 -0
- aiecs/scripts/__init__.py +3 -0
- aiecs/scripts/aid/VERSION_MANAGEMENT.md +97 -0
- aiecs/scripts/aid/__init__.py +19 -0
- aiecs/scripts/aid/version_manager.py +215 -0
- aiecs/scripts/dependance_check/DEPENDENCY_SYSTEM_SUMMARY.md +242 -0
- aiecs/scripts/dependance_check/README_DEPENDENCY_CHECKER.md +310 -0
- aiecs/scripts/dependance_check/__init__.py +17 -0
- aiecs/scripts/dependance_check/dependency_checker.py +938 -0
- aiecs/scripts/dependance_check/dependency_fixer.py +391 -0
- aiecs/scripts/dependance_check/download_nlp_data.py +396 -0
- aiecs/scripts/dependance_check/quick_dependency_check.py +270 -0
- aiecs/scripts/dependance_check/setup_nlp_data.sh +217 -0
- aiecs/scripts/dependance_patch/__init__.py +7 -0
- aiecs/scripts/dependance_patch/fix_weasel/README_WEASEL_PATCH.md +126 -0
- aiecs/scripts/dependance_patch/fix_weasel/__init__.py +11 -0
- aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.py +128 -0
- aiecs/scripts/dependance_patch/fix_weasel/fix_weasel_validator.sh +82 -0
- aiecs/scripts/dependance_patch/fix_weasel/patch_weasel_library.sh +188 -0
- aiecs/scripts/dependance_patch/fix_weasel/run_weasel_patch.sh +41 -0
- aiecs/scripts/tools_develop/README.md +449 -0
- aiecs/scripts/tools_develop/TOOL_AUTO_DISCOVERY.md +234 -0
- aiecs/scripts/tools_develop/__init__.py +21 -0
- aiecs/scripts/tools_develop/check_type_annotations.py +259 -0
- aiecs/scripts/tools_develop/validate_tool_schemas.py +422 -0
- aiecs/scripts/tools_develop/verify_tools.py +356 -0
- aiecs/tasks/__init__.py +1 -0
- aiecs/tasks/worker.py +172 -0
- aiecs/tools/__init__.py +299 -0
- aiecs/tools/apisource/__init__.py +99 -0
- aiecs/tools/apisource/intelligence/__init__.py +19 -0
- aiecs/tools/apisource/intelligence/data_fusion.py +381 -0
- aiecs/tools/apisource/intelligence/query_analyzer.py +413 -0
- aiecs/tools/apisource/intelligence/search_enhancer.py +388 -0
- aiecs/tools/apisource/monitoring/__init__.py +9 -0
- aiecs/tools/apisource/monitoring/metrics.py +303 -0
- aiecs/tools/apisource/providers/__init__.py +115 -0
- aiecs/tools/apisource/providers/base.py +664 -0
- aiecs/tools/apisource/providers/census.py +401 -0
- aiecs/tools/apisource/providers/fred.py +564 -0
- aiecs/tools/apisource/providers/newsapi.py +412 -0
- aiecs/tools/apisource/providers/worldbank.py +357 -0
- aiecs/tools/apisource/reliability/__init__.py +12 -0
- aiecs/tools/apisource/reliability/error_handler.py +375 -0
- aiecs/tools/apisource/reliability/fallback_strategy.py +391 -0
- aiecs/tools/apisource/tool.py +850 -0
- aiecs/tools/apisource/utils/__init__.py +9 -0
- aiecs/tools/apisource/utils/validators.py +338 -0
- aiecs/tools/base_tool.py +201 -0
- aiecs/tools/docs/__init__.py +121 -0
- aiecs/tools/docs/ai_document_orchestrator.py +599 -0
- aiecs/tools/docs/ai_document_writer_orchestrator.py +2403 -0
- aiecs/tools/docs/content_insertion_tool.py +1333 -0
- aiecs/tools/docs/document_creator_tool.py +1317 -0
- aiecs/tools/docs/document_layout_tool.py +1166 -0
- aiecs/tools/docs/document_parser_tool.py +994 -0
- aiecs/tools/docs/document_writer_tool.py +1818 -0
- aiecs/tools/knowledge_graph/__init__.py +17 -0
- aiecs/tools/knowledge_graph/graph_reasoning_tool.py +734 -0
- aiecs/tools/knowledge_graph/graph_search_tool.py +923 -0
- aiecs/tools/knowledge_graph/kg_builder_tool.py +476 -0
- aiecs/tools/langchain_adapter.py +542 -0
- aiecs/tools/schema_generator.py +275 -0
- aiecs/tools/search_tool/__init__.py +100 -0
- aiecs/tools/search_tool/analyzers.py +589 -0
- aiecs/tools/search_tool/cache.py +260 -0
- aiecs/tools/search_tool/constants.py +128 -0
- aiecs/tools/search_tool/context.py +216 -0
- aiecs/tools/search_tool/core.py +749 -0
- aiecs/tools/search_tool/deduplicator.py +123 -0
- aiecs/tools/search_tool/error_handler.py +271 -0
- aiecs/tools/search_tool/metrics.py +371 -0
- aiecs/tools/search_tool/rate_limiter.py +178 -0
- aiecs/tools/search_tool/schemas.py +277 -0
- aiecs/tools/statistics/__init__.py +80 -0
- aiecs/tools/statistics/ai_data_analysis_orchestrator.py +643 -0
- aiecs/tools/statistics/ai_insight_generator_tool.py +505 -0
- aiecs/tools/statistics/ai_report_orchestrator_tool.py +694 -0
- aiecs/tools/statistics/data_loader_tool.py +564 -0
- aiecs/tools/statistics/data_profiler_tool.py +658 -0
- aiecs/tools/statistics/data_transformer_tool.py +573 -0
- aiecs/tools/statistics/data_visualizer_tool.py +495 -0
- aiecs/tools/statistics/model_trainer_tool.py +487 -0
- aiecs/tools/statistics/statistical_analyzer_tool.py +459 -0
- aiecs/tools/task_tools/__init__.py +86 -0
- aiecs/tools/task_tools/chart_tool.py +732 -0
- aiecs/tools/task_tools/classfire_tool.py +922 -0
- aiecs/tools/task_tools/image_tool.py +447 -0
- aiecs/tools/task_tools/office_tool.py +684 -0
- aiecs/tools/task_tools/pandas_tool.py +635 -0
- aiecs/tools/task_tools/report_tool.py +635 -0
- aiecs/tools/task_tools/research_tool.py +392 -0
- aiecs/tools/task_tools/scraper_tool.py +715 -0
- aiecs/tools/task_tools/stats_tool.py +688 -0
- aiecs/tools/temp_file_manager.py +130 -0
- aiecs/tools/tool_executor/__init__.py +37 -0
- aiecs/tools/tool_executor/tool_executor.py +881 -0
- aiecs/utils/LLM_output_structor.py +445 -0
- aiecs/utils/__init__.py +34 -0
- aiecs/utils/base_callback.py +47 -0
- aiecs/utils/cache_provider.py +695 -0
- aiecs/utils/execution_utils.py +184 -0
- aiecs/utils/logging.py +1 -0
- aiecs/utils/prompt_loader.py +14 -0
- aiecs/utils/token_usage_repository.py +323 -0
- aiecs/ws/__init__.py +0 -0
- aiecs/ws/socket_server.py +52 -0
- aiecs-1.5.1.dist-info/METADATA +608 -0
- aiecs-1.5.1.dist-info/RECORD +302 -0
- aiecs-1.5.1.dist-info/WHEEL +5 -0
- aiecs-1.5.1.dist-info/entry_points.txt +10 -0
- aiecs-1.5.1.dist-info/licenses/LICENSE +225 -0
- aiecs-1.5.1.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Tool Schema Generator
|
|
3
|
+
|
|
4
|
+
Generate OpenAI-style function schemas from AIECS tools.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import inspect
|
|
8
|
+
import logging
|
|
9
|
+
from typing import Dict, Any, List, Optional
|
|
10
|
+
from aiecs.tools import get_tool
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
class ToolSchemaGenerator:
|
|
16
|
+
"""
|
|
17
|
+
Generates OpenAI-style function calling schemas from AIECS tools.
|
|
18
|
+
|
|
19
|
+
Example:
|
|
20
|
+
generator = ToolSchemaGenerator()
|
|
21
|
+
schema = generator.generate_schema("search", "search_web")
|
|
22
|
+
"""
|
|
23
|
+
|
|
24
|
+
@staticmethod
|
|
25
|
+
def generate_schema(
|
|
26
|
+
tool_name: str,
|
|
27
|
+
operation: Optional[str] = None,
|
|
28
|
+
description: Optional[str] = None,
|
|
29
|
+
) -> Dict[str, Any]:
|
|
30
|
+
"""
|
|
31
|
+
Generate OpenAI function schema for a tool operation.
|
|
32
|
+
|
|
33
|
+
Args:
|
|
34
|
+
tool_name: Tool name
|
|
35
|
+
operation: Optional operation name
|
|
36
|
+
description: Optional custom description
|
|
37
|
+
|
|
38
|
+
Returns:
|
|
39
|
+
OpenAI function schema dictionary
|
|
40
|
+
"""
|
|
41
|
+
try:
|
|
42
|
+
tool = get_tool(tool_name)
|
|
43
|
+
except Exception as e:
|
|
44
|
+
logger.error(f"Failed to get tool {tool_name}: {e}")
|
|
45
|
+
raise
|
|
46
|
+
|
|
47
|
+
# Generate function name
|
|
48
|
+
if operation:
|
|
49
|
+
function_name = f"{tool_name}_{operation}"
|
|
50
|
+
else:
|
|
51
|
+
function_name = tool_name
|
|
52
|
+
|
|
53
|
+
# Get operation method if specified
|
|
54
|
+
if operation:
|
|
55
|
+
if not hasattr(tool, operation):
|
|
56
|
+
raise ValueError(f"Tool {tool_name} has no operation '{operation}'")
|
|
57
|
+
method = getattr(tool, operation)
|
|
58
|
+
else:
|
|
59
|
+
# Default to 'run' method
|
|
60
|
+
method = getattr(tool, "run", None)
|
|
61
|
+
if method is None:
|
|
62
|
+
raise ValueError(f"Tool {tool_name} has no 'run' method")
|
|
63
|
+
|
|
64
|
+
# Extract parameters
|
|
65
|
+
parameters = ToolSchemaGenerator._extract_parameters(method)
|
|
66
|
+
|
|
67
|
+
# Build schema
|
|
68
|
+
schema = {
|
|
69
|
+
"name": function_name,
|
|
70
|
+
"description": description or f"{tool_name} tool",
|
|
71
|
+
"parameters": {
|
|
72
|
+
"type": "object",
|
|
73
|
+
"properties": parameters,
|
|
74
|
+
"required": ToolSchemaGenerator._get_required_params(method),
|
|
75
|
+
},
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
return schema
|
|
79
|
+
|
|
80
|
+
@staticmethod
|
|
81
|
+
def _extract_parameters(method) -> Dict[str, Dict[str, Any]]:
|
|
82
|
+
"""Extract parameter schemas from method."""
|
|
83
|
+
sig = inspect.signature(method)
|
|
84
|
+
parameters = {}
|
|
85
|
+
|
|
86
|
+
for param_name, param in sig.parameters.items():
|
|
87
|
+
# Skip 'self' and 'op' parameters
|
|
88
|
+
if param_name in ["self", "op", "cls"]:
|
|
89
|
+
continue
|
|
90
|
+
|
|
91
|
+
param_schema = ToolSchemaGenerator._param_to_schema(param_name, param)
|
|
92
|
+
if param_schema:
|
|
93
|
+
parameters[param_name] = param_schema
|
|
94
|
+
|
|
95
|
+
return parameters
|
|
96
|
+
|
|
97
|
+
@staticmethod
|
|
98
|
+
def _param_to_schema(param_name: str, param: inspect.Parameter) -> Optional[Dict[str, Any]]:
|
|
99
|
+
"""Convert parameter to JSON schema."""
|
|
100
|
+
schema: Dict[str, Any] = {}
|
|
101
|
+
|
|
102
|
+
# Try to infer type from annotation
|
|
103
|
+
if param.annotation != inspect.Parameter.empty:
|
|
104
|
+
schema.update(ToolSchemaGenerator._type_to_schema(param.annotation))
|
|
105
|
+
|
|
106
|
+
# Add default if present
|
|
107
|
+
if param.default != inspect.Parameter.empty:
|
|
108
|
+
schema["default"] = param.default
|
|
109
|
+
|
|
110
|
+
# If no type info, default to string
|
|
111
|
+
if "type" not in schema:
|
|
112
|
+
schema["type"] = "string"
|
|
113
|
+
|
|
114
|
+
return schema
|
|
115
|
+
|
|
116
|
+
@staticmethod
|
|
117
|
+
def _type_to_schema(type_hint) -> Dict[str, Any]:
|
|
118
|
+
"""Convert Python type hint to JSON schema type."""
|
|
119
|
+
# Handle string annotations
|
|
120
|
+
if isinstance(type_hint, str):
|
|
121
|
+
if type_hint == "str":
|
|
122
|
+
return {"type": "string"}
|
|
123
|
+
elif type_hint == "int":
|
|
124
|
+
return {"type": "integer"}
|
|
125
|
+
elif type_hint == "float":
|
|
126
|
+
return {"type": "number"}
|
|
127
|
+
elif type_hint == "bool":
|
|
128
|
+
return {"type": "boolean"}
|
|
129
|
+
elif type_hint.startswith("List"):
|
|
130
|
+
return {"type": "array"}
|
|
131
|
+
elif type_hint.startswith("Dict"):
|
|
132
|
+
return {"type": "object"}
|
|
133
|
+
else:
|
|
134
|
+
return {"type": "string"}
|
|
135
|
+
|
|
136
|
+
# Handle actual types
|
|
137
|
+
if type_hint == str:
|
|
138
|
+
return {"type": "string"}
|
|
139
|
+
elif type_hint == int:
|
|
140
|
+
return {"type": "integer"}
|
|
141
|
+
elif type_hint == float:
|
|
142
|
+
return {"type": "number"}
|
|
143
|
+
elif type_hint == bool:
|
|
144
|
+
return {"type": "boolean"}
|
|
145
|
+
elif hasattr(type_hint, "__origin__"):
|
|
146
|
+
# Generic types (List, Dict, etc.)
|
|
147
|
+
origin = type_hint.__origin__
|
|
148
|
+
if origin == list:
|
|
149
|
+
return {"type": "array"}
|
|
150
|
+
elif origin == dict:
|
|
151
|
+
return {"type": "object"}
|
|
152
|
+
else:
|
|
153
|
+
return {"type": "string"}
|
|
154
|
+
else:
|
|
155
|
+
return {"type": "string"}
|
|
156
|
+
|
|
157
|
+
@staticmethod
|
|
158
|
+
def _get_required_params(method) -> List[str]:
|
|
159
|
+
"""Get list of required parameter names."""
|
|
160
|
+
sig = inspect.signature(method)
|
|
161
|
+
required = []
|
|
162
|
+
|
|
163
|
+
for param_name, param in sig.parameters.items():
|
|
164
|
+
# Skip 'self' and 'op' parameters
|
|
165
|
+
if param_name in ["self", "op", "cls"]:
|
|
166
|
+
continue
|
|
167
|
+
|
|
168
|
+
# Required if no default value
|
|
169
|
+
if param.default == inspect.Parameter.empty:
|
|
170
|
+
required.append(param_name)
|
|
171
|
+
|
|
172
|
+
return required
|
|
173
|
+
|
|
174
|
+
@staticmethod
|
|
175
|
+
def generate_schemas_for_tools(
|
|
176
|
+
tool_names: List[str],
|
|
177
|
+
operations: Optional[Dict[str, List[str]]] = None,
|
|
178
|
+
) -> List[Dict[str, Any]]:
|
|
179
|
+
"""
|
|
180
|
+
Generate schemas for multiple tools.
|
|
181
|
+
|
|
182
|
+
Args:
|
|
183
|
+
tool_names: List of tool names
|
|
184
|
+
operations: Optional dict mapping tool names to operations
|
|
185
|
+
|
|
186
|
+
Returns:
|
|
187
|
+
List of function schemas
|
|
188
|
+
"""
|
|
189
|
+
schemas = []
|
|
190
|
+
operations = operations or {}
|
|
191
|
+
|
|
192
|
+
for tool_name in tool_names:
|
|
193
|
+
tool_ops = operations.get(tool_name, [None])
|
|
194
|
+
|
|
195
|
+
for op in tool_ops:
|
|
196
|
+
try:
|
|
197
|
+
schema = ToolSchemaGenerator.generate_schema(tool_name, op)
|
|
198
|
+
schemas.append(schema)
|
|
199
|
+
except Exception as e:
|
|
200
|
+
logger.warning(f"Failed to generate schema for {tool_name}.{op}: {e}")
|
|
201
|
+
|
|
202
|
+
return schemas
|
|
203
|
+
|
|
204
|
+
|
|
205
|
+
def generate_tool_schema(
|
|
206
|
+
tool_name: str,
|
|
207
|
+
operation: Optional[str] = None,
|
|
208
|
+
description: Optional[str] = None,
|
|
209
|
+
) -> Dict[str, Any]:
|
|
210
|
+
"""
|
|
211
|
+
Convenience function to generate tool schema.
|
|
212
|
+
|
|
213
|
+
Args:
|
|
214
|
+
tool_name: Tool name
|
|
215
|
+
operation: Optional operation name
|
|
216
|
+
description: Optional custom description
|
|
217
|
+
|
|
218
|
+
Returns:
|
|
219
|
+
OpenAI function schema dictionary
|
|
220
|
+
"""
|
|
221
|
+
return ToolSchemaGenerator.generate_schema(tool_name, operation, description)
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Community Domain Module
|
|
3
|
+
|
|
4
|
+
Provides agent community collaboration features including governance,
|
|
5
|
+
resource sharing, decision-making, and collaborative workflows.
|
|
6
|
+
|
|
7
|
+
This module enables developers to:
|
|
8
|
+
- Create and manage agent communities
|
|
9
|
+
- Facilitate agent-to-agent communication
|
|
10
|
+
- Share resources and knowledge between agents
|
|
11
|
+
- Make collective decisions through various governance models
|
|
12
|
+
- Run collaborative workflows and sessions
|
|
13
|
+
|
|
14
|
+
Version: 1.0.0
|
|
15
|
+
"""
|
|
16
|
+
|
|
17
|
+
__version__ = "1.0.0"
|
|
18
|
+
|
|
19
|
+
# Core managers
|
|
20
|
+
from .community_manager import CommunityManager, MemberLifecycleHooks
|
|
21
|
+
from .community_integration import CommunityIntegration
|
|
22
|
+
from .decision_engine import (
|
|
23
|
+
DecisionEngine,
|
|
24
|
+
ConsensusAlgorithm,
|
|
25
|
+
ConflictResolutionStrategy,
|
|
26
|
+
)
|
|
27
|
+
from .resource_manager import ResourceManager
|
|
28
|
+
from .collaborative_workflow import CollaborativeWorkflowEngine
|
|
29
|
+
from .analytics import CommunityAnalytics
|
|
30
|
+
|
|
31
|
+
# Communication and context
|
|
32
|
+
from .communication_hub import (
|
|
33
|
+
CommunicationHub,
|
|
34
|
+
Message,
|
|
35
|
+
Event,
|
|
36
|
+
MessageType,
|
|
37
|
+
EventType,
|
|
38
|
+
)
|
|
39
|
+
from .shared_context_manager import (
|
|
40
|
+
SharedContextManager,
|
|
41
|
+
SharedContext,
|
|
42
|
+
ContextScope,
|
|
43
|
+
ConflictResolutionStrategy as ContextConflictStrategy,
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
# Agent adapters
|
|
47
|
+
from .agent_adapter import (
|
|
48
|
+
AgentAdapter,
|
|
49
|
+
StandardLLMAdapter,
|
|
50
|
+
CustomAgentAdapter,
|
|
51
|
+
AgentAdapterRegistry,
|
|
52
|
+
AgentCapability,
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
# Builder
|
|
56
|
+
from .community_builder import CommunityBuilder, builder
|
|
57
|
+
|
|
58
|
+
# Models
|
|
59
|
+
from .models import (
|
|
60
|
+
CommunityRole,
|
|
61
|
+
GovernanceType,
|
|
62
|
+
DecisionStatus,
|
|
63
|
+
ResourceType,
|
|
64
|
+
CommunityMember,
|
|
65
|
+
CommunityResource,
|
|
66
|
+
CommunityDecision,
|
|
67
|
+
AgentCommunity,
|
|
68
|
+
CollaborationSession,
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
# Exceptions
|
|
72
|
+
from .exceptions import (
|
|
73
|
+
CommunityException,
|
|
74
|
+
CommunityNotFoundError,
|
|
75
|
+
MemberNotFoundError,
|
|
76
|
+
ResourceNotFoundError,
|
|
77
|
+
DecisionNotFoundError,
|
|
78
|
+
AccessDeniedError,
|
|
79
|
+
MembershipError,
|
|
80
|
+
VotingError,
|
|
81
|
+
GovernanceError,
|
|
82
|
+
CollaborationError,
|
|
83
|
+
CommunityInitializationError,
|
|
84
|
+
CommunityValidationError,
|
|
85
|
+
QuorumNotMetError,
|
|
86
|
+
ConflictResolutionError,
|
|
87
|
+
CommunityCapacityError,
|
|
88
|
+
AgentAdapterError,
|
|
89
|
+
CommunicationError,
|
|
90
|
+
ContextError,
|
|
91
|
+
)
|
|
92
|
+
|
|
93
|
+
__all__ = [
|
|
94
|
+
# Version
|
|
95
|
+
"__version__",
|
|
96
|
+
# Core managers
|
|
97
|
+
"CommunityManager",
|
|
98
|
+
"CommunityIntegration",
|
|
99
|
+
"DecisionEngine",
|
|
100
|
+
"ResourceManager",
|
|
101
|
+
"CollaborativeWorkflowEngine",
|
|
102
|
+
"CommunityAnalytics",
|
|
103
|
+
"MemberLifecycleHooks",
|
|
104
|
+
# Communication and context
|
|
105
|
+
"CommunicationHub",
|
|
106
|
+
"Message",
|
|
107
|
+
"Event",
|
|
108
|
+
"MessageType",
|
|
109
|
+
"EventType",
|
|
110
|
+
"SharedContextManager",
|
|
111
|
+
"SharedContext",
|
|
112
|
+
"ContextScope",
|
|
113
|
+
"ContextConflictStrategy",
|
|
114
|
+
# Agent adapters
|
|
115
|
+
"AgentAdapter",
|
|
116
|
+
"StandardLLMAdapter",
|
|
117
|
+
"CustomAgentAdapter",
|
|
118
|
+
"AgentAdapterRegistry",
|
|
119
|
+
"AgentCapability",
|
|
120
|
+
# Builder
|
|
121
|
+
"CommunityBuilder",
|
|
122
|
+
"builder",
|
|
123
|
+
# Enums
|
|
124
|
+
"CommunityRole",
|
|
125
|
+
"GovernanceType",
|
|
126
|
+
"DecisionStatus",
|
|
127
|
+
"ResourceType",
|
|
128
|
+
"ConsensusAlgorithm",
|
|
129
|
+
"ConflictResolutionStrategy",
|
|
130
|
+
# Models
|
|
131
|
+
"CommunityMember",
|
|
132
|
+
"CommunityResource",
|
|
133
|
+
"CommunityDecision",
|
|
134
|
+
"AgentCommunity",
|
|
135
|
+
"CollaborationSession",
|
|
136
|
+
# Exceptions
|
|
137
|
+
"CommunityException",
|
|
138
|
+
"CommunityNotFoundError",
|
|
139
|
+
"MemberNotFoundError",
|
|
140
|
+
"ResourceNotFoundError",
|
|
141
|
+
"DecisionNotFoundError",
|
|
142
|
+
"AccessDeniedError",
|
|
143
|
+
"MembershipError",
|
|
144
|
+
"VotingError",
|
|
145
|
+
"GovernanceError",
|
|
146
|
+
"CollaborationError",
|
|
147
|
+
"CommunityInitializationError",
|
|
148
|
+
"CommunityValidationError",
|
|
149
|
+
"QuorumNotMetError",
|
|
150
|
+
"ConflictResolutionError",
|
|
151
|
+
"CommunityCapacityError",
|
|
152
|
+
"AgentAdapterError",
|
|
153
|
+
"CommunicationError",
|
|
154
|
+
"ContextError",
|
|
155
|
+
]
|