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,320 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Community Builder
|
|
3
|
+
|
|
4
|
+
Provides a fluent interface for building communities with preset templates
|
|
5
|
+
and customizable configuration.
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import logging
|
|
9
|
+
from typing import Dict, List, Any, Optional
|
|
10
|
+
|
|
11
|
+
from .models.community_models import GovernanceType
|
|
12
|
+
from .community_integration import CommunityIntegration
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger(__name__)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
class CommunityBuilder:
|
|
18
|
+
"""
|
|
19
|
+
Fluent interface builder for creating communities.
|
|
20
|
+
|
|
21
|
+
Provides an intuitive way to configure and create communities
|
|
22
|
+
with method chaining.
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
def __init__(self, integration: CommunityIntegration):
|
|
26
|
+
"""
|
|
27
|
+
Initialize the community builder.
|
|
28
|
+
|
|
29
|
+
Args:
|
|
30
|
+
integration: Community integration instance
|
|
31
|
+
"""
|
|
32
|
+
self.integration = integration
|
|
33
|
+
self._reset()
|
|
34
|
+
|
|
35
|
+
def _reset(self) -> None:
|
|
36
|
+
"""Reset builder state."""
|
|
37
|
+
self._name: Optional[str] = None
|
|
38
|
+
self._description: Optional[str] = None
|
|
39
|
+
self._governance_type: GovernanceType = GovernanceType.DEMOCRATIC
|
|
40
|
+
self._agent_roles: List[str] = []
|
|
41
|
+
self._creator_agent_id: Optional[str] = None
|
|
42
|
+
self._metadata: Dict[str, Any] = {}
|
|
43
|
+
self._is_temporary: bool = False
|
|
44
|
+
self._duration_minutes: int = 60
|
|
45
|
+
self._auto_cleanup: bool = True
|
|
46
|
+
self._template: Optional[str] = None
|
|
47
|
+
self._template_config: Dict[str, Any] = {}
|
|
48
|
+
|
|
49
|
+
def with_name(self, name: str) -> "CommunityBuilder":
|
|
50
|
+
"""
|
|
51
|
+
Set the community name.
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
name: Name of the community
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
Self for chaining
|
|
58
|
+
"""
|
|
59
|
+
self._name = name
|
|
60
|
+
return self
|
|
61
|
+
|
|
62
|
+
def with_description(self, description: str) -> "CommunityBuilder":
|
|
63
|
+
"""
|
|
64
|
+
Set the community description.
|
|
65
|
+
|
|
66
|
+
Args:
|
|
67
|
+
description: Description of the community
|
|
68
|
+
|
|
69
|
+
Returns:
|
|
70
|
+
Self for chaining
|
|
71
|
+
"""
|
|
72
|
+
self._description = description
|
|
73
|
+
return self
|
|
74
|
+
|
|
75
|
+
def with_governance(self, governance_type: GovernanceType) -> "CommunityBuilder":
|
|
76
|
+
"""
|
|
77
|
+
Set the governance type.
|
|
78
|
+
|
|
79
|
+
Args:
|
|
80
|
+
governance_type: Type of governance
|
|
81
|
+
|
|
82
|
+
Returns:
|
|
83
|
+
Self for chaining
|
|
84
|
+
"""
|
|
85
|
+
self._governance_type = governance_type
|
|
86
|
+
return self
|
|
87
|
+
|
|
88
|
+
def add_agent_role(self, role: str) -> "CommunityBuilder":
|
|
89
|
+
"""
|
|
90
|
+
Add an agent role to the community.
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
role: Agent role to add
|
|
94
|
+
|
|
95
|
+
Returns:
|
|
96
|
+
Self for chaining
|
|
97
|
+
"""
|
|
98
|
+
if role not in self._agent_roles:
|
|
99
|
+
self._agent_roles.append(role)
|
|
100
|
+
return self
|
|
101
|
+
|
|
102
|
+
def add_agent_roles(self, roles: List[str]) -> "CommunityBuilder":
|
|
103
|
+
"""
|
|
104
|
+
Add multiple agent roles.
|
|
105
|
+
|
|
106
|
+
Args:
|
|
107
|
+
roles: List of agent roles
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
Self for chaining
|
|
111
|
+
"""
|
|
112
|
+
for role in roles:
|
|
113
|
+
self.add_agent_role(role)
|
|
114
|
+
return self
|
|
115
|
+
|
|
116
|
+
def with_creator(self, agent_id: str) -> "CommunityBuilder":
|
|
117
|
+
"""
|
|
118
|
+
Set the creator agent.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
agent_id: ID of the creating agent
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
Self for chaining
|
|
125
|
+
"""
|
|
126
|
+
self._creator_agent_id = agent_id
|
|
127
|
+
return self
|
|
128
|
+
|
|
129
|
+
def with_duration(self, minutes: int, auto_cleanup: bool = True) -> "CommunityBuilder":
|
|
130
|
+
"""
|
|
131
|
+
Make the community temporary with a duration.
|
|
132
|
+
|
|
133
|
+
Args:
|
|
134
|
+
minutes: Duration in minutes
|
|
135
|
+
auto_cleanup: Whether to automatically cleanup after duration
|
|
136
|
+
|
|
137
|
+
Returns:
|
|
138
|
+
Self for chaining
|
|
139
|
+
"""
|
|
140
|
+
self._is_temporary = True
|
|
141
|
+
self._duration_minutes = minutes
|
|
142
|
+
self._auto_cleanup = auto_cleanup
|
|
143
|
+
return self
|
|
144
|
+
|
|
145
|
+
def with_metadata(self, key: str, value: Any) -> "CommunityBuilder":
|
|
146
|
+
"""
|
|
147
|
+
Add metadata to the community.
|
|
148
|
+
|
|
149
|
+
Args:
|
|
150
|
+
key: Metadata key
|
|
151
|
+
value: Metadata value
|
|
152
|
+
|
|
153
|
+
Returns:
|
|
154
|
+
Self for chaining
|
|
155
|
+
"""
|
|
156
|
+
self._metadata[key] = value
|
|
157
|
+
return self
|
|
158
|
+
|
|
159
|
+
def use_template(self, template: str, **config) -> "CommunityBuilder":
|
|
160
|
+
"""
|
|
161
|
+
Use a preset template.
|
|
162
|
+
|
|
163
|
+
Args:
|
|
164
|
+
template: Template name (research, development, support, creative)
|
|
165
|
+
**config: Template configuration
|
|
166
|
+
|
|
167
|
+
Returns:
|
|
168
|
+
Self for chaining
|
|
169
|
+
"""
|
|
170
|
+
self._template = template
|
|
171
|
+
self._template_config = config
|
|
172
|
+
return self
|
|
173
|
+
|
|
174
|
+
async def build(self) -> str:
|
|
175
|
+
"""
|
|
176
|
+
Build and create the community.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
Community ID
|
|
180
|
+
"""
|
|
181
|
+
# Apply template if specified
|
|
182
|
+
if self._template:
|
|
183
|
+
await self._apply_template(self._template, self._template_config)
|
|
184
|
+
|
|
185
|
+
# Validate required fields
|
|
186
|
+
if not self._name:
|
|
187
|
+
raise ValueError("Community name is required")
|
|
188
|
+
|
|
189
|
+
# Create community based on configuration
|
|
190
|
+
if self._is_temporary:
|
|
191
|
+
community_id = await self.integration.create_temporary_community(
|
|
192
|
+
name=self._name,
|
|
193
|
+
description=self._description or f"Community: {self._name}",
|
|
194
|
+
agent_roles=self._agent_roles,
|
|
195
|
+
duration_minutes=self._duration_minutes,
|
|
196
|
+
auto_cleanup=self._auto_cleanup,
|
|
197
|
+
governance_type=self._governance_type,
|
|
198
|
+
creator_agent_id=self._creator_agent_id,
|
|
199
|
+
)
|
|
200
|
+
else:
|
|
201
|
+
community_id = await self.integration.create_agent_community(
|
|
202
|
+
name=self._name,
|
|
203
|
+
description=self._description or f"Community: {self._name}",
|
|
204
|
+
agent_roles=self._agent_roles,
|
|
205
|
+
governance_type=self._governance_type,
|
|
206
|
+
creator_agent_id=self._creator_agent_id,
|
|
207
|
+
)
|
|
208
|
+
|
|
209
|
+
# Apply metadata
|
|
210
|
+
if self._metadata:
|
|
211
|
+
community = self.integration.community_manager.communities[community_id]
|
|
212
|
+
community.metadata.update(self._metadata)
|
|
213
|
+
|
|
214
|
+
logger.info(f"Built community: {self._name} ({community_id})")
|
|
215
|
+
|
|
216
|
+
# Reset builder for reuse
|
|
217
|
+
self._reset()
|
|
218
|
+
|
|
219
|
+
return community_id
|
|
220
|
+
|
|
221
|
+
async def _apply_template(self, template: str, config: Dict[str, Any]) -> None:
|
|
222
|
+
"""Apply a preset template configuration."""
|
|
223
|
+
if template == "research":
|
|
224
|
+
await self._apply_research_template(config)
|
|
225
|
+
elif template == "development":
|
|
226
|
+
await self._apply_development_template(config)
|
|
227
|
+
elif template == "support":
|
|
228
|
+
await self._apply_support_template(config)
|
|
229
|
+
elif template == "creative":
|
|
230
|
+
await self._apply_creative_template(config)
|
|
231
|
+
else:
|
|
232
|
+
logger.warning(f"Unknown template: {template}")
|
|
233
|
+
|
|
234
|
+
async def _apply_research_template(self, config: Dict[str, Any]) -> None:
|
|
235
|
+
"""Apply research community template."""
|
|
236
|
+
self.with_governance(GovernanceType.CONSENSUS)
|
|
237
|
+
|
|
238
|
+
# Default research roles
|
|
239
|
+
default_roles = ["researcher", "analyst", "writer", "reviewer"]
|
|
240
|
+
self.add_agent_roles(config.get("roles", default_roles))
|
|
241
|
+
|
|
242
|
+
# Research-specific metadata
|
|
243
|
+
if "topic" in config:
|
|
244
|
+
self.with_metadata("research_topic", config["topic"])
|
|
245
|
+
if "questions" in config:
|
|
246
|
+
self.with_metadata("research_questions", config["questions"])
|
|
247
|
+
if "methodologies" in config:
|
|
248
|
+
self.with_metadata("methodologies", config["methodologies"])
|
|
249
|
+
|
|
250
|
+
self.with_metadata("type", "research")
|
|
251
|
+
logger.debug("Applied research template")
|
|
252
|
+
|
|
253
|
+
async def _apply_development_template(self, config: Dict[str, Any]) -> None:
|
|
254
|
+
"""Apply development/project community template."""
|
|
255
|
+
self.with_governance(GovernanceType.HIERARCHICAL)
|
|
256
|
+
|
|
257
|
+
# Default development roles
|
|
258
|
+
default_roles = ["architect", "developer", "tester", "reviewer"]
|
|
259
|
+
self.add_agent_roles(config.get("roles", default_roles))
|
|
260
|
+
|
|
261
|
+
# Development-specific metadata
|
|
262
|
+
if "project_name" in config:
|
|
263
|
+
self.with_metadata("project_name", config["project_name"])
|
|
264
|
+
if "goal" in config:
|
|
265
|
+
self.with_metadata("project_goal", config["goal"])
|
|
266
|
+
if "deadline" in config:
|
|
267
|
+
self.with_metadata("project_deadline", config["deadline"])
|
|
268
|
+
if "tech_stack" in config:
|
|
269
|
+
self.with_metadata("tech_stack", config["tech_stack"])
|
|
270
|
+
|
|
271
|
+
self.with_metadata("type", "development")
|
|
272
|
+
logger.debug("Applied development template")
|
|
273
|
+
|
|
274
|
+
async def _apply_support_template(self, config: Dict[str, Any]) -> None:
|
|
275
|
+
"""Apply support community template."""
|
|
276
|
+
self.with_governance(GovernanceType.DEMOCRATIC)
|
|
277
|
+
|
|
278
|
+
# Default support roles
|
|
279
|
+
default_roles = ["support_agent", "specialist", "escalation_handler"]
|
|
280
|
+
self.add_agent_roles(config.get("roles", default_roles))
|
|
281
|
+
|
|
282
|
+
# Support-specific metadata
|
|
283
|
+
if "support_level" in config:
|
|
284
|
+
self.with_metadata("support_level", config["support_level"])
|
|
285
|
+
if "coverage_hours" in config:
|
|
286
|
+
self.with_metadata("coverage_hours", config["coverage_hours"])
|
|
287
|
+
|
|
288
|
+
self.with_metadata("type", "support")
|
|
289
|
+
logger.debug("Applied support template")
|
|
290
|
+
|
|
291
|
+
async def _apply_creative_template(self, config: Dict[str, Any]) -> None:
|
|
292
|
+
"""Apply creative collaboration template."""
|
|
293
|
+
self.with_governance(GovernanceType.HYBRID)
|
|
294
|
+
|
|
295
|
+
# Default creative roles
|
|
296
|
+
default_roles = ["ideator", "creator", "critic", "synthesizer"]
|
|
297
|
+
self.add_agent_roles(config.get("roles", default_roles))
|
|
298
|
+
|
|
299
|
+
# Creative-specific metadata
|
|
300
|
+
if "project_type" in config:
|
|
301
|
+
self.with_metadata("project_type", config["project_type"])
|
|
302
|
+
if "style_guidelines" in config:
|
|
303
|
+
self.with_metadata("style_guidelines", config["style_guidelines"])
|
|
304
|
+
|
|
305
|
+
self.with_metadata("type", "creative")
|
|
306
|
+
logger.debug("Applied creative template")
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
# Convenience function for quick builder creation
|
|
310
|
+
def builder(integration: CommunityIntegration) -> CommunityBuilder:
|
|
311
|
+
"""
|
|
312
|
+
Create a new community builder.
|
|
313
|
+
|
|
314
|
+
Args:
|
|
315
|
+
integration: Community integration instance
|
|
316
|
+
|
|
317
|
+
Returns:
|
|
318
|
+
CommunityBuilder instance
|
|
319
|
+
"""
|
|
320
|
+
return CommunityBuilder(integration)
|