Commit Graph

30 Commits

Author SHA1 Message Date
Jordan Ritter b1b7bb5cb8 Add Baseline tab, Coverage perf + depth fixes, dark mode toggle
Baseline tab (new):
- 33-feature x 25-partner correctness matrix from Notion Partner Hub
- E3 cell treatment: status emoji + colored letter badges (C/A/I/▶/D/T/✱)
- View/Edit toggle with commit/cancel accumulator (batch saves to PB)
- PocketBase baseline collection with public read/write, SSE live updates
- Stats bar, collapsible categories, fixed legend, 200ms CSS tooltips
- Full-row hover highlight, zebra stripes matching Coverage tab

Coverage tab fixes:
- Depth chip: green = at max achievable (not hardcoded per level)
- maxPossible computed from probe existence (CATALOG_TO_D5_KEY)
- D5 false positives: removed shared key aliases
- Stats bar derives green/amber/red from same logic as depth chips
- Hide badges for non-existent tests (was strikethrough)
- Render perf: memoize featuresByCategory, React.memo CategorySection
- Load perf: getFullList single call (was 7 sequential round-trips)

Both tabs:
- Dark/light/system theme toggle (upper right)
- Column order: Coverage first (1-18), Baseline extras (19-25)
- LangGraph naming (orchestration layer, not model router)
- Row hover highlight including sticky column
2026-05-01 22:51:23 -07:00
Jordan Ritter 03aa2f3756 feat(showcase/dashboard): add docs-only feature kind
Features with kind "docs-only" show only the docs row in the
dashboard -- no Dx badges, no status badges, no links or depth
layers. The row label is muted and tagged like "testing" rows.

- feature-registry.json: cli-start changed from primary to docs-only
- registry.ts: FeatureKind union extended with "docs-only"
- cell-pieces.tsx: CellStatus returns null for docs-only (hides all
  badges)
- composed-cell.tsx: docs-only features render only DocsLayer, skip
  links/depth/health
- feature-grid.tsx: docs-only rows use muted italic styling with a
  "docs-only" tag
- Tests added for all three behavioral changes
2026-04-30 13:49:05 -07:00
Sam Julien 56f9a0b3f1 chore(showcase): unwire BYOC Hashbrown + JSON Render docs (drafts kept on disk)
Per product call: don't ship the BYOC Hashbrown / JSON Render docs yet.
Make the pages unreachable from normal navigation while keeping the work
on disk so we can rewire later without re-authoring.

- `generative-ui/meta.json`: drop `hashbrown` + `json-render` from the
  Declarative section. Pages no longer appear in the sidebar nav.
- `feature-registry.json`: drop `shell_docs_path` for `byoc-hashbrown`
  and `byoc-json-render`. Dashboard cells go back to no-shell-docs-link
  state for these two features (~33 cells).

Kept on disk:
- `showcase/shell-docs/src/content/docs/generative-ui/hashbrown.mdx`
- `showcase/shell-docs/src/content/docs/generative-ui/json-render.mdx`

Both pages remain reachable by direct URL but have zero inbound links
from nav or dashboard cells. To rewire later: re-add to
`generative-ui/meta.json` Declarative section + restore `shell_docs_path`
in `feature-registry.json`.
2026-04-29 15:00:47 -07:00
Sam Julien 8a2a1861b7 docs(showcase/shell-docs): move BYOC pages into generative-ui (Declarative section)
Both `byoc-hashbrown` and `byoc-json-render` are declarative generative
UI patterns (agent emits a typed schema, frontend validates against a
catalog, renders against React components). They belong in
`/generative-ui/` alongside a2ui and open-json-ui under the "Declarative"
header in the gen-ui meta nav, not at the root.

Changes:
- `/byoc-hashbrown.mdx` → `/generative-ui/hashbrown.mdx`
- `/byoc-json-render.mdx` → `/generative-ui/json-render.mdx`
- generative-ui/meta.json: add `hashbrown` and `json-render` to the
  Declarative section after `open-json-ui`.
- root meta.json: drop the two now-stale root-level entries.
- feature-registry.json: update `shell_docs_path` for both features to
  the new `/generative-ui/...` paths.
