Commit Graph

2900 Commits

Author SHA1 Message Date
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 0d7534ae15 chore: update pnpm lockfile for shared frontend package 2026-04-13 17:39:42 -07:00
Jordan Ritter c070403014 feat: Docker and CI support for shared showcase modules
- CI copies shared_python, shared_frontend/src, shared_typescript/tools into
  each package's build context before Docker build
- 12 Python Dockerfiles: COPY shared_python, ENV PYTHONPATH
- All Dockerfiles: npm install --legacy-peer-deps + tsconfig paths for
  @copilotkit/showcase-shared (no npm dependency needed)
- spring-ai: unpinned eclipse-temurin:17 base images
- Aimock: 18 deterministic fixtures for all demo scenarios
2026-04-13 17:39:05 -07: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
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
copilotkit-devops-bot[bot] c11816f259 chore: auto-sync docs from main (2026-04-14) 2026-04-14 00:10:21 +00:00
Abubakar 63a6a2733f docs(langgraph): warn on useInterrupt agentId and add starterAgent to examples
Add a short callout and agentId: starterAgent across LangGraph interrupt
snippets in docs and the matching showcase interrupt-based page; add the
useInterrupt import to the showcase main snippet.
2026-04-13 20:50:57 +05:00
Jordan Ritter 9a9a8e380e fix: add lockfiles to showcase packages, switch to npm ci for reproducible builds 2026-04-12 23:40:22 -07:00
Jordan Ritter 1bdc85845a fix: pin all showcase Docker base images to specific minor versions 2026-04-12 23:40:16 -07:00
github-actions[bot] cd9bd28d3c chore: auto-sync docs from main (2026-04-12) 2026-04-12 20:53:03 +00:00
Jordan Ritter 734d552e37 fix: include failure details in Showcase E2E Slack alerts
The Slack notification for E2E failures only said "Showcase E2E suite
failed" with a link. Now captures playwright output, extracts failed
test names and error messages, and includes them in the Slack message
as a code block so the team can see what broke without clicking through.
2026-04-11 18:21:24 -07:00
Jordan Ritter cab3afb81f fix: set human_input_mode=NEVER on ag2 showcase agent
The ConversableAgent defaults to human_input_mode="ALWAYS", which
prompts for user feedback after each response. In the showcase this
blocks with "Please give feedback to the sender..." instead of
executing tools.
2026-04-11 18:07:38 -07:00
github-actions[bot] 92a84f004c style: auto-fix formatting 2026-04-10 13:30:24 -07:00
Jordan Ritter 80ea96fefe feat: Switch preview captures from GIF to MP4 with GitHub Release storage 2026-04-10 13:30:24 -07:00
Jordan Ritter 1d725e04da fix: format shell-dojolike files and add binary check exclusion 2026-04-09 16:45:33 -07:00
Jordan Ritter ac698e03c2 feat: add Dockerfile and deploy pipeline for shell-dojolike 2026-04-09 16:43:01 -07:00
Atai Barkai a369ebfa7c feat: add copilotkit-ui-theme skill with test screenshots 2026-04-09 16:36:53 -07:00
Atai Barkai f026c05fe4 feat: fine-tune spacing and text sizing to match dojo source 2026-04-09 16:36:53 -07:00
Atai Barkai 062d3410f6 feat: match dojo typography with Plus Jakarta Sans and Spline Sans Mono 2026-04-09 16:36:53 -07:00
Atai Barkai e00de97a68 feat: match exact dojo styling from ag-ui source code 2026-04-09 16:36:53 -07:00
Atai Barkai 469ecc17f7 feat: match dojo styling with floating glass cards and warm bg 2026-04-09 16:36:53 -07:00
Atai Barkai 7312585e9e feat: add syntax highlighting to code view using highlight.js 2026-04-09 16:36:53 -07:00
Atai Barkai 072f43da07 feat: add purple accent bar and polish view toggle buttons 2026-04-09 16:36:52 -07:00
Atai Barkai a05df85fcb feat: scaffold shell-dojolike alternative frontend for showcase 2026-04-09 16:36:52 -07:00
Jordan Ritter 40ac155068 chore: sync docs from main (model name fixes + new pages) (#3724)
Auto-synced from main docs. Picks up #3666's model name fixes and new
pages.

**8 files auto-transformed** (new pages that didn't exist in showcase):
- `generative-ui/open-generative-ui.mdx`
- `integrations/built-in-agent/` (6 pages: advanced-config, mcp-apps,
mcp-servers, model-selection, quickstart, server-tools)
- `reference/v1/classes/llm-adapters/LangChainAdapter.mdx`

**67 files flagged for review** — these have showcase-local
modifications that conflict with main changes. Not included in this PR —
they need manual review or will be addressed by Humaira's PRs
(#3712-#3719).
2026-04-09 15:23:57 -07:00
Jordan Ritter 9205ee20ba fix: make ms-agent-dotnet endpoint configurable via OPENAI_BASE_URL for aimock proxy 2026-04-09 15:15:25 -07:00
Jordan Ritter faf8fe9925 chore: sync docs from main (model name fixes from #3666, new pages) 2026-04-09 14:58:31 -07:00
Jordan Ritter 1294bd86f3 fix: reset docs sync marker to valid main commit (pre-3666) 2026-04-09 14:55:36 -07:00
Jordan Ritter 0e53a48c19 feat: add aimock proxy for showcase smoke checks 2026-04-09 13:53:58 -07:00
Jordan Ritter 9602a01b33 fix: increase ms-agent-dotnet smoke timeout to 50s (GitHub Models is slow) 2026-04-09 12:43:25 -07:00
Jordan Ritter 6ef6540587 fix: make checkAgentEndpoint accept Hono router 404 as proof runtime is mounted 2026-04-09 09:33:06 -07:00
Jordan Ritter ef55874072 fix: format files and add GHCR login to CI workflow 2026-04-09 09:16:05 -07:00
Jordan Ritter 4bcb7e17d5 feat: update showcase generator to produce test files 2026-04-09 08:33:41 -07:00
Jordan Ritter 2fb0d65ae7 feat: add starter-smoke.spec.ts with 12-starter registry 2026-04-09 08:33:16 -07:00
Jordan Ritter 1935aee8d5 feat: extract shared test helpers from showcase smoke tests 2026-04-09 08:33:13 -07:00
Jordan Ritter 204dd29a97 fix: standardize health checks on /health port 8000 2026-04-08 21:22:35 -07:00
Jordan Ritter 6d05499ecd feat: add automated docs sync from main with transform pipeline 2026-04-08 19:59:31 -07:00
Jordan Ritter 6f679bd092 feat: deploy Claude SDK, Langroid, and Spring AI integrations 2026-04-08 19:59:30 -07:00
Jordan Ritter 31f046d0ac feat: add SEO redirect infrastructure with PostHog tracking 2026-04-08 19:59:30 -07:00
Jordan Ritter 2c543adc7a feat: add mobile responsive design with hamburger nav and dropdown filter 2026-04-08 19:59:30 -07:00
Jordan Ritter 101a783c0c fix: replace TODO placeholders and fix markdown rendering in demo content 2026-04-08 19:59:30 -07:00
Jordan Ritter 5284614227 feat: add health monitoring with smoke endpoints, drift detection, and Slack alerts 2026-04-08 19:59:30 -07:00
Jordan Ritter 759ffeb29a feat: add animated preview GIFs with per-demo capture automation 2026-04-08 19:59:30 -07:00
Jordan Ritter 7238241127 feat: add integration explorer with guided flow, feature catalog, and partner ordering 2026-04-08 19:59:29 -07:00
Jordan Ritter f1b197b580 feat: add docs system with MDX rendering, hierarchical nav, inline demos, and content cleanup 2026-04-08 19:59:29 -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