feat(gateway): add lead_only option for syncing board lead agents
This commit is contained in:
@@ -41,6 +41,7 @@ INCLUDE_MAIN_QUERY = Query(default=True)
|
||||
RESET_SESSIONS_QUERY = Query(default=False)
|
||||
ROTATE_TOKENS_QUERY = Query(default=False)
|
||||
FORCE_BOOTSTRAP_QUERY = Query(default=False)
|
||||
LEAD_ONLY_QUERY = Query(default=False)
|
||||
BOARD_ID_QUERY = Query(default=None)
|
||||
_RUNTIME_TYPE_REFERENCES = (UUID,)
|
||||
|
||||
@@ -48,6 +49,7 @@ _RUNTIME_TYPE_REFERENCES = (UUID,)
|
||||
def _template_sync_query(
|
||||
*,
|
||||
include_main: bool = INCLUDE_MAIN_QUERY,
|
||||
lead_only: bool = LEAD_ONLY_QUERY,
|
||||
reset_sessions: bool = RESET_SESSIONS_QUERY,
|
||||
rotate_tokens: bool = ROTATE_TOKENS_QUERY,
|
||||
force_bootstrap: bool = FORCE_BOOTSTRAP_QUERY,
|
||||
@@ -55,6 +57,7 @@ def _template_sync_query(
|
||||
) -> GatewayTemplateSyncQuery:
|
||||
return GatewayTemplateSyncQuery(
|
||||
include_main=include_main,
|
||||
lead_only=lead_only,
|
||||
reset_sessions=reset_sessions,
|
||||
rotate_tokens=rotate_tokens,
|
||||
force_bootstrap=force_bootstrap,
|
||||
|
||||
@@ -343,6 +343,7 @@ class GatewayAdminLifecycleService(OpenClawDBService):
|
||||
GatewayTemplateSyncOptions(
|
||||
user=auth.user,
|
||||
include_main=query.include_main,
|
||||
lead_only=query.lead_only,
|
||||
reset_sessions=query.reset_sessions,
|
||||
rotate_tokens=query.rotate_tokens,
|
||||
force_bootstrap=query.force_bootstrap,
|
||||
|
||||
@@ -109,6 +109,7 @@ class GatewayTemplateSyncOptions:
|
||||
|
||||
user: User | None
|
||||
include_main: bool = True
|
||||
lead_only: bool = False
|
||||
reset_sessions: bool = False
|
||||
rotate_tokens: bool = False
|
||||
force_bootstrap: bool = False
|
||||
@@ -246,6 +247,7 @@ class OpenClawProvisioningService(OpenClawDBService):
|
||||
options = GatewayTemplateSyncOptions(
|
||||
user=template_user,
|
||||
include_main=options.include_main,
|
||||
lead_only=options.lead_only,
|
||||
reset_sessions=options.reset_sessions,
|
||||
rotate_tokens=options.rotate_tokens,
|
||||
force_bootstrap=options.force_bootstrap,
|
||||
@@ -288,11 +290,12 @@ class OpenClawProvisioningService(OpenClawDBService):
|
||||
return result
|
||||
paused_board_ids = await _paused_board_ids(self.session, list(boards_by_id.keys()))
|
||||
if boards_by_id:
|
||||
agents = await (
|
||||
Agent.objects.by_field_in("board_id", list(boards_by_id.keys()))
|
||||
.order_by(col(Agent.created_at).asc())
|
||||
.all(self.session)
|
||||
query = Agent.objects.by_field_in("board_id", list(boards_by_id.keys())).order_by(
|
||||
col(Agent.created_at).asc(),
|
||||
)
|
||||
if options.lead_only:
|
||||
query = query.filter(col(Agent.is_board_lead).is_(True))
|
||||
agents = await query.all(self.session)
|
||||
else:
|
||||
agents = []
|
||||
|
||||
|
||||
@@ -44,6 +44,7 @@ class GatewayTemplateSyncQuery:
|
||||
"""Sync options parsed from query args for gateway template operations."""
|
||||
|
||||
include_main: bool
|
||||
lead_only: bool
|
||||
reset_sessions: bool
|
||||
rotate_tokens: bool
|
||||
force_bootstrap: bool
|
||||
|
||||
Reference in New Issue
Block a user