mirror of
https://github.com/block/buzz.git
synced 2026-10-30 22:11:36 +00:00
**Category:** improvement **User Impact:** Users can create, discover, and import agents from one consistent Add agent dialog. **Problem:** Agent creation, discovery, and import were split across a dropdown and separate dialogs, making the Add agent flow fragmented. The existing E2E suite also continued targeting the deleted dropdown after the flows were unified. **Solution:** Route the new-agent card directly into a unified dialog with dedicated Create, catalog, and Import navigation, then update the affected E2E coverage to exercise that interface and its current empty state. <details> <summary>File changes</summary> **desktop/src/features/agents/ui/AgentDefinitionDialog.tsx** Supports rendering the agent definition form inside the unified Add agent experience while retaining the standalone dialog behavior. **desktop/src/features/agents/ui/AgentDefinitionDialogShell.tsx** Adds the shared shell used to present agent-definition content consistently in embedded and standalone contexts. **desktop/src/features/agents/ui/AgentDialog.tsx** Passes the revised dialog state and close behavior through the existing agent dialog entry point. **desktop/src/features/agents/ui/AgentsView.tsx** Connects the Agents page to the unified Add agent dialog and opens newly added catalog agents in their profile panel. **desktop/src/features/agents/ui/PersonaCatalogDialog.tsx** Combines catalog browsing, agent creation, and snapshot import behind persistent navigation, including dirty-navigation confirmation. **desktop/src/features/agents/ui/UnifiedAgentsSection.tsx** Replaces the new-agent dropdown with a direct Add agent entry point and adjusts the responsive card grid. **desktop/src/features/agents/ui/personaLibraryCopy.ts** Updates catalog-facing copy for the unified experience. **desktop/src/features/agents/ui/usePersonaActions.ts** Returns the resolved local persona after catalog activation so the caller can open the added agent. **desktop/tests/e2e/agent-readiness-screenshots.spec.ts** Opens the embedded create pane directly for readiness screenshots. **desktop/tests/e2e/agents.spec.ts** Covers unified Create, catalog, and Import navigation and asserts the current shared-agent empty state. **desktop/tests/e2e/global-agent-config-screenshots.spec.ts** Updates global configuration screenshot setup for direct create-pane entry. **desktop/tests/e2e/inline-custom-harness.spec.ts** Updates custom harness setup for the embedded create form. **desktop/tests/e2e/persona-env-vars.spec.ts** Updates environment-variable and model-provider scenarios for direct create-pane entry. **desktop/tests/e2e/persona-model-combobox-screenshots.spec.ts** Updates model combobox screenshot setup for direct create-pane entry. **desktop/tests/e2e/smoke.spec.ts** Updates agent-creation smoke coverage for the unified Add agent dialog. **desktop/tests/e2e/where-to-run-config.spec.ts** Updates provider-selection coverage for the embedded create form. </details> ## Reproduction steps 1. Open the Agents page and select the new-agent card. 2. Confirm the Add agent dialog opens directly on Create without an intermediate dropdown. 3. Use the left navigation to browse shared agents and open Import. 4. Select a catalog agent and confirm the dialog closes and the added agent's profile panel opens. 5. Run the affected desktop Playwright smoke and integration specs and confirm all scenarios pass. --------- Signed-off-by: Taylor Ho <taylorkmho@gmail.com> Co-authored-by: Carl <acda9e433d19dcd0e6b6840f7f4b98f3a56f1fab98049d444c087019e6d36560@buzz.block.builderlab.xyz>
65 lines
2.3 KiB
TypeScript
65 lines
2.3 KiB
TypeScript
export const personaLibraryCopy = {
|
|
title: "My agents",
|
|
description:
|
|
"The agents you have chosen for this app. Use them to create teams and launch agents.",
|
|
chooseFromCatalog: "Choose from catalog",
|
|
createNew: "New agent",
|
|
import: "Import snapshot",
|
|
emptyTitle: "No agents yet",
|
|
emptyDescription:
|
|
"Choose one from Agent Catalog, create your own, or import one to get started.",
|
|
emptyImportHint:
|
|
"Or drop an .agent.json or .agent.png snapshot here to import.",
|
|
} as const;
|
|
|
|
export const personaCatalogCopy = {
|
|
title: "Agent Catalog",
|
|
description: "Browse agents shared to this relay.",
|
|
dialogTitle: "Add agent",
|
|
dialogDescription: "Browse agents shared to this relay.",
|
|
emptyTitle: "You're all set",
|
|
emptyDescription: "Everything in Agent Catalog is already in My Agents.",
|
|
emptyCatalogDescription: "Shared agents will appear here.",
|
|
emptyCatalogTitle: "No agents are being shared",
|
|
detailsAction: "View details",
|
|
selectAction: "Choose",
|
|
deselectAction: "Deselect",
|
|
selectedState: "Selected",
|
|
availableState: "Available",
|
|
detailSelectedTitle: "Selected for My Agents",
|
|
detailSelectedDescription:
|
|
"Turn this off to remove the agent from teams and agent creation in this app.",
|
|
detailAvailableTitle: "Available in Agent Catalog",
|
|
detailAvailableDescription:
|
|
"Turn this on to make the agent available for teams and agent creation.",
|
|
useAction: "Add agent",
|
|
addedAction: "Added to My Agents",
|
|
teamEmptyState:
|
|
"No agents in My Agents yet. Create one or choose one from Agent Catalog first.",
|
|
} as const;
|
|
|
|
export function getPersonaCatalogSelectionActionCopy(isActive: boolean) {
|
|
return isActive
|
|
? personaCatalogCopy.deselectAction
|
|
: personaCatalogCopy.selectAction;
|
|
}
|
|
|
|
export function getPersonaCatalogSelectionAriaLabel(
|
|
displayName: string,
|
|
isActive: boolean,
|
|
) {
|
|
return `${isActive ? "Deselect" : "Select"} ${displayName} in My Agents`;
|
|
}
|
|
|
|
export function getPersonaCatalogDetailSelectionCopy(isActive: boolean) {
|
|
return isActive
|
|
? {
|
|
title: personaCatalogCopy.detailSelectedTitle,
|
|
description: personaCatalogCopy.detailSelectedDescription,
|
|
}
|
|
: {
|
|
title: personaCatalogCopy.detailAvailableTitle,
|
|
description: personaCatalogCopy.detailAvailableDescription,
|
|
};
|
|
}
|