Skip to content

Commit e2217c4

Browse files
committed
merge main
2 parents 49f95e1 + e74e722 commit e2217c4

File tree

137 files changed

+24184
-427
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

137 files changed

+24184
-427
lines changed

.github/workflows/dojo-e2e.yml

Lines changed: 107 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,68 @@ on:
88

99
jobs:
1010
e2e:
11-
name: E2E Tests
12-
runs-on: depot-ubuntu-latest-8
11+
name: ${{ matrix.suite }}
12+
runs-on: depot-ubuntu-24.04
13+
strategy:
14+
fail-fast: false
15+
matrix:
16+
include:
17+
- suite: adk-middleware
18+
test_path: tests/adkMiddlewareTests
19+
services: ["dojo","adk-middleware"]
20+
wait_on: http://localhost:9999,tcp:localhost:8010
21+
- suite: agno
22+
test_path: tests/agnoTests
23+
services: ["dojo","agno"]
24+
wait_on: http://localhost:9999,tcp:localhost:8002
25+
- suite: crew-ai
26+
test_path: tests/crewAITests
27+
services: ["dojo","crew-ai"]
28+
wait_on: http://localhost:9999,tcp:localhost:8003
29+
- suite: langgraph-python
30+
test_path: tests/langgraphPythonTests
31+
services: ["dojo","langgraph-platform-python"]
32+
wait_on: http://localhost:9999,tcp:localhost:8005
33+
- suite: langgraph-typescript
34+
test_path: tests/langgraphTypescriptTests
35+
services: ["dojo","langgraph-platform-typescript"]
36+
wait_on: http://localhost:9999,tcp:localhost:8006
37+
- suite: langgraph-fastapi
38+
test_path: tests/langgraphFastAPITests
39+
services: ["dojo","langgraph-fastapi"]
40+
wait_on: http://localhost:9999,tcp:localhost:8004
41+
- suite: llama-index
42+
test_path: tests/llamaIndexTests
43+
services: ["dojo","llama-index"]
44+
wait_on: http://localhost:9999,tcp:localhost:8007
45+
- suite: mastra
46+
test_path: tests/mastraTests
47+
services: ["dojo","mastra"]
48+
wait_on: http://localhost:9999,tcp:localhost:8008
49+
- suite: mastra-agent-local
50+
test_path: tests/mastraAgentLocalTests
51+
services: ["dojo"]
52+
wait_on: http://localhost:9999
53+
- suite: middleware-starter
54+
test_path: tests/middlewareStarterTests
55+
services: ["dojo"]
56+
wait_on: http://localhost:9999
57+
- suite: pydantic-ai
58+
test_path: tests/pydanticAITests
59+
services: ["dojo","pydantic-ai"]
60+
wait_on: http://localhost:9999,tcp:localhost:8009
61+
- suite: server-starter
62+
test_path: tests/serverStarterTests
63+
services: ["dojo","server-starter"]
64+
wait_on: http://localhost:9999,tcp:localhost:8000
65+
- suite: server-starter-all
66+
test_path: tests/serverStarterAllFeaturesTests
67+
services: ["dojo","server-starter-all"]
68+
wait_on: http://localhost:9999,tcp:localhost:8001
69+
- suite: vercel-ai-sdk
70+
test_path: tests/vercelAISdkTests
71+
services: ["dojo"]
72+
wait_on: http://localhost:9999
1373

1474
steps:
1575
- name: Checkout code
@@ -25,6 +85,33 @@ jobs:
2585
with:
2686
version: 10.13.1
2787

88+
# Now that pnpm is available, cache its store to speed installs
89+
- name: Resolve pnpm store path
90+
id: pnpm-store
91+
run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
92+
93+
- name: Cache pnpm store
94+
uses: actions/cache@v4
95+
with:
96+
path: ${{ env.STORE_PATH }}
97+
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
98+
restore-keys: |
99+
${{ runner.os }}-pnpm-store-
100+
101+
# Cache Python tool caches and virtualenvs; restore only to avoid long saves
102+
- name: Cache Python dependencies (restore-only)
103+
id: cache-python
104+
uses: actions/cache/restore@v4
105+
with:
106+
path: |
107+
~/.cache/pip
108+
~/.cache/pypoetry
109+
~/.cache/uv
110+
**/.venv
111+
key: ${{ runner.os }}-pydeps-${{ hashFiles('**/poetry.lock', '**/pyproject.toml') }}
112+
restore-keys: |
113+
${{ runner.os }}-pydeps-
114+
28115
- name: Install Poetry
29116
uses: snok/install-poetry@v1
30117
with:
@@ -35,21 +122,14 @@ jobs:
35122
- name: Install uv
36123
uses: astral-sh/setup-uv@v6
37124

