branch:
callable-agent.ts
1286 bytesRaw
import { callable } from "agents";
import { PlaygroundAgent as Agent } from "../../shared/playground-agent";
export class CallableAgent extends Agent<Env, {}> {
@callable({ description: "Add two numbers" })
add(a: number, b: number): number {
return a + b;
}
@callable({ description: "Multiply two numbers" })
multiply(a: number, b: number): number {
return a * b;
}
@callable({ description: "Echo a message" })
echo(message: string): string {
return `Echo: ${message}`;
}
@callable({ description: "Get current timestamp" })
getTimestamp(): string {
return new Date().toISOString();
}
@callable({ description: "Simulate an async operation" })
async slowOperation(delayMs: number): Promise<string> {
await new Promise((resolve) => setTimeout(resolve, delayMs));
return `Completed after ${delayMs}ms`;
}
@callable({ description: "Intentionally throws an error" })
throwError(message: string): never {
throw new Error(message);
}
@callable({ description: "List all callable methods" })
listMethods(): Array<{ name: string; description?: string }> {
return Array.from(this.getCallableMethods().entries()).map(
([name, meta]) => ({
name,
description: meta.description
})
);
}
}