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:
- Reads the version from
boilerplate-bot/pyproject.toml - Compares it against each bot's
pyproject.tomlversion - 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.pyexecutor.pyutils.pypyproject.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
| Location | Version Bump Needed? | Reason |
|---|---|---|
boilerplate-bot/main.py, executor.py, etc. | ✅ Yes | Files are copied; version triggers copy |
llm/src/shared/ | ❌ No | Referenced by path, always picks up latest |