Cross-cutting changes that don't belong with any one demo: manifest +
landing-page tags, runtime route adjustments, e2e + QA notes that
follow the demo renames, and a few small cleanups.
Manifest (manifest.yaml + src/app/page.tsx tag labels):
- Naming convention: every demo uses `Thing: Subthing` (Generative UI:
Tool Rendering - Default / Custom Default / Specific; Open Generative
UI: Default / Advanced; Shared State: Streaming / Read + Write;
Reasoning: Default / Custom; Frontend Tools: In-App Actions / Async;
Human in the Loop: In-chat / In-App / Interrupt based; Chat
Customization: CSS / Slots; Headless UI: Simple / Complete).
- Retags: Auth → `platform`; HITL Step Selection + Interrupt-based →
`interactivity`; Reasoning Default + Custom → `chat-ui`; Generative
UI: Tools → `generative-ui`.
- Renames: Readonly State (Agent Context) → Frontend Context Sharing.
- HITL slot points at /demos/hitl-in-chat (working
useHumanInTheLoop+interrupt path) instead of the previous
/demos/hitl that had no backend `interrupt()` calls.
- Highlight paths corrected for the rebuilt headless demos (root-level
paths replaced with hooks/, chat/, tools/, attachments/ subdirs).
- Descriptions rewritten where they had drifted from the implementation
(gen-ui-agent: dropped useCoAgentStateRender claim;
headless-simple: shadcn primitives, not raw Tailwind;
headless-complete: enumerates the actual hooks wired).
Runtime / route:
- src/app/api/copilotkit/route.ts — 30 agents registered (incl. the
reasoning-custom rename from agentic-chat-reasoning).
- copilotkit-mcp-apps/route.ts replaced with [[...slug]]/route.ts so v2
subpath POSTs (/v2/agent/run) resolve.
- src/app/api/copilotkit-voice/[[...slug]]/route.ts — env var standardized
(was `AGENT_URL || LANGGRAPH_DEPLOYMENT_URL`, now matches the rest
of the showcase with just LANGGRAPH_DEPLOYMENT_URL); trailing `/`
removed from deploymentUrl.
Tests / QA:
- e2e specs renamed and paths updated for the demo renames.
- qa notes for a2ui-fixed-schema (booked-state checklist removed) and
byoc-json-render (Wave 4a residue removed).
- docs-links.json key renamed for reasoning-custom.
Cleanup:
- Removed remaining stub agent.py files in demo dirs (real graphs in
src/agents/); removed dead beautiful-chat/components/headless-chat.tsx
(zero importers); removed [A2UI-DEBUG] / [A2UI-RESPONSE] print
statements from beautiful_chat.py; gpt-5.4-mini → gpt-5-mini typo
fix in beautiful_chat.py:249 (would have 4xx'd every model call);
stripped iframe-restriction LLM-prompt copy bleed from
open-gen-ui-advanced suggestion titles.
The convention pass that ran across ~28 demos earlier in this branch is
already reflected in their per-demo commits — every page.tsx reads as
imports + provider + suggestions hook + JSX, with `useConfigureSuggestions`
extracted to a sibling suggestions.ts.
5 cells unblocked by removing per-framework null overrides that were
overriding the canonical defaults landing in the companion commit:
- google-adk: drop nulls for voice, byoc-hashbrown, byoc-json-render
(canonicals now wired in feature-registry).
- langgraph-python: drop nulls for voice, byoc-hashbrown,
byoc-json-render (same).
After this commit, no framework has a stale `null` override for any
documented feature. The remaining intentional opt-outs (subagents on 4
fws) keep their existing nulls because they're genuinely framework-
specific decisions, not stale config.
7 cells unblocked by removing per-framework null overrides that were
overriding working canonical defaults:
- google-adk: drop nulls for `chat-customization-css`, `subagents`,
`multimodal` (canonicals already wired), and the now-canonical
`agent-config` + `auth` (added in companion commits). `voice`,
`byoc-hashbrown`, and `byoc-json-render` kept null pending PDX-85,
PDX-88, PDX-89.
- langgraph-python: drop nulls for `multimodal` + `agent-config` (now
resolvable via canonical defaults). `voice` + `byoc-*` kept null
pending the same tickets.
Audit-driven corrections to per-framework docs-links.json so every
supported (wired/stub) cell on the dashboard resolves to a real
shell-docs page and a non-stale OG URL. Result: 545 → 613 cells fully
working; remaining 78 cells are known docs gaps tracked separately
(voice → PDX-85; auth/agent-config/byoc-* across frameworks where no
canonical page exists).
- built-in-agent: drop 6 stale `/features/*` OG overrides retired by
the IA reorg. Cells now inherit canonical OGs that still exist on
docs.copilotkit.ai (`/human-in-the-loop`, `/generative-ui/...`,
etc.).
- langgraph-python: fix `auth` OG (`/langgraph/authentication` →
`/langgraph/auth`) + add framework-specific shell override (`/auth`
resolves to `integrations/langgraph/auth.mdx`). Null `voice` and
`byoc-hashbrown` OGs that pointed to retired pages.
- google-adk: replace 27 `shell_docs_path: null` opt-outs with
explicit canonical paths so cells route to real shell-docs pages
(mix of canonical root + adk-specific overrides). The original
rationale ("shell does not have a google-adk-scoped docs tree") is
now stale — shell-docs has an `integrations/adk/` tree (11 pages),
and the rest resolve via canonical inheritance. Also fix two retired
a2ui sub-paths (dynamic-schema/fixed-schema) that are now combined
on a single `/adk/generative-ui/a2ui` page on docs.copilotkit.ai.
- ag2 / ms-agent-python / ms-agent-dotnet: add framework-specific auth
overrides pointing at `/<framework>/auth` on both OG and shell.
Two integration docs-links.json files had stale shell_docs_path overrides
that 404'd on shell-docs:
- built-in-agent: 6 entries pointed at /docs/features/<feature> placeholder
paths that never existed in shell-docs. Removed; the new DocsRow
fallback inherits the (correct) feature-registry defaults instead.
- langgraph-python: auth + byoc-hashbrown overrides pointed at
/authentication and /byoc-hashbrown which don't exist. Removed; both
feature defaults are null (no shell-docs page yet — tracked as
docs/eng follow-up).
The og_docs_url overrides on each are unchanged. Net effect: the 8
previously-broken shell-docs links per the dashboard now either resolve
cleanly via inherited defaults (built-in-agent's 6) or surface the
honest 'no page yet' state (langgraph-python's 2).
The showcase framework directories better reflect their role as
integration examples rather than distributable packages.
Renames showcase/packages/ -> showcase/integrations/ and updates
the test docker-compose file reference accordingly.