Commit Graph

5028 Commits

Author SHA1 Message Date
Max Korp 5fdc07dfb9 Reapply "fix: catch async errors in LangGraphAgent.run() Observable"
This reverts commit ca233aea20.
2026-04-09 13:01:40 -07:00
Jordan Ritter 99343ae539 feat: add failure cause and blame context to starter smoke Slack alerts (#3703)
## Summary

- Include failure root cause (build error, agent crash, or test failure)
in Slack alerts and GitHub issues
- Include blame context: PR author/commit for PR-triggered failures, or
recent commits/releases for scheduled failures
- Helps triage without clicking through to the CI run

## Example Slack message (scheduled failure)

```
Starter smoke test failing: *pydantic-ai*

Agent crash:
ModuleNotFoundError: No module named 'agent'

No starter code changes — likely a floating dependency update or upstream CopilotKit release
Recent CopilotKit releases:
def5678 chore: release 1.56.0

Run: https://github.com/CopilotKit/CopilotKit/actions/runs/12345
```

## Example (PR failure)

```
Starter smoke test failing: *langgraph-python*

Build failure:
ERR_PNPM_RECURSIVE_RUN_FIRST_FAIL @repo/app@0.1.0 build: next build

Triggered by PR #3700 (max): DRAFT: Add intelligence to langgraph python example
Head: abc123def

Run: https://github.com/CopilotKit/CopilotKit/actions/runs/12345
```

## Test plan

- [ ] Trigger a manual workflow_dispatch run and verify Slack message
includes cause
- [ ] Wait for next scheduled run failure to verify blame context

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-09 12:51:03 -07:00
Jordan Ritter 324d5949f7 fix: increase ms-agent-dotnet smoke timeout to 50s (#3704)
GitHub Models (Azure inference) responds slower than OpenAI — the 25s
timeout was causing consistent smoke failures. Increased to 50s
(maxDuration 60s). This is a band-aid until aimock proxy is deployed.
2026-04-09 12:49:44 -07:00
Jordan Ritter a3a0cae762 fix: use toJSON for safe Slack payload escaping 2026-04-09 12:48:23 -07:00
Jordan Ritter edfc48585e fix: use GitHub API for blame context instead of deep clone (repo is 750MB) 2026-04-09 12:46:00 -07:00
Jordan Ritter 1fc8b00128 fix: use full clone for git log blame context on all triggers 2026-04-09 12:45:08 -07:00
Jordan Ritter 8194630f45 fix: move capture before teardown, fix fetch-depth, safe env injection 2026-04-09 12:43:50 -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 78285f448a fix: remove duplicate GITHUB_OUTPUT redirect 2026-04-09 12:42:06 -07:00
Jordan Ritter 4c1b70ea7b feat: include blame context in failure alerts (PR author/commits or dep drift) 2026-04-09 12:37:04 -07:00
Jordan Ritter 9a377c7574 feat: include failure cause in Slack alerts and GitHub issues 2026-04-09 12:37:04 -07:00
Jordan Ritter 61267fb7e5 fix: switch showcase Slack alerts to slackapi/slack-github-action (#3702)
## Summary

- Switch all 3 showcase Slack workflows from raw `curl` to
`slackapi/slack-github-action@v2.1.0` for consistency with the starter
E2E workflow
- Gate drift-detection Slack alerts to schedule-only (`failure() &&
github.event_name == 'schedule'`) so PR failures don't spam #oss-alerts

## Files changed

- `.github/workflows/showcase_drift-detection.yml`
- `.github/workflows/showcase_smoke-monitor.yml`
- `.github/workflows/showcase_redirect-report.yml`

## Test plan

- [ ] Smoke monitor still posts to #oss-alerts on failure
- [ ] Drift detection only posts on scheduled runs, not manual/PR
triggers

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-09 12:27:55 -07:00
Jordan Ritter 123a5d76f9 fix: switch Slack alerts to slackapi/slack-github-action, gate drift alerts to schedule-only 2026-04-09 12:24:34 -07:00
Tyler Slaton a49bb11040 chore: version packages (next) (#3701) 2026-04-09 11:16:21 -07:00
github-actions[bot] 1bc4786759 chore: version packages (next) 2026-04-09 18:09:30 +00:00
Tyler Slaton e377f3a66f chore(a2ui-renderer): bump version for a2ui-middleware to 0.0.4 (#3700) 2026-04-09 11:08:05 -07:00
Tyler Slaton 62c604213c chore(a2ui-renderer): bump version for a2ui-middleware to 0.0.4
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-04-09 11:05:10 -07:00
Jordan Ritter a9056b6b7c feat: add e2e smoke tests for all 12 starter templates (#3698)
## Summary

- Add automated e2e smoke tests for all 12 CopilotKit starter templates
(`npx copilotkit init` starters)
- Tests run inside Docker using aimock as the LLM backend — no API keys
needed
- 4 test levels per starter: health, agent endpoint, chat round-trip, UI
interaction
- CI runs every 6h (catches floating dep breakage), on release, on PR
changes, and manual dispatch
- Scaffold generator updated to produce test files for new integrations
automatically

## What this catches

The exact bug that hit this week: a CopilotKit release floated
dependencies that broke the `langgraph-python` starter. Users hit a
visible error on page load. These tests would have caught it within 6
hours.

## Architecture

Each starter gets a 3-service Docker Compose stack:
- **aimock** — deterministic LLM mock server
(`ghcr.io/copilotkit/aimock:latest`)
- **agent** — runs the same way users do (`uv run langgraph dev`,
`uvicorn`, etc.)
- **app** — standalone Next.js build with agent URL patched for Docker
networking

Playwright runs inside the Docker network (no host port conflicts, full
parallelization in CI).

## Starters covered

langgraph-python, pydantic-ai, crewai-crews, adk, agno, llamaindex,
strands-python, ms-agent-framework-python, langgraph-js,
langgraph-fastapi, ms-agent-framework-dotnet, mastra

All 12 starters pass all 4 tests (48/48).

## Test plan

- [x] All 12 starters build, start, and pass 4 tests locally
- [ ] CI workflow runs successfully on this PR
- [ ] Verify scheduled trigger fires correctly (after merge)

## Spec

https://www.notion.so/33d3aa38185281e4a93cfc1fdba2aa23

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-09 10:44:51 -07:00
Tyler Slaton 7a996cf503 chore(changeset): enter pre-mode (#3699) 2026-04-09 10:22:59 -07:00
Tyler Slaton 7efb9ee994 chore(changeset): enter pre-mode
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-04-09 10:14:18 -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 74fc015dbf fix: remove GHCR login — public images should pull without auth 2026-04-09 09:18:52 -07:00
Jordan Ritter b8dc9ad843 fix: add packages:read permission for GHCR aimock image pull 2026-04-09 09:17:24 -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 7e7311bf21 ci: add workflow for starter smoke tests 2026-04-09 08:33:25 -07:00
Jordan Ritter 7ddc0d8b2e feat: add Docker test infrastructure for all 12 starters 2026-04-09 08:33:21 -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 ea6133a705 feat: unified showcase platform (#3684)
## Summary

Replace the fragmented collection of CopilotKit demo sites with a
unified, categorized, consistently-hosted showcase platform.

- **17 integrations** deployed on Railway with live demos (LangGraph
Python/TS/FastAPI, Google ADK, Mastra, CrewAI, PydanticAI, Agno, AG2,
LlamaIndex, AWS Strands, MS Agent Python/.NET, Claude SDK Python/TS,
Langroid, Spring AI)
- **73 animated preview GIFs** with per-demo capture automation
- **Full docs system** with MDX rendering, hierarchical nav, search,
inline demos
- **Health monitoring** — `/api/smoke` on all backends, 15-min smoke
monitor, 6-hour drift detection, Slack alerts
- **SEO redirect infrastructure** — 315 redirect entries covering 870
URLs for docs.copilotkit.ai migration, PostHog tracking, monthly
decommission reports
- **Automated docs sync** — transform pipeline auto-pushes clean changes
from main, PRs only for conflicts
- **Mobile responsive** — hamburger nav, dropdown filter, full-width
layout

## Architecture

- Showcase shell (Next.js on Railway) reads integration manifests,
embeds demos via iframe
- Each integration is a standalone Docker container with Next.js
frontend + agent backend
- Template generator (`pnpm create-integration`) produces complete
package scaffolds
- Health checks standardized: `/health` on port 8000 (our backends),
`/ok` on port 8123 (LangGraph Platform)

## Test plan

- [ ] All 17 Railway services respond to `/api/health` with agent=ok
- [ ] Shell loads at showcase.copilotkit.ai
- [ ] Demo drawer opens and shows live preview for each integration
- [ ] Smoke monitor workflow runs on 15-min cron
- [ ] SEO redirects: `curl -I /coagents/quickstart` returns 301 to
`/docs/integrations/langgraph/quickstart`
- [ ] Docs sync: push to main docs triggers auto-sync workflow

## Related

- [Notion:
Goals](https://www.notion.so/copilotkit/32d3aa3818528122a93edfe69fd1b517)
- [Notion: SEO Redirect
Spec](https://www.notion.so/copilotkit/33c3aa38185281d7b243c5cf0a7c14cb)
- [Notion: Health
Monitoring](https://www.notion.so/copilotkit/33b3aa38185281cb8316f9c54bb8d667)
- [Notion: Content
Ownership](https://www.notion.so/copilotkit/33c3aa38185281a6b672de8a873657d2)
- PR #3650 (Atai's shell-dojolike exploration, rebased on this branch)
- ag-ui-protocol/ag-ui#1462 (Java SDK fixes found during Spring AI
integration)

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-08 21:29:56 -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
Jordan Ritter bd119c29e1 fix(docs): update stale model names + add CI validation (#3666)
## Summary

Comprehensive docs quality infrastructure — model name validation,
executable doc tests, and 8 community docs fixes rolled up.

### Docs fixes (supersedes 8 PRs)
- **gpt-5.2 → gpt-5.4** across 70 files, 124 occurrences (supersedes
#3655)
- **Anthropic model IDs** dots → hyphens to match API/AI SDK format
(supersedes #3656)
- **LangGraph FastAPI quickstart** — missing `import uvicorn`, missing
`MemorySaver` checkpointer, `port` string→int (supersedes #3661, with
contributor's `langgrapg` typo fixed)
- **AG2 ContextVariables import** — moved from `autogen` to
`autogen.agentchat` per latest AG2 (supersedes #3658, verified via
Docker)
- **CrewAI Flows** — comment out deprecated CLI option (supersedes
#3667)
- **Pydantic quickstart** — pin Starlette 0.45.3 (1.0.0 is incompatible,
verified via Docker) (supersedes #3660)
- **CopilotChat example** — add missing `default` export for Next.js
page components (supersedes #3669)
- **globals.css import** — add to all 9 quickstart layout examples so
customization section works (supersedes #3665)

### Model name validation (new)
- `docs/model-allowlist.json` — maintained list of valid model names by
provider (OpenAI, Anthropic, Google, Cohere, Meta)
- `scripts/validate-doc-model-names.ts` — CI lint that extracts model
names from docs code blocks and validates against allowlist
- 20 tests

### Executable doc tests (new, Phase 1)
- `scripts/doc-tests/extract.ts` — remark + remark-mdx AST parser finds
`doctest`-tagged code blocks in MDX
- `scripts/doc-tests/run.ts` — execution harness: installs deps, points
at aimock, runs server/script/component snippets
- `.github/workflows/test_doc-examples.yml` — CI triggered on `docs/**`
changes (previously excluded from ALL CI)
- LangGraph FastAPI quickstart tagged as first `doctest="server"`
example
- 10 tests for extraction

### Spec
[Executable Doc Tests proposal on
Notion](https://www.notion.so/33c3aa38185281388a21e8dfe752ac5e)

## Supersedes
| PR | Fix | Status |
|----|-----|--------|
| #3655 | gpt-5.2-mini → gpt-5.4-mini |  Included (all 70 files, not
just 22) |
| #3656 | Anthropic dots → hyphens |  Included |
| #3658 | AG2 ContextVariables import |  Included (verified via Docker)
|
| #3660 | Starlette pin |  Included (verified via Docker) |
| #3661 | LangGraph FastAPI quickstart |  Included (with typo fix) |
| #3665 | globals.css import |  Included |
| #3667 | CrewAI deprecated CLI |  Included |
| #3669 | CopilotChat default export |  Included |

All 8 PRs can be closed when this merges.

## Test plan
- [x] Model name validator passes (0 violations)
- [x] 20 validator unit tests pass
- [x] 10 extraction unit tests pass
- [x] Build passes
- [x] Commitlint passes
- [ ] CI workflow validates doc examples on docs/** changes

🤖 Generated with [Claude Code](https://claude.com/claude-code)
2026-04-08 19:53:11 -07:00
Jordan Ritter aabce2c548 chore: add remark/unified deps for doc test extraction 2026-04-08 19:46:15 -07:00
Tyler Slaton e77fb44f68 chore: version packages (#3686) 2026-04-08 19:35:49 -07:00
github-actions[bot] 0093bdbaa4 chore: version packages 2026-04-09 02:26:42 +00:00
Tyler Slaton 3d9c0fc349 chore: release 1.55.1 (#3685) 2026-04-08 19:25:23 -07:00
Tyler Slaton b0a62cd980 chore: release 1.55.1
Signed-off-by: Tyler Slaton <tyler@copilotkit.ai>
2026-04-08 19:16:47 -07:00
Tyler Slaton 1f4674fcae chore: version packages (next) (#3683) 2026-04-08 19:00:27 -07:00
Jordan Ritter 84fb4c6c0a feat: executable doc tests — extract, run, and validate MDX code snippets
AST-based extraction (remark + remark-mdx) finds doctest-tagged code
blocks in MDX files. Execution harness runs them against aimock with
category-specific validation (server health-check, script exit code,
component type-check). CI workflow triggers on docs/** changes.

- stripCommonIndent for JSX-indented blocks
- validateDepName for shell injection prevention
- try/finally process cleanup on all spawn paths
- 10 extraction tests
2026-04-08 18:55:39 -07:00
Jordan Ritter d8ca03fe46 feat: add model name validation for docs code blocks
Allowlist-based CI lint that extracts model names from docs MDX code
blocks and validates against docs/model-allowlist.json. Catches stale
model references (gpt-5.2 after gpt-5.4 ships) before they reach users.

- Regex extraction from model="...", model: "...", provider/model patterns
- Provider prefix stripping (openai/, anthropic/, google/, etc.)
- 20 unit tests
2026-04-08 18:55:25 -07:00