38-
- name: Setup pnpm cache
39-
uses: actions/cache@v4
40-
with:
41-
path: ~/.local/share/pnpm/store
42-
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
43-
restore-keys: |
44-
${{ runner.os }}-pnpm-store-
45-
46125
- name: Install dependencies
47126
working-directory: typescript-sdk
48127
run: pnpm install --frozen-lockfile
49128

50129
- name: Prepare dojo for e2e
51130
working-directory: typescript-sdk/apps/dojo
52-
run: node ./scripts/prep-dojo-everything.js -e2e
131+
if: ${{ join(matrix.services, ',') != '' }}
132+
run: node ./scripts/prep-dojo-everything.js --only ${{ join(matrix.services, ',') }}
53133

54134
- name: Install e2e dependencies
55135
working-directory: typescript-sdk/apps/dojo/e2e
@@ -61,6 +141,7 @@ jobs:
61141
env:
62142
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
63143
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
144+
if: ${{ contains(join(matrix.services, ','), 'langgraph-fastapi') || contains(join(matrix.services, ','), 'langgraph-platform-python') || contains(join(matrix.services, ','), 'langgraph-platform-typescript') }}
64145
run: |
65146
echo "OPENAI_API_KEY=${OPENAI_API_KEY}" > examples/python/.env
66147
echo "LANGSMITH_API_KEY=${LANGSMITH_API_KEY}" >> examples/python/.env
@@ -74,33 +155,29 @@ jobs:
74155
env:
75156
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}
76157
LANGSMITH_API_KEY: ${{ secrets.LANGSMITH_API_KEY }}
158+
GOOGLE_API_KEY: ${{ secrets.GOOGLE_API_KEY }}
159+
if: ${{ join(matrix.services, ',') != '' && contains(join(matrix.services, ','), 'dojo') }}
77160
with:
78161
run: |
79-
node ../scripts/run-dojo-everything.js
162+
node ../scripts/run-dojo-everything.js --only ${{ join(matrix.services, ',') }}
80163
working-directory: typescript-sdk/apps/dojo/e2e
81-
wait-on: |
82-
http://localhost:9999
83-
tcp:localhost:8000
84-
tcp:localhost:8001
85-
tcp:localhost:8002
86-
tcp:localhost:8003
87-
tcp:localhost:8004
88-
tcp:localhost:8005
89-
tcp:localhost:8006
90-
tcp:localhost:8007
91-
tcp:localhost:8008
92-
tcp:localhost:8009
93-
94-
- name: Run tests
164+
wait-on: ${{ matrix.wait_on }}
165+
wait-for: 300000
166+
167+
- name: Run tests – ${{ matrix.suite }}
95168
working-directory: typescript-sdk/apps/dojo/e2e
96169
env:
97170
BASE_URL: http://localhost:9999
98-
run: pnpm test
171+
PLAYWRIGHT_SUITE: ${{ matrix.suite }}
172+
run: |
173+
pnpm test -- ${{ matrix.test_path }}
99174
100-
- name: Upload traces
175+
- name: Upload traces – ${{ matrix.suite }}
101176
if: always() # Uploads artifacts even if tests fail
102177
uses: actions/upload-artifact@v4
103178
with:
104-
name: playwright-traces
105-
path: typescript-sdk/apps/dojo/e2e/test-results/
179+
name: ${{ matrix.suite }}-playwright-traces
180+
path: |
181+
typescript-sdk/apps/dojo/e2e/test-results/${{ matrix.suite }}/**/*
182+
typescript-sdk/apps/dojo/e2e/playwright-report/**/*
106183
retention-days: 7

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
1+
**/.claude/settings.local.json
12
.vscode/
23
.idea/

README.md

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ AG-UI is complementary to the other 2 top agentic protocols
6767
- AG-UI brings agents into user-facing applications
6868

6969
<div align="center">
70-
<img src="https://github.com/user-attachments/assets/0c1ec566-050b-4ef8-ab89-15be41abe64f" />
70+
<img width="2048" height="1182" alt="The Agent Protocol Stack" src="https://github.com/user-attachments/assets/41138f71-50be-4812-98aa-20e0ad595716" />
7171
</div>
72-
7372

7473
## 🚀 Features
7574

