showcase/integrations/google-adk/qa/declarative-gen-ui.md
/demos/declarative-gen-ui on the dashboard host/api/health); GOOGLE_API_KEY is set; AGENT_URL points at the ADK agent server exposing the declarative_gen_ui agent path (registered as agent name declarative-gen-ui — see src/app/api/copilotkit-declarative-gen-ui/route.ts)src/app/demos/declarative-gen-ui/sales-context.ts — surfaces should reflect those numbers ($4.2M Q2 revenue, 4 regions, 5 reps, 3 at-risk accounts, Meridian Apparel Group as top account)data-testid: declarative-card, declarative-metric, declarative-pie-chart, declarative-bar-chart, declarative-status-badge, declarative-data-table, declarative-info-row (see src/app/demos/declarative-gen-ui/a2ui/renderers.tsx)/demos/declarative-gen-ui; verify the page renders within 3s and a single CopilotChat pane is centered (max-width ~896px, rounded-2xl, full-height)runtimeUrl="/api/copilotkit-declarative-gen-ui" and agent="declarative-gen-ui" (DevTools → Network: sending a message hits that endpoint, not /api/copilotkit)a2ui={{ catalog: myCatalog }})a2ui_operations container with catalogId: "declarative-gen-ui-catalog" (matches createCatalog(..., { catalogId: "declarative-gen-ui-catalog" }) in a2ui/catalog.ts)declarative-metric KPI tiles (uppercase label, large value, trend arrow with delta — green ↑ for up, red ↓ for down, e.g. "↑ 12% QoQ")declarative-pie-chart (recharts donut mirroring beautiful-chat: innerRadius 40 / outerRadius 80, one .recharts-pie-sector per slice, tooltip on hover, no legend) showing revenue by regiondeclarative-bar-chart (recharts, height 200, single blue #3b82f6 bars with rounded tops, dashed grid) showing monthly revenue#3b82f6, #8b5cf6, #ec4899, #f59e0b, #10b981, #6366f1) and bars are uniform blue #3b82f6 — identical chrome to beautiful-chat's sales dashboard (12px-radius cards, 20px padding, soft shadow)declarative-data-table renders inside a Card: uppercase column headers (Rep / Attainment / Pipeline), one body row per rep (5 reps, Dana Whitfield through Elena Vasquez), tabular numeralsdeclarative-status-badge (error = high severity, warning = medium) and a one-line reason + recommended next actiondeclarative-info-row label/value rows (Owner, Region, ARR, Renewal, Last contact), each separated by a 1px bottom bordershowcase/harness/src/probes/scripts/d5-gen-ui-declarative.ts asserts a newly-mounted testid per pill — leftovers from earlier pills must not be the only match)generate_a2ui (no a2ui_operations in the response stream, no surface rendered)generate_a2ui is called exactly once per surface-producing prompt; result contains a valid a2ui_operations container with catalogId: "declarative-gen-ui-catalog"