- Cross-references between the two BYOC pages updated to the new paths.
- Drop the "Not supported on Spring AI" section from json-render.mdx —
  the framework picker + missingCell banner already handles this without
  a dedicated header.
2026-04-29 14:49:38 -07:00
Sam Julien c0a9eafb3b docs(showcase/shell-docs): canonical /voice, /byoc-hashbrown, /byoc-json-render pages
Closes the last three undocumented features. Authors three new canonical
shell-docs pages and wires `feature-registry.json` so every supported
cell on the dashboard now resolves to a real shell-docs page.

- `/voice` (121 lines): real-time speech-to-text in the chat composer.
  `<CopilotChat />` renders the mic button automatically when the
  runtime advertises `audioFileTranscriptionEnabled: true`. Backend
  wires the V2 `CopilotRuntime` directly with a `TranscriptionService`
  (the V1 wrapper drops it on the floor); demo includes a sample-audio
  button that bypasses the mic for Playwright/screenshot flows. Closes
  PDX-85.

- `/byoc-hashbrown` (106 lines): bring-your-own-component generative UI
  via `@hashbrownai/react`. Custom `assistantMessage` renderer pipes
  streaming JSON through `useJsonParser` + `useUiKit`, resolving against
  a typed catalog so partial state renders progressively. Closes PDX-88.

- `/byoc-json-render` (140 lines): same scenario via `@json-render/react`.
  Agent emits `{ root, elements }`, custom renderer parses (tolerating
  prose preamble + code fences), validates against a Zod-typed catalog,
  and feeds the spec into `<Renderer />`. Each page cross-links to its
  sibling so readers can compare the two patterns. Closes PDX-89.

`feature-registry.json` updates: shell_docs_path set for all three.
og_docs_url stays null for voice and byoc-hashbrown (docs.copilotkit.ai
doesn't host them yet; per-framework overrides keep their existing OG
URLs intact). For byoc-json-render the previous canonical pointed at
`/generative-ui/your-components/display-only` — replaced with the new
dedicated `/byoc-json-render` page so the docs match what the demos
actually show.

Nav: `voice` joins "Build Chat UIs" right after `multimodal-attachments`;
both BYOC pages join "Build Generative UI" after the rest of the
generative-ui tree.
2026-04-29 14:49:37 -07:00
Sam Julien 79783f7c80 chore(showcase/shared): wire shell_docs_path defaults for auth and agent-config
`feature-registry.json` previously had `shell_docs_path: null` and
`og_docs_url: null` for both `auth` and `agent-config`, so the dashboard's
docs-shell links resolved to nothing for every framework that didn't set
a per-framework override. With canonical `/auth` and `/agent-config`
pages landing alongside this commit, the shell-docs link can resolve via
inheritance for every framework.

`og_docs_url` stays null on both: docs.copilotkit.ai doesn't host these
canonical pages today, so the dashboard's docs-og link greys out
honestly. Per-framework OG overrides (langgraph, ag2, microsoft-agent-
framework) keep their existing `https://docs.copilotkit.ai/<fw>/auth`
URLs intact.
2026-04-29 13:25:07 -07:00
Sam Julien 7c2717642c chore(showcase/shared): add shell defaults for tool-rendering-reasoning-chain and byoc-json-render
Both features are sibling cells on existing canonical pages
(`/generative-ui/tool-rendering` and
`/generative-ui/your-components/display-only`). Setting
`shell_docs_path` lets every supported cell across frameworks inherit
the canonical default, fixing 31 dashboard cells that previously had
an OG link but no shell-docs link.
2026-04-29 10:30:22 -07:00
Sam Julien 857a538fae chore(showcase/shared): correct stale null shell/og docs paths in feature-registry
Six features had `shell_docs_path: null` and/or `og_docs_url: null`
where the corresponding pages actually exist. Audit (probing
docs.copilotkit.ai with x-matched-path soft-404 detection + scanning
shell-docs MDX) surfaced the gap. Updated:

- interrupt-headless: shell→/human-in-the-loop/headless
                      og→docs.copilotkit.ai/headless
