diff --git a/docs/quickstart/clients.mdx b/docs/quickstart/clients.mdx index 62b7e02d5..9c3ccad6c 100644 --- a/docs/quickstart/clients.mdx +++ b/docs/quickstart/clients.mdx @@ -145,7 +145,7 @@ export const agent = new MastraAgent({ agent: new Agent({ name: "AG-UI Assistant", instructions: ` - You are a helpful AI assistant. Be friendly, conversational, and helpful. + You are a helpful AI assistant. Be friendly, conversational, and helpful. Answer questions to the best of your ability and engage in natural conversation. `, model: openai("gpt-4o"), @@ -175,7 +175,7 @@ Now let's create the interactive chat interface. Create `src/index.ts`: ```typescript import * as readline from "readline" import { agent } from "./agent" -import { randomUUID } from "node:crypto" +import { randomUUID } from "@ag-ui/client" const rl = readline.createInterface({ input: process.stdin, diff --git a/typescript-sdk/apps/client-cli-example/src/index.ts b/typescript-sdk/apps/client-cli-example/src/index.ts index e2a9c60c0..212fdcba5 100644 --- a/typescript-sdk/apps/client-cli-example/src/index.ts +++ b/typescript-sdk/apps/client-cli-example/src/index.ts @@ -1,6 +1,6 @@ import * as readline from "readline"; import { agent } from "./agent"; -import { randomUUID } from "node:crypto"; +import { randomUUID } from "@ag-ui/client"; const rl = readline.createInterface({ input: process.stdin, diff --git a/typescript-sdk/integrations/a2a-middleware/src/index.ts b/typescript-sdk/integrations/a2a-middleware/src/index.ts index 0bf425046..7e5b90e16 100644 --- a/typescript-sdk/integrations/a2a-middleware/src/index.ts +++ b/typescript-sdk/integrations/a2a-middleware/src/index.ts @@ -19,7 +19,7 @@ import { A2AClient } from "@a2a-js/sdk/client"; import { AgentCard, SendMessageResponse, SendMessageSuccessResponse } from "@a2a-js/sdk"; import { Observable, Subscriber, tap } from "rxjs"; import { createSystemPrompt, sendMessageToA2AAgentTool } from "./utils"; -import { randomUUID } from "crypto"; +import { randomUUID } from "@ag-ui/client"; export interface A2AAgentConfig extends AgentConfig { agentUrls: string[]; diff --git a/typescript-sdk/integrations/langgraph/src/agent.ts b/typescript-sdk/integrations/langgraph/src/agent.ts index 64025084f..fd67cb190 100644 --- a/typescript-sdk/integrations/langgraph/src/agent.ts +++ b/typescript-sdk/integrations/langgraph/src/agent.ts @@ -11,7 +11,7 @@ import { Interrupt, Thread, } from "@langchain/langgraph-sdk"; -import { randomUUID } from "node:crypto"; +import { randomUUID } from "@ag-ui/client"; import { LangGraphPlatformMessage, CustomEventNames, @@ -960,7 +960,7 @@ export class LangGraphAgent extends AbstractAgent { if (!retrievedAssistant) { console.error(` No agent found with graph ID ${this.graphId} found..\n - + These are the available agents: [${assistants.map((a) => `${a.graph_id} (ID: ${a.assistant_id})`).join(", ")}] `); throw new Error("No agent id found"); diff --git a/typescript-sdk/integrations/mastra/src/mastra.ts b/typescript-sdk/integrations/mastra/src/mastra.ts index a3e6816de..63aab3f86 100644 --- a/typescript-sdk/integrations/mastra/src/mastra.ts +++ b/typescript-sdk/integrations/mastra/src/mastra.ts @@ -15,7 +15,7 @@ import { AbstractAgent, EventType } from "@ag-ui/client"; import type { StorageThreadType } from "@mastra/core"; import { Agent as LocalMastraAgent } from "@mastra/core/agent"; import { RuntimeContext } from "@mastra/core/runtime-context"; -import { randomUUID } from "crypto"; +import { randomUUID } from "@ag-ui/client"; import { Observable } from "rxjs"; import { MastraClient } from "@mastra/client-js"; type RemoteMastraAgent = ReturnType; diff --git a/typescript-sdk/integrations/vercel-ai-sdk/src/index.ts b/typescript-sdk/integrations/vercel-ai-sdk/src/index.ts index 2443892b1..e2d3436c4 100644 --- a/typescript-sdk/integrations/vercel-ai-sdk/src/index.ts +++ b/typescript-sdk/integrations/vercel-ai-sdk/src/index.ts @@ -26,7 +26,7 @@ import { ToolChoice, ToolSet, } from "ai"; -import { randomUUID } from "crypto"; +import { randomUUID } from "@ag-ui/client"; import { z } from "zod"; type ProcessedEvent = diff --git a/typescript-sdk/packages/client/src/index.ts b/typescript-sdk/packages/client/src/index.ts index 6aa4a1afb..aa4a0a5ef 100644 --- a/typescript-sdk/packages/client/src/index.ts +++ b/typescript-sdk/packages/client/src/index.ts @@ -4,5 +4,6 @@ export * from "./transform"; export * from "./run"; export * from "./legacy"; export * from "./agent"; +export * from "./utils"; export * from "@ag-ui/core"; export * from "./chunks"; diff --git a/typescript-sdk/packages/client/src/utils.ts b/typescript-sdk/packages/client/src/utils.ts index f129f3493..7c03e8064 100644 --- a/typescript-sdk/packages/client/src/utils.ts +++ b/typescript-sdk/packages/client/src/utils.ts @@ -1,3 +1,5 @@ +import { v4 as uuidv4 } from 'uuid'; + export const structuredClone_ = (obj: T): T => { if (typeof structuredClone === "function") { return structuredClone(obj); @@ -9,3 +11,11 @@ export const structuredClone_ = (obj: T): T => { return { ...obj } as T; } }; + +/** + * Generate a random UUID v4 + * Cross-platform compatible (Node.js, browsers, React Native) + */ +export function randomUUID(): string { + return uuidv4(); +}