Skip to main content

Boilerplate-Bot Rollout & Change Detection

Overview

The boilerplate-bot template (server/bot-actions-template/botId/boilerplate-bot/) provides the base code for all action services. When changes are made to this template, they need to be rolled out to all existing bot instances.

How Rollout Works

On startup, the actions-manager service:

  1. Reads the version from boilerplate-bot/pyproject.toml
  2. Compares it against each bot's pyproject.toml version
  3. If versions differ, copies all non-blacklisted files from boilerplate to the bot
Blacklisted files (preserved during update):
- actions/ (user-written actions)
- agents/ (user-written agents)
- poetry_bot_requirements.txt

Why Version Bumps Matter

Files requiring version bump for rollout:

  • main.py
  • executor.py
  • utils.py
  • pyproject.toml (dependencies)

Without updating the version in pyproject.toml, changes to these files will not propagate to existing bots. The version comparison is the sole trigger for the file copy mechanism.

Why shared/ Changes Are Always Fine

The shared module is included via relative path reference in pyproject.toml:

packages = [
{ include = "shared", from = "../../../../llm/src/" },
{ include = "botario_gpt_events", from = "../../../../llm/src/" }
]

This means:

  • shared/ is not copied into each bot
  • All bots reference the same llm/src/shared/ directory
  • Changes to shared/ take effect immediately (on next import/restart)
  • No version bump needed for changes in shared/

TL;DR

LocationVersion Bump Needed?Reason
boilerplate-bot/main.py, executor.py, etc.✅ YesFiles are copied; version triggers copy
llm/src/shared/❌ NoReferenced by path, always picks up latest