Commit Graph

166 Commits

Author SHA1 Message Date
Jordan Ritter 62d775f6e7 fix(tailored-content): add Suspense wrapper, URL sync, keyboard a11y, className merge, bounds check 2026-04-17 18:32:12 -07:00
Jordan Ritter 562f47a954 fix(showcase-docs): add missing TailoredContent component referenced by MDX 2026-04-17 18:32:12 -07:00
claudebot c34c4232a9 Apply PR #3706 2026-04-17 18:29:46 -07:00
claudebot db99c684dc Apply PR #3757 2026-04-17 18:23:09 -07:00
Martha Kelly Schumann ee48a69055 docs(langgraph): document runAgent once via useEffect in configurable… (mirror of #3868) (#4052)
Mirror of #3868 by @Abubakar-01.

Wraps `agent.runAgent(...)` in a `useEffect` with an empty dependency
array in both the docs and showcase MDX files, and adds a prose warning
explaining why calling `runAgent` directly in the component body causes
"thread is already processing" errors.
2026-04-17 18:15:02 -07:00
claudebot d572c12f72 Apply PR #3868 2026-04-17 18:09:09 -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
Jordan Ritter e5c2023995 docs(mastra): fix title/prose hook references, null guards, highlight range, grammar 2026-04-17 18:00:32 -07:00
Jordan Ritter 804c5d0f19 docs(mastra): fix grammar, invalid model, missing imports, runtimeContext, type, highlight meta 2026-04-17 17:57:26 -07:00
copilotkit-devops-bot[bot] 727b20699b chore: docs sync from main — needs review (2026-04-18) 2026-04-18 00:57:13 +00:00
Atai Barkai 7bec77a13a feat(showcase/langgraph-python): Controlled Gen UI with bar + pie charts
Rework the Controlled Generative UI demo to be minimal, self-contained,
and render charts via `useComponent`.

Frontend (`src/app/demos/gen-ui-tool-based/`):
- `page.tsx` -- `CopilotKit` + full-screen `CopilotChat` (no sidebar),
  two `useComponent` registrations (`render_bar_chart`,
  `render_pie_chart`), three chart-oriented suggestions.
- `bar-chart.tsx`, `pie-chart.tsx` -- ported from
  `examples/integrations/langgraph-python`. Each file reads top-to-
  bottom as imports -> schema -> props type -> component; colors and
  animation helpers are inlined inside the component. No shared
  chart-config module.
- Haiku card + schema removed.

Agent (`src/agents/main.py`):
- Rewritten using `create_agent` + `CopilotKitMiddleware()` so the
  LangGraph middleware injects the frontend `render_*_chart` tools into
  the model request at runtime.
- Deleted all backend-tool modules (`tools.py`, `todos.py`,
  `a2ui_dynamic_schema.py`, `a2ui_fixed_schema.py`). System prompt
  trimmed to a data-viz assistant.

Peripheral cleanups:
- `demos/agentic-chat/page.tsx` -- `change_background` tool + its
  suggestion removed; it had nothing to do with chat.
- New `demos/frontend-tools/` (In-App Actions) hosts
  `change_background` as its own demo with a `frontend_tools` agent
  name registered in `api/copilotkit/route.ts`.
- Stub `gen-ui-tool-based/agent.py` removed.
- `generate-starters.test.ts` no longer requires every python package
  to have backend tool imports -- a package with only frontend tools
  (like this controlled-gen-ui demo) is now valid.
- Whitelist generated shell data (`demo-content.json`,
  `search-index.json`, `starter-content.json`) in check-binaries hook
  -- they're generated artifacts like `package-lock.json`.
- Regenerated `demo-content.json` + `registry.json`.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:40:04 -07:00
Atai Barkai 099c105272 feat(showcase): Docker-based local dev for Railway parity
Adds a single command to spin up the exact image Railway deploys,
for any of the 17 showcase packages, with a single shared .env:

  ./showcase/scripts/dev-local.sh up [<slug> ...]   # all if empty
  ./showcase/scripts/dev-local.sh down|build|logs|ps|ports

Pieces:
- `docker-compose.local.yml` with a service per package. Ports come
  from `shared/local-ports.json` (langgraph-python -> 3100, ...).
- `.env.example` as a commit-safe template. Real `.env` is gitignored
  and fed to every container via `env_file`, so keys (OPENAI_API_KEY,
  etc.) live in one place.
- `dev-local.sh` wraps `docker compose` and handles the
  `shared_python/` / `shared_typescript/` staging step that CI does
  before `docker build` (see showcase_deploy.yml).
- Staged `shared_*` dirs added to .gitignore.

Shell wiring:
- `shell/next.config.ts` reads `shared/local-ports.json` when
  `SHOWCASE_LOCAL=1` is set and injects it as a public env.
- `/integrations/[slug]/[demo]/preview` uses that map to iframe
  `http://localhost:<port>` instead of `integration.backend_url`.
  Per-slug; any slug not running locally falls back to Railway.
  Unset SHOWCASE_LOCAL -> prod behavior, unchanged.

Full workflow + prerequisites (Colima / Docker Desktop) documented in
showcase/README.md.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 17:37:37 -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 4c8438e250 docs(mastra): fix useCopilotReadable typo in prose 2026-04-17 17:17:37 -07:00
Jordan Ritter feb81527f3 docs(mastra): resolve agent-app-context drift via clean-transform of main (bumps sync sha) 2026-04-17 16:50:25 -07:00
claudebot fc43033efd Apply PR #3866 2026-04-17 14:51:20 -07:00
Atai Barkai 2b3b4d71ad fix(showcase): drop --turbopack from shell dev script
Next.js 15.4.10's turbopack panics ("Next.js package not found") on the
repo's multi-lockfile layout. Webpack dev works; production builds are
unaffected.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:43:21 -07:00
Atai Barkai b99963ccc7 feat(showcase): add internal feature-matrix shell with canonical demo/code routes
Introduces a new internal-facing showcase app (`showcase/shell-internal`)
that renders a feature × integration grid. Each cell links to one of two
new canonical standalone routes on the main `shell` app:

- `/integrations/[slug]/[demo]/preview` — iframe-only hosted demo
- `/integrations/[slug]/[demo]/code` — code viewer; supports `?file=<name>`
  and `?lines=<start>-<end>` URL params for future line-highlighting

Keeping the canonical pages in `shell` means they can also be embedded in
docs/marketing; `shell-internal` is a pure overview with no duplicated
content (reads `shell/src/data/registry.json` directly).

Also drops `--turbopack` from `shell`'s dev script: Next.js 15.4.10's
turbopack panics on the repo's multi-lockfile layout. Webpack dev works
fine and this doesn't affect production builds.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 13:41:37 -07:00
Jordan Ritter 27f886e59c fix(showcase): complete open-gen-ui scrub — 5→4 count, schema enum, fixture, full regen 2026-04-16 18:30:02 -07:00
Jordan Ritter 2b996c54d0 fix(showcase): scrub open-gen-ui from constraints.yaml and regen derived JSONs 2026-04-16 18:16:55 -07:00
Jordan Ritter a1baf240c7 docs(langgraph): reconcile interrupt docs with upstream showcase changes
The docs-sync workflow flagged these two files as having showcase-local
modifications that blocked the automated transform pipeline:

  - docs/content/docs/integrations/langgraph/generative-ui/your-components/interrupt-based.mdx
  - docs/content/docs/integrations/langgraph/human-in-the-loop/interrupt-flow.mdx

Upstream docs/ changes pending sync to showcase/:
  - Add useInterrupt `agentId: "starterAgent"` to all four examples per file
  - Add <Callout type="warn"> explaining that a mismatched agentId silently
    never fires the interrupt
  - Update stale model name gpt-5.2 -> gpt-5.4 in code snippets

Showcase-local divergence present before this PR:
  - Leftover import fragment at the top of each file (bytes from an
    incomplete multi-line import strip by an older version of the sync
    script, not deliberate content)
  - Prettier-style reformatting applied ad hoc (line wrapping in the
    Callout info block and the last useInterrupt handler example)
  - Stale model name gpt-5.2 (pre-dates the upstream bump to gpt-5.4)
  - interrupt-flow.mdx never received the agentId / Callout additions
    that interrupt-based.mdx received in 63a6a2733 and 90d1869ea

Resolution: rebuild both showcase files as a clean transform of the
current upstream source. None of the showcase-local changes were
intentional additive content — they were stripping bugs, formatter
drift, and pre-sync staleness — so dropping them and taking the full
upstream reconciles both files cleanly.

Also bumps showcase/shell/.docs-sync-sha to the current main tip so the
next docs-sync run does not re-flag the same files.
2026-04-16 14:03:25 -07:00
Martha Kelly Schumann e3f3bbeaea Merge branch 'main' into doc/fix-langgraph-interrupt-use-interrupt-hook 2026-04-16 12:57:59 -07:00
Martha Schumann 90d1869ead docs(langgraph): clarify useInterrupt agentId mismatch consequence
Add a sentence to the warning callout explaining that if agentId doesn't
match a runtime-registered agent, the interrupt will silently never fire.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-16 12:57:06 -07:00
copilotkit-devops-bot[bot] cbcfe81165 chore: auto-sync docs from main (2026-04-16) 2026-04-16 16:54:36 +00:00
Martha Kelly Schumann 4c2ecea372 Merge branch 'main' into docs/2026-04-14-review-fixes 2026-04-15 19:09:40 -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 1fcc49e100 feat: remove open-genui rendering from starter template and registry 2026-04-15 16:37:56 -07:00
github-actions[bot] df9c812047 style: auto-fix formatting 2026-04-15 22:25:26 +00:00
Jordan Ritter 93b730aba5 feat: add deployed field to starter objects in registry.json
Add a `deployed` boolean to all 17 starter sub-objects. 14 marked
true (healthy on Railway), 3 marked false (mastra, crewai-crews,
claude-sdk-typescript — currently down). Used by smoke tests to
gate which starters are tested.
2026-04-15 15:17:04 -07:00
copilotkit-devops-bot[bot] 068521d0ec chore: auto-sync docs from main (2026-04-15) 2026-04-15 15:32:42 +00:00
Jordan Ritter 80ee51dc46 fix: wider starter hero section, sticky renderer selector above sidebar (#3913)
## Summary

- Shell: starter section breaks out to `max-w-[90rem]` (1440px) while
header/demos stay at `max-w-5xl` (1024px) — gives the dashboard +
sidebar room to breathe
- Starter: renderer selector bar gets `sticky top-0 z-[60]` — stays
visible and clickable above the CopilotKit sidebar (z-50)
- All 17 starters regenerated with sticky header
2026-04-14 15:28:52 -07:00
Jordan Ritter 665c312372 fix: harden deploy pipeline — independent concurrency, post-deploy health checks (#3908)
## Summary

- **Fix concurrency group**: Manual dispatches targeting different
services no longer cancel each other. Push events still cancel stale
deploys (same group), but `workflow_dispatch` runs for different
services get unique groups and run independently.
- **Add post-deploy health check**: After Railway deploy, polls the
service health endpoint (6 attempts over ~90s). Non-blocking for
sleep-on-idle services but logs clearly for visibility.
- **Enhance Slack notification**: Now includes service count and names
in both success and failure messages, plus guards against empty webhook
secret.
2026-04-14 15:26:54 -07:00
Jordan Ritter c8b5bfd890 fix: wider starter hero section, sticky renderer selector above sidebar 2026-04-14 15:26:24 -07:00
Jordan Ritter 1855ea11c2 fix: format 2026-04-14 15:12:10 -07:00
Jordan Ritter 8ca2b38557 fix: responsive iframe height and scrollable starter content 2026-04-14 15:07:00 -07:00
Jordan Ritter 8786ee98fc fix: regenerate shell registry and starter content data 2026-04-14 14:17:24 -07:00
Jordan Ritter ce8a9fe18b feat: showcase starter restructuring — Sales Dashboard as hero (#3896)
## Summary

- **17 generated clonable starters** at `showcase/starters/<slug>/` with
Sales Dashboard + 5 GenUI rendering strategies (Tool-Based, A2UI
Catalog, HashBrown, json-render fallback, Open GenUI)
- **153 demo pages reverted** to self-contained originals from git
history — zero shared imports, fully readable in Code tab
- **Shared frontend deleted** — all packages now fully self-contained
- **17 Railway services provisioned** with sleep-on-idle for all
starters
- **Aimock integration** — 37 fixture rules covering all 9 demo types,
per-package playwright configs wired, docker-compose for CI
- **CI updated** — 17 starter services in deploy workflow, drift
detection CI for template consistency
- **Shell updated** — `npx degit` clone commands, full component tree in
Code tab, `.java` file support

## What Changed

### Phase 1A: Starter Template + Generation
- Canonical template at `showcase/starters/template/` with Sales
Dashboard, 5 renderer strategies, per-language Dockerfiles (non-root
user, agent health checks)
- Generation script at `showcase/scripts/generate-starters.ts` with
Python import rewriting, TypeScript shared-tools rewriting, `--check`
mode for CI drift detection, deterministic output (sorted
devDependencies)
- 537 tests: 267 unit (generation script + transform functions) + 270
cross-starter consistency

### Phase 1B: Demo Revert
- All 9 feature demos across all 17 packages reverted to self-contained
originals from commits `cbc4c8f77` and `52ac091ef`
- Zero `@copilotkit/showcase-shared` imports in any demo page
- Dead `demo-wrapper.tsx` and `error-boundary.tsx` files removed

### Phase 2: Integration + Cleanup
- Removed webpack alias and tsconfig paths from all 17 packages
- Deleted `showcase/shared/frontend/` and removed from
`pnpm-workspace.yaml`
- Updated all 17 manifest.yaml files with new starter paths + Railway
domains
- Updated CI deploy workflow with 17 starter services + Railway IDs
- Added drift detection CI (`showcase_template-drift.yml`) with expanded
trigger paths
- Updated shell clone command to `npx degit`, starter content bundler
discovers full component tree + `.java` files

### Phase 3: Aimock Integration
- Expanded `showcase/aimock/feature-parity.json` from 18 to 37 fixture
rules covering all demo interactions
- Updated all 17 `showcase/packages/*/playwright.config.ts` with env
passthrough for `OPENAI_BASE_URL`/`OPENAI_API_KEY`
- Created `showcase/tests/docker-compose.packages.yml` — CI aimock
sidecar (fixtures-only, strict mode)
- Created `showcase/scripts/run-e2e-with-aimock.sh` — convenience script
for local testing
- Aimock modes: CI = strict/fixtures-only, Live demos = proxy +
fixtures, Local = developer choice

### E2E Tests
- Starter interaction tests: renderer switching verifies content
changes, "Add a deal" exercises React state
- Demo interaction tests: suggestion buttons verified by text,
click-and-verify for agentic-chat, hitl, tool-rendering
- Playwright screenshot structure for 3 viewports (iPhone SE, iPhone 14
Pro Max, Desktop)

### Quality
- Docker: non-root user, process identification in entrypoint (`wait -n`
+ PID check), agent health checks for all 4 languages
- Types: `SalesStage` and `RenderMode` derived from `as const` arrays,
`VALID_MODES` localStorage validation, `HashBrownDealCardProps.stage`
typed as `SalesStage`
- Error handling: generation script fails hard on missing required
inputs, warns on known-incomplete agents, sorted devDependencies for
determinism
- HashBrown prompt: fixed `name=` to `label=` (MetricCard prop
mismatch), deduplicated generator functions

## Quality Gates

| Gate | Result |
|------|--------|
| MSAL CR Phase 1 (7 agents x 4 rounds) | Converged: 30 → 20 → 4 → 0 |
| MSAL CR Phase 2 (7 agents x 2 rounds) | Converged: 4 → 0 |
| Final MSAL CR (7 agents) | Converged |
| Aimock CR (7 agents) | 4 clean + 3 fixed |
| Unit tests (267) + Consistency (270) | 537 passing |
| Build validation (4 starters) | All pass |
| Drift detection (`--check`) | Pass |
| Playwright screenshots (33) | Visual verification pass |
| CI (16 checks) | ALL GREEN |

## Test plan

- [x] 537 vitest tests passing (generation script + starter consistency)
- [x] 4 starters build successfully (langgraph-python, ag2, mastra,
spring-ai)
- [x] Zero `@copilotkit/showcase-shared` imports in any demo page
- [x] All 17 manifest.yaml files have correct starter sections with
Railway domains
- [x] Drift detection: `npx tsx showcase/scripts/generate-starters.ts
--check` exits 0
- [x] 33 Playwright screenshots verified at 3 viewports
- [x] 37 aimock fixture rules cover all 9 demo types
- [x] CI: 16/16 checks green
- [x] E2e tests exercise real interactions (renderer switching, deal
creation, suggestion clicks)
- [ ] Aimock-backed e2e run via Docker (blocked by Node v25 local compat
— works in Docker)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-14 13:11:54 -07:00
Jordan Ritter d8d889aebf chore: remove dead demo-wrapper/error-boundary files, regenerate shell data
Remove orphaned demo-wrapper.tsx (1 file) and error-boundary.tsx (17 files)
that still imported from the deleted @copilotkit/showcase-shared.
Regenerate registry.json, demo-content.json, and starter-content.json.
2026-04-14 12:57:32 -07:00
Jordan Ritter 5ac07d4d9b feat: CI, shell, and aimock integration for showcase starters
CI:
- Add 17 starter services to showcase deploy workflow with Railway IDs
- Add drift detection workflow (triggers on starters, packages, scripts, shared)
- Remove shared_frontend copy step for starter builds

Shell:
- Update clone command to npx degit with clipboard fallback
- Update starter content bundler for full component tree + .java support
- Add clone_command to manifest schema and registry types

Aimock:
- Expand feature-parity.json from 18 to 37 fixture rules
- Add docker-compose.packages.yml for CI aimock sidecar (strict mode)
- Add run-e2e-with-aimock.sh convenience script
2026-04-14 12:52:52 -07:00
Abubakar 47ba3c602b Fixed the commenting syntax in MS Agent Framework from # to // in quickstart, for both docs and showcase 2026-04-14 23:18:05 +05:00
Abubakar c066549ba7 Added the imports to load env
variable in langgraph-quicktart in both docs and showcase
2026-04-14 23:10:14 +05:00
Abubakar b569ec7be7 Added the imports to load env variable in langgraph-quicktart in both docs and showcase 2026-04-14 23:05:01 +05:00
Abubakar 40dde47b70 Added the imports to load env variable in langgraph-quicktart in both docs and showcase 2026-04-14 22:56:08 +05:00
copilotkit-devops-bot[bot] 475fda23de chore: auto-sync docs from main (2026-04-14) 2026-04-14 14:00:31 +00:00
Jordan Ritter ae3d871542 feat: showcase feature parity: shared tools, Sales Dashboard, A2UI across all 17 integrations (#3873)
## Summary
- Create `@copilotkit/showcase-shared` — shared frontend package with
React hooks, components, A2UI catalog, and SalesDashboard
- Create shared Python + TypeScript tool implementations (get_weather,
query_data, manage_sales_todos, search_flights, schedule_meeting,
generate_a2ui)
- Upgrade all 17 showcase integrations to full feature parity with the
langgraph-python starter
- Docker builds verified locally for all 17 packages
- Comprehensive test coverage: 165 unit tests, 68 React component tests,
130+ Playwright e2e files

## Commits
1. `feat:` shared packages — frontend, Python tools, TypeScript tools,
unit tests, React component tests, aimock fixtures
2. `feat:` all 17 package upgrades — tools, demo pages, cross-cutting
fixes, Playwright e2e tests
3. `feat:` Docker + CI — tsconfig paths resolution, shared module
copying, spring-ai base image fix
4. `chore:` pnpm lockfile update

## Code review
5 rounds of fresh unbiased MSAL (1 dedicated agent per package, zero
prior context). Round 5: **20/20 packages PASS with 0 findings.** Test
quality audit: all criticality-7+ gaps fixed.

## Docker builds (all 17 verified locally)
```
langgraph-python     ✅    langgraph-typescript  ✅
langgraph-fastapi    ✅    mastra               ✅
pydantic-ai          ✅    claude-sdk-typescript ✅
crewai-crews         ✅    spring-ai            ✅
google-adk           ✅    ms-agent-dotnet      ✅
agno                 ✅    claude-sdk-python     ✅
ag2                  ✅    langroid             ✅
strands              ✅    ms-agent-python      ✅
llamaindex           ✅
```

## Test coverage
- Python unit: 54 tests (tools + parity + framework wrappers)
- TypeScript unit: 43 tests
- React component: 68 tests (7 suites)
- Playwright e2e: 130+ files, per-package UI adaptation
- Aimock: 18 deterministic fixtures (ready for Docker-compose wiring)

## Known gaps (follow-up PR)
- Feature set varies: langgraph-python/fastapi have 9 demos, rest have 4
- gen-ui-tool-based: Chart/Haiku/Sales Pipeline variants across packages
- HITL: MeetingTimePicker vs step-selector variants
- Node 22 upgrade across all Dockerfiles + CI

## Test plan
- [x] `python3 -m pytest showcase/shared/python/tests/ -v` (54 passed)
- [x] `npx vitest run --config
showcase/shared/typescript/vitest.config.ts` (43 passed)
- [x] `npx vitest run --config
showcase/shared/frontend/vitest.config.ts` (68 passed)
- [x] Docker build all 17 packages locally
- [ ] Deploy to Railway and run smoke tests

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-13 20:17:54 -07:00
github-actions[bot] b670dd34bc style: auto-fix formatting 2026-04-14 03:03:54 +00:00
Jordan Ritter b6fcafe4cd feat: all 17 showcase packages to 9-demo parity with Sales Dashboard hero
Every package: 9 demos (agentic-chat hero, hitl MeetingTimePicker, tool-rendering,
gen-ui-tool-based Chart Generator, gen-ui-agent A2UI dynamic, shared-state-read/
write/streaming, subagents), 7 backend tools, Playwright e2e tests per demo.
Cross-cutting: debug routes, error boundaries, camelCase SSE, generate_a2ui
conversation context, spring-ai JSON weather, langroid adapter fixes.

# Conflicts:
#	showcase/packages/ag2/manifest.yaml
#	showcase/packages/ag2/src/agents/agent.py
#	showcase/packages/ag2/src/app/api/debug/route.ts
#	showcase/packages/ag2/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/ag2/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/ag2/src/app/demos/hitl/page.tsx
#	showcase/packages/ag2/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/ag2/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/ag2/tests/e2e/hitl.spec.ts
#	showcase/packages/ag2/tsconfig.json
#	showcase/packages/agno/manifest.yaml
#	showcase/packages/agno/src/agents/main.py
#	showcase/packages/agno/src/app/api/debug/route.ts
#	showcase/packages/agno/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/agno/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/agno/src/app/demos/hitl/page.tsx
#	showcase/packages/agno/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/agno/tsconfig.json
#	showcase/packages/claude-sdk-python/manifest.yaml
#	showcase/packages/claude-sdk-python/src/agents/agent.py
#	showcase/packages/claude-sdk-python/src/app/api/debug/route.ts
#	showcase/packages/claude-sdk-python/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/claude-sdk-python/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/claude-sdk-python/src/app/demos/hitl/page.tsx
#	showcase/packages/claude-sdk-python/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/claude-sdk-python/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/claude-sdk-python/tests/e2e/hitl.spec.ts
#	showcase/packages/claude-sdk-python/tsconfig.json
#	showcase/packages/claude-sdk-typescript/.gitignore
#	showcase/packages/claude-sdk-typescript/src/app/api/debug/route.ts
#	showcase/packages/claude-sdk-typescript/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/claude-sdk-typescript/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/claude-sdk-typescript/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/claude-sdk-typescript/tests/e2e/hitl.spec.ts
#	showcase/packages/crewai-crews/manifest.yaml
#	showcase/packages/crewai-crews/src/agents/crew.py
#	showcase/packages/crewai-crews/src/agents/tools/custom_tool.py
#	showcase/packages/crewai-crews/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/crewai-crews/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/google-adk/manifest.yaml
#	showcase/packages/google-adk/src/agents/main.py
#	showcase/packages/google-adk/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/google-adk/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/google-adk/src/app/demos/hitl/page.tsx
#	showcase/packages/langgraph-fastapi/src/app/api/debug/route.ts
#	showcase/packages/langgraph-fastapi/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/langgraph-fastapi/src/app/demos/hitl/page.tsx
#	showcase/packages/langgraph-fastapi/tests/e2e/hitl.spec.ts
#	showcase/packages/langgraph-fastapi/tsconfig.json
#	showcase/packages/langgraph-python/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/langgraph-python/src/app/demos/hitl/page.tsx
#	showcase/packages/langgraph-python/tests/e2e/agentic-chat.spec.ts
#	showcase/packages/langgraph-python/tests/e2e/hitl.spec.ts
#	showcase/packages/langgraph-python/tests/e2e/shared-state-streaming.spec.ts
#	showcase/packages/langgraph-python/tests/e2e/shared-state-write.spec.ts
#	showcase/packages/langgraph-python/tests/e2e/subagents.spec.ts
#	showcase/packages/langgraph-python/tsconfig.json
#	showcase/packages/langgraph-typescript/.gitignore
#	showcase/packages/langgraph-typescript/src/agent/graph.ts
#	showcase/packages/langgraph-typescript/src/app/api/debug/route.ts
#	showcase/packages/langgraph-typescript/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/langgraph-typescript/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/langgraph-typescript/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/langgraph-typescript/tests/e2e/hitl.spec.ts
#	showcase/packages/langroid/src/agents/agent.py
#	showcase/packages/langroid/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/langroid/src/app/demos/hitl/page.tsx
#	showcase/packages/langroid/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/llamaindex/manifest.yaml
#	showcase/packages/llamaindex/src/agents/agent.py
#	showcase/packages/llamaindex/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/llamaindex/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/llamaindex/src/app/demos/hitl/page.tsx
#	showcase/packages/llamaindex/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/mastra/.gitignore
#	showcase/packages/mastra/package.json
#	showcase/packages/mastra/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/mastra/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/mastra/src/mastra/agents/index.ts
#	showcase/packages/mastra/src/mastra/tools/index.ts
#	showcase/packages/mastra/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/mastra/tests/e2e/hitl.spec.ts
#	showcase/packages/ms-agent-dotnet/agent/Program.cs
#	showcase/packages/ms-agent-dotnet/manifest.yaml
#	showcase/packages/ms-agent-dotnet/src/app/api/debug/route.ts
#	showcase/packages/ms-agent-dotnet/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/ms-agent-dotnet/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/ms-agent-dotnet/src/app/demos/hitl/page.tsx
#	showcase/packages/ms-agent-dotnet/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/ms-agent-dotnet/tests/e2e/hitl.spec.ts
#	showcase/packages/ms-agent-dotnet/tsconfig.json
#	showcase/packages/ms-agent-python/src/agents/agent.py
#	showcase/packages/ms-agent-python/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/ms-agent-python/src/app/demos/hitl/page.tsx
#	showcase/packages/ms-agent-python/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/pydantic-ai/manifest.yaml
#	showcase/packages/pydantic-ai/src/agents/agent.py
#	showcase/packages/pydantic-ai/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/pydantic-ai/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/pydantic-ai/src/app/demos/hitl/page.tsx
#	showcase/packages/spring-ai/manifest.yaml
#	showcase/packages/spring-ai/src/app/api/debug/route.ts
#	showcase/packages/spring-ai/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/spring-ai/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/spring-ai/src/app/demos/hitl/page.tsx
#	showcase/packages/spring-ai/src/app/demos/tool-rendering/page.tsx
#	showcase/packages/spring-ai/src/main/java/com/copilotkit/showcase/springai/AgentConfig.java
#	showcase/packages/spring-ai/src/main/java/com/copilotkit/showcase/springai/tools/WeatherTool.java
#	showcase/packages/spring-ai/tests/e2e/gen-ui-tool-based.spec.ts
#	showcase/packages/spring-ai/tests/e2e/hitl.spec.ts
#	showcase/packages/spring-ai/tsconfig.json
#	showcase/packages/strands/manifest.yaml
#	showcase/packages/strands/src/agents/agent.py
#	showcase/packages/strands/src/app/demos/agentic-chat/page.tsx
#	showcase/packages/strands/src/app/demos/gen-ui-tool-based/page.tsx
#	showcase/packages/strands/src/app/demos/hitl/page.tsx
#	showcase/packages/strands/src/app/demos/tool-rendering/page.tsx
#	showcase/shell/src/data/registry.json
2026-04-13 19:57:58 -07:00
Jordan Ritter 2accac1d07 feat: add shared showcase packages with tools, components, and test coverage
- @copilotkit/showcase-shared: hooks, components, A2UI catalog, SalesDashboard
- Shared Python tools: 7 impls + 61 pytest tests (unit + parity + equivalence + wrappers)
- Shared TypeScript tools: equivalents + 52 vitest tests (incl generateA2uiImpl)
- React component tests: 68 tests (7 suites)
- Aimock: 18 deterministic demo fixtures

# Conflicts:
#	showcase/shared/frontend/src/components/__tests__/bar-chart.test.tsx
#	showcase/shared/frontend/src/components/__tests__/meeting-time-picker.test.tsx
#	showcase/shared/frontend/src/components/__tests__/pie-chart.test.tsx
#	showcase/shared/frontend/src/components/__tests__/sales-dashboard/todo-card.test.tsx
#	showcase/shared/frontend/src/components/__tests__/sales-dashboard/todo-list.test.tsx
#	showcase/shared/frontend/src/components/__tests__/tool-reasoning.test.tsx
#	showcase/shared/frontend/tsconfig.json
#	showcase/shared/manifest.schema.json
#	showcase/shared/typescript/tools/__tests__/get-weather.test.ts
#	showcase/shared/typescript/tools/__tests__/schedule-meeting.test.ts
#	showcase/shared/typescript/tools/__tests__/search-flights.test.ts
#	showcase/shared/typescript/tools/index.ts
#	showcase/shared/typescript/tools/sales-todos.ts
2026-04-13 19:57:45 -07:00
github-actions[bot] 88763b348c style: auto-fix formatting 2026-04-14 00:41:48 +00:00
Jordan Ritter e233d08f40 feat: upgrade all 17 showcase packages to full feature parity
Each package wraps shared tools in its framework's idiom, demo pages import
from @copilotkit/showcase-shared via tsconfig paths. Comprehensive Playwright
e2e tests adapted per package (130+ test files).

Cross-cutting fixes: debug routes (/ok→/health), dead code removal,
error boundaries, thread safety, langroid adapter, claude-sdk-ts text emission.
2026-04-13 17:38:55 -07:00