@@ -88,14 +87,14 @@ AG-UI was born from CopilotKit's initial partnership with LangGraph and CrewAI -
8887
| Framework | Status | AG-UI Resources | Integrations |
8988
| ------------------------------------------------------------------ | ------------------------ | ---------------------------------------------------------------------------- | ------------------------ |
9089
| No-framework | ✅ Supported | ➡️ Docs coming soon | |
91-
| [LangGraph](https://www.langchain.com/langgraph) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/langgraph/) [Demos](https://dojo.ag-ui.com/langgraph-fastapi/feature/shared_state) | Partnership |
92-
| [CrewAI](https://crewai.com/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/crewai-flows) [Demos](https://dojo.ag-ui.com/crewai/feature/shared_state) | Partnership |
93-
| [Mastra](https://mastra.ai/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/mastra/) [Demos](https://dojo.ag-ui.com/mastra/feature/shared_state) | 1st party |
94-
| [AG2](https://ag2.ai/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/ag2/) [Demos](https://dojo.ag-ui.com/ag2/feature/shared_state) | 1st party |
95-
| [Agno](https://github.com/agno-agi/agno) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/agno/) [Demos](https://dojo.ag-ui.com/agno/feature/shared_state) | 1st party |
96-
| [LlamaIndex](https://github.com/run-llama/llama_index) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/llamaindex/) [Demos](https://dojo.ag-ui.com/llamaindex/feature/shared_state) | 1st party |
97-
| [Pydantic AI](https://github.com/pydantic/pydantic-ai) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/pydantic-ai/) [Demos](https://dojo.ag-ui.com/pydantic-ai/feature/shared_state) | 1st party |
98-
| [Google ADK](https://google.github.io/adk-docs/get-started/) | 🛠[PR](https://github.com/ag-ui-protocol/ag-ui/pull/274) | | 1st party |
90+
| [LangGraph](https://www.langchain.com/langgraph) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/langgraph/) 🎮 [Demos](https://dojo.ag-ui.com/langgraph-fastapi/feature/shared_state) | Partnership |
91+
| [CrewAI](https://crewai.com/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/crewai-flows) 🎮 [Demos](https://dojo.ag-ui.com/crewai/feature/shared_state) | Partnership |
92+
| [Mastra](https://mastra.ai/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/mastra/) 🎮 [Demos](https://dojo.ag-ui.com/mastra) | 1st party |
93+
| [AG2](https://ag2.ai/) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/ag2/) | 1st party |
94+
| [Agno](https://github.com/agno-agi/agno) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/agno/) 🎮 [Demos](https://dojo.ag-ui.com/agno) | 1st party |
95+
| [LlamaIndex](https://github.com/run-llama/llama_index) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/llamaindex/) 🎮 [Demos](https://dojo.ag-ui.com/llamaindex/feature/shared_state) | 1st party |
96+
| [Pydantic AI](https://github.com/pydantic/pydantic-ai) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/pydantic-ai/) 🎮 [Demos](https://dojo.ag-ui.com/pydantic-ai/feature/shared_state) | 1st party |
97+
| [Google ADK](https://google.github.io/adk-docs/get-started/) | ✅ Supported |[Docs](https://docs.copilotkit.ai/adk) 🎮 [Demos](https://dojo.ag-ui.com/adk-middleware) | Partnership |
9998
| [AWS Bedrock Agents](https://aws.amazon.com/bedrock/agents/) | 🛠️ In Progress || 1st party |
10099
| [AWS Strands Agents](https://github.com/strands-agents/sdk-python) | 🛠️ In Progress || 1st Party |
101100
| [Vercel AI SDK](https://github.com/vercel/ai) | 🛠️ In Progress || Community |
@@ -118,8 +117,8 @@ AG-UI was born from CopilotKit's initial partnership with LangGraph and CrewAI -
118117
[View all supported frameworks →](https://ag-ui.com/frameworks)
119118

120119

121-
## ✨ Hello World App
122-
120+
## Examples
121+
### Hello World App
123122

124123
Video:
125124

@@ -129,12 +128,13 @@ https://agui-demo.vercel.app/
129128

130129

131130

132-
## 🧩 AG-UI Showcase: The AG-UI Dojo (Building-Blocks Viewer)
133-
The [AG-UI Dojo](https://dojo.ag-ui.com/langgraph-fastapi/feature/shared_state) showcases many of the building blocks that AG-UI supports ([AG-UI Dojo Source Code](https://github.com/ag-ui-protocol/ag-ui/tree/main/typescript-sdk/apps/dojo)) with each Agent Framework integration.
131+
## The AG-UI Dojo (Building-Blocks Viewer)
132+
The AG-UI Dojo demonstrates AG-UI's core building blocks through simple, focused examples—each just 50-200 lines of code.
133+
134+
View the source code for the Dojo and all framework integrations [here](https://github.com/ag-ui-protocol/ag-ui/tree/main/typescript-sdk/apps/dojo).
134135

135-
The building blocks are designed to be simple and focused -- between 50-200 lines of code.
136+
https://github.com/user-attachments/assets/c298eea8-3f39-4a94-b968-7712429b0c49
136137

137-
https://github.com/user-attachments/assets/a67d3d54-36b2-4c7a-ac69-a0ca01365d5b
138138

139139

140140
## 🙋🏽‍♂️ Contributing to AG-UI

0 commit comments

Comments
 (0)