Commit Graph

4309 Commits

Author SHA1 Message Date
Jordan Ritter cf75ec58b1 fix: resolve remaining 3 deploy failures
- starter-langgraph-python: use next build --webpack (Turbopack default
  in Next 16 can't handle serverExternalPackages)
- starter-crewai-crews: bump ag-ui-protocol>=0.1.10 to match
  ag-ui-crewai 0.1.5 requirement
- shell-dojolike: add recharts dependency (used by shared frontend)
2026-04-13 21:41:50 -07:00
Jordan Ritter 5f857e26d8 feat: wire renderer selector into agentic-chat, gen-ui-tool-based, gen-ui-agent across all 17 packages
Each package's 3 GenUI demo pages now include the RendererSelector pill toggle,
allowing users to switch between 4 active rendering strategies (json-render
falls back to tool-based until the Zod 4 isolated bundle is built).
2026-04-13 21:37:37 -07:00
Jordan Ritter 952ae8b06e feat: renderer adapter — 5 GenUI strategies with shared components and middleware
- RendererSelector: pill toggle for 5 modes (tool-based, A2UI, hashbrown, json-render, open-genui)
- useRenderMode: state + localStorage + useAgentContext forwarding
- 4 renderer adapters: ToolBasedDashboard, A2UIDashboard, HashBrownDashboard, OpenGenUIDashboard
- json-render: deferred (Zod 4 isolation needed), documented architecture
- New shared components: DealCard, Pipeline, MetricCard
- Python render_mode middleware for context-driven output switching
- 338 tests (181 React + 52 TS + 105 Python)
2026-04-13 21:37:37 -07:00
Jordan Ritter 5aed8ee088 fix: resolve 4 remaining showcase deploy failures
- Remove test-integration-tmp from workflow (package was deleted)
- starter-langgraph-python: disable Turbopack for Next.js build
  (serverExternalPackages incompatible with Turbopack)
- starter-crewai-crews: pin crewai-tools~=0.47.1 to avoid version
  conflict with crewai==0.130.0
- shell-dojolike: add missing zod dependency (required by shared
  frontend modules)
2026-04-13 21:37:03 -07:00
Jordan Ritter e55139c62e fix: cp -r trailing slash creates double-nested dirs in CI deploy
The CI workflow's shared module copy step used trailing slashes on both
source and destination (cp -r src/ dest/src/), which on Linux copies the
*contents* into an already-created dest/src/ — resulting in
shared_frontend/src/src/ instead of shared_frontend/src/. Same issue
for shared_typescript/tools/.

Root cause confirmed via diagnostic instrumentation: index.ts existed at
the wrong depth, leaving the webpack alias target empty.

Fix: mkdir only the parent, cp without trailing slashes so the directory
itself is placed correctly. Also removes the diagnostic debug line from
pydantic-ai Dockerfile.
2026-04-13 21:22:37 -07:00
Jordan Ritter 817dbf3aae debug: add diagnostic output to pydantic-ai Dockerfile 2026-04-13 21:13:27 -07:00
Jordan Ritter 6dd9a575bc fix: simplify webpack alias to relative path (works in both local and CI Docker) 2026-04-13 21:09:00 -07:00
Jordan Ritter 506020848e fix: use process.cwd() instead of __dirname for webpack alias in Docker 2026-04-13 20:51:10 -07:00
Jordan Ritter e256dc3996 fix: resolve @copilotkit/showcase-shared via webpack alias in all showcase packages
transpilePackages tries to find the package in node_modules first, which
fails in Docker builds even though tsconfig paths and shared_frontend/src
are correctly set up. Replace with an explicit webpack resolve alias that
points directly to the shared_frontend/src directory.
2026-04-13 20:32:12 -07: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 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