Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-agents/src/lexigram/ai/agents/module.py: 87%
15 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-25 07:19 +0800
1"""Agents module for dependency injection."""
3from __future__ import annotations
5from typing import TYPE_CHECKING
7from lexigram.contracts.ai import AgentExecutorProtocol, ToolRegistryProtocol
8from lexigram.di.module import DynamicModule, Module, module
10if TYPE_CHECKING:
11 from lexigram.ai.agents.config import AgentConfig
14@module
15class AgentsModule(Module):
16 """Agent system module for Lexigram applications.
18 Provides agent execution, tool registry, and strategy support.
20 Usage::
22 from lexigram.ai.agents import AgentsModule
23 from lexigram.ai.agents.config import AgentConfig
25 @module(
26 imports=[AgentsModule.configure(AgentConfig(...))]
27 )
28 class AppModule(Module):
29 pass
30 """
32 @classmethod
33 def configure(
34 cls,
35 config: AgentConfig | None = None,
36 enable_multi_agent: bool = False,
37 ) -> DynamicModule:
38 """Create an AgentsModule with explicit configuration.
40 Args:
41 config: :class:`~lexigram.ai.agents.config.AgentConfig` or ``None``
42 for defaults.
43 enable_multi_agent: Enable multi-agent orchestration support,
44 allowing agents to delegate tasks to peer agents. Defaults to
45 ``False``.
47 Returns:
48 A :class:`~lexigram.di.module.DynamicModule` descriptor.
49 """
50 from lexigram.ai.agents.di.provider import AgentsProvider
52 return DynamicModule(
53 module=cls,
54 providers=[
55 AgentsProvider(config=config, enable_multi_agent=enable_multi_agent)
56 ],
57 exports=[
58 AgentExecutorProtocol,
59 ToolRegistryProtocol,
60 ],
61 )
63 @classmethod
64 def stub(cls, config: AgentConfig | None = None) -> DynamicModule:
65 """Create an AgentsModule suitable for unit and integration testing.
67 Uses in-memory or no-op agent implementations with minimal side
68 effects. Multi-agent orchestration is disabled by default to keep
69 the test container lightweight.
71 Args:
72 config: Optional :class:`~lexigram.ai.agents.config.AgentConfig`
73 override. Uses safe test defaults when ``None``.
75 Returns:
76 A :class:`~lexigram.di.module.DynamicModule` descriptor.
77 """
78 from lexigram.ai.agents.di.provider import AgentsProvider
80 return DynamicModule(
81 module=cls,
82 providers=[AgentsProvider(config=config, enable_multi_agent=False)],
83 exports=[
84 AgentExecutorProtocol,
85 ToolRegistryProtocol,
86 ],
87 )
90__all__ = ["AgentsModule"]