Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/cli/commands/create/command.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import type { ModelProvider, SDKFramework, TargetLanguage } from '../../../schem
import { getErrorMessage } from '../../errors';
import { COMMAND_DESCRIPTIONS } from '../../tui/copy';
import { CreateScreen } from '../../tui/screens/create';
import { createProject, createProjectWithAgent, getDryRunInfo, type ProgressCallback } from './action';
import { type ProgressCallback, createProject, createProjectWithAgent, getDryRunInfo } from './action';

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

one thing that we can fix up later when fixing lints and stuff is when we import a type it goes in a separate import line that reads import type {ProgressCallback} for example

import type { CreateOptions } from './types';
import { validateCreateOptions } from './validate';
import type { Command } from '@commander-js/extra-typings';
Expand Down
41 changes: 17 additions & 24 deletions src/cli/operations/agent/generate/schema-mapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -120,56 +120,50 @@ export function mapGenerateConfigToResources(config: GenerateConfig): GenerateCo
}

/**
* Compute the default env var name for a memory.
* Compute the memory env var name for a memory resource.
* Pattern: MEMORY_{NAME}_ID (matches CDK construct pattern)
*/
function computeMemoryEnvVarName(memoryName: string): string {
return `AGENTCORE_MEMORY_${memoryName.toUpperCase()}`;
return `MEMORY_${memoryName.toUpperCase()}_ID`;
}

/**
* Maps memory option to memory providers for template rendering.
*/
function mapMemoryOptionToMemoryProviders(
memory: MemoryOption,
projectName: string
): MemoryProviderRenderConfig[] {
function mapMemoryOptionToMemoryProviders(memory: MemoryOption, projectName: string): MemoryProviderRenderConfig[] {
if (memory === 'none') {
return [];
}

const memoryName = `${projectName}Memory`;
const strategies = mapGenerateInputToMemories(memory, projectName)[0]?.strategies ?? [];

return [
{
name: memoryName,
envVarName: computeMemoryEnvVarName(memoryName),
strategies: strategies.map(s => s.type),
},
];
}

/**
* Compute the memory env var name for a memory resource.
* Pattern: MEMORY_{NAME}_ID (matches CDK construct pattern)
*/
function computeMemoryEnvVarName(memoryName: string): string {
return `MEMORY_${memoryName.toUpperCase()}_ID`;
}

/**
* Maps memory option to memory providers for template rendering.
* Maps model provider to identity providers for template rendering.
* Bedrock uses IAM, so no identity provider is needed.
*/
function mapMemoryOptionToMemoryProviders(memory: MemoryOption, projectName: string): MemoryProviderRenderConfig[] {
if (memory === 'none') {
function mapModelProviderToIdentityProviders(
modelProvider: ModelProvider,
projectName: string
): IdentityProviderRenderConfig[] {
if (modelProvider === 'Bedrock') {
return [];
}

const memoryName = `${projectName}Memory`;
const strategies = mapGenerateInputToMemories(memory, projectName)[0]?.strategies ?? [];

const credentialName = computeCredentialName(projectName, modelProvider);
return [
{
name: memoryName,
envVarName: computeMemoryEnvVarName(memoryName),
strategies: strategies.map(s => s.type),
name: credentialName,
envVarName: computeDefaultCredentialEnvVarName(credentialName),
},
];
}
Expand All @@ -191,6 +185,5 @@ export function mapGenerateConfigToRenderConfig(config: GenerateConfig, actualPr
hasIdentity: config.modelProvider !== 'Bedrock',
memoryProviders: mapMemoryOptionToMemoryProviders(config.memory, config.projectName),
identityProviders: mapModelProviderToIdentityProviders(config.modelProvider, projectNameForCredentials),
memoryProviders: mapMemoryOptionToMemoryProviders(config.memory, config.projectName),
};
}
10 changes: 1 addition & 9 deletions src/cli/templates/types.ts
Original file line number Diff line number Diff line change
@@ -1,12 +1,5 @@
import type { MemoryStrategyType, ModelProvider, SDKFramework, TargetLanguage } from '../../schema';

/**
* Memory provider config for template rendering.
*/
export interface MemoryProviderRenderConfig {
name: string;
envVarName: string;
}
/**
* Identity provider info for template rendering.
*/
Expand Down Expand Up @@ -36,9 +29,8 @@ export interface AgentRenderConfig {
modelProvider: ModelProvider;
hasMemory: boolean;
hasIdentity: boolean;
/** Memory providers for template rendering */
memoryProviders: MemoryProviderRenderConfig[];
/** Identity providers for template rendering (maps to credentials in schema) */
identityProviders: IdentityProviderRenderConfig[];
/** Memory providers for template rendering */
memoryProviders: MemoryProviderRenderConfig[];
}
8 changes: 7 additions & 1 deletion src/cli/tui/App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,13 @@ function AppContent() {
}

if (route.name === 'add') {
return <AddFlow isInteractive={true} onExit={() => setRoute({ name: 'help' })} onDeploy={() => setRoute({ name: 'deploy' })} />;
return (
<AddFlow
isInteractive={true}
onExit={() => setRoute({ name: 'help' })}
onDeploy={() => setRoute({ name: 'deploy' })}
/>
);
}

if (route.name === 'remove') {
Expand Down
6 changes: 1 addition & 5 deletions src/cli/tui/screens/create/CreateScreen.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -22,11 +22,7 @@ import { join } from 'path';
import { useCallback, useEffect } from 'react';

/** Build a text representation of the completion screen for terminal output */
function buildExitMessage(
projectName: string,
steps: Step[],
agentConfig: AddAgentConfig | null
): string {
function buildExitMessage(projectName: string, steps: Step[], agentConfig: AddAgentConfig | null): string {
const lines: string[] = [];

// Title
Expand Down
8 changes: 7 additions & 1 deletion src/cli/tui/screens/mcp/AddGatewayFlow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,13 @@ const MODE_OPTIONS: SelectableItem[] = [
{ id: 'bind', title: 'Bind existing gateway', description: 'Attach an existing gateway to an agent' },
];

export function AddGatewayFlow({ isInteractive = true, availableAgents, onExit, onBack, onDeploy }: AddGatewayFlowProps) {
export function AddGatewayFlow({
isInteractive = true,
availableAgents,
onExit,
onBack,
onDeploy,
}: AddGatewayFlowProps) {
const { createGateway, reset: resetCreate } = useCreateGateway();
const { gateways: existingGateways, refresh: refreshGateways } = useExistingGateways();
const [flow, setFlow] = useState<FlowState>({ name: 'mode-select' });
Expand Down
8 changes: 7 additions & 1 deletion src/cli/tui/screens/mcp/AddMcpToolFlow.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,13 @@ const MODE_OPTIONS: SelectableItem[] = [
{ id: 'bind', title: 'Bind existing MCP runtime', description: 'Add an agent to an existing MCP runtime' },
];

export function AddMcpToolFlow({ isInteractive = true, existingAgents, onExit, onBack, onDeploy }: AddMcpToolFlowProps) {
export function AddMcpToolFlow({
isInteractive = true,
existingAgents,
onExit,
onBack,
onDeploy,
}: AddMcpToolFlowProps) {
const { createTool, reset: resetCreate } = useCreateMcpTool();
const { gateways: existingGateways } = useExistingGateways();
const { toolNames: existingToolNames } = useExistingToolNames();
Expand Down
Loading