diff --git a/src/components/AbTestPicker.tsx b/src/components/AbTestPicker.tsx index 6e06e716e..c27a53209 100644 --- a/src/components/AbTestPicker.tsx +++ b/src/components/AbTestPicker.tsx @@ -65,7 +65,7 @@ export function AbTestPicker({ getValue={(row) => row.abTestId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading A/B tests…" + loadingMessage="loading A/B tests…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No A/B tests found in this Region." emptyPageMessage="No A/B tests on this page." diff --git a/src/components/BatchEvaluationPicker.tsx b/src/components/BatchEvaluationPicker.tsx index ad6e45fa4..0b202af98 100644 --- a/src/components/BatchEvaluationPicker.tsx +++ b/src/components/BatchEvaluationPicker.tsx @@ -79,7 +79,7 @@ export function BatchEvaluationPicker({ getValue={(row) => row.batchEvaluationId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading batch evaluations…" + loadingMessage="loading batch evaluations…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No batch evaluations found in this Region." emptyPageMessage="No batch evaluations on this page." diff --git a/src/components/BatchInsightsPicker.tsx b/src/components/BatchInsightsPicker.tsx index 99e32a67c..649a146a0 100644 --- a/src/components/BatchInsightsPicker.tsx +++ b/src/components/BatchInsightsPicker.tsx @@ -70,7 +70,7 @@ export function BatchInsightsPicker({ getValue={(row) => row.batchEvaluationId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading batch insights…" + loadingMessage="loading batch insights…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No batch insights found in this Region." emptyPageMessage="No batch insights on this page." diff --git a/src/components/ConfigBundlePicker.tsx b/src/components/ConfigBundlePicker.tsx index 767542744..19572d11b 100644 --- a/src/components/ConfigBundlePicker.tsx +++ b/src/components/ConfigBundlePicker.tsx @@ -71,7 +71,7 @@ export function ConfigBundlePicker({ getValue={(row) => row.bundleId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading configuration bundles…" + loadingMessage="loading configuration bundles…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No configuration bundles found in this Region." emptyPageMessage="No configuration bundles on this page." diff --git a/src/components/ConfigBundleVersionPicker.tsx b/src/components/ConfigBundleVersionPicker.tsx index e03a195e6..b1a7102cb 100644 --- a/src/components/ConfigBundleVersionPicker.tsx +++ b/src/components/ConfigBundleVersionPicker.tsx @@ -77,7 +77,7 @@ export function ConfigBundleVersionPicker({ getValue={(row) => row.versionId} onSelect={onSelect} onBack={onBack} - loadingMessage="Loading configuration bundle versions…" + loadingMessage="loading configuration bundle versions…" errorMessage={(error) => `Error loading versions for configuration bundle ${bundleId}: ${error.message}` } diff --git a/src/components/ConfirmAction.tsx b/src/components/ConfirmAction.tsx index a9407e85c..ca85079c7 100644 --- a/src/components/ConfirmAction.tsx +++ b/src/components/ConfirmAction.tsx @@ -143,7 +143,7 @@ export function ConfirmAction({ return ( {isPending ? ( - + ) : error ? ( ) : ( diff --git a/src/components/DatasetPicker.tsx b/src/components/DatasetPicker.tsx index 9daa0f71a..aef2fcf52 100644 --- a/src/components/DatasetPicker.tsx +++ b/src/components/DatasetPicker.tsx @@ -82,7 +82,7 @@ export function DatasetPicker({ getValue={(row) => row.datasetId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading datasets…" + loadingMessage="loading datasets…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No datasets found in this Region." emptyPageMessage="No datasets on this page." diff --git a/src/components/EndpointWizard.tsx b/src/components/EndpointWizard.tsx index ccc1e2690..8fcacef10 100644 --- a/src/components/EndpointWizard.tsx +++ b/src/components/EndpointWizard.tsx @@ -197,7 +197,7 @@ function hintsFor( { key: "ctl+c", label: "quit" }, ]; if (stepKey === "version") { - return [{ key: "↑↓", label: "choose" }, { key: "enter", label: "continue" }, ...base]; + return [{ key: "↑↓", label: "navigate" }, { key: "enter", label: "continue" }, ...base]; } if (stepKey === "review") return [{ key: "enter", label: verb }, ...base]; return [{ key: "enter", label: "continue" }, ...base]; diff --git a/src/components/EvaluatorPicker.tsx b/src/components/EvaluatorPicker.tsx index 1ff12dae8..d0b1ebec7 100644 --- a/src/components/EvaluatorPicker.tsx +++ b/src/components/EvaluatorPicker.tsx @@ -83,7 +83,7 @@ export function EvaluatorPicker({ getValue={(row) => row.evaluatorId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading evaluators…" + loadingMessage="loading evaluators…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No evaluators found in this Region." emptyPageMessage="No evaluators on this page." diff --git a/src/components/GatewayConnectorPicker.tsx b/src/components/GatewayConnectorPicker.tsx index 4cfe16d0d..17f115ce7 100644 --- a/src/components/GatewayConnectorPicker.tsx +++ b/src/components/GatewayConnectorPicker.tsx @@ -68,11 +68,11 @@ export function GatewayConnectorPicker({ getValue={(row) => row.targetId} onSelect={onSelect} onBack={() => navigate(-1)} - loadingMessage={`Loading Connectors for Gateway ${gatewayId}…`} + loadingMessage={`loading Connectors for Gateway ${gatewayId}…`} errorMessage={(error) => `Error loading Connectors for Gateway ${gatewayId}: ${error.message}` } - emptyMessage="This Gateway has no Connectors." + emptyMessage="This Gateway has no connectors." emptyPageMessage="No Connectors on this page." /> ); diff --git a/src/components/GatewayPicker.tsx b/src/components/GatewayPicker.tsx index 9da7ff6a1..ec688260c 100644 --- a/src/components/GatewayPicker.tsx +++ b/src/components/GatewayPicker.tsx @@ -74,7 +74,7 @@ export function GatewayPicker({ getValue={(row) => row.gatewayId} onSelect={onSelect} onBack={onEscape ?? (() => navigate("/" + breadcrumb.slice(0, -1).join("/")))} - loadingMessage="Loading Gateways…" + loadingMessage="loading Gateways…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No Gateways found in this Region." emptyPageMessage="No Gateways on this page." diff --git a/src/components/GatewayRulePicker.tsx b/src/components/GatewayRulePicker.tsx index aeefa3594..17cfb6ddb 100644 --- a/src/components/GatewayRulePicker.tsx +++ b/src/components/GatewayRulePicker.tsx @@ -18,7 +18,7 @@ export const gatewayRuleColumns = [ { key: "description", header: "description", flex: true }, { key: "ruleId", - header: "id suffix", + header: "ID suffix", width: 10, render: (value: unknown) => String(value ?? "").slice(-8), }, @@ -68,7 +68,7 @@ export function GatewayRulePicker({ getValue={(row) => row.ruleId} onSelect={onSelect} onBack={() => navigate(-1)} - loadingMessage={`Loading Rules for Gateway ${gatewayId}…`} + loadingMessage={`loading Rules for Gateway ${gatewayId}…`} errorMessage={(error) => `Error loading Rules for Gateway ${gatewayId}: ${error.message}`} emptyMessage="This Gateway has no Rules." emptyPageMessage={`No Rules on this page for Gateway ${gatewayId}.`} diff --git a/src/components/GatewayTargetPicker.tsx b/src/components/GatewayTargetPicker.tsx index 3508bb4b6..19e5eb2ec 100644 --- a/src/components/GatewayTargetPicker.tsx +++ b/src/components/GatewayTargetPicker.tsx @@ -71,7 +71,7 @@ export function GatewayTargetPicker({ getValue={(row) => row.targetId} onSelect={onSelect} onBack={() => navigate(-1)} - loadingMessage={`Loading Targets for Gateway ${gatewayId}…`} + loadingMessage={`loading Targets for Gateway ${gatewayId}…`} errorMessage={(error) => `Error loading Targets for Gateway ${gatewayId}: ${error.message}`} emptyMessage="This Gateway has no Targets." emptyPageMessage={`No Targets on this page for Gateway ${gatewayId}.`} diff --git a/src/components/HarnessEndpointPicker.tsx b/src/components/HarnessEndpointPicker.tsx index b479d5615..fae3f139a 100644 --- a/src/components/HarnessEndpointPicker.tsx +++ b/src/components/HarnessEndpointPicker.tsx @@ -89,9 +89,9 @@ export function HarnessEndpointPicker({ getValue={(row) => row.endpointName} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading endpoints…" + loadingMessage="loading endpoints…" errorMessage={(error) => `Error: ${error.message}`} - emptyMessage="This harness has no endpoints yet." + emptyMessage="This harness has no endpoints." emptyPageMessage={`No endpoints on this page for harness ${harnessId}.`} /> ); diff --git a/src/components/HarnessPicker.tsx b/src/components/HarnessPicker.tsx index 85b7a5bb6..89cd8a4d5 100644 --- a/src/components/HarnessPicker.tsx +++ b/src/components/HarnessPicker.tsx @@ -86,9 +86,9 @@ export function HarnessPicker({ getValue={(row) => row.harnessId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading harnesses…" + loadingMessage="loading harnesses…" errorMessage={(error) => `Error: ${error.message}`} - emptyMessage="No harnesses found." + emptyMessage="No harnesses found in this Region." emptyPageMessage="No harnesses on this page." /> ); diff --git a/src/components/HarnessVersionPicker.tsx b/src/components/HarnessVersionPicker.tsx index 72af713ce..8a35ac126 100644 --- a/src/components/HarnessVersionPicker.tsx +++ b/src/components/HarnessVersionPicker.tsx @@ -83,7 +83,7 @@ export function HarnessVersionPicker({ getValue={(row) => row.harnessVersion} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading versions…" + loadingMessage="loading versions…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No versions found." emptyPageMessage={`No versions on this page for harness ${harnessId}.`} diff --git a/src/components/HarnessWizard.tsx b/src/components/HarnessWizard.tsx index fc63a4dd9..db6a64c09 100644 --- a/src/components/HarnessWizard.tsx +++ b/src/components/HarnessWizard.tsx @@ -238,6 +238,8 @@ type WizardPhase = export interface HarnessWizardProps extends ScreenProps { mode: "create" | "update"; breadcrumb: string[]; + // description is the optional subtitle shown after the breadcrumb. + description?: string; // harnessId is the update target (update mode only). harnessId?: string; // initial seeds the form (update mode: the current configuration). @@ -257,6 +259,7 @@ export function HarnessWizard({ core, mode, breadcrumb, + description, harnessId, initial, onDone, @@ -336,7 +339,7 @@ export function HarnessWizard({ const keyHints = hintsFor(stepKey, phase, verb); return ( - + {value.kind === "byo" && ( void; // warning, when set, renders a persistent advisory above the JSON — the TUI's @@ -60,7 +60,7 @@ export function JsonDetail({ { } export const memoryColumns = [ - { key: "memoryId", header: "id", flex: true }, + { key: "memoryId", header: "ID", flex: true }, { key: "status", header: "status", width: 13 }, { key: "updatedAt", @@ -59,7 +59,7 @@ export function MemoryPicker({ ctx, core, breadcrumb, description, onSelect }: M getValue={(row) => row.memoryId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading Memories..." + loadingMessage="loading Memories…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No Memories found in this Region." emptyPageMessage="No Memories on this page." diff --git a/src/components/OnlineEvalPicker.tsx b/src/components/OnlineEvalPicker.tsx index d83711ac7..008225bcd 100644 --- a/src/components/OnlineEvalPicker.tsx +++ b/src/components/OnlineEvalPicker.tsx @@ -84,7 +84,7 @@ export function OnlineEvalPicker({ getValue={(row) => row.configId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading online evaluation configs…" + loadingMessage="loading online evaluation configs…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No online evaluation configs found in this Region." emptyPageMessage="No online evaluation configs on this page." diff --git a/src/components/OnlineInsightPicker.tsx b/src/components/OnlineInsightPicker.tsx index e14fe9208..2b5f57b99 100644 --- a/src/components/OnlineInsightPicker.tsx +++ b/src/components/OnlineInsightPicker.tsx @@ -84,7 +84,7 @@ export function OnlineInsightPicker({ getValue={(row) => row.configId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading online insight configs…" + loadingMessage="loading online insight configs…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No online insight configs found in this Region." emptyPageMessage="No online insight configs on this page." diff --git a/src/components/PaginatedTablePicker.test.tsx b/src/components/PaginatedTablePicker.test.tsx index 497fbdfc4..a90efa92e 100644 --- a/src/components/PaginatedTablePicker.test.tsx +++ b/src/components/PaginatedTablePicker.test.tsx @@ -92,7 +92,7 @@ describe("paginated table picker contract", () => { core.harness.listHarnesses = async () => pending.promise; const r = renderScreen("/agentcore/harness/list", { core }); - await waitForText(r.lastFrame, "Loading harnesses"); + await waitForText(r.lastFrame, "loading harnesses"); await r.press("escape"); await waitForText(r.lastFrame, "manage AgentCore harnesses"); }); @@ -109,7 +109,7 @@ describe("paginated table picker contract", () => { test("distinguishes first-page and later-page empty states", async () => { const firstPage = renderScreen("/agentcore/harness/list"); - await waitForText(firstPage.lastFrame, "No harnesses found."); + await waitForText(firstPage.lastFrame, "No harnesses found in this Region."); expect(firstPage.lastFrame()).not.toContain("page 1"); await firstPage.press("escape"); await waitForText(firstPage.lastFrame, "manage AgentCore harnesses"); @@ -127,7 +127,7 @@ describe("paginated table picker contract", () => { await laterPage.write("l"); await waitForText(laterPage.lastFrame, "No harnesses on this page."); expect(laterPage.lastFrame()).toContain("page 2"); - expect(laterPage.lastFrame()).not.toContain("No harnesses found."); + expect(laterPage.lastFrame()).not.toContain("No harnesses found in this Region."); }); test("pages forward and backward using token history", async () => { @@ -465,7 +465,7 @@ describe("paginated table picker contract", () => { for (const width of [100, 80, 60]) { if (width !== 100) await r.resize(width); const lines = (r.lastFrame() ?? "").split("\n"); - const headerIndex = lines.findIndex((line) => line.includes("id suffix")); + const headerIndex = lines.findIndex((line) => line.includes("ID suffix")); const rowLines = suffixes.map((suffix) => lines.find((line) => line.includes(suffix))); expect(headerIndex).toBeGreaterThanOrEqual(0); diff --git a/src/components/RuntimeEndpointPicker.tsx b/src/components/RuntimeEndpointPicker.tsx index fc46edcc3..fcc053124 100644 --- a/src/components/RuntimeEndpointPicker.tsx +++ b/src/components/RuntimeEndpointPicker.tsx @@ -75,7 +75,7 @@ export function RuntimeEndpointPicker({ getValue={(row) => row.qualifier} onSelect={onSelect} onBack={goBack} - loadingMessage={`Loading endpoints for Runtime ${runtimeId}…`} + loadingMessage={`loading endpoints for Runtime ${runtimeId}…`} errorMessage={(error) => `Error loading endpoints for Runtime ${runtimeId}: ${error.message}`} emptyMessage="This Runtime has no endpoints." emptyPageMessage={`No endpoints on this page for Runtime ${runtimeId}.`} diff --git a/src/components/RuntimePicker.tsx b/src/components/RuntimePicker.tsx index cc46466b7..442a7e793 100644 --- a/src/components/RuntimePicker.tsx +++ b/src/components/RuntimePicker.tsx @@ -23,7 +23,7 @@ export const runtimeColumns = [ { key: "runtimeName", header: "name", flex: true }, { key: "runtimeId", - header: "id suffix", + header: "ID suffix", width: 10, render: runtimeIdSuffix, }, @@ -84,7 +84,7 @@ export function RuntimePicker({ getValue={(row) => row.runtimeId} onSelect={onSelect} onBack={goBack} - loadingMessage="Loading Runtimes…" + loadingMessage="loading Runtimes…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No Runtimes found in this Region." emptyPageMessage="No Runtimes on this page." diff --git a/src/components/RuntimeVersionPicker.tsx b/src/components/RuntimeVersionPicker.tsx index f589d5a0c..64954348a 100644 --- a/src/components/RuntimeVersionPicker.tsx +++ b/src/components/RuntimeVersionPicker.tsx @@ -71,7 +71,7 @@ export function RuntimeVersionPicker({ getValue={(row) => row.version} onSelect={onSelect} onBack={goBack} - loadingMessage={`Loading versions for Runtime ${runtimeId}…`} + loadingMessage={`loading versions for Runtime ${runtimeId}…`} errorMessage={(error) => `Error loading versions for Runtime ${runtimeId}: ${error.message}`} emptyMessage={`No versions found for Runtime ${runtimeId}.`} emptyPageMessage={`No versions on this page for Runtime ${runtimeId}.`} diff --git a/src/components/ui/data-table/DataTable.tsx b/src/components/ui/data-table/DataTable.tsx index 6cd26e5db..0c1c807c5 100644 --- a/src/components/ui/data-table/DataTable.tsx +++ b/src/components/ui/data-table/DataTable.tsx @@ -321,7 +321,7 @@ export function DataTable>({ Showing {currentPage * pageSize + 1}- {Math.min((currentPage + 1) * pageSize, filtered.length)} of {filtered.length} · Page{" "} {currentPage + 1}/{totalPages || 1} - {" · "}[↑↓/jk] Row [←→/hl] Page [/] Search + {" · "}[↑↓/jk] row [←→/hl] page [/] search )} diff --git a/src/handlers/eval/ab-test/ab-test.test.tsx b/src/handlers/eval/ab-test/ab-test.test.tsx index a885052e1..0c96902f8 100644 --- a/src/handlers/eval/ab-test/ab-test.test.tsx +++ b/src/handlers/eval/ab-test/ab-test.test.tsx @@ -322,7 +322,7 @@ describe("eval ab-test target-based run validation", () => { same, "--json", ]), - ).rejects.toThrow(/different gateway targets/); + ).rejects.toThrow(/different Gateway Targets/); }); test("maps flags to a createTargetBasedABTest call", async () => { diff --git a/src/handlers/eval/ab-test/get/screen.tsx b/src/handlers/eval/ab-test/get/screen.tsx index 3db67ce37..782013d3b 100644 --- a/src/handlers/eval/ab-test/get/screen.tsx +++ b/src/handlers/eval/ab-test/get/screen.tsx @@ -51,7 +51,7 @@ export function AbTestGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading A/B test…" + loadingLabel="loading A/B test…" onRetry={() => void detail.refetch()} /> ); @@ -67,7 +67,7 @@ export function AbTestGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading A/B test…" + loadingLabel="loading A/B test…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/eval/ab-test/list/screen.tsx b/src/handlers/eval/ab-test/list/screen.tsx index 31899c045..8c2610662 100644 --- a/src/handlers/eval/ab-test/list/screen.tsx +++ b/src/handlers/eval/ab-test/list/screen.tsx @@ -9,6 +9,7 @@ export function AbTestListScreen(props: ScreenProps) { navigate(`/agentcore/eval/ab-test/get/${encodeURIComponent(abTestId)}`) } diff --git a/src/handlers/eval/ab-test/target-based/run/index.tsx b/src/handlers/eval/ab-test/target-based/run/index.tsx index 12d9f537c..499afb516 100644 --- a/src/handlers/eval/ab-test/target-based/run/index.tsx +++ b/src/handlers/eval/ab-test/target-based/run/index.tsx @@ -81,7 +81,7 @@ export const createTargetBasedRunHandler = (core: Core, io: AppIO) => const treatment = toTargetRef("treatment", treatmentRaw); if (control.gatewayTarget === treatment.gatewayTarget) { throw new InputValidationError( - "control and treatment must reference different gateway targets", + "control and treatment must reference different Gateway Targets", ); } diff --git a/src/handlers/eval/batch-evaluation/get/screen.tsx b/src/handlers/eval/batch-evaluation/get/screen.tsx index 760bd5ece..c8fe68e8e 100644 --- a/src/handlers/eval/batch-evaluation/get/screen.tsx +++ b/src/handlers/eval/batch-evaluation/get/screen.tsx @@ -37,7 +37,7 @@ export function BatchEvaluationGetJsonScreen(props: ScreenProps) { ? `could not retrieve CloudWatch results (${(resultsError as Error).message}). Job status is unaffected.` : undefined } - loadingLabel="Loading batch evaluation…" + loadingLabel="loading batch evaluation…" onRetry={() => void query.refetch()} /> ); diff --git a/src/handlers/eval/batch-evaluation/list/screen.tsx b/src/handlers/eval/batch-evaluation/list/screen.tsx index 923bffdae..9add88d1c 100644 --- a/src/handlers/eval/batch-evaluation/list/screen.tsx +++ b/src/handlers/eval/batch-evaluation/list/screen.tsx @@ -9,6 +9,7 @@ export function BatchEvaluationListScreen(props: ScreenProps) { navigate(`/agentcore/eval/batch-evaluation/get/${encodeURIComponent(batchEvaluationId)}`) } diff --git a/src/handlers/eval/batch-insights/get/screen.tsx b/src/handlers/eval/batch-insights/get/screen.tsx index cb0836953..03340dbdf 100644 --- a/src/handlers/eval/batch-insights/get/screen.tsx +++ b/src/handlers/eval/batch-insights/get/screen.tsx @@ -23,7 +23,7 @@ export function BatchInsightsGetJsonScreen(props: ScreenProps) { isPending={query.isPending} error={query.isError ? (query.error as Error) : null} data={query.data} - loadingLabel="Loading batch insights…" + loadingLabel="loading batch insights…" onRetry={() => void query.refetch()} /> ); diff --git a/src/handlers/eval/batch-insights/list/screen.tsx b/src/handlers/eval/batch-insights/list/screen.tsx index 83f823393..728015051 100644 --- a/src/handlers/eval/batch-insights/list/screen.tsx +++ b/src/handlers/eval/batch-insights/list/screen.tsx @@ -9,6 +9,7 @@ export function BatchInsightsListScreen(props: ScreenProps) { navigate(`/agentcore/eval/batch-insights/get/${encodeURIComponent(batchEvaluationId)}`) } diff --git a/src/handlers/eval/config-bundle/list/screen.tsx b/src/handlers/eval/config-bundle/list/screen.tsx index c48bb70c1..3a36b4575 100644 --- a/src/handlers/eval/config-bundle/list/screen.tsx +++ b/src/handlers/eval/config-bundle/list/screen.tsx @@ -9,6 +9,7 @@ export function ConfigBundleListScreen(props: ScreenProps) { navigate(`/agentcore/eval/config-bundle/get/${encodeURIComponent(bundleId)}`) } diff --git a/src/handlers/eval/dataset/get/screen.tsx b/src/handlers/eval/dataset/get/screen.tsx index 31ded97bd..b88386ab0 100644 --- a/src/handlers/eval/dataset/get/screen.tsx +++ b/src/handlers/eval/dataset/get/screen.tsx @@ -50,9 +50,9 @@ export function DatasetGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading dataset…" + loadingLabel="loading dataset…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -67,7 +67,7 @@ export function DatasetGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading dataset…" + loadingLabel="loading dataset…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/eval/dataset/list/screen.tsx b/src/handlers/eval/dataset/list/screen.tsx index 64c159972..af1e17fc5 100644 --- a/src/handlers/eval/dataset/list/screen.tsx +++ b/src/handlers/eval/dataset/list/screen.tsx @@ -9,6 +9,7 @@ export function DatasetListScreen(props: ScreenProps) { navigate(`/agentcore/eval/dataset/get/${encodeURIComponent(datasetId)}`) } diff --git a/src/handlers/eval/evaluator/get/screen.tsx b/src/handlers/eval/evaluator/get/screen.tsx index 038149fdb..e94830d1e 100644 --- a/src/handlers/eval/evaluator/get/screen.tsx +++ b/src/handlers/eval/evaluator/get/screen.tsx @@ -56,9 +56,9 @@ export function EvaluatorGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading evaluator…" + loadingLabel="loading evaluator…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -73,7 +73,7 @@ export function EvaluatorGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading evaluator…" + loadingLabel="loading evaluator…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/eval/evaluator/list/screen.tsx b/src/handlers/eval/evaluator/list/screen.tsx index 214fe69a3..818f2ee45 100644 --- a/src/handlers/eval/evaluator/list/screen.tsx +++ b/src/handlers/eval/evaluator/list/screen.tsx @@ -9,6 +9,7 @@ export function EvaluatorListScreen(props: ScreenProps) { navigate(`/agentcore/eval/evaluator/get/${encodeURIComponent(evaluatorId)}`) } diff --git a/src/handlers/eval/online-eval/get/screen.tsx b/src/handlers/eval/online-eval/get/screen.tsx index 44063a597..bd7e7a220 100644 --- a/src/handlers/eval/online-eval/get/screen.tsx +++ b/src/handlers/eval/online-eval/get/screen.tsx @@ -48,9 +48,9 @@ export function OnlineEvalGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading online evaluation config…" + loadingLabel="loading online evaluation config…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -65,7 +65,7 @@ export function OnlineEvalGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading online evaluation config…" + loadingLabel="loading online evaluation config…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/eval/online-eval/list/screen.tsx b/src/handlers/eval/online-eval/list/screen.tsx index be707838d..a7db0b1d9 100644 --- a/src/handlers/eval/online-eval/list/screen.tsx +++ b/src/handlers/eval/online-eval/list/screen.tsx @@ -9,6 +9,7 @@ export function OnlineEvalListScreen(props: ScreenProps) { navigate(`/agentcore/eval/online-eval/get/${encodeURIComponent(configId)}`) } diff --git a/src/handlers/eval/online-insight/get/screen.tsx b/src/handlers/eval/online-insight/get/screen.tsx index 259b8df85..11d156570 100644 --- a/src/handlers/eval/online-insight/get/screen.tsx +++ b/src/handlers/eval/online-insight/get/screen.tsx @@ -53,9 +53,9 @@ export function OnlineInsightGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading online insight config…" + loadingLabel="loading online insight config…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -70,7 +70,7 @@ export function OnlineInsightGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading online insight config…" + loadingLabel="loading online insight config…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/eval/online-insight/list/screen.tsx b/src/handlers/eval/online-insight/list/screen.tsx index b65e370d2..fcd5a3d03 100644 --- a/src/handlers/eval/online-insight/list/screen.tsx +++ b/src/handlers/eval/online-insight/list/screen.tsx @@ -9,6 +9,7 @@ export function OnlineInsightListScreen(props: ScreenProps) { navigate(`/agentcore/eval/online-insight/get/${encodeURIComponent(configId)}`) } diff --git a/src/handlers/gateway/connector/get/screen.tsx b/src/handlers/gateway/connector/get/screen.tsx index 09acbe560..f55eb2435 100644 --- a/src/handlers/gateway/connector/get/screen.tsx +++ b/src/handlers/gateway/connector/get/screen.tsx @@ -19,7 +19,7 @@ export function GatewayConnectorGetScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading Gateway Connector…" + loadingLabel="loading Gateway connector…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/gateway/connector/list/screen.tsx b/src/handlers/gateway/connector/list/screen.tsx index 3c61c9598..5273cc937 100644 --- a/src/handlers/gateway/connector/list/screen.tsx +++ b/src/handlers/gateway/connector/list/screen.tsx @@ -12,7 +12,7 @@ export function GatewayConnectorListScreen(props: ScreenProps) { navigate(`/agentcore/gateway/connector/list/${encodeURIComponent(id)}`)} /> ); diff --git a/src/handlers/gateway/gateway.screen.test.tsx b/src/handlers/gateway/gateway.screen.test.tsx index c756a31d5..574f4f60a 100644 --- a/src/handlers/gateway/gateway.screen.test.tsx +++ b/src/handlers/gateway/gateway.screen.test.tsx @@ -147,7 +147,7 @@ describe("Gateway menu and list", () => { loadingCore.gateway.listGateways = async () => pending.promise; const loading = renderScreen("/agentcore/gateway/list", { core: loadingCore }); - await waitForText(loading.lastFrame, "Loading Gateways"); + await waitForText(loading.lastFrame, "loading Gateways"); await loading.press("escape"); await waitForText(loading.lastFrame, "manage AgentCore Gateways"); loading.unmount(); @@ -390,7 +390,7 @@ describe("Gateway Connector flow", () => { `/agentcore/gateway/connector/list/${encodeURIComponent(GATEWAY_ID)}`, ); - await waitForText(screen.lastFrame, "This Gateway has no Connectors."); + await waitForText(screen.lastFrame, "This Gateway has no connectors."); expect(screen.lastFrame()).not.toContain("more →"); }); diff --git a/src/handlers/gateway/get/screen.tsx b/src/handlers/gateway/get/screen.tsx index 1a456f462..47032dfb6 100644 --- a/src/handlers/gateway/get/screen.tsx +++ b/src/handlers/gateway/get/screen.tsx @@ -62,7 +62,7 @@ export function GatewayGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading Gateway…" + loadingLabel="loading Gateway…" onRetry={() => void detail.refetch()} selectLabel="open" /> @@ -79,7 +79,7 @@ export function GatewayGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading Gateway…" + loadingLabel="loading Gateway…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/gateway/invoke/screen.tsx b/src/handlers/gateway/invoke/screen.tsx index 15477ce3e..b9b9eea50 100644 --- a/src/handlers/gateway/invoke/screen.tsx +++ b/src/handlers/gateway/invoke/screen.tsx @@ -427,7 +427,7 @@ function GatewayInvokeConsole({ ctx, core, gatewayId, initialContext }: GatewayI editingPath ? [ { key: "enter", label: "save" }, - { key: "esc", label: "cancel" }, + { key: "esc", label: "back" }, { key: "ctl+c", label: "quit" }, ] : busy @@ -451,7 +451,7 @@ function GatewayInvokeConsole({ ctx, core, gatewayId, initialContext }: GatewayI > {detail.isPending ? ( - + ) : detail.isError ? ( ) : ( diff --git a/src/handlers/gateway/list/screen.tsx b/src/handlers/gateway/list/screen.tsx index d80a5a596..05828d2fb 100644 --- a/src/handlers/gateway/list/screen.tsx +++ b/src/handlers/gateway/list/screen.tsx @@ -9,6 +9,7 @@ export function GatewayListScreen(props: ScreenProps) { navigate(`/agentcore/gateway/get/${encodeURIComponent(gatewayId)}`)} /> ); diff --git a/src/handlers/gateway/policy/screen.tsx b/src/handlers/gateway/policy/screen.tsx index e8dc680c6..5d2153c12 100644 --- a/src/handlers/gateway/policy/screen.tsx +++ b/src/handlers/gateway/policy/screen.tsx @@ -135,7 +135,7 @@ function GeneratePolicyForm({ ctx, core, gatewayId }: ScreenProps & { gatewayId: ] : phase.kind === "result" ? [ - { key: "↑↓/kj", label: "scroll" }, + { key: "↑↓/jk", label: "scroll" }, { key: "e", label: "edit prompt" }, { key: "esc", label: "back" }, { key: "ctl+c", label: "quit" }, @@ -151,7 +151,7 @@ function GeneratePolicyForm({ ctx, core, gatewayId }: ScreenProps & { gatewayId: keyHints={keyHints} > {gateway.isPending ? ( - + ) : gateway.isError ? ( Error: {(gateway.error as Error).message} ) : ( diff --git a/src/handlers/gateway/rule/get/screen.tsx b/src/handlers/gateway/rule/get/screen.tsx index 27ce6fb24..b85dc7dab 100644 --- a/src/handlers/gateway/rule/get/screen.tsx +++ b/src/handlers/gateway/rule/get/screen.tsx @@ -19,7 +19,7 @@ export function GatewayRuleGetScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading Gateway Rule…" + loadingLabel="loading Gateway Rule…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/gateway/target/get/screen.tsx b/src/handlers/gateway/target/get/screen.tsx index 51b4fc764..16d7dd704 100644 --- a/src/handlers/gateway/target/get/screen.tsx +++ b/src/handlers/gateway/target/get/screen.tsx @@ -19,7 +19,7 @@ export function GatewayTargetGetScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading Gateway Target…" + loadingLabel="loading Gateway Target…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/harness/create/create.screen.test.tsx b/src/handlers/harness/create/create.screen.test.tsx index e8c1c247c..f6c8e43df 100644 --- a/src/handlers/harness/create/create.screen.test.tsx +++ b/src/handlers/harness/create/create.screen.test.tsx @@ -65,7 +65,7 @@ describe("harness create wizard", () => { expect(r.lastFrame()).toContain("[✓] browser"); await r.press("down"); // gateway await r.write(" "); // opens the arn input - await waitForText(r.lastFrame, "gateway arn"); + await waitForText(r.lastFrame, "Gateway ARN"); await r.write("arn:aws:bedrock-agentcore:us-east-1:123:gateway/g-1"); await r.press("return"); // commit the arn await waitForText(r.lastFrame, "arn:aws:bedrock-agentcore:us-east-1:123:gateway/g-1"); @@ -121,13 +121,13 @@ describe("harness create wizard", () => { await waitForText(r.lastFrame, "choose a model"); await r.press("down"); // bedrock await waitForText(r.lastFrame, "● bedrock"); - expect(r.lastFrame()).not.toContain("model id"); + expect(r.lastFrame()).not.toContain("model ID"); await r.press("return"); - await waitForText(r.lastFrame, "model id"); + await waitForText(r.lastFrame, "model ID"); await r.press("escape"); - await waitFor(() => !(r.lastFrame() ?? "").includes("model id")); + await waitFor(() => !(r.lastFrame() ?? "").includes("model ID")); expect(r.lastFrame()).toContain("● bedrock"); r.unmount(); }); @@ -190,11 +190,11 @@ describe("harness create wizard", () => { await waitForText(r.lastFrame, "● openai"); await r.press("return"); // focus the model id field await r.press("return"); // empty → error - await waitForText(r.lastFrame, "enter an openai model id"); + await waitForText(r.lastFrame, "enter an OpenAI model ID"); await r.write("gpt-5"); await r.press("return"); // on to the api key arn field await r.press("return"); // empty → error - await waitForText(r.lastFrame, "enter the arn of your openai api key"); + await waitForText(r.lastFrame, "enter an API-key credential provider ARN"); await r.write("arn:aws:bedrock-agentcore:us-east-1:123:token-vault/default/apikey/openai"); await r.press("return"); @@ -323,7 +323,7 @@ describe("harness create wizard", () => { await waitForText(r.lastFrame, "● bring your own"); await r.press("return"); // focus the memory arn field await r.press("return"); // empty → error - await waitForText(r.lastFrame, "enter the arn"); + await waitForText(r.lastFrame, "enter the ARN of an existing AgentCore Memory"); await r.write("arn:aws:bedrock-agentcore:us-east-1:123:memory/m-1"); await r.press("return"); diff --git a/src/handlers/harness/create/screen.tsx b/src/handlers/harness/create/screen.tsx index 37f723d2e..47e6f3280 100644 --- a/src/handlers/harness/create/screen.tsx +++ b/src/handlers/harness/create/screen.tsx @@ -14,6 +14,7 @@ export function HarnessCreateScreen(props: ScreenProps) { {...props} mode="create" breadcrumb={["agentcore", "harness", "create"]} + description="create a harness" onDone={(harnessId) => finishFlow(`/agentcore/harness/get/${harnessId}`)} /> ); diff --git a/src/handlers/harness/delete/screen.tsx b/src/handlers/harness/delete/screen.tsx index 9d74bd921..f939e3ab6 100644 --- a/src/handlers/harness/delete/screen.tsx +++ b/src/handlers/harness/delete/screen.tsx @@ -60,7 +60,7 @@ function DeleteConfirm({ ctx, core, harnessId }: ScreenProps & { harnessId: stri }; }} successTitle="Harness deletion started" - runningLabel="Deleting harness…" + runningLabel="deleting harness…" onDone={() => navigate("/agentcore/harness/list")} /> ); diff --git a/src/handlers/harness/endpoint/delete/screen.tsx b/src/handlers/harness/endpoint/delete/screen.tsx index cabb5036b..d76618650 100644 --- a/src/handlers/harness/endpoint/delete/screen.tsx +++ b/src/handlers/harness/endpoint/delete/screen.tsx @@ -81,7 +81,7 @@ function DeleteConfirm({ }; }} successTitle="Endpoint deletion started" - runningLabel="Deleting endpoint…" + runningLabel="deleting endpoint…" onDone={() => finishFlow(`/agentcore/harness/endpoint/list/${harnessId}`)} /> ); diff --git a/src/handlers/harness/endpoint/get/screen.tsx b/src/handlers/harness/endpoint/get/screen.tsx index 4557eb034..4884e5520 100644 --- a/src/handlers/harness/endpoint/get/screen.tsx +++ b/src/handlers/harness/endpoint/get/screen.tsx @@ -22,7 +22,7 @@ export function HarnessGetEndpointScreen({ ctx, core }: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.endpoint} - loadingLabel="Loading endpoint…" + loadingLabel="loading endpoint…" /> ); } diff --git a/src/handlers/harness/endpoint/list/list.screen.test.tsx b/src/handlers/harness/endpoint/list/list.screen.test.tsx index 88059889b..3ad851dbc 100644 --- a/src/handlers/harness/endpoint/list/list.screen.test.tsx +++ b/src/handlers/harness/endpoint/list/list.screen.test.tsx @@ -113,7 +113,7 @@ describe("harness endpoint list screen", () => { const core = coreWithEndpoints([]); const r = renderScreen("/agentcore/harness/endpoint/list/MyHarness-abc123", { core }); - await waitForText(r.lastFrame, "This harness has no endpoints yet."); + await waitForText(r.lastFrame, "This harness has no endpoints."); expect(r.lastFrame()).not.toContain("No endpoints on this page"); r.unmount(); }); diff --git a/src/handlers/harness/get/screen.tsx b/src/handlers/harness/get/screen.tsx index 2f86f1c2f..dc54e4d7a 100644 --- a/src/handlers/harness/get/screen.tsx +++ b/src/handlers/harness/get/screen.tsx @@ -79,7 +79,7 @@ export function HarnessGetScreen(props: ScreenProps) { })) : [] } - loadingLabel="Loading harness…" + loadingLabel="loading harness…" onRetry={() => void detail.refetch()} /> ); @@ -97,7 +97,7 @@ export function HarnessGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.harness} - loadingLabel="Loading harness…" + loadingLabel="loading harness…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/harness/invoke/screen.tsx b/src/handlers/harness/invoke/screen.tsx index a01fd1d62..62eba7c20 100644 --- a/src/handlers/harness/invoke/screen.tsx +++ b/src/handlers/harness/invoke/screen.tsx @@ -339,7 +339,7 @@ export function HarnessChat({ } > {detail.isPending ? ( - + ) : detail.isError ? ( Error: {(detail.error as Error).message} ) : ( diff --git a/src/handlers/harness/list/screen.tsx b/src/handlers/harness/list/screen.tsx index 04a0dd832..d31282677 100644 --- a/src/handlers/harness/list/screen.tsx +++ b/src/handlers/harness/list/screen.tsx @@ -11,6 +11,7 @@ export function HarnessListScreen(props: ScreenProps) { navigate(`/agentcore/harness/get/${harnessId}`)} /> ); diff --git a/src/handlers/harness/version/get/screen.tsx b/src/handlers/harness/version/get/screen.tsx index 0b87a8d85..96c152e88 100644 --- a/src/handlers/harness/version/get/screen.tsx +++ b/src/handlers/harness/version/get/screen.tsx @@ -22,7 +22,7 @@ export function HarnessGetVersionScreen({ ctx, core }: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.harness} - loadingLabel="Loading version…" + loadingLabel="loading version…" /> ); } diff --git a/src/handlers/identity/api-key-credential-provider/get/screen.tsx b/src/handlers/identity/api-key-credential-provider/get/screen.tsx index 277aff9fd..09e0cd2f4 100644 --- a/src/handlers/identity/api-key-credential-provider/get/screen.tsx +++ b/src/handlers/identity/api-key-credential-provider/get/screen.tsx @@ -46,9 +46,9 @@ export function ApiKeyCredentialProviderGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading API key credential provider…" + loadingLabel="loading API key credential provider…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -70,7 +70,7 @@ export function ApiKeyCredentialProviderGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading API key credential provider…" + loadingLabel="loading API key credential provider…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/identity/api-key-credential-provider/list/screen.tsx b/src/handlers/identity/api-key-credential-provider/list/screen.tsx index d3db7ba41..e87abbe04 100644 --- a/src/handlers/identity/api-key-credential-provider/list/screen.tsx +++ b/src/handlers/identity/api-key-credential-provider/list/screen.tsx @@ -36,6 +36,7 @@ export function ApiKeyCredentialProviderListScreen({ ctx, core }: ScreenProps) { return ( { const response = await core.identity.listApiKeyCredentialProviders(token, pageSize, opts); @@ -52,7 +53,7 @@ export function ApiKeyCredentialProviderListScreen({ ctx, core }: ScreenProps) { } onBack={() => navigate("/agentcore/identity/api-key-credential-provider")} maxPageSize={MAX_PAGE_SIZE} - loadingMessage="Loading API key credential providers…" + loadingMessage="loading API key credential providers…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No API key credential providers found in this Region." emptyPageMessage="No API key credential providers on this page." diff --git a/src/handlers/identity/oauth2-credential-provider/get/screen.tsx b/src/handlers/identity/oauth2-credential-provider/get/screen.tsx index badeae83b..13dafa9c6 100644 --- a/src/handlers/identity/oauth2-credential-provider/get/screen.tsx +++ b/src/handlers/identity/oauth2-credential-provider/get/screen.tsx @@ -50,9 +50,9 @@ export function Oauth2CredentialProviderGetScreen(props: ScreenProps) { ] : [] } - loadingLabel="Loading OAuth2 credential provider…" + loadingLabel="loading OAuth2 credential provider…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -74,7 +74,7 @@ export function Oauth2CredentialProviderGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading OAuth2 credential provider…" + loadingLabel="loading OAuth2 credential provider…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/identity/oauth2-credential-provider/list/screen.tsx b/src/handlers/identity/oauth2-credential-provider/list/screen.tsx index b99dd53f7..2ab1f1b50 100644 --- a/src/handlers/identity/oauth2-credential-provider/list/screen.tsx +++ b/src/handlers/identity/oauth2-credential-provider/list/screen.tsx @@ -39,6 +39,7 @@ export function Oauth2CredentialProviderListScreen({ ctx, core }: ScreenProps) { return ( { const response = await core.identity.listOauth2CredentialProviders(token, pageSize, opts); @@ -55,7 +56,7 @@ export function Oauth2CredentialProviderListScreen({ ctx, core }: ScreenProps) { } onBack={() => navigate("/agentcore/identity/oauth2-credential-provider")} maxPageSize={MAX_PAGE_SIZE} - loadingMessage="Loading OAuth2 credential providers…" + loadingMessage="loading OAuth2 credential providers…" errorMessage={(error) => `Error: ${error.message}`} emptyMessage="No OAuth2 credential providers found in this Region." emptyPageMessage="No OAuth2 credential providers on this page." diff --git a/src/handlers/memory/event/event.screen.test.tsx b/src/handlers/memory/event/event.screen.test.tsx index 76f42fdea..3797dd76b 100644 --- a/src/handlers/memory/event/event.screen.test.tsx +++ b/src/handlers/memory/event/event.screen.test.tsx @@ -155,7 +155,7 @@ describe("Memory event list flow", () => { await waitForText(screen.lastFrame, "event blue"); const frame = screen.lastFrame()!; - expect(frame).toContain("event id"); + expect(frame).toContain("event ID"); expect(frame).toContain("branch"); expect(frame).toContain("occurred UTC"); expect(frame).toContain("main"); diff --git a/src/handlers/memory/event/get/screen.tsx b/src/handlers/memory/event/get/screen.tsx index ae89db962..8afe1ea82 100644 --- a/src/handlers/memory/event/get/screen.tsx +++ b/src/handlers/memory/event/get/screen.tsx @@ -41,7 +41,7 @@ export function MemoryEventGetScreen({ ctx, core }: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.event} - loadingLabel={`Loading Memory event ${eventId ?? ""}...`} + loadingLabel={`loading Memory event ${eventId ?? ""}…`} onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/memory/event/list/screen.tsx b/src/handlers/memory/event/list/screen.tsx index f203ee0b9..8494230e8 100644 --- a/src/handlers/memory/event/list/screen.tsx +++ b/src/handlers/memory/event/list/screen.tsx @@ -15,7 +15,7 @@ interface EventRow extends Record { } const eventColumns = [ - { key: "eventId", header: "event id", flex: true }, + { key: "eventId", header: "event ID", flex: true }, { key: "branch", header: "branch", width: 18, minWidth: 8 }, { key: "occurredAt", @@ -73,7 +73,7 @@ function EventPicker({ ctx, core, memoryId, actorId, sessionId }: EventPickerPro ) } onBack={() => navigate(-1)} - loadingMessage={`Loading events for session ${sessionId}...`} + loadingMessage={`loading events for session ${sessionId}...`} errorMessage={(error) => `Error loading events for session ${sessionId}: ${error.message}`} emptyMessage={`No events found for session ${sessionId}.`} emptyPageMessage={`No events on this page for session ${sessionId}.`} diff --git a/src/handlers/memory/get/screen.tsx b/src/handlers/memory/get/screen.tsx index 1904fde3e..298fcbfcb 100644 --- a/src/handlers/memory/get/screen.tsx +++ b/src/handlers/memory/get/screen.tsx @@ -72,9 +72,9 @@ export function MemoryGetScreen(props: ScreenProps) { })) : [] } - loadingLabel="Loading Memory…" + loadingLabel="loading Memory…" onRetry={() => void detail.refetch()} - selectLabel="open detail" + selectLabel="open" /> ); } @@ -89,7 +89,7 @@ export function MemoryGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.memory} - loadingLabel="Loading Memory…" + loadingLabel="loading Memory…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/memory/list/screen.tsx b/src/handlers/memory/list/screen.tsx index 8328326b4..40bde9724 100644 --- a/src/handlers/memory/list/screen.tsx +++ b/src/handlers/memory/list/screen.tsx @@ -9,6 +9,7 @@ export function MemoryListScreen(props: ScreenProps) { navigate(`/agentcore/memory/get/${encodeURIComponent(memoryId)}`)} /> ); diff --git a/src/handlers/memory/listPickers.tsx b/src/handlers/memory/listPickers.tsx index 02cedb49f..b4103ad3e 100644 --- a/src/handlers/memory/listPickers.tsx +++ b/src/handlers/memory/listPickers.tsx @@ -10,7 +10,7 @@ interface MemoryActorRow extends Record { } const actorColumns = [ - { key: "actorId", header: "actor id", flex: true }, + { key: "actorId", header: "actor ID", flex: true }, ] satisfies DataTableColumn[]; function toActorRow(actor: ActorSummary): MemoryActorRow { @@ -56,7 +56,7 @@ export function MemoryActorPicker({ getValue={(row) => row.actorId} onSelect={onSelect} onBack={onBack} - loadingMessage={`Loading actors for Memory ${memoryId}...`} + loadingMessage={`loading actors for Memory ${memoryId}...`} errorMessage={(error) => `Error loading actors for Memory ${memoryId}: ${error.message}`} emptyMessage={`No actors found for Memory ${memoryId}.`} emptyPageMessage={`No actors on this page for Memory ${memoryId}.`} @@ -70,7 +70,7 @@ interface MemorySessionRow extends Record { } const sessionColumns = [ - { key: "sessionId", header: "session id", flex: true }, + { key: "sessionId", header: "session ID", flex: true }, { key: "createdAt", header: "created UTC", @@ -128,7 +128,7 @@ export function MemorySessionPicker({ getValue={(row) => row.sessionId} onSelect={onSelect} onBack={onBack} - loadingMessage={`Loading sessions for actor ${actorId}...`} + loadingMessage={`loading sessions for actor ${actorId}...`} errorMessage={(error) => `Error loading sessions for actor ${actorId}: ${error.message}`} emptyMessage={`No sessions found for actor ${actorId}.`} emptyPageMessage={`No sessions on this page for actor ${actorId}.`} diff --git a/src/handlers/memory/memory.screen.test.tsx b/src/handlers/memory/memory.screen.test.tsx index daaa39b20..aed4db7b3 100644 --- a/src/handlers/memory/memory.screen.test.tsx +++ b/src/handlers/memory/memory.screen.test.tsx @@ -91,7 +91,7 @@ describe("Memory picker", () => { await waitForText(screen.lastFrame, "memory-visible-id"); const frame = screen.lastFrame()!; - expect(frame).toContain("id"); + expect(frame).toContain("ID"); expect(frame).toContain("status"); expect(frame).toContain("updated UTC"); expect(frame).toContain("FAILED"); diff --git a/src/handlers/memory/record/get/screen.tsx b/src/handlers/memory/record/get/screen.tsx index 1c99bc502..c3ed7444d 100644 --- a/src/handlers/memory/record/get/screen.tsx +++ b/src/handlers/memory/record/get/screen.tsx @@ -26,7 +26,7 @@ export function MemoryRecordGetScreen({ ctx, core }: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data?.memoryRecord} - loadingLabel={`Loading Memory record ${recordId ?? ""}...`} + loadingLabel={`loading Memory record ${recordId ?? ""}…`} onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/memory/record/list/screen.tsx b/src/handlers/memory/record/list/screen.tsx index c720ea36c..0148a4568 100644 --- a/src/handlers/memory/record/list/screen.tsx +++ b/src/handlers/memory/record/list/screen.tsx @@ -34,7 +34,7 @@ interface MemoryRecordRow extends Record { } const recordColumns = [ - { key: "recordId", header: "id", flex: true }, + { key: "recordId", header: "ID", flex: true }, { key: "content", header: "content", width: 70, minWidth: 20 }, { key: "strategyId", header: "strategy", width: 32, minWidth: 16 }, { @@ -116,7 +116,7 @@ function MemoryRecordScopeScreen({ memoryId }: MemoryRecordScopeScreenProps) { breadcrumb={["agentcore", "memory", "record", "list", memoryId]} description="choose the namespace scope for the record list" keyHints={[ - { key: "up/down", label: "scope type" }, + { key: "↑↓", label: "scope type" }, { key: "enter", label: "list records" }, { key: "esc", label: "back" }, { key: "ctl+c", label: "quit" }, @@ -125,7 +125,7 @@ function MemoryRecordScopeScreen({ memoryId }: MemoryRecordScopeScreenProps) { navigate(-1)} - loadingMessage={`Loading Memory records for ${memoryId}...`} + loadingMessage={`loading Memory records for ${memoryId}...`} errorMessage={(error) => `Error loading Memory records for ${memoryId}: ${error.message}`} emptyMessage={`No Memory records found for ${scopeKind} ${scope}.`} emptyPageMessage={`No Memory records on this page for ${scopeKind} ${scope}.`} diff --git a/src/handlers/memory/record/record.screen.test.tsx b/src/handlers/memory/record/record.screen.test.tsx index 3a50a8afa..8fea5d866 100644 --- a/src/handlers/memory/record/record.screen.test.tsx +++ b/src/handlers/memory/record/record.screen.test.tsx @@ -73,7 +73,7 @@ describe("Memory record list flow", () => { test("reveals the scope input only after enter and hides it again on escape", async () => { const screen = renderScreen("/agentcore/memory/record/list/memory-1"); - const fieldHelp = "Enter the namespace value used to scope this request."; + const fieldHelp = "the namespace value used to scope this request"; await waitForText(screen.lastFrame, "scope type"); expect(screen.lastFrame()).not.toContain(fieldHelp); diff --git a/src/handlers/memory/session/session.screen.test.tsx b/src/handlers/memory/session/session.screen.test.tsx index 91782f1b0..e43168913 100644 --- a/src/handlers/memory/session/session.screen.test.tsx +++ b/src/handlers/memory/session/session.screen.test.tsx @@ -41,7 +41,7 @@ describe("Memory session list flow", () => { await waitForText(screen.lastFrame, sessionId); const frame = screen.lastFrame()!; - expect(frame).toContain("session id"); + expect(frame).toContain("session ID"); expect(frame).toContain("created UTC"); expect(frame).toContain("2026-08-02 10:20"); diff --git a/src/handlers/project/create/create.screen.test.tsx b/src/handlers/project/create/create.screen.test.tsx index c2267c34e..589ec42ea 100644 --- a/src/handlers/project/create/create.screen.test.tsx +++ b/src/handlers/project/create/create.screen.test.tsx @@ -189,7 +189,7 @@ describe("project create wizard", () => { expect(review).toContain("openai"); expect(review).toContain("model"); expect(review).toContain("gpt-5"); - expect(review).toContain("api key arn"); + expect(review).toContain("API key ARN"); expect(review.replace(/\s/g, "")).toContain(apiKeyArn); await r.press("return"); await waitForText(r.lastFrame, "✔ project created in ./OpenAIApp", 5000); @@ -260,7 +260,7 @@ describe("project create wizard", () => { expect(frame).toContain("○ openai"); expect(frame).toContain("○ gemini"); expect(frame).toContain("○ litellm"); - expect(frame).toContain("model id"); + expect(frame).toContain("model ID"); expect(frame).toContain(DEFAULT_MODEL_ID); expect(frame).toContain("[enter] continue"); expect(frame).toContain("[esc] back"); diff --git a/src/handlers/project/create/screen.tsx b/src/handlers/project/create/screen.tsx index 05987cdef..d49bf487c 100644 --- a/src/handlers/project/create/screen.tsx +++ b/src/handlers/project/create/screen.tsx @@ -207,8 +207,8 @@ function summaryOf(values: CreateProjectFormValues): Record { type: "harness", provider: providerLabel(provider), model: config.modelId, - ...(config.apiKeyArn && { "api key arn": config.apiKeyArn }), - ...(config.apiBase && { "api base url": config.apiBase }), + ...(config.apiKeyArn && { "API key ARN": config.apiKeyArn }), + ...(config.apiBase && { "API base URL": config.apiBase }), directory: `./${values.name}`, }; } @@ -288,7 +288,11 @@ export function ProjectCreateScreen({ core }: ScreenProps) { }; return ( - + {phase.kind === "form" && ( <> @@ -346,7 +350,8 @@ function hintsFor(stepKey: string, phase: WizardPhase): { key: string; label: st return [{ key: "↑↓", label: "navigate" }, { key: "enter", label: "continue" }, ...base]; case "type": case "template": - return [{ key: "↑↓", label: "choose" }, { key: "enter", label: "continue" }, ...base]; + case "memory": + return [{ key: "↑↓", label: "navigate" }, { key: "enter", label: "continue" }, ...base]; case "review": return [{ key: "enter", label: "create" }, ...base]; default: @@ -526,21 +531,21 @@ function modelFields(provider: HarnessModelProvider): ModelField[] { const fields: ModelField[] = [ { key: "modelId", - name: "model id", + name: "model ID", helpText: provider === "bedrock" - ? "a Bedrock model or inference profile id" + ? "a Bedrock model or inference profile ID" : `the ${providerLabel(provider)} model to use`, placeholder: HARNESS_DEFAULT_MODEL_IDS[provider], required: true, - requiredError: `enter a model id for ${providerLabel(provider)}`, + requiredError: `enter a model ID for ${providerLabel(provider)}`, }, ]; if (provider !== "bedrock") { fields.push({ key: "apiKeyArn", - name: "api key arn", + name: "API key ARN", helpText: provider === "lite_llm" ? "optional · an AgentCore Identity API-key credential provider ARN" @@ -557,7 +562,7 @@ function modelFields(provider: HarnessModelProvider): ModelField[] { if (provider === "lite_llm") { fields.push({ key: "apiBase", - name: "api base url", + name: "API base URL", helpText: "optional · the provider API endpoint", placeholder: "https://…", required: false, diff --git a/src/handlers/project/invoke/index.tsx b/src/handlers/project/invoke/index.tsx index 92c3b980f..3c5c055b3 100644 --- a/src/handlers/project/invoke/index.tsx +++ b/src/handlers/project/invoke/index.tsx @@ -20,7 +20,7 @@ export function createProjectInvokeHandler( .default((ctx) => { if (ctx.require(JsonKey)) { throw new InputValidationError( - "a Runtime or Harness invoke subcommand is required with --json", + "a Runtime or harness invoke subcommand is required with --json", ); } return renderInvokeTui("/agentcore/project/invoke", ctx, core, io); diff --git a/src/handlers/project/invoke/screen.tsx b/src/handlers/project/invoke/screen.tsx index c4a0246e4..3d5286d0e 100644 --- a/src/handlers/project/invoke/screen.tsx +++ b/src/handlers/project/invoke/screen.tsx @@ -45,7 +45,7 @@ export function ProjectInvokePickerScreen({ ctx, core }: ScreenProps) { navigate(PROJECT_MENU)} > @@ -180,7 +180,7 @@ function ProjectInvokePicker({ { key: "ctl+c", label: "quit" }, ]} > - + ); } @@ -193,7 +193,7 @@ function ProjectInvokePicker({ { key: "↑↓/jk", label: "navigate" }, { key: "/", label: "filter" }, { key: "enter", label: "select" }, - { key: "esc", label: "cancel" }, + { key: "esc", label: "back" }, { key: "ctl+c", label: "quit" }, ]} > @@ -207,7 +207,7 @@ function ProjectInvokePicker({ focus columns={columns} data={rows} - emptyMessage="No deployed Runtimes or Harnesses were found on target default." + emptyMessage="No deployed Runtimes or harnesses were found on target default." onSelect={select} onEscape={goBack} /> diff --git a/src/handlers/runtime/endpoint/get/screen.tsx b/src/handlers/runtime/endpoint/get/screen.tsx index 5dacae012..eec3e0ad2 100644 --- a/src/handlers/runtime/endpoint/get/screen.tsx +++ b/src/handlers/runtime/endpoint/get/screen.tsx @@ -64,7 +64,7 @@ export function RuntimeGetEndpointScreen(props: ScreenProps) { ] : [] } - loadingLabel={`Loading endpoint ${qualifier ?? ""} for Runtime ${runtimeId ?? ""}…`} + loadingLabel={`loading endpoint ${qualifier ?? ""} for Runtime ${runtimeId ?? ""}…`} onRetry={() => void detail.refetch()} /> ); @@ -88,7 +88,7 @@ export function RuntimeGetEndpointJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel={`Loading endpoint ${qualifier ?? ""} for Runtime ${runtimeId ?? ""}…`} + loadingLabel={`loading endpoint ${qualifier ?? ""} for Runtime ${runtimeId ?? ""}…`} onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/runtime/get/screen.tsx b/src/handlers/runtime/get/screen.tsx index a144e28ee..259e5d146 100644 --- a/src/handlers/runtime/get/screen.tsx +++ b/src/handlers/runtime/get/screen.tsx @@ -72,7 +72,7 @@ export function RuntimeGetScreen(props: ScreenProps) { })) : [] } - loadingLabel="Loading Runtime…" + loadingLabel="loading Runtime…" onRetry={() => void detail.refetch()} /> ); @@ -88,7 +88,7 @@ export function RuntimeGetJsonScreen(props: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel="Loading Runtime…" + loadingLabel="loading Runtime…" onRetry={() => void detail.refetch()} /> ); diff --git a/src/handlers/runtime/invoke/screen.tsx b/src/handlers/runtime/invoke/screen.tsx index 6c7d123f9..7ce8352a7 100644 --- a/src/handlers/runtime/invoke/screen.tsx +++ b/src/handlers/runtime/invoke/screen.tsx @@ -405,7 +405,7 @@ export function RuntimeInvokeConsole({ > {detail.isPending ? ( - + ) : detail.isError ? ( ) : ( diff --git a/src/handlers/runtime/list/screen.tsx b/src/handlers/runtime/list/screen.tsx index 73233523b..90a78493d 100644 --- a/src/handlers/runtime/list/screen.tsx +++ b/src/handlers/runtime/list/screen.tsx @@ -9,6 +9,7 @@ export function RuntimeListScreen(props: ScreenProps) { navigate(`/agentcore/runtime/get/${encodeURIComponent(runtimeId)}`)} /> ); diff --git a/src/handlers/runtime/runtime.screen.test.tsx b/src/handlers/runtime/runtime.screen.test.tsx index dff9eb0f5..567465be9 100644 --- a/src/handlers/runtime/runtime.screen.test.tsx +++ b/src/handlers/runtime/runtime.screen.test.tsx @@ -85,8 +85,8 @@ describe("runtime picker", () => { await waitForText(r.lastFrame, "orders"); const frame = r.lastFrame()!; expect(frame).toContain("name"); - expect(frame).toContain("id"); - expect(frame).toContain("id suffix"); + expect(frame).toContain("ID"); + expect(frame).toContain("ID suffix"); expect(frame).toContain("version"); expect(frame).toContain("status"); expect(frame).toContain("updated UTC"); @@ -459,7 +459,7 @@ describe("runtime hub", () => { await waitForText(hub.lastFrame, "checkout"); await hub.press("return"); - await waitForText(hub.lastFrame, "Loading Runtime…"); + await waitForText(hub.lastFrame, "loading Runtime…"); await hub.press("escape"); await waitForText(hub.lastFrame, "agentcore → runtime → list"); }); diff --git a/src/handlers/runtime/version/get/screen.tsx b/src/handlers/runtime/version/get/screen.tsx index 924c5ba36..b74341947 100644 --- a/src/handlers/runtime/version/get/screen.tsx +++ b/src/handlers/runtime/version/get/screen.tsx @@ -19,7 +19,7 @@ export function RuntimeGetVersionScreen({ ctx, core }: ScreenProps) { isPending={detail.isPending} error={detail.isError ? (detail.error as Error) : null} data={detail.data} - loadingLabel={`Loading version ${version ?? ""} for Runtime ${runtimeId ?? ""}…`} + loadingLabel={`loading version ${version ?? ""} for Runtime ${runtimeId ?? ""}…`} onRetry={() => void detail.refetch()} /> );