feat(councils-ui): add on-demand council conversations panel and model config controls

This commit is contained in:
William Valentin
2026-02-21 11:26:04 -08:00
parent cfd7fa6fd0
commit 7c121b82c6
11 changed files with 481 additions and 4 deletions
+6 -2
View File
@@ -28,6 +28,7 @@ import type { SkillInstaller, SkillRegistry, SkillRegistryEntry, SkillRegistrySo
import { auditLogger } from '../audit/index.js';
import { getElevationStatusMessage, setElevationFromInput } from '../security/elevation.js';
import { dirname, resolve } from 'path';
import { loadCouncilScaffoldSafe } from '../councils/scaffold.js';
function buildProviderConfigMap(config: Config): Partial<Record<ModelProvider, ModelConfig>> {
const providerConfigs: Partial<Record<ModelProvider, ModelConfig>> = {};
@@ -400,9 +401,11 @@ export function createMessageRouter(deps: {
} as AgentDelegateDeps));
if (deps.config.councils?.enabled) {
const scaffold = loadCouncilScaffoldSafe(deps.config.councils.scaffold_path);
effectiveToolRegistry.register(createCouncilRunTool({
registry: deps.agentConfigRegistry,
config: deps.config.councils as CouncilsConfig,
scaffold,
get orchestrator(): AgentOrchestrator {
if (!lazyOrchestrator) {
throw new Error('Agent orchestrator not yet initialized');
@@ -841,8 +844,9 @@ export function createMessageRouter(deps: {
const tool = createCouncilRunTool({
registry: deps.agentConfigRegistry,
orchestrator: agent,
config: deps.config.councils as CouncilsConfig,
});
config: deps.config.councils as CouncilsConfig,
scaffold: loadCouncilScaffoldSafe(deps.config.councils.scaffold_path),
});
const result = await tool.execute({ task: message });
if (!result.success) {
return `Council run failed: ${result.error ?? 'unknown error'}`;