- reasoning-default-render: shell→/custom-look-and-feel/reasoning-messages
                            og→same path on docs.copilotkit.ai
- multimodal: shell→/multimodal-attachments
              og→docs.copilotkit.ai/multimodal-attachments
- subagents: og→docs.copilotkit.ai/coagents/multi-agent-flows
             (shell already correct: /multi-agent/subagents)
- tool-rendering-reasoning-chain: og→docs.copilotkit.ai/generative-ui/tool-rendering
                                  (no shell-docs page yet — leave null)
- byoc-json-render: og→docs.copilotkit.ai/generative-ui/your-components/display-only
                    (no shell-docs page yet — leave null)

Four features remain genuinely null on both fields (no docs anywhere):
auth, agent-config, voice, byoc-hashbrown. Tracked as docs/eng follow-up.
2026-04-29 09:22:17 -07:00
Alem Tuzlak 6995d6f30c chore(showcase/dashboard): replace /multi-agent soft-404 with framework-root or null
Code-review pass surfaced that `https://docs.copilotkit.ai/multi-agent`
is a Next.js SPA fallback (200 + `x-matched-path: /[[...slug]]` +
`<meta robots noindex>`) — the probe correctly flags it `notfound`,
but the per-package override path bypasses the probe and was
rendering green badges that 404 on click.

Replaces the URL across the 9 docs-links.json files where I introduced
it, plus the feature-registry fallback:

- Frameworks WITH an indexable framework root → use that:
  ag2 → /ag2, agno → /agno, google-adk → /adk,
  ms-agent-dotnet → /microsoft-agent-framework,
  strands → /aws-strands.
- Frameworks without a real scoped docs page → null (honest red,
  not lying-green): claude-sdk-python, claude-sdk-typescript,
  spring-ai, langroid.
- Feature-registry `subagents.og_docs_url` → null. The `1 notfound`
  in the prior probe summary is now `0 notfound / 19 missing` —
  same total, but the registry no longer carries a known-bad URL.

