Coverage for /home/admin/Documents/AI/applications/lexigram-dev/lexigram/experimental/ai/lexigram-ai-agents/src/lexigram/ai/agents/__init__.py: 56%

18 statements  

« prev     ^ index     » next       coverage.py v7.15.4, created at 2026-08-25 07:19 +0800

1"""lexigram-ai-agents — Agent system for Lexigram Framework. 

2 

3Canonical import paths 

4----------------------- 

5AgentBase class: from lexigram.ai.agents import AgentBase 

6Tool decorator: from lexigram.ai.agents import tool 

7Tool registry: from lexigram.ai.agents import ToolRegistryImpl 

8Agent executor: from lexigram.ai.agents import AgentExecutorImpl 

9ReAct strategy: from lexigram.ai.agents import ReActStrategy 

10Crew: from lexigram.ai.agents import Crew 

11CrewTask: from lexigram.ai.agents import CrewTask 

12CrewBuilder: from lexigram.ai.agents import CrewBuilder 

13Process: from lexigram.ai.agents import Process 

14 

15Quick Start 

16----------- 

17 

18 from lexigram.ai.agents import AgentBase, tool 

19 

20 @tool 

21 async def lookup_order(order_id: str) -> dict: 

22 \"\"\"Look up an order by its ID.\"\"\" 

23 return {"order_id": order_id, "status": "shipped"} 

24 

25 class OrderAgent(AgentBase): 

26 name = "order_agent" 

27 system_prompt = "You are a helpful order support agent." 

28 

29 @property 

30 def tools(self): 

31 return [lookup_order] 

32""" 

33 

34from __future__ import annotations 

35 

36import importlib.metadata 

37import pkgutil 

38from typing import TYPE_CHECKING, Any 

39 

40__path__ = pkgutil.extend_path(__path__, __name__) 

41 

42from lexigram.ai.agents.constants import __version__ as __version__ 

43 

44if TYPE_CHECKING: 

45 from lexigram.ai.agents.agent import AgentBase, AgentBuilder 

46 from lexigram.ai.agents.config import AgentConfig 

47 from lexigram.ai.agents.crew import ( 

48 Crew, 

49 CrewBuilder, 

50 CrewExecutionResult, 

51 CrewRunner, 

52 CrewTask, 

53 Process, 

54 TaskResult, 

55 ) 

56 from lexigram.ai.agents.decorators import strategy 

57 from lexigram.ai.agents.delegation import AgentAsToolAdapter 

58 from lexigram.ai.agents.di.provider import AgentsProvider 

59 from lexigram.ai.agents.events import ( 

60 AgentRunCompletedEvent, 

61 ToolExecutionCompletedEvent, 

62 ) 

63 from lexigram.ai.agents.exceptions import ( 

64 AgentConfigurationError, 

65 AgentError, 

66 AgentExecutionError, 

67 BudgetExceededError, 

68 MaxIterationsExceededError, 

69 StrategyError, 

70 ToolAccessDeniedError, 

71 ToolError, 

72 ToolExecutionError, 

73 ToolNotFoundError, 

74 ) 

75 from lexigram.ai.agents.executor import AgentExecutorImpl 

76 from lexigram.ai.agents.hooks import ( 

77 AgentCompletedHook, 

78 AgentStartedHook, 

79 AgentToolCalledHook, 

80 ) 

81 from lexigram.ai.agents.module import AgentsModule 

82 from lexigram.ai.agents.protocols import ObserverProtocol, PlannerProtocol 

83 from lexigram.ai.agents.strategies import ( 

84 AbstractStrategy, 

85 PlanAndExecuteStrategy, 

86 PlanStepStatus, 

87 ReActStrategy, 

88 ReflexionStrategy, 

89 SupervisorStrategy, 

90 ) 

91 from lexigram.ai.agents.strategies.strategy_registry import AgentStrategyRegistry 

92 from lexigram.ai.agents.tools import AbstractTool, ToolRegistryImpl, tool 

93 from lexigram.ai.agents.types import ( 

94 AgentResponse, 

95 ReasoningStep, 

96 ToolExecutionRecord, 

97 ) 

98 

