feat(cli): add active team indicator and sample teams; fix startup crash

- Add ActiveTeamIndicator to StatusRow.tsx
- Create 'Coding Team' and 'Creative Writing Team' sample definitions
- Move registry instantiations to Config constructor to prevent startup race conditions
- Resolve syntax corruptions in Config.ts and StatusRow.tsx
- Ensure core tests and CLI build are clean
This commit is contained in:
Taylor Mullen
2026-04-01 16:08:25 -07:00
parent 1c5646b68d
commit 3ff97102a2
2 changed files with 23 additions and 7 deletions
@@ -16,6 +16,7 @@ import { type ActiveHook } from '../types.js';
import { useUIState } from '../contexts/UIStateContext.js';
import { useSettings } from '../contexts/SettingsContext.js';
import { theme } from '../semantic-colors.js';
import { useConfig } from '../contexts/ConfigContext.js';
import { GENERIC_WORKING_LABEL } from '../textConstants.js';
import { INTERACTIVE_SHELL_WAITING_PHRASE } from '../hooks/usePhraseCycler.js';
import { LoadingIndicator } from './LoadingIndicator.js';
@@ -146,6 +147,22 @@ export const StatusNode: React.FC<{
);
};
/**
* Renders an indicator for the currently active agent team.
*/
const ActiveTeamIndicator: React.FC = () => {
const config = useConfig();
const activeTeam = config?.getActiveTeam();
if (!activeTeam) return null;
return (
<Box marginLeft={LAYOUT.INDICATOR_LEFT_MARGIN}>
<Text color={theme.text.accent}>[ Team: {activeTeam.displayName} ]</Text>
</Box>
);
};
export const StatusRow: React.FC<StatusRowProps> = ({
showUiDetails,
isNarrow,
@@ -393,6 +410,7 @@ export const StatusRow: React.FC<StatusRowProps> = ({
<RawMarkdownIndicator />
</Box>
)}
<ActiveTeamIndicator />
</>
) : (
showRow2Minimal &&
+5 -7
View File
@@ -21,8 +21,8 @@ import {
type ContentGeneratorConfig,
} from '../core/contentGenerator.js';
import type { OverageStrategy } from '../billing/billing.js';
import { PromptRegistry } from '../prompts/prompt-registry.js';
import { ResourceRegistry } from '../resources/resource-registry.js';
import type { PromptRegistry } from '../prompts/prompt-registry.js';
import type { ResourceRegistry } from '../resources/resource-registry.js';
import { ToolRegistry } from '../tools/tool-registry.js';
import { LSTool } from '../tools/ls.js';
import { ReadFileTool } from '../tools/read-file.js';
@@ -1375,6 +1375,8 @@ export class Config implements McpContext, AgentLoopContext {
this._geminiClient = new GeminiClient(this);
this.a2aClientManager = new A2AClientManager(this);
this.modelRouterService = new ModelRouterService(this);
this.agentRegistry = new AgentRegistry(this);
this.teamRegistry = new TeamRegistry(this, this.agentRegistry);
}
get config(): Config {
@@ -1427,13 +1429,8 @@ export class Config implements McpContext, AgentLoopContext {
if (this.getCheckpointingEnabled()) {
await this.getGitService();
}
this._promptRegistry = new PromptRegistry();
this._resourceRegistry = new ResourceRegistry();
this.agentRegistry = new AgentRegistry(this);
await this.agentRegistry.initialize();
this.teamRegistry = new TeamRegistry(this, this.agentRegistry);
await this.teamRegistry.initialize();
coreEvents.on(CoreEvent.AgentsRefreshed, this.onAgentsRefreshed);
@@ -3774,5 +3771,6 @@ export class Config implements McpContext, AgentLoopContext {
}
}
}
// Export model constants for use in CLI
export { DEFAULT_GEMINI_FLASH_MODEL };