Skip to content

Commit 54c7ba0

Browse files
Merge branch 'ag-ui-protocol:main' into kotlinsdk
2 parents 0835b5b + 0406f35 commit 54c7ba0

File tree

15 files changed

+55
-91
lines changed

15 files changed

+55
-91
lines changed

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ AG-UI was born from CopilotKit's initial partnership with LangGraph and CrewAI -
9797
| [LlamaIndex](https://github.com/run-llama/llama_index) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/llamaindex) | 1st party |
9898
| [Pydantic AI](https://github.com/pydantic/pydantic-ai) | ✅ Supported | ➡️ [Docs](https://docs.copilotkit.ai/pydantic-ai) | 1st party |
9999
| [Vercel AI SDK](https://github.com/vercel/ai) | 🛠️ In Progress || Community |
100-
| [Google ADK](https://google.github.io/adk-docs/get-started/) | 🛠️ In Progress || Community |
100+
| [Google ADK](https://google.github.io/adk-docs/get-started/) | 🛠️ [PR](https://github.com/ag-ui-protocol/ag-ui/pull/274) || Community |
101101
| [OpenAI Agent SDK](https://openai.github.io/openai-agents-python/) | 🛠️ In Progress || Community |
102102
| [AWS Bedrock Agents](https://aws.amazon.com/bedrock/agents/) | 🛠️ In Progress || 1st party |
103103
| [Cloudflare Agents](https://developers.cloudflare.com/agents/) | 💡 Open to Contributions || Community |

typescript-sdk/apps/dojo/e2e/tests/crewAITests/predictvieStateUpdatePage.spec.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import {
22
test,
33
expect,
4-
waitForAIResponse,
54
retryOnAIFailure,
65
} from "../../test-isolation-helper";
76
import { PredictiveStateUpdatesPage } from "../../pages/crewAIPages/PredictiveStateUpdatesPage";
87

98
test.describe("Predictive Status Updates Feature", () => {
10-
test.fixme("[CrewAI] should interact with agent and approve asked changes", async ({
9+
test("[CrewAI] should interact with agent and approve asked changes", async ({
1110
page,
1211
}) => {
1312
await retryOnAIFailure(async () => {
@@ -22,7 +21,7 @@ test.describe("Predictive Status Updates Feature", () => {
2221
await predictiveStateUpdates.sendMessage(
2322
"Give me a story for a dragon called Atlantis in document"
2423
);
25-
await waitForAIResponse(page);
24+
await page.waitForTimeout(2000);
2625
await predictiveStateUpdates.getPredictiveResponse();
2726
await predictiveStateUpdates.getUserApproval();
2827
await predictiveStateUpdates.confirmedChangesResponse.isVisible();
@@ -33,7 +32,7 @@ test.describe("Predictive Status Updates Feature", () => {
3332

3433
// Send update to change the dragon name
3534
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
36-
await waitForAIResponse(page);
35+
await page.waitForTimeout(2000);
3736
await predictiveStateUpdates.verifyHighlightedText();
3837
await predictiveStateUpdates.getUserApproval();
3938
await predictiveStateUpdates.confirmedChangesResponse.nth(1).isVisible();
@@ -44,7 +43,7 @@ test.describe("Predictive Status Updates Feature", () => {
4443
});
4544
});
4645

47-
test.fixme("[CrewAI] should interact with agent and reject asked changes", async ({
46+
test("[CrewAI] should interact with agent and reject asked changes", async ({
4847
page,
4948
}) => {
5049
await retryOnAIFailure(async () => {
@@ -70,7 +69,7 @@ test.describe("Predictive Status Updates Feature", () => {
7069

7170
// Send update to change the dragon name
7271
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
73-
await waitForAIResponse(page);
72+
await page.waitForTimeout(2000);
7473
await predictiveStateUpdates.verifyHighlightedText();
7574
await predictiveStateUpdates.getUserRejection();
7675
await predictiveStateUpdates.rejectedChangesResponse.isVisible();

typescript-sdk/apps/dojo/e2e/tests/langgraphFastAPITests/predictvieStateUpdatePage.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import {
22
test,
33
expect,
4-
waitForAIResponse,
54
retryOnAIFailure,
65
} from "../../test-isolation-helper";
76
import { PredictiveStateUpdatesPage } from "../../pages/langGraphFastAPIPages/PredictiveStateUpdatesPage";
87

98
test.describe("Predictive Status Updates Feature", () => {
10-
test.fixme("[LangGraph FastAPI] should interact with agent and approve asked changes", async ({
9+
test("[LangGraph FastAPI] should interact with agent and approve asked changes", async ({
1110
page,
1211
}) => {
1312
await retryOnAIFailure(async () => {
@@ -23,7 +22,6 @@ test.describe("Predictive Status Updates Feature", () => {
2322
await predictiveStateUpdates.sendMessage(
2423
"Give me a story for a dragon called Atlantis in document"
2524
);
26-
await waitForAIResponse(page);
2725
await page.waitForTimeout(2000);
2826

2927
await predictiveStateUpdates.getPredictiveResponse();
@@ -37,7 +35,6 @@ test.describe("Predictive Status Updates Feature", () => {
3735
await page.waitForTimeout(3000);
3836

3937
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
40-
await waitForAIResponse(page);
4138
await page.waitForTimeout(2000);
4239

4340
await predictiveStateUpdates.verifyHighlightedText();
@@ -50,7 +47,7 @@ test.describe("Predictive Status Updates Feature", () => {
5047
});
5148
});
5249

53-
test.fixme("[LangGraph FastAPI] should interact with agent and reject asked changes", async ({
50+
test("[LangGraph FastAPI] should interact with agent and reject asked changes", async ({
5451
page,
5552
}) => {
5653
await retryOnAIFailure(async () => {
@@ -66,7 +63,6 @@ test.describe("Predictive Status Updates Feature", () => {
6663
await predictiveStateUpdates.sendMessage(
6764
"Give me a story for a dragon called Atlantis in document"
6865
);
69-
await waitForAIResponse(page);
7066
await page.waitForTimeout(2000);
7167

7268
await predictiveStateUpdates.getPredictiveResponse();
@@ -80,7 +76,6 @@ test.describe("Predictive Status Updates Feature", () => {
8076
await page.waitForTimeout(3000);
8177

8278
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
83-
await waitForAIResponse(page);
8479
await page.waitForTimeout(2000);
8580

8681
await predictiveStateUpdates.verifyHighlightedText();

typescript-sdk/apps/dojo/e2e/tests/langgraphTests/predictvieStateUpdatePage.spec.ts

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
import {
22
test,
33
expect,
4-
waitForAIResponse,
54
retryOnAIFailure,
65
} from "../../test-isolation-helper";
76
import { PredictiveStateUpdatesPage } from "../../pages/langGraphPages/PredictiveStateUpdatesPage";
87

98
test.describe("Predictive Status Updates Feature", () => {
10-
test.fixme("[LangGraph] should interact with agent and approve asked changes", async ({
9+
test("[LangGraph] should interact with agent and approve asked changes", async ({
1110
page,
1211
}) => {
1312
await retryOnAIFailure(async () => {
@@ -23,7 +22,6 @@ test.describe("Predictive Status Updates Feature", () => {
2322
await predictiveStateUpdates.sendMessage(
2423
"Give me a story for a dragon called Atlantis in document"
2524
);
26-
await waitForAIResponse(page);
2725
await page.waitForTimeout(2000);
2826

2927
await predictiveStateUpdates.getPredictiveResponse();
@@ -37,7 +35,6 @@ test.describe("Predictive Status Updates Feature", () => {
3735
await page.waitForTimeout(3000);
3836

3937
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
40-
await waitForAIResponse(page);
4138
await page.waitForTimeout(2000);
4239

4340
await predictiveStateUpdates.verifyHighlightedText();
@@ -50,7 +47,7 @@ test.describe("Predictive Status Updates Feature", () => {
5047
});
5148
});
5249

53-
test.fixme("[LangGraph] should interact with agent and reject asked changes", async ({
50+
test("[LangGraph] should interact with agent and reject asked changes", async ({
5451
page,
5552
}) => {
5653
await retryOnAIFailure(async () => {
@@ -66,7 +63,6 @@ test.describe("Predictive Status Updates Feature", () => {
6663
await predictiveStateUpdates.sendMessage(
6764
"Give me a story for a dragon called Atlantis in document"
6865
);
69-
await waitForAIResponse(page);
7066
await page.waitForTimeout(2000);
7167

7268
await predictiveStateUpdates.getPredictiveResponse();
@@ -80,7 +76,6 @@ test.describe("Predictive Status Updates Feature", () => {
8076
await page.waitForTimeout(3000);
8177

8278
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
83-
await waitForAIResponse(page);
8479
await page.waitForTimeout(2000);
8580

8681
await predictiveStateUpdates.verifyHighlightedText();

typescript-sdk/apps/dojo/e2e/tests/pydanticAITests/predictvieStateUpdatePage.spec.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import {
22
test,
33
expect,
4-
waitForAIResponse,
54
retryOnAIFailure,
65
} from "../../test-isolation-helper";
76
import { PredictiveStateUpdatesPage } from "../../pages/pydanticAIPages/PredictiveStateUpdatesPage";
@@ -22,7 +21,7 @@ test.describe("Predictive Status Updates Feature", () => {
2221
await predictiveStateUpdates.sendMessage(
2322
"Give me a story for a dragon called Atlantis in document"
2423
);
25-
await waitForAIResponse(page);
24+
await page.waitForTimeout(2000);
2625
await predictiveStateUpdates.getPredictiveResponse();
2726
await predictiveStateUpdates.getUserApproval();
2827
await predictiveStateUpdates.confirmedChangesResponse.isVisible();
@@ -33,7 +32,7 @@ test.describe("Predictive Status Updates Feature", () => {
3332

3433
// Send update to change the dragon name
3534
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
36-
await waitForAIResponse(page);
35+
await page.waitForTimeout(2000);
3736
await predictiveStateUpdates.verifyHighlightedText();
3837
await predictiveStateUpdates.getUserApproval();
3938
await predictiveStateUpdates.confirmedChangesResponse.nth(1).isVisible();
@@ -70,7 +69,7 @@ test.describe("Predictive Status Updates Feature", () => {
7069

7170
// Send update to change the dragon name
7271
await predictiveStateUpdates.sendMessage("Change dragon name to Lola");
73-
await waitForAIResponse(page);
72+
await page.waitForTimeout(2000);
7473
await predictiveStateUpdates.verifyHighlightedText();
7574
await predictiveStateUpdates.getUserRejection();
7675
await predictiveStateUpdates.rejectedChangesResponse.isVisible();

typescript-sdk/apps/dojo/e2e/tests/serverStarterAllFeaturesTests/predictvieStateUpdatePage.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
import { test, expect, waitForAIResponse, retryOnAIFailure, } from "../../test-isolation-helper";
1+
import { test, expect, retryOnAIFailure, } from "../../test-isolation-helper";
22
import { PredictiveStateUpdatesPage } from "../../pages/serverStarterAllFeaturesPages/PredictiveStateUpdatesPage";
33

44
test.describe("Predictive Status Updates Feature", () => {
5-
test.fixme("[Server Starter all features] should interact with agent and approve asked changes", async ({ page, }) => {
5+
test("[Server Starter all features] should interact with agent and approve asked changes", async ({ page, }) => {
66
await retryOnAIFailure(async () => {
77
const predictiveStateUpdates = new PredictiveStateUpdatesPage(page);
88

@@ -14,7 +14,7 @@ test.describe("Predictive Status Updates Feature", () => {
1414
await page.waitForTimeout(2000);
1515

1616
await predictiveStateUpdates.sendMessage("Hi");
17-
await waitForAIResponse(page);
17+
await page.waitForTimeout(2000);
1818
await page.waitForTimeout(2000);
1919

2020
await predictiveStateUpdates.getPredictiveResponse();
@@ -27,7 +27,7 @@ test.describe("Predictive Status Updates Feature", () => {
2727
await page.waitForTimeout(3000);
2828

2929
await predictiveStateUpdates.sendMessage("Change the dog name");
30-
await waitForAIResponse(page);
30+
await page.waitForTimeout(2000);
3131
await page.waitForTimeout(2000);
3232

3333
await predictiveStateUpdates.verifyHighlightedText();
@@ -41,7 +41,7 @@ test.describe("Predictive Status Updates Feature", () => {
4141
});
4242
});
4343

44-
test.fixme("[Server Starter all features] should interact with agent and reject asked changes", async ({ page, }) => {
44+
test("[Server Starter all features] should interact with agent and reject asked changes", async ({ page, }) => {
4545
await retryOnAIFailure(async () => {
4646
const predictiveStateUpdates = new PredictiveStateUpdatesPage(page);
4747

@@ -53,7 +53,7 @@ test.describe("Predictive Status Updates Feature", () => {
5353
await page.waitForTimeout(2000);
5454

5555
await predictiveStateUpdates.sendMessage("Hi");
56-
await waitForAIResponse(page);
56+
await page.waitForTimeout(2000);
5757
await page.waitForTimeout(2000);
5858

5959
await predictiveStateUpdates.getPredictiveResponse();
@@ -66,7 +66,7 @@ test.describe("Predictive Status Updates Feature", () => {
6666
await page.waitForTimeout(3000);
6767

6868
await predictiveStateUpdates.sendMessage("Change the dog name");
69-
await waitForAIResponse(page);
69+
await page.waitForTimeout(2000);
7070
await page.waitForTimeout(2000);
7171

7272
await predictiveStateUpdates.verifyHighlightedText();

typescript-sdk/apps/dojo/src/app/layout.tsx

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ export default function RootLayout({
3232
<body className={`${geistSans.variable} ${geistMono.variable} antialiased`}>
3333
<ThemeProvider
3434
attribute="class"
35-
defaultTheme="system"
36-
enableSystem
35+
defaultTheme="light"
36+
enableSystem={false}
37+
themes={['light']}
3738
disableTransitionOnChange
3839
>
3940
<Suspense>

typescript-sdk/apps/dojo/src/components/sidebar/sidebar.tsx

Lines changed: 3 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { Feature } from "@/types/integration";
2121
import { useURLParams } from "@/contexts/url-params-context";
2222
import { View } from "@/types/interface";
2323
import { getTitleForCurrentDomain } from "@/utils/domain-config";
24+
import { useTheme } from "next-themes";
2425

2526
interface SidebarProps {
2627
isMobile?: boolean;
@@ -30,8 +31,9 @@ interface SidebarProps {
3031
export function Sidebar({ isMobile, onMobileClose }: SidebarProps) {
3132
const router = useRouter();
3233
const pathname = usePathname();
34+
const { theme, setTheme } = useTheme();
35+
const isDarkTheme = theme === "dark"
3336
const { view, frameworkPickerHidden, viewPickerHidden, featurePickerHidden, setView} = useURLParams();
34-
const [isDarkTheme, setIsDarkTheme] = useState<boolean>(false);
3537

3638
// Extract the current integration ID from the pathname
3739
const pathParts = pathname.split("/");
@@ -67,38 +69,6 @@ export function Sidebar({ isMobile, onMobileClose }: SidebarProps) {
6769
router.push(`/${integrationId}`);
6870
};
6971

70-
// Check for dark mode using media query
71-
useEffect(() => {
72-
// Check if we're in the browser
73-
if (typeof window !== "undefined") {
74-
// Initial check
75-
setIsDarkTheme(window.matchMedia("(prefers-color-scheme: dark)").matches);
76-
77-
// Listen for changes
78-
const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)");
79-
const handleChange = (e: MediaQueryListEvent) => {
80-
setIsDarkTheme(e.matches);
81-
};
82-
83-
mediaQuery.addEventListener("change", handleChange);
84-
85-
// Also check for .dark class which is added by next-themes
86-
const observer = new MutationObserver(() => {
87-
setIsDarkTheme(document.documentElement.classList.contains("dark"));
88-
});
89-
90-
observer.observe(document.documentElement, {
91-
attributes: true,
92-
attributeFilter: ["class"],
93-
});
94-
95-
return () => {
96-
mediaQuery.removeEventListener("change", handleChange);
97-
observer.disconnect();
98-
};
99-
}
100-
}, []);
101-
10272
const tabClass = `cursor-pointer flex-1 h-8 px-2 text-sm text-primary shadow-none bg-none border-none font-medium gap-1 rounded-lg data-[state=active]:bg-white data-[state=active]:text-primary data-[state=active]:shadow-none`
10373

10474
return (
Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,8 @@
11
"use client";
22

33
import * as React from "react";
4-
import { ThemeProvider as NextThemesProvider } from "next-themes";
4+
import { ThemeProvider as NextThemesProvider, ThemeProviderProps as NextThemeProviderProps } from "next-themes";
55

6-
type ThemeProviderProps = {
7-
children: React.ReactNode;
8-
attribute?: string;
9-
defaultTheme?: string;
10-
enableSystem?: boolean;
11-
disableTransitionOnChange?: boolean;
12-
};
13-
14-
export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
15-
// @ts-expect-error -- ignore
6+
export function ThemeProvider({ children, ...props }: NextThemeProviderProps) {
167
return <NextThemesProvider {...props}>{children}</NextThemesProvider>;
178
}

typescript-sdk/integrations/langgraph/examples/python/poetry.lock

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)