|
1 | | -# semantic_kernel_loader.py |
| 1 | +# semantic_kernel_loader.py |
2 | 2 | """ |
3 | 3 | Loader for Semantic Kernel plugins/actions from app settings. |
4 | 4 | - Loads plugin/action manifests from settings (CosmosDB) |
@@ -1186,26 +1186,60 @@ def load_user_semantic_kernel(kernel: Kernel, settings, user_id: str, redis_clie |
1186 | 1186 | for agent in agents_cfg: |
1187 | 1187 | agent['is_global'] = False |
1188 | 1188 |
|
| 1189 | + # Load group agents for user's active group (if any) |
| 1190 | + try: |
| 1191 | + active_group_id = require_active_group(user_id) |
| 1192 | + group_agents = get_group_agents(active_group_id) |
| 1193 | + if group_agents: |
| 1194 | + print(f"[SK Loader] Found {len(group_agents)} group agents for active group '{active_group_id}'") |
| 1195 | + # Badge group agents with group metadata |
| 1196 | + for group_agent in group_agents: |
| 1197 | + group_agent['is_global'] = False |
| 1198 | + group_agent['is_group'] = True |
| 1199 | + agents_cfg.extend(group_agents) |
| 1200 | + print(f"[SK Loader] After merging group agents: {len(agents_cfg)} total agents") |
| 1201 | + else: |
| 1202 | + print(f"[SK Loader] No group agents found for active group '{active_group_id}'") |
| 1203 | + except ValueError: |
| 1204 | + # No active group set - this is fine, just means no group agents available |
| 1205 | + print(f"[SK Loader] User '{user_id}' has no active group - skipping group agent loading") |
| 1206 | + |
1189 | 1207 | # Append selected group agent (if any) to the candidate list so downstream selection logic can resolve it |
1190 | 1208 | selected_agent_data = selected_agent if isinstance(selected_agent, dict) else {} |
1191 | 1209 | selected_agent_is_group = selected_agent_data.get('is_group', False) |
1192 | 1210 | if selected_agent_is_group: |
1193 | 1211 | resolved_group_id = selected_agent_data.get('group_id') |
| 1212 | + active_group_id = None |
| 1213 | + |
| 1214 | + # Group agent MUST have a group_id |
| 1215 | + if not resolved_group_id: |
| 1216 | + log_event( |
| 1217 | + "[SK Loader] Group agent selected but no group_id provided in selection data.", |
| 1218 | + level=logging.ERROR |
| 1219 | + ) |
| 1220 | + load_core_plugins_only(kernel, settings) |
| 1221 | + return kernel, None |
| 1222 | + |
1194 | 1223 | try: |
1195 | 1224 | active_group_id = require_active_group(user_id) |
1196 | | - if not resolved_group_id: |
1197 | | - resolved_group_id = active_group_id |
1198 | | - elif resolved_group_id != active_group_id: |
| 1225 | + if resolved_group_id != active_group_id: |
1199 | 1226 | debug_print( |
1200 | 1227 | f"[SK Loader] Selected group agent references group {resolved_group_id}, active group is {active_group_id}." |
1201 | 1228 | ) |
1202 | | - except ValueError as err: |
1203 | | - debug_print(f"[SK Loader] No active group available while loading group agent: {err}") |
1204 | | - if not resolved_group_id: |
1205 | 1229 | log_event( |
1206 | | - "[SK Loader] Group agent selected but no active group in settings.", |
1207 | | - level=logging.WARNING |
| 1230 | + "[SK Loader] Group agent selected from the non-active group.", |
| 1231 | + level=logging.ERROR |
1208 | 1232 | ) |
| 1233 | + load_core_plugins_only(kernel, settings) |
| 1234 | + return kernel, None |
| 1235 | + except ValueError as err: |
| 1236 | + debug_print(f"[SK Loader] No active group available while loading group agent: {err}") |
| 1237 | + log_event( |
| 1238 | + "[SK Loader] Group agent selected but no active group in settings.", |
| 1239 | + level=logging.ERROR |
| 1240 | + ) |
| 1241 | + load_core_plugins_only(kernel, settings) |
| 1242 | + return kernel, None |
1209 | 1243 |
|
1210 | 1244 | if resolved_group_id: |
1211 | 1245 | agent_identifier = selected_agent_data.get('id') or selected_agent_data.get('name') |
@@ -1234,11 +1268,6 @@ def load_user_semantic_kernel(kernel: Kernel, settings, user_id: str, redis_clie |
1234 | 1268 | f"[SK Loader] Selected group agent '{selected_agent_data.get('name')}' not found for group {resolved_group_id}.", |
1235 | 1269 | level=logging.WARNING |
1236 | 1270 | ) |
1237 | | - else: |
1238 | | - log_event( |
1239 | | - "[SK Loader] Unable to resolve group ID for selected group agent; skipping group agent load.", |
1240 | | - level=logging.WARNING |
1241 | | - ) |
1242 | 1271 |
|
1243 | 1272 | # PATCH: Merge global agents if enabled |
1244 | 1273 | merge_global = settings.get('merge_global_semantic_kernel_with_workspace', False) |
|
0 commit comments