feat(board): introduce new board agent templates and restructure existing files

This commit is contained in:
Abhimanyu Saharan
2026-02-15 00:45:28 +05:30
parent 313ce874f9
commit 2084405593
33 changed files with 795 additions and 903 deletions

View File

@@ -65,10 +65,14 @@ Board-lead file contract is defined in:
- `backend/app/services/openclaw/constants.py` (`LEAD_GATEWAY_FILES`)
Template mapping for board leads is defined in:
Lead-only override mapping (when needed) is defined in:
- `backend/app/services/openclaw/constants.py` (`LEAD_TEMPLATE_MAP`)
Shared board-agent mapping (lead + non-lead) is defined in:
- `backend/app/services/openclaw/constants.py` (`BOARD_SHARED_TEMPLATE_MAP`)
Main-agent template mapping is defined in:
- `backend/app/services/openclaw/constants.py` (`MAIN_TEMPLATE_MAP`)
@@ -86,23 +90,21 @@ Lead-only stale template files are cleaned up during sync by:
## HEARTBEAT.md selection logic
`HEARTBEAT.md` is selected dynamically:
All agent types (main + board lead + board non-lead) render `HEARTBEAT.md` from:
- Board lead -> `HEARTBEAT_LEAD.md`
- Non-lead agent -> `HEARTBEAT_AGENT.md`
- `BOARD_HEARTBEAT.md.j2` via `BOARD_SHARED_TEMPLATE_MAP`
See:
- `HEARTBEAT_LEAD_TEMPLATE`, `HEARTBEAT_AGENT_TEMPLATE` in constants
- `_heartbeat_template_name()` in provisioning
Role-specific behavior is controlled inside that template with:
- `is_main_agent`
- `is_board_lead`
## OpenAPI refresh location
Lead OpenAPI download/index generation is intentionally documented in:
- `LEAD_TOOLS.md`
- `BOARD_TOOLS.md.j2`
This avoids relying on BOOT hook execution to populate `api/openapi.json`.
This avoids relying on startup hooks to populate `api/openapi.json`.
## Template variables reference