showcase/integrations/strands/qa/declarative-json-render.md
/demos/declarative-json-renderagent_server.py running and healthy; the shared agent at / cannot emit
the flat spec, so a dedicated prompt-specialized agent is mounted at
/byoc-json-render/src/app/api/copilotkit-declarative-json-render/route.ts proxies to
${AGENT_URL}/byoc-json-render/ (AGENT_URL defaults to
http://localhost:8000)OPENAI_API_KEY set for the agent backend@json-render/core + @json-render/react present in package.json
(pinned to 0.18.0)/demos/declarative-json-render.data-testid="json-render-root" wrapper appears in the assistant bubble.data-testid="metric-card" renders inside the wrapper.data-testid="bar-chart" or data-testid="pie-chart") renders inside the wrapper.data-testid="pie-chart" renders with multiple category slices + legend.useVisibility must be used within a VisibilityProvider console error (<JSONUIProvider> must wrap <Renderer>).data-testid="bar-chart" renders with month labels.metric-card renders; no console errors.{ root, elements } spec is more verbose than hashbrown's token stream.{ root, elements }) prompt lives in
src/agents/byoc_json_render.py; the byoc_ prefix on the backend module
and the /byoc-json-render/ HTTP mount are deliberate and stay.src/app/api/copilotkit-byoc-json-render/route.ts is still present
alongside the canonical one; the demo page uses the declarative- route.JSONUIProvider checks in steps 2 and 3 are the
regression guards for PR #4271 — keep them in every pass.