Also rewrote `showcase/packages/langroid/docs-links.json` to align
with langroid's actual manifest demos: of the 8 entries the original
file declared, only 3 (`agentic-chat`, `gen-ui-agent`,
`shared-state-streaming`) matched langroid's manifest; the other 5
(`hitl-in-chat`, `tool-rendering`, `gen-ui-tool-based`,
`shared-state-read-write`, `subagents`) were dead weight (the demos
don't exist on langroid). The file is now `features: {}` with a
rationale — every langroid demo has a working feature-level entry in
the registry, so per-cell overrides aren't needed.

Updated stale "missing" rationale strings in claude-sdk-python,
claude-sdk-typescript, spring-ai, strands to match the new state.

Verification
- `pnpm -C showcase/scripts probe-docs` → `ok=61 / notfound=0 /
  missing=19` across 40 features × 2 links.
- Dashboard cell simulation: still 687 docs cells green / 145 red.
  No regression — the `/multi-agent` fix touched 8 dead-weight
  overrides + 1 registry-fallback path that was already not
  rendering.
2026-04-27 18:46:55 +02:00
Alem Tuzlak da871add71 chore(showcase/dashboard): make docs-og and docs-shell green across the matrix
Replaces dead `https://docs.copilotkit.ai/features/<id>` URLs in the
shared feature registry with paths that actually resolve, so the
dashboard's docs-og / docs-shell badges stop falling back to red ✗
for every cell that has no per-package override.

What changed
- `showcase/shared/feature-registry.json`:
  - rename legacy `shell_docs_url` → canonical `shell_docs_path`
    (silences the probe's legacy-key warning)
  - point `og_docs_url` at indexable docs.copilotkit.ai pages and
    `shell_docs_path` at existing `.mdx` files in
    `showcase/shell-docs/src/content/docs/`
  - leave fields unset for features with no real docs page yet
    (`auth`, `agent-config`, `voice`, `multimodal`, `byoc-hashbrown`,
    `byoc-json-render`, plus the `kind: testing` features whose docs
    row is hidden by `CellStatus`)
- `showcase/packages/<framework>/docs-links.json`: fill in `null`
  entries with the closest framework-specific page that exists, or
  fall back to a framework-agnostic root (`/multi-agent`,
  `/shared-state`, etc.) where no scoped page exists. Files touched:
  ag2, agno, claude-sdk-python, claude-sdk-typescript, crewai-crews,
  google-adk, langgraph-python, llamaindex, mastra, ms-agent-dotnet,
  ms-agent-python, pydantic-ai, spring-ai, strands.
- New: `showcase/packages/langroid/docs-links.json` (was missing
  entirely; modeled on the spring-ai/strands pattern since no
  langroid-scoped pages exist on docs.copilotkit.ai).

Coverage
- Probe (`pnpm -C showcase/scripts probe-docs`) goes from
  every-feature-`notfound` to `ok=61 / notfound=1 / missing=18`
  across 40 features × 2 links.
- Dashboard cell simulation: 687 docs cells green, 145 red.
  Remaining reds are exclusively features with no real docs target
  yet (auth/voice/multimodal/agent-config/byoc-* on integrations
  whose framework docs don't have those pages).

No code changes — only the JSON sources of truth. The generated
artifacts (`shell-dashboard/src/data/{registry,docs-status,catalog}.json`,
`shell-{docs,dojo}/src/data/...`) are gitignored and rebuilt by
`pnpm -C showcase/scripts {generate-registry,probe-docs}` on dev/CI.
2026-04-27 17:46:56 +02:00
Jordan Ritter ff4bb27945 fix(showcase): integration fixes — lefthook glob, feature-registry, fixture validator, constraints, test snapshots 2026-04-24 21:24:26 -07:00
Alem Tuzlak 6dff6200e8 feat(showcase): wire open-gen-ui demos, update manifest and constraints
Declare open-gen-ui and open-gen-ui-advanced in langgraph-python
manifest (code existed, was never registered). Add both to
constrained-explicit allowlist, fill shell_docs_path for 5 demos,
add hitl-in-app override, drop stale chat-customization-css fallback.

Regenerate registry.json, demo-content.json, constraints.json,
and docs-status.json across shell / shell-dojo / shell-docs.
Bump feature/demo count assertion 30→32 in generate-registry test.
Extend check-binaries.sh whitelist for sister-shell demo-content.
2026-04-23 12:45:36 -07:00
Atai Barkai 01b8d17578 refactor(showcase): move gen-ui-agent to bottom of Operational Generative UI
Reorders gen-ui-agent (Agentic Generative UI / In-Chat State Rendering)
to appear AFTER Reasoning (Default Render) in the Operational
Generative UI category, per user preference.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:50:11 -07:00
Atai Barkai 0cb9cd13ba refactor(showcase): rename In-Chat HITL rows to name the hook API
gen-ui-interrupt and hitl-in-chat both render an interactive time-picker
inline in the chat, but via different API layers:

- gen-ui-interrupt -> useInterrupt (low-level primitive)
- hitl-in-chat -> useHumanInTheLoop (ergonomic wrapper)

Rename to make the dashboard row label reflect the API distinction.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:32:23 -07:00
Atai Barkai 1935abd120 feat(showcase/langgraph-python): add Frontend Tools (Async) cell demonstrating async useFrontendTool handler
Introduces the "Frontend Tools (Async)" showcase cell — the async sibling
to the in-app-actions "Frontend Tools" cell. Demonstrates the canonical
async useFrontendTool pattern where the handler awaits a real client-side
async operation and RETURNS A RESULT the agent uses.

Concept: a simulated client-side "notes database" query. The frontend
registers a `query_notes` tool whose async handler sleeps 500ms (emulating
IndexedDB / localStorage / local-cache latency) then filters an in-browser
notes array by keyword and returns matching notes. The agent awaits the
result and summarizes matches for the user.

Files:
- src/agents/frontend_tools_async.py — helpful-assistant graph with no
  backend tools; system prompt instructs the model to call `query_notes`
  for note searches (schema is injected at runtime from the frontend via
  CopilotKitMiddleware)
- src/app/demos/frontend-tools-async/page.tsx — CopilotKit provider +
  CopilotChat, `useFrontendTool({ handler: async (...) => { await sleep;
  return matches; } })` + per-tool render hook that shows a branded
  NotesCard, `useConfigureSuggestions` with three prompts
- src/app/demos/frontend-tools-async/notes-card.tsx — emerald/teal
  gradient card listing matched notes with tag chips
- langgraph.json — register `frontend_tools_async` graph
- manifest.yaml — features list + demos entry
- feature-registry.json — expanded description + docs URLs point to the
  canonical /frontend-tools docs (shared with the sibling cell)
- constraints.yaml — added to all three generative_ui profiles
- docs-links.json — langgraph-python override pointing at /frontend-tools

Validated end-to-end: agent successfully calls `query_notes` with keywords
extracted from natural-language prompts, awaits the async handler, and
summarizes the returned notes for the user.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 16:00:02 -07:00
Atai Barkai 2c10faef6b refactor(showcase): rename hitl-in-app to "(Frontend Tools + async HITL)"
Clarify the positioning of the In-App Human in the Loop cell. The old
label was ambiguous with the in-chat variant; the new label surfaces
the core technical story at-a-glance: this is the async useFrontendTool
pattern where the approval UI pops up OUTSIDE the chat surface.

Also register the cell in the langgraph-python manifest (features list
+ demos entry pointing to the new files).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:58:33 -07:00
Atai Barkai 3d16f0e85b refactor(showcase): rename open-gen-ui-advanced to emphasize frontend function calling
The advanced variant's distinguishing feature is that the agent-authored,
sandboxed UI can invoke frontend-registered sandbox functions via
Websandbox.connection.remote.<name>(args). The old label "(Advanced)"
did not convey this. Rename to "Open-Ended Gen UI (Advanced: with
frontend function calling)" in both the feature registry and the
langgraph-python manifest, and update descriptions to match. The id
stays `open-gen-ui-advanced` so URLs remain stable.

Regenerate derived bundles (registry.json, demo-content.json,
docs-status.json).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:47:46 -07:00
Atai Barkai 7cb19385b6 chore(showcase): delete declarative-gen-ui-hardcoded testing cell
The "Declarative Generative UI (A2UI — Custom Catalog)" single-file
prototype variant was a testing-only companion to the canonical
declarative-gen-ui 3-file BYOC pattern. Drop it everywhere:

- Delete src/app/demos/declarative-gen-ui-hardcoded/ cell directory
- Delete src/agents/a2ui_dynamic_hardcoded.py
- Remove from langgraph-python manifest.yaml (features + demos) and
  langgraph.json graphs
- Remove from docs-links.json, route.ts (agent entry + a2ui agents
  list), shared/feature-registry.json, shared/constraints.yaml
- Drop the Callout promoting it from a2ui/dynamic-schema.mdx
- Bump expected langgraph-python count 32 → 31 in generate-registry
  test; regenerate all bundles

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:33:43 -07:00
Atai Barkai 1b9b7ab0e6 chore(showcase): remove redundant prebuilt-chat row
Pre-Built: Chat was redundant with Pre-Built: CopilotChat — both rows
referred to the same CopilotChat surface with slightly different
framing. Drop prebuilt-chat everywhere:

- Delete src/app/demos/prebuilt-chat/ cell directory
- Remove from langgraph-python manifest.yaml features + demos
- Remove from shared/feature-registry.json features + chat-ui allowlist
- Remove from shared/constraints.yaml constrained-explicit
- Remove from src/app/api/copilotkit/route.ts neutral-fallthrough list
- Update expected counts in bundle-demo-content + generate-registry
  tests (langgraph now exposes 32 features, down from 33)
- Fix stale src/agents/main.py test expectation to
  src/agents/agentic_chat.py (main.py was split into a neutral assistant
  by an earlier Phase-1 fix commit)
- Regenerate shell/src/data/{registry,constraints,demo-content,
  docs-status}.json

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 15:22:51 -07:00
Atai Barkai ff6dd2eed5 chore(showcase): sync feature-registry + constraints with 4084
- Add prebuilt-chat feature to the registry and constrained-explicit
  allowlist so the 4085 manifest's intentional prebuilt-chat wiring
  validates cleanly (4084 omits it; 4085 committed the cell earlier)
- Bump expected langgraph-python feature count in generate-registry
  test from 32 to 33 to reflect the new row

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 14:01:48 -07:00
Atai Barkai fb062d3750 chore(showcase): port shared schema + feature-registry + constraints
Port the 4084 internal-showcase-followups state of the shared showcase
schema to 4085 (no Docker restructure):

- feature-registry.json: new Dev Ex category, category reorder
  (Dev Ex → Chat & UI → Platform → Controlled → Declarative → Open →
  Operational → Interactivity → Agent State → Multi-Agent → BYOC);
  +8 new features (beautiful-chat, cli-start, interrupt-headless,
  reasoning-default-render, tool-rendering-reasoning-chain,
  open-gen-ui-advanced, declarative-gen-ui-hardcoded,
  readonly-state-agent-context); renames (shared-state-write →
  shared-state-read-write, shared-state-agent-readonly →
  readonly-state-agent-context); removals (shared-state-read,
  state-rendering, a2ui-*, shared-state-io, shared-state, readables,
  a2a-chat, deep-agents, vnext-chat, byoc-a2ui, byoc-tambo);
  gen-ui-agent → kind: testing.
- constraints.yaml: allowlists updated to reference the new IDs.
- manifest.schema.json: `route` is optional; `command` field added for
  informational demos (e.g. cli-start).
- All 17 column manifests: shared-state-read removed,
  shared-state-write renamed to shared-state-read-write.
- langgraph-python manifest: full 4084 features list + demos entries
  with 4085-appropriate highlight paths (src/agents/*.py +
  src/app/demos/<cell>/* rather than backend/ + frontend/).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 11:24:33 -07:00
Atai Barkai 1b1f92de90 chore(showcase): feature-registry + manifest updates
Split generative-ui category into 4 (controlled/declarative/open/
operational), add chat-customization-css + tool-rendering-frontend-tools,
replace old tool-rendering-status/-result IDs with default-catchall /
custom-catchall. Port langgraph-python manifest features + highlight:
paths (column-relative to preserve pre-existing Docker structure).
Update tests for new category/feature counts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 18:11:06 -07:00
Atai Barkai 938dde15f4 chore(showcase): move Reasoning under Generative UI + rename
- Move `agentic-chat-reasoning` from `chat-ui` category to
  `generative-ui`, positioned after `tool-rendering`.
- Rename display "Agentic Chat (Reasoning)" -> "Reasoning".
- Update langgraph-python manifest demo entry's name, description,
  and tag to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 06:27:32 -07:00
Atai Barkai dabd936727 chore(showcase): remove phantom mobile/web-framework rows from registry
These 7 feature ids had zero manifest references, zero demo dirs, and
zero matching packages backing them in the showcase. They added noise
to the feature matrix without carrying substance:

- mobile-react-native
- mobile-swiftui
- mobile-android
- web-svelte
- web-vue
- web-tanstack — conceptually misplaced anyway; TanStack Start is a
  React meta-framework, not a React alternative
- web-angular — `packages/angular/` exists as a published SDK, but the
  showcase has zero integration for it. Angular support is really its
  own matrix/story; removing this placeholder row until there's a real
  showcase integration.

Also drops the `mobile` and `web-frameworks` categories now that they
have no members. Regenerates registry.json + constraints.json.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 06:24:53 -07:00
Atai Barkai 93497aa3df feat(showcase): expand feature registry for langgraph-python demo fleet
Adds rows for the demos being built in this branch:

- Split `chat-prebuilt` into `prebuilt-chat`, `prebuilt-sidebar`,
  `prebuilt-popup` (CopilotChat / CopilotSidebar / CopilotPopup).
- Reorder `generative-ui` rows and add: `hitl-in-chat` (In-Chat HITL),
  `gen-ui-interrupt`, `declarative-gen-ui` (Dynamic Schema),
  `a2ui-fixed-schema` (new), `mcp-apps`, `open-gen-ui`, `gen-ui-agent`,
  `tool-rendering`.
- `constraints.yaml`: expand `constrained-explicit` allowlist so the
  langgraph-python manifest validates against the new feature ids.
- Bump expected langgraph-python feature/demo count in
  `generate-registry.test.ts` from 10 -> 22 to match the manifest.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 05:46:28 -07:00
Atai Barkai a5e962582b feat(showcase): consolidate gen-ui rows + plain-chat cleanup
Feature matrix (generative-ui category):
- Order: Controlled Gen-UI (Display) -> (Interactive) / In-Chat HITL
  -> (Interrupt) -> Declarative Generative UI (A2UI) -> MCP Apps
  -> Fully Open-Ended Generative UI -> Agentic Generative UI
  (In-Chat State Rendering) -> Tool Rendering.
- Merge `hitl-in-chat` with the Controlled Gen-UI (Interactive) idea;
  drop the unused `gen-ui-interactive` placeholder.
- Merge standalone `a2ui` entry into Declarative Generative UI (A2UI);
  drop the duplicate.
- Rename `gen-ui-agent` display to "Agentic Generative UI (In-Chat
  State Rendering)". Moved `tool-rendering` next to it.
- Rename `gen-ui-tool-based` display from "Controlled Generative UI"
  to "Controlled Gen-UI (Display)". Dropped the placeholder
  `gen-ui-display` entry (was zero-use).

Agentic chat demo (langgraph-python):
- Removed the "Weather in SF" suggestion and the associated
  `useRenderTool`/`get_weather` code. The slimmed agent has no backend
  tools, so this demo is now pure chat -- just `CopilotChat`, a user
  context tag, and one sonnet suggestion.

Regenerated registry + demo-content.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 18:02:05 -07:00
Atai Barkai 14537d8f3b feat(showcase): reorganize feature matrix + auto-rebundle demo content
Feature registry reorganization:
- Move `tool-rendering` to generative-ui (was agent-capabilities);
  move `interactivity` category above `agent-state`.
- Split `hitl` into `hitl-in-chat` (generative-ui) + `hitl-in-app`
  (interactivity). All 17 manifests updated: feature + demo id renamed
  `hitl` -> `hitl-in-chat`; demo routes stay `/demos/hitl` so deployed
  backends are unaffected.
- Rename `Tool-Based Generative UI` -> `Controlled Generative UI`;
  drop duplicate `controlled-gen-ui` registry entry.
- Add generative-ui rows: `declarative-gen-ui`, `open-gen-ui`,
  `a2ui` (moved from a2ui category), `mcp-apps` (moved from platform).
- Rename `Frontend Tools` -> `Frontend Tools (In-app actions)`.
- Add `frontend-tools` feature to langgraph-python manifest + register
  `frontend_tools` agent name in api/copilotkit/route.ts (noise-free
  `change_background` demo split out from agentic-chat).

Bundle script improvements:
- `bundle-demo-content.ts`: resolve demo directory from `demo.route`
  instead of `demo.id`. Decouples feature id renames from on-disk
  directory names.
- `--watch` mode using native `fs.watch` over `packages/` with a
  debounced re-bundle on edits under demos/, agents/, agent/, mastra/,
  or README.md.
- `shell/package.json` dev script runs the bundler in watch mode
  alongside `next dev` via `npx concurrently -k`.

Tests updated for the rename and new counts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:36:00 -07:00
Jordan Ritter f8bbb1390c feat: complete open-genui removal from tests, registries, middleware, and docs 2026-04-15 16:44:28 -07:00
Jordan Ritter 25ee60e0dd feat: add shared showcase packages with tools, components, and test coverage
- @copilotkit/showcase-shared: React hooks, components, A2UI catalog, SalesDashboard
- Shared Python tools: 7 implementations + 54 pytest tests
- Shared TypeScript tools: equivalents + 43 vitest tests
- React component tests: 68 tests (7 suites)
- Aimock fixtures: 18 deterministic demo scenarios
2026-04-13 17:38:44 -07:00
Jordan Ritter 479e62cb7f feat: add unified showcase platform with CI, Docker starters, and 13 deployed integrations 2026-04-08 19:59:29 -07:00