Files
Alem Tuzlak 1ec575ea02 feat(showcase/ag2): port auth, agent-config, voice, multimodal, byoc-hashbrown, byoc-json-render
Adds 6 missing demos to the AG2 integration:

- auth: V2 runtime onRequest hook gates requests via Bearer token; AG2
  default agent backs the authenticated path.
- agent-config: Typed tone/expertise/responseLength config forwarded via
  agent.setState into AG2 ContextVariables; agent reads via a
  get_current_config tool before each reply.
- voice: V2 runtime + TranscriptionServiceOpenAI + sample audio button;
  guarded for missing OPENAI_API_KEY.
- multimodal: Dedicated gpt-4o AG2 ConversableAgent with image + PDF
  attachment support; sample-attachment buttons inject bundled samples.
- byoc-hashbrown: AG2 agent emits hashbrown-shaped JSON for
  @hashbrownai/react useUiKit + useJsonParser; sales dashboard catalog.
- byoc-json-render: AG2 agent emits flat root/elements JSON spec for
  @json-render/react Renderer; identical sales catalog for parity.

Adds @copilotkit/voice, @json-render/core, @json-render/react, openai
JS deps; pypdf and openai Python deps. Bundles demo-audio + demo-files
public assets and updates manifest features + demos.
2026-04-29 11:25:19 +02:00
..

Demo Files — Multimodal Demo

This directory bundles sample files referenced by the /demos/multimodal page.

Required files (must be committed as binaries; see .gitattributes at repo root):

  • sample.png — a small (< 50 KB) PNG that the "Try with sample image" button injects into the chat. A CopilotKit logo or other recognizable brand mark works well so the vision-capable agent has something to describe.
  • sample.pdf — a small (< 50 KB) one-page PDF that the "Try with sample PDF" button injects. The content must mention "CopilotKit" so E2E soft assertions hold (e.g. a one-page export of the CopilotKit quickstart).

The page at src/app/demos/multimodal/page.tsx fetches these via the public path (/demo-files/sample.png, /demo-files/sample.pdf), wraps the fetched blob in a File, and routes it through the same AttachmentsConfig.onUpload callback the paperclip button uses — so the sample path exercises the exact same queueing code as a real user upload.

If these files are missing, the demo page still renders but the sample buttons will surface a fetch error. The paperclip / drag-and-drop paths continue to work without them.