Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,7 @@ letsencrypt/

# dev env
.env

# Pants build system
/.pants.d/
/dist/
8 changes: 4 additions & 4 deletions full_requirements.txt
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# Drakkar-Software full requirements
OctoBot-Commons[full]==1.10.4
OctoBot-Trading[full]==2.5.0
OctoBot-Evaluators[full]==1.10.0
OctoBot-Commons[full]==1.10.6
OctoBot-Trading[full]==2.5.1
OctoBot-Evaluators[full]==1.10.1
OctoBot-Tentacles-Manager[full]==2.10.0
OctoBot-Services[full]==1.7.0
OctoBot-Services[full]==1.7.2
OctoBot-Backtesting[full]==1.10.0

## Others
Expand Down
8 changes: 8 additions & 0 deletions octobot/cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,14 @@

# make tentacles importable
sys.path.append(os.path.dirname(sys.executable))

# Add packages/agents to Python path for octobot_agents
# This allows octobot_agents package to be imported
cli_dir = os.path.dirname(os.path.abspath(__file__))
octobot_dir = os.path.dirname(cli_dir)
packages_agents_path = os.path.join(octobot_dir, 'packages', 'agents')
if os.path.isdir(packages_agents_path) and packages_agents_path not in sys.path:
sys.path.insert(0, packages_agents_path)

import octobot.octobot as octobot_class
import octobot.commands as commands
Expand Down
3 changes: 3 additions & 0 deletions octobot/logger.py
Original file line number Diff line number Diff line change
Expand Up @@ -400,6 +400,8 @@ async def matrix_callback(
evaluator_type,
eval_note,
eval_note_type,
eval_note_description,
eval_note_metadata,
exchange_name,
cryptocurrency,
symbol,
Expand All @@ -410,6 +412,7 @@ async def matrix_callback(
f"EVALUATOR = {evaluator_name} || EVALUATOR_TYPE = {evaluator_type} || "
f"CRYPTOCURRENCY = {cryptocurrency} || SYMBOL = {symbol} || TF = {time_frame} "
f"|| NOTE = {eval_note} [MATRIX id = {matrix_id}] "
f"|| DESCRIPTION = {eval_note_description}" if eval_note_description else ""
)


Expand Down
8 changes: 8 additions & 0 deletions packages/agents/BUILD
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Pants BUILD file for octobot_agents package

python_sources(
name="lib",
sources=["octobot_agents/**/*.py"],
# External dependencies (async_channel, octobot_commons, pydantic)
# will be resolved from requirements.txt or lockfile via Pants dependency inference
)
1 change: 1 addition & 0 deletions packages/agents/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# OctoBot Agents
57 changes: 57 additions & 0 deletions packages/agents/octobot_agents/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# This file is part of OctoBot (https://github.com/Drakkar-Software/OctoBot)
# Copyright (c) 2025 Drakkar-Software, All rights reserved.
#
# OctoBot is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either
# version 3.0 of the License, or (at your option) any later version.
#
# OctoBot is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public
# License along with OctoBot. If not, see <https://www.gnu.org/licenses/>.

from octobot_agents import channel
from octobot_agents import team

# Base agent channel classes
from octobot_agents.channel import (
AbstractAgentChannel,
AbstractAgentChannelProducer,
AbstractAgentChannelConsumer,
)

# AI agent channel classes (with LLM capabilities)
from octobot_agents.channel import (
AbstractAIAgentChannelProducer,
AbstractAIAgentChannelConsumer,
)

# Team channel classes
from octobot_agents.team.team import (
AbstractAgentTeamChannel,
AbstractAgentTeamChannelProducer,
AbstractAgentTeamChannelConsumer,
AbstractSyncAgentTeamChannelProducer,
AbstractLiveAgentTeamChannelProducer,
)


__all__ = [
# Base classes
"AbstractAgentChannel",
"AbstractAgentChannelProducer",
"AbstractAgentChannelConsumer",
# AI agent classes
"AbstractAIAgentChannelProducer",
"AbstractAIAgentChannelConsumer",
# Team classes
"AbstractAgentTeamChannel",
"AbstractAgentTeamChannelProducer",
"AbstractAgentTeamChannelConsumer",
"AbstractSyncAgentTeamChannelProducer",
"AbstractLiveAgentTeamChannelProducer",
]
Loading
Loading