From 1fd989c202acb4ca23252c55ab3bd94f1017f6b5 Mon Sep 17 00:00:00 2001 From: Aidan Daly Date: Thu, 26 Feb 2026 09:54:16 -0500 Subject: [PATCH 1/4] refactor: remove mode selection and bind flow from gateway target wizard --- .../tui/screens/mcp/AddGatewayTargetFlow.tsx | 207 +----------------- 1 file changed, 8 insertions(+), 199 deletions(-) diff --git a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx index aa6a5148..4048d5fb 100644 --- a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx +++ b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx @@ -1,23 +1,14 @@ import { createExternalGatewayTarget } from '../../../operations/mcp/create-mcp'; -import { ErrorPrompt, Panel, Screen, TextInput, WizardSelect } from '../../components'; -import type { SelectableItem } from '../../components'; -import { HELP_TEXT } from '../../constants'; -import { useListNavigation } from '../../hooks'; -import { useAgents, useBindMcpRuntime, useMcpRuntimeTools } from '../../hooks/useAttach'; +import { ErrorPrompt } from '../../components'; import { useCreateGatewayTarget, useExistingGateways, useExistingToolNames } from '../../hooks/useCreateMcp'; import { AddSuccessScreen } from '../add/AddSuccessScreen'; import { AddGatewayTargetScreen } from './AddGatewayTargetScreen'; import type { AddGatewayTargetConfig } from './types'; -import React, { useCallback, useEffect, useMemo, useState } from 'react'; +import React, { useCallback, useEffect, useState } from 'react'; type FlowState = - | { name: 'mode-select' } | { name: 'create-wizard' } - | { name: 'bind-select-runtime' } - | { name: 'bind-select-agent'; mcpRuntimeName: string } - | { name: 'bind-enter-envvar'; mcpRuntimeName: string; targetAgent: string } | { name: 'create-success'; toolName: string; projectPath: string; loading?: boolean; loadingMessage?: string } - | { name: 'bind-success'; mcpRuntimeName: string; targetAgent: string } | { name: 'error'; message: string }; interface AddGatewayTargetFlowProps { @@ -31,10 +22,7 @@ interface AddGatewayTargetFlowProps { onDeploy?: () => void; } -const MODE_OPTIONS: SelectableItem[] = [ - { id: 'create', title: 'Create new MCP tool', description: 'Define a new MCP tool project' }, - { id: 'bind', title: 'Bind existing MCP runtime', description: 'Add an agent to an existing MCP runtime' }, -]; + export function AddGatewayTargetFlow({ isInteractive = true, @@ -46,63 +34,15 @@ export function AddGatewayTargetFlow({ const { createTool, reset: resetCreate } = useCreateGatewayTarget(); const { gateways: existingGateways } = useExistingGateways(); const { toolNames: existingToolNames } = useExistingToolNames(); - const [flow, setFlow] = useState({ name: 'mode-select' }); - - // Bind flow hooks - const { agents: allAgents, isLoading: isLoadingAgents } = useAgents(); - const { tools: mcpRuntimeTools } = useMcpRuntimeTools(); - const { bind: bindMcpRuntime } = useBindMcpRuntime(); + const [flow, setFlow] = useState({ name: 'create-wizard' }); // In non-interactive mode, exit after success (but not while loading) useEffect(() => { - if (!isInteractive) { - if ((flow.name === 'create-success' && !flow.loading) || flow.name === 'bind-success') { - onExit(); - } + if (!isInteractive && flow.name === 'create-success' && !flow.loading) { + onExit(); } }, [isInteractive, flow, onExit]); - // Mode selection navigation - const modeNav = useListNavigation({ - items: MODE_OPTIONS, - onSelect: item => { - if (item.id === 'create') { - setFlow({ name: 'create-wizard' }); - } else { - setFlow({ name: 'bind-select-runtime' }); - } - }, - onExit: onBack, - isActive: flow.name === 'mode-select', - }); - - // MCP Runtime selection for bind flow - const runtimeItems: SelectableItem[] = useMemo( - () => mcpRuntimeTools.map(name => ({ id: name, title: name })), - [mcpRuntimeTools] - ); - - const runtimeNav = useListNavigation({ - items: runtimeItems, - onSelect: item => setFlow({ name: 'bind-select-agent', mcpRuntimeName: item.id }), - onExit: () => setFlow({ name: 'mode-select' }), - isActive: flow.name === 'bind-select-runtime', - }); - - // Agent selection for bind flow - const agentItems: SelectableItem[] = useMemo(() => allAgents.map(name => ({ id: name, title: name })), [allAgents]); - - const agentNav = useListNavigation({ - items: agentItems, - onSelect: item => { - if (flow.name === 'bind-select-agent') { - setFlow({ name: 'bind-enter-envvar', mcpRuntimeName: flow.mcpRuntimeName, targetAgent: item.id }); - } - }, - onExit: () => setFlow({ name: 'bind-select-runtime' }), - isActive: flow.name === 'bind-select-agent', - }); - const handleCreateComplete = useCallback( (config: AddGatewayTargetConfig) => { setFlow({ @@ -135,55 +75,6 @@ export function AddGatewayTargetFlow({ [createTool] ); - const handleBindComplete = useCallback( - async (envVarName: string) => { - if (flow.name !== 'bind-enter-envvar') return; - - const result = await bindMcpRuntime(flow.mcpRuntimeName, { - agentName: flow.targetAgent, - envVarName, - }); - - if (result.ok) { - setFlow({ name: 'bind-success', mcpRuntimeName: flow.mcpRuntimeName, targetAgent: flow.targetAgent }); - } else { - setFlow({ name: 'error', message: result.error }); - } - }, - [flow, bindMcpRuntime] - ); - - // Mode selection screen - if (flow.name === 'mode-select') { - // Check if there are MCP runtimes to bind - const hasRuntimesToBind = mcpRuntimeTools.length > 0; - - // If no MCP runtimes exist to bind, skip to create - if (!hasRuntimesToBind) { - return ( - - ); - } - - return ( - - - - - - ); - } - // Create wizard if (flow.name === 'create-wizard') { return ( @@ -191,77 +82,11 @@ export function AddGatewayTargetFlow({ existingGateways={existingGateways} existingToolNames={existingToolNames} onComplete={handleCreateComplete} - onExit={() => setFlow({ name: 'mode-select' })} + onExit={onBack} /> ); } - // Bind flow - select MCP runtime - if (flow.name === 'bind-select-runtime') { - return ( - setFlow({ name: 'mode-select' })} - helpText={HELP_TEXT.NAVIGATE_SELECT} - > - - - - - ); - } - - // Bind flow - select agent - if (flow.name === 'bind-select-agent') { - if (isLoadingAgents) { - return null; - } - return ( - setFlow({ name: 'bind-select-runtime' })} - helpText={HELP_TEXT.NAVIGATE_SELECT} - > - - - - - ); - } - - // Bind flow - enter env var name - if (flow.name === 'bind-enter-envvar') { - const defaultEnvVar = `${flow.mcpRuntimeName.toUpperCase().replace(/[^A-Z0-9]/g, '_')}_MCP_RUNTIME_URL`; - return ( - setFlow({ name: 'bind-select-agent', mcpRuntimeName: flow.mcpRuntimeName })} - helpText={HELP_TEXT.TEXT_INPUT} - > - - void handleBindComplete(value)} - onCancel={() => setFlow({ name: 'bind-select-agent', mcpRuntimeName: flow.mcpRuntimeName })} - /> - - - ); - } - // Create success if (flow.name === 'create-success') { return ( @@ -280,22 +105,6 @@ export function AddGatewayTargetFlow({ ); } - // Bind success - if (flow.name === 'bind-success') { - return ( - - ); - } - // Error return ( { resetCreate(); - setFlow({ name: 'mode-select' }); + setFlow({ name: 'create-wizard' }); }} onExit={onExit} /> From f75d78afe865117de01084cf508aa5b272d5c2f8 Mon Sep 17 00:00:00 2001 From: Aidan Daly Date: Thu, 26 Feb 2026 10:53:37 -0500 Subject: [PATCH 2/4] fix: rename 'MCP Tool' to 'Gateway Target' in UI labels, CLI output, and comments --- .../commands/add/__tests__/add-gateway-target.test.ts | 2 +- src/cli/commands/add/actions.ts | 2 +- src/cli/commands/add/command.tsx | 2 +- src/cli/commands/add/types.ts | 2 +- src/cli/commands/add/validate.ts | 2 +- .../remove/__tests__/remove-gateway-target.test.ts | 2 +- src/cli/commands/remove/actions.ts | 4 ++-- src/cli/commands/remove/command.tsx | 2 +- src/cli/operations/mcp/create-mcp.ts | 8 ++++---- src/cli/operations/remove/remove-gateway-target.ts | 8 ++++---- src/cli/templates/GatewayTargetRenderer.ts | 6 +++--- src/cli/tui/hooks/useCreateMcp.ts | 2 +- src/cli/tui/screens/add/AddFlow.tsx | 2 +- src/cli/tui/screens/add/AddScreen.tsx | 4 ++-- src/cli/tui/screens/add/__tests__/AddScreen.test.tsx | 2 +- src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx | 6 +++--- src/cli/tui/screens/mcp/AddGatewayTargetScreen.tsx | 2 +- src/cli/tui/screens/mcp/types.ts | 4 ++-- src/cli/tui/screens/remove/RemoveFlow.tsx | 10 +++++----- .../tui/screens/remove/RemoveGatewayTargetScreen.tsx | 4 ++-- src/cli/tui/screens/remove/RemoveScreen.tsx | 4 ++-- .../tui/screens/remove/__tests__/RemoveScreen.test.tsx | 2 +- src/schema/schemas/mcp-defs.ts | 2 +- 23 files changed, 42 insertions(+), 42 deletions(-) diff --git a/src/cli/commands/add/__tests__/add-gateway-target.test.ts b/src/cli/commands/add/__tests__/add-gateway-target.test.ts index 4b0ee8ca..bbec3694 100644 --- a/src/cli/commands/add/__tests__/add-gateway-target.test.ts +++ b/src/cli/commands/add/__tests__/add-gateway-target.test.ts @@ -5,7 +5,7 @@ import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -// MCP Tool feature is disabled (coming soon) - skip all tests +// Gateway Target feature is disabled (coming soon) - skip all tests describe.skip('add gateway-target command', () => { let testDir: string; let projectDir: string; diff --git a/src/cli/commands/add/actions.ts b/src/cli/commands/add/actions.ts index 0e2543f9..675c52e8 100644 --- a/src/cli/commands/add/actions.ts +++ b/src/cli/commands/add/actions.ts @@ -283,7 +283,7 @@ export async function handleAddGateway(options: ValidatedAddGatewayOptions): Pro } } -// MCP Tool handler +// Gateway Target handler export function buildGatewayTargetConfig(options: ValidatedAddGatewayTargetOptions): AddGatewayTargetConfig { const sourcePath = `${APP_DIR}/${MCP_APP_SUBDIR}/${options.name}`; diff --git a/src/cli/commands/add/command.tsx b/src/cli/commands/add/command.tsx index 2db2b40a..ebc0ff44 100644 --- a/src/cli/commands/add/command.tsx +++ b/src/cli/commands/add/command.tsx @@ -131,7 +131,7 @@ async function handleAddGatewayTargetCLI(options: AddGatewayTargetOptions): Prom if (options.json) { console.log(JSON.stringify(result)); } else if (result.success) { - console.log(`Added MCP tool '${result.toolName}'`); + console.log(`Added gateway target '${result.toolName}'`); if (result.sourcePath) { console.log(`Tool code: ${result.sourcePath}`); } diff --git a/src/cli/commands/add/types.ts b/src/cli/commands/add/types.ts index f8847a7f..c83db76d 100644 --- a/src/cli/commands/add/types.ts +++ b/src/cli/commands/add/types.ts @@ -41,7 +41,7 @@ export interface AddGatewayResult { error?: string; } -// MCP Tool types +// Gateway Target types export interface AddGatewayTargetOptions { name?: string; description?: string; diff --git a/src/cli/commands/add/validate.ts b/src/cli/commands/add/validate.ts index 2731ed83..b11e2aa7 100644 --- a/src/cli/commands/add/validate.ts +++ b/src/cli/commands/add/validate.ts @@ -183,7 +183,7 @@ export function validateAddGatewayOptions(options: AddGatewayOptions): Validatio return { valid: true }; } -// MCP Tool validation +// Gateway Target validation export async function validateAddGatewayTargetOptions(options: AddGatewayTargetOptions): Promise { if (!options.name) { return { valid: false, error: '--name is required' }; diff --git a/src/cli/commands/remove/__tests__/remove-gateway-target.test.ts b/src/cli/commands/remove/__tests__/remove-gateway-target.test.ts index 33c272fa..20b65e1e 100644 --- a/src/cli/commands/remove/__tests__/remove-gateway-target.test.ts +++ b/src/cli/commands/remove/__tests__/remove-gateway-target.test.ts @@ -5,7 +5,7 @@ import { tmpdir } from 'node:os'; import { join } from 'node:path'; import { afterAll, beforeAll, describe, expect, it } from 'vitest'; -// MCP Tool feature is disabled (coming soon) - skip all tests +// Gateway Target feature is disabled (coming soon) - skip all tests describe.skip('remove gateway-target command', () => { let testDir: string; let projectDir: string; diff --git a/src/cli/commands/remove/actions.ts b/src/cli/commands/remove/actions.ts index 3a9ad9e8..35681c69 100644 --- a/src/cli/commands/remove/actions.ts +++ b/src/cli/commands/remove/actions.ts @@ -49,14 +49,14 @@ export async function handleRemove(options: ValidatedRemoveOptions): Promise t.name === name); - if (!tool) return { success: false, error: `MCP tool '${name}' not found` }; + if (!tool) return { success: false, error: `Gateway target '${name}' not found` }; const result = await removeGatewayTarget(tool); if (!result.ok) return { success: false, error: result.error }; return { success: true, resourceType, resourceName: name, - message: `Removed MCP tool '${name}'`, + message: `Removed gateway target '${name}'`, note: SOURCE_CODE_NOTE, }; } diff --git a/src/cli/commands/remove/command.tsx b/src/cli/commands/remove/command.tsx index 97da68f6..6b14ba3f 100644 --- a/src/cli/commands/remove/command.tsx +++ b/src/cli/commands/remove/command.tsx @@ -142,7 +142,7 @@ export const registerRemove = (program: Command) => { registerResourceRemove(removeCommand, 'memory', 'memory', 'Remove a memory provider from the project'); registerResourceRemove(removeCommand, 'identity', 'identity', 'Remove an identity provider from the project'); - registerResourceRemove(removeCommand, 'gateway-target', 'gateway-target', 'Remove an MCP tool from the project'); + registerResourceRemove(removeCommand, 'gateway-target', 'gateway-target', 'Remove a gateway target from the project'); registerResourceRemove(removeCommand, 'gateway', 'gateway', 'Remove a gateway from the project'); diff --git a/src/cli/operations/mcp/create-mcp.ts b/src/cli/operations/mcp/create-mcp.ts index d6e36a1f..aefd731c 100644 --- a/src/cli/operations/mcp/create-mcp.ts +++ b/src/cli/operations/mcp/create-mcp.ts @@ -45,7 +45,7 @@ async function readMcpDefs(filePath: string): Promise { const parsed = JSON.parse(raw) as unknown; const result = AgentCoreCliMcpDefsSchema.safeParse(parsed); if (!result.success) { - throw new Error('Invalid mcp-defs.json. Fix it before adding a new MCP tool.'); + throw new Error('Invalid mcp-defs.json. Fix it before adding a new gateway target.'); } return result.data; } @@ -211,7 +211,7 @@ export async function createGatewayFromWizard(config: AddGatewayConfig): Promise function validateGatewayTargetLanguage(language: string): asserts language is 'Python' | 'TypeScript' | 'Other' { if (language !== 'Python' && language !== 'TypeScript' && language !== 'Other') { - throw new Error(`MCP tools for language "${language}" are not yet supported.`); + throw new Error(`Gateway targets for language "${language}" are not yet supported.`); } } @@ -288,7 +288,7 @@ export async function createExternalGatewayTarget(config: AddGatewayTargetConfig } /** - * Create an MCP tool (behind gateway only). + * Create a gateway target (behind gateway only). */ export async function createToolFromWizard(config: AddGatewayTargetConfig): Promise { validateGatewayTargetLanguage(config.language); @@ -400,7 +400,7 @@ export async function createToolFromWizard(config: AddGatewayTargetConfig): Prom throw new Error(`MCP saved, but failed to update mcp-defs.json: ${message}`); } - // Render MCP tool project template + // Render gateway target project template // Resolve absolute path from project root const configRoot = requireConfigRoot(); const projectRoot = dirname(configRoot); diff --git a/src/cli/operations/remove/remove-gateway-target.ts b/src/cli/operations/remove/remove-gateway-target.ts index f3aacb5d..88fdc004 100644 --- a/src/cli/operations/remove/remove-gateway-target.ts +++ b/src/cli/operations/remove/remove-gateway-target.ts @@ -6,7 +6,7 @@ import { rm } from 'fs/promises'; import { join } from 'path'; /** - * Represents an MCP tool that can be removed. + * Represents a gateway target that can be removed. */ export interface RemovableGatewayTarget { name: string; @@ -15,7 +15,7 @@ export interface RemovableGatewayTarget { } /** - * Get list of MCP tools available for removal. + * Get list of gateway targets available for removal. */ export async function getRemovableGatewayTargets(): Promise { try { @@ -44,7 +44,7 @@ export async function getRemovableGatewayTargets(): Promise { const configIO = new ConfigIO(); @@ -150,7 +150,7 @@ function computeRemovedToolMcpDefs( } /** - * Remove an MCP tool from the project. + * Remove a gateway target from the project. */ export async function removeGatewayTarget(tool: RemovableGatewayTarget): Promise { try { diff --git a/src/cli/templates/GatewayTargetRenderer.ts b/src/cli/templates/GatewayTargetRenderer.ts index 12e25f4d..2680e73c 100644 --- a/src/cli/templates/GatewayTargetRenderer.ts +++ b/src/cli/templates/GatewayTargetRenderer.ts @@ -44,7 +44,7 @@ export const LAMBDA_TEMPLATE_TOOLS: ToolDefinition[] = [ */ export function getTemplateToolDefinitions(toolName: string, host: ComputeHost): ToolDefinition[] { if (host === 'Lambda') { - // Prefix template tool names with the MCP tool name to avoid conflicts + // Prefix template tool names with the gateway target name to avoid conflicts // when adding multiple Lambda tools to the same project return LAMBDA_TEMPLATE_TOOLS.map(tool => ({ ...tool, @@ -62,7 +62,7 @@ export function getTemplateToolDefinitions(toolName: string, host: ComputeHost): } /** - * Renders an MCP tool project template to the specified output directory. + * Renders a gateway target project template to the specified output directory. * @param toolName - Name of the tool (used for {{ Name }} substitution) * @param outputDir - Target directory for the project * @param language - Target language ('Python' or 'TypeScript') @@ -75,7 +75,7 @@ export async function renderGatewayTargetTemplate( host: ComputeHost = 'AgentCoreRuntime' ): Promise { if (language !== 'Python') { - throw new Error(`MCP tool templates for ${language} are not yet supported.`); + throw new Error(`Gateway target templates for ${language} are not yet supported.`); } // Select template based on compute host diff --git a/src/cli/tui/hooks/useCreateMcp.ts b/src/cli/tui/hooks/useCreateMcp.ts index 2b2b4857..9bef0c75 100644 --- a/src/cli/tui/hooks/useCreateMcp.ts +++ b/src/cli/tui/hooks/useCreateMcp.ts @@ -49,7 +49,7 @@ export function useCreateGatewayTarget() { setStatus({ state: 'success', result }); return { ok: true as const, result }; } catch (err) { - const message = err instanceof Error ? err.message : 'Failed to create MCP tool.'; + const message = err instanceof Error ? err.message : 'Failed to create gateway target.'; setStatus({ state: 'error', error: message }); return { ok: false as const, error: message }; } diff --git a/src/cli/tui/screens/add/AddFlow.tsx b/src/cli/tui/screens/add/AddFlow.tsx index dab5eb13..fbead7de 100644 --- a/src/cli/tui/screens/add/AddFlow.tsx +++ b/src/cli/tui/screens/add/AddFlow.tsx @@ -333,7 +333,7 @@ export function AddFlow(props: AddFlowProps) { ); } - // MCP Tool wizard - now uses AddGatewayTargetFlow with mode selection + // Gateway Target wizard - uses AddGatewayTargetFlow if (flow.name === 'tool-wizard') { return ( { const { lastFrame } = render(); expect(lastFrame()).toContain('Gateway'); - expect(lastFrame()).toContain('MCP Tool'); + expect(lastFrame()).toContain('Gateway Target'); expect(lastFrame()).not.toContain('Add an agent first'); }); }); diff --git a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx index 4048d5fb..cfecb9e9 100644 --- a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx +++ b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx @@ -50,7 +50,7 @@ export function AddGatewayTargetFlow({ toolName: config.name, projectPath: '', loading: true, - loadingMessage: 'Creating MCP tool...', + loadingMessage: 'Creating gateway target...', }); if (config.source === 'existing-endpoint') { @@ -92,7 +92,7 @@ export function AddGatewayTargetFlow({ return ( { resetCreate(); diff --git a/src/cli/tui/screens/mcp/AddGatewayTargetScreen.tsx b/src/cli/tui/screens/mcp/AddGatewayTargetScreen.tsx index 0c811d43..7364bbe9 100644 --- a/src/cli/tui/screens/mcp/AddGatewayTargetScreen.tsx +++ b/src/cli/tui/screens/mcp/AddGatewayTargetScreen.tsx @@ -61,7 +61,7 @@ export function AddGatewayTargetScreen({ const headerContent = ; return ( - + {isGatewayStep && !noGatewaysAvailable && ( = { }; // ───────────────────────────────────────────────────────────────────────────── -// MCP Tool Flow Types +// Gateway Target Flow Types // ───────────────────────────────────────────────────────────────────────────── export type ComputeHost = 'Lambda' | 'AgentCoreRuntime'; /** - * MCP tool wizard steps. + * Gateway target wizard steps. * - name: Tool name input * - language: Target language (Python or TypeScript) * - gateway: Select existing gateway diff --git a/src/cli/tui/screens/remove/RemoveFlow.tsx b/src/cli/tui/screens/remove/RemoveFlow.tsx index 5f299cb5..ae83df72 100644 --- a/src/cli/tui/screens/remove/RemoveFlow.tsx +++ b/src/cli/tui/screens/remove/RemoveFlow.tsx @@ -220,7 +220,7 @@ export function RemoveFlow({ const result = await loadGatewayTargetPreview(tool); if (result.ok) { if (force) { - setFlow({ name: 'loading', message: `Removing MCP tool ${tool.name}...` }); + setFlow({ name: 'loading', message: `Removing gateway target ${tool.name}...` }); const removeResult = await removeGatewayTargetOp(tool, result.preview); if (removeResult.ok) { setFlow({ name: 'tool-success', toolName: tool.name }); @@ -354,7 +354,7 @@ export function RemoveFlow({ async (tool: RemovableGatewayTarget, preview: RemovalPreview) => { pendingResultRef.current = null; setResultReady(false); - setFlow({ name: 'loading', message: `Removing MCP tool ${tool.name}...` }); + setFlow({ name: 'loading', message: `Removing gateway target ${tool.name}...` }); const result = await removeGatewayTargetOp(tool, preview); if (result.ok) { pendingResultRef.current = { name: 'tool-success', toolName: tool.name, logFilePath: result.logFilePath }; @@ -540,7 +540,7 @@ export function RemoveFlow({ if (flow.name === 'confirm-gateway-target') { return ( void handleConfirmGatewayTarget(flow.tool, flow.preview)} onCancel={() => setFlow({ name: 'select-gateway-target' })} @@ -607,8 +607,8 @@ export function RemoveFlow({ return ( { resetAll(); diff --git a/src/cli/tui/screens/remove/RemoveGatewayTargetScreen.tsx b/src/cli/tui/screens/remove/RemoveGatewayTargetScreen.tsx index e61d599c..c7bf5544 100644 --- a/src/cli/tui/screens/remove/RemoveGatewayTargetScreen.tsx +++ b/src/cli/tui/screens/remove/RemoveGatewayTargetScreen.tsx @@ -3,7 +3,7 @@ import { SelectScreen } from '../../components'; import React from 'react'; interface RemoveGatewayTargetScreenProps { - /** List of MCP tools that can be removed */ + /** List of gateway targets that can be removed */ tools: RemovableGatewayTarget[]; /** Called when a tool is selected for removal */ onSelect: (tool: RemovableGatewayTarget) => void; @@ -23,7 +23,7 @@ export function RemoveGatewayTargetScreen({ tools, onSelect, onExit }: RemoveGat return ( { const tool = toolMap.get(item.id); diff --git a/src/cli/tui/screens/remove/RemoveScreen.tsx b/src/cli/tui/screens/remove/RemoveScreen.tsx index b739ba66..f64ddc8b 100644 --- a/src/cli/tui/screens/remove/RemoveScreen.tsx +++ b/src/cli/tui/screens/remove/RemoveScreen.tsx @@ -7,7 +7,7 @@ const REMOVE_RESOURCES = [ { id: 'memory', title: 'Memory', description: 'Remove a memory provider' }, { id: 'identity', title: 'Identity', description: 'Remove an identity provider' }, { id: 'gateway', title: 'Gateway', description: 'Remove an MCP gateway' }, - { id: 'gateway-target', title: 'MCP Tool', description: 'Remove an MCP tool' }, + { id: 'gateway-target', title: 'Gateway Target', description: 'Remove a gateway target' }, { id: 'all', title: 'All', description: 'Reset entire agentcore project' }, ] as const; @@ -20,7 +20,7 @@ interface RemoveScreenProps { agentCount: number; /** Number of gateways available for removal */ gatewayCount: number; - /** Number of MCP tools available for removal */ + /** Number of gateway targets available for removal */ mcpToolCount: number; /** Number of memories available for removal */ memoryCount: number; diff --git a/src/cli/tui/screens/remove/__tests__/RemoveScreen.test.tsx b/src/cli/tui/screens/remove/__tests__/RemoveScreen.test.tsx index 127a86e7..e1e32e05 100644 --- a/src/cli/tui/screens/remove/__tests__/RemoveScreen.test.tsx +++ b/src/cli/tui/screens/remove/__tests__/RemoveScreen.test.tsx @@ -21,7 +21,7 @@ describe('RemoveScreen', () => { ); expect(lastFrame()).toContain('Gateway'); - expect(lastFrame()).toContain('MCP Tool'); + expect(lastFrame()).toContain('Gateway Target'); expect(lastFrame()).not.toContain('No gateways to remove'); expect(lastFrame()).not.toContain('No gateway targets to remove'); }); diff --git a/src/schema/schemas/mcp-defs.ts b/src/schema/schemas/mcp-defs.ts index b9a2b768..ef0b5f48 100644 --- a/src/schema/schemas/mcp-defs.ts +++ b/src/schema/schemas/mcp-defs.ts @@ -51,7 +51,7 @@ export const ToolNameSchema = z ); /** - * MCP Tool Definition schema. + * Gateway Target Definition schema. */ export const ToolDefinitionSchema = z .object({ From 0118e85f1c2e7b0696cb961b6114f3dc15de9463 Mon Sep 17 00:00:00 2001 From: Aidan Daly Date: Thu, 26 Feb 2026 11:37:30 -0500 Subject: [PATCH 3/4] fix: update CDK asset snapshot for cdk/bin/cdk.ts --- .../__tests__/__snapshots__/assets.snapshot.test.ts.snap | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap index 96dca816..d58f06b0 100644 --- a/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap +++ b/src/assets/__tests__/__snapshots__/assets.snapshot.test.ts.snap @@ -84,9 +84,13 @@ async function main() { const stackName = toStackName(spec.name, target.name); // Extract credentials from deployed state for this target - const targetState = (deployedState as Record)?.targets as Record> | undefined; + const targetState = (deployedState as Record)?.targets as + | Record> + | undefined; const targetResources = targetState?.[target.name]?.resources as Record | undefined; - const credentials = targetResources?.credentials as Record | undefined; + const credentials = targetResources?.credentials as + | Record + | undefined; new AgentCoreStack(app, stackName, { spec, From 059a20516af0c4ff10d1381a8fd65886c0d54557 Mon Sep 17 00:00:00 2001 From: Aidan Daly Date: Thu, 26 Feb 2026 11:39:59 -0500 Subject: [PATCH 4/4] fix: prettier formatting for AddGatewayTargetFlow.tsx --- src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx index cfecb9e9..c6cce11d 100644 --- a/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx +++ b/src/cli/tui/screens/mcp/AddGatewayTargetFlow.tsx @@ -22,8 +22,6 @@ interface AddGatewayTargetFlowProps { onDeploy?: () => void; } - - export function AddGatewayTargetFlow({ isInteractive = true, onExit,