99_LAZY_IMPORTS: dict[str, str] = { 

100 # Events 

101 "AgentRunCompletedEvent": "lexigram.ai.agents.events", 

102 # Hooks 

103 "AgentCompletedHook": "lexigram.ai.agents.hooks", 

104 "AgentStartedHook": "lexigram.ai.agents.hooks", 

105 "AgentToolCalledHook": "lexigram.ai.agents.hooks", 

106 "AbstractStrategy": "lexigram.ai.agents.strategies", 

107 "AbstractTool": "lexigram.ai.agents.tools", 

108 "AgentAsToolAdapter": "lexigram.ai.agents.delegation", 

109 "AgentBase": "lexigram.ai.agents.agent", 

110 "AgentBuilder": "lexigram.ai.agents.agent", 

111 "AgentConfig": "lexigram.ai.agents.config", 

112 "AgentStrategyRegistry": "lexigram.ai.agents.strategies.strategy_registry", 

113 "Crew": "lexigram.ai.agents.crew", 

114 "CrewBuilder": "lexigram.ai.agents.crew", 

115 "CrewExecutionResult": "lexigram.ai.agents.crew", 

116 "CrewRunner": "lexigram.ai.agents.crew", 

117 "CrewTask": "lexigram.ai.agents.crew", 

118 "Process": "lexigram.ai.agents.crew", 

119 "TaskResult": "lexigram.ai.agents.crew", 

120 "AgentConfigurationError": "lexigram.ai.agents.exceptions", 

121 "AgentError": "lexigram.ai.agents.exceptions", 

122 "AgentExecutionError": "lexigram.ai.agents.exceptions", 

123 "AgentExecutorImpl": "lexigram.ai.agents.executor", 

124 "AgentResponse": "lexigram.ai.agents.types", 

125 "AgentsModule": "lexigram.ai.agents.module", 

126 "AgentsProvider": "lexigram.ai.agents.di.provider", 

127 "BudgetExceededError": "lexigram.ai.agents.exceptions", 

128 "MaxIterationsExceededError": "lexigram.ai.agents.exceptions", 

129 "PlanAndExecuteStrategy": "lexigram.ai.agents.strategies", 

130 "PlanStepStatus": "lexigram.ai.agents.strategies", 

131 "ReActStrategy": "lexigram.ai.agents.strategies", 

132 "ReflexionStrategy": "lexigram.ai.agents.strategies", 

133 "SupervisorStrategy": "lexigram.ai.agents.strategies", 

134 "ReasoningStep": "lexigram.ai.agents.types", 

135 "strategy": "lexigram.ai.agents.decorators", 

136 "StrategyError": "lexigram.ai.agents.exceptions", 

137 "ToolAccessDeniedError": "lexigram.ai.agents.exceptions", 

138 "ToolExecutionCompletedEvent": "lexigram.ai.agents.events", 

139 "ToolExecutionRecord": "lexigram.ai.agents.types", 

140 "ToolError": "lexigram.ai.agents.exceptions", 

141 "ToolExecutionError": "lexigram.ai.agents.exceptions", 

142 "ToolNotFoundError": "lexigram.ai.agents.exceptions", 

143 "ToolRegistryImpl": "lexigram.ai.agents.tools", 

144 "tool": "lexigram.ai.agents.tools", 

145 # Internal protocols 

146 "PlannerProtocol": "lexigram.ai.agents.protocols", 

147 "ObserverProtocol": "lexigram.ai.agents.protocols", 

148} 

149 

150 

151def __getattr__(name: str) -> Any: 

152 if name in _LAZY_IMPORTS: 

153 import importlib as _importlib 

154 

155 module = _importlib.import_module(_LAZY_IMPORTS[name]) 

156 value = getattr(module, name) 

157 globals()[name] = value 

158 return value 

159 raise AttributeError(f"module {__name__!r} has no attribute {name!r}") 

160 

161 

162def __dir__() -> list[str]: 

163 return sorted(set(__all__) | set(_LAZY_IMPORTS.keys())) 

164 

165 

166__all__ = [ 

167 "AbstractStrategy", 

168 "AbstractTool", 

169 "AgentAsToolAdapter", 

170 "AgentBase", 

171 "AgentBuilder", 

172 "AgentCompletedHook", 

173 "AgentConfig", 

174 "AgentConfigurationError", 

175 "AgentError", 

176 "AgentExecutionError", 

177 "AgentExecutorImpl", 

178 "AgentResponse", 

179 "AgentRunCompletedEvent", 

180 "AgentStartedHook", 

181 "AgentStrategyRegistry", 

182 "AgentToolCalledHook", 

183 "AgentsModule", 

184 "AgentsProvider", 

185 "BudgetExceededError", 

186 "Crew", 

187 "CrewBuilder", 

188 "CrewExecutionResult", 

189 "CrewRunner", 

190 "CrewTask", 

191 "MaxIterationsExceededError", 

192 "ObserverProtocol", 

193 "PlanAndExecuteStrategy", 

194 "PlanStepStatus", 

195 "PlannerProtocol", 

196 "Process", 

197 "ReActStrategy", 

198 "ReasoningStep", 

199 "ReflexionStrategy", 

200 "StrategyError", 

201 "SupervisorStrategy", 

202 "TaskResult", 

203 "ToolAccessDeniedError", 

204 "ToolError", 

205 "ToolExecutionCompletedEvent", 

206 "ToolExecutionError", 

207 "ToolExecutionRecord", 

208 "ToolNotFoundError", 

209 "ToolRegistryImpl", 

210 "strategy", 

211 "tool", 

212]