refactor: enhance user context handling and update template mappings

This commit is contained in:
Abhimanyu Saharan
2026-02-15 14:21:49 +05:30
parent 1996e21695
commit f1d8da7008
12 changed files with 116 additions and 127 deletions

View File

@@ -93,10 +93,12 @@ _SESSION_KEY_PARTS_MIN = SESSION_KEY_PARTS_MIN
MAIN_TEMPLATE_MAP = {
"AGENTS.md": "BOARD_AGENTS.md.j2",
"IDENTITY.md": "BOARD_IDENTITY.md.j2",
"SOUL.md": "BOARD_SOUL.md.j2",
"MEMORY.md": "BOARD_MEMORY.md.j2",
"HEARTBEAT.md": "BOARD_HEARTBEAT.md.j2",
"USER.md": "MAIN_USER.md",
"TOOLS.md": "MAIN_TOOLS.md",
"USER.md": "BOARD_USER.md.j2",
"TOOLS.md": "BOARD_TOOLS.md.j2",
}
BOARD_SHARED_TEMPLATE_MAP = {

View File

@@ -161,16 +161,41 @@ def _workspace_path(agent: Agent, workspace_root: str) -> str:
return f"{root}/workspace-{slugify(key)}"
def _email_local_part(email: str) -> str:
normalized = email.strip()
if not normalized:
return ""
local, _sep, _domain = normalized.partition("@")
return local.strip() or normalized
def _display_name(user: User | None) -> str:
if user is None:
return ""
name = (user.name or "").strip()
if name:
return name
return (user.email or "").strip()
def _preferred_name(user: User | None) -> str:
preferred_name = (user.preferred_name or "") if user else ""
if preferred_name:
preferred_name = preferred_name.strip().split()[0]
return preferred_name
if preferred_name:
return preferred_name
display_name = _display_name(user)
if display_name:
if "@" in display_name:
return _email_local_part(display_name)
return display_name.split()[0]
email = (user.email or "") if user else ""
return _email_local_part(email)
def _user_context(user: User | None) -> dict[str, str]:
return {
"user_name": (user.name or "") if user else "",
"user_name": _display_name(user),
"user_preferred_name": _preferred_name(user),
"user_pronouns": (user.pronouns or "") if user else "",
"user_timezone": (user.timezone or "") if user else "",

View File

@@ -252,9 +252,25 @@ class OpenClawProvisioningService(OpenClawDBService):
reset_sessions=options.reset_sessions,
rotate_tokens=options.rotate_tokens,
force_bootstrap=options.force_bootstrap,
overwrite=options.overwrite,
board_id=options.board_id,
)
if template_user is None:
result = _base_result(
gateway,
include_main=options.include_main,
reset_sessions=options.reset_sessions,
)
_append_sync_error(
result,
message=(
"Organization owner not found (required for gateway template USER.md "
"rendering)."
),
)
return result
result = _base_result(
gateway,
include_main=options.include_main,