-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathagentService.ts
More file actions
86 lines (73 loc) · 1.79 KB
/
agentService.ts
File metadata and controls
86 lines (73 loc) · 1.79 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
/**
* Agent Service - Handles API calls for agents
*/
import { getClient } from "../utils/client.js";
import type { AgentView } from "@runloop/api-client/resources/agents";
// Re-export types
export type Agent = AgentView;
export interface ListAgentsOptions {
limit?: number;
startingAfter?: string;
publicOnly?: boolean;
privateOnly?: boolean;
name?: string;
search?: string;
}
export interface ListAgentsResult {
agents: Agent[];
totalCount: number;
hasMore: boolean;
}
/**
* List agents with pagination
* Can filter to only return public agents for benchmark jobs
*/
export async function listAgents(
options: ListAgentsOptions,
): Promise<ListAgentsResult> {
const client = getClient();
const queryParams: {
limit?: number;
starting_after?: string;
is_public?: boolean;
name?: string;
search?: string;
} = {
limit: options.limit || 50,
};
if (options.startingAfter) {
queryParams.starting_after = options.startingAfter;
}
if (options.publicOnly) {
queryParams.is_public = true;
} else if (options.privateOnly) {
queryParams.is_public = false;
}
if (options.name) {
queryParams.name = options.name;
}
if (options.search) {
queryParams.search = options.search;
}
const page = await client.agents.list(queryParams);
const agents: Agent[] = [];
// Collect agents from the cursor page
for await (const agent of page) {
agents.push(agent);
if (options.limit && agents.length >= options.limit) {
break;
}
}
return {
agents,
totalCount: agents.length,
hasMore: false, // Cursor pagination doesn't give us this directly
};
}
/**
* Get agent by ID
*/
export async function getAgent(id: string): Promise<Agent> {
const client = getClient();
return client.agents.retrieve(id);
}