@gopherhole/sdk 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +140 -73
- package/dist/index.d.mts +505 -0
- package/dist/index.d.ts +478 -40
- package/dist/index.js +449 -197
- package/dist/index.mjs +440 -0
- package/package.json +39 -7
- package/src/index.ts +617 -204
- package/src/types.ts +232 -0
- package/tsconfig.json +9 -6
- package/listen-marketclaw.ts +0 -26
- package/send-from-nova.ts +0 -28
- package/test.ts +0 -86
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,505 @@
|
|
|
1
|
+
import { EventEmitter } from 'eventemitter3';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* A2A Protocol Types
|
|
5
|
+
* Based on Google's Agent-to-Agent Protocol specification
|
|
6
|
+
*/
|
|
7
|
+
interface AgentCard {
|
|
8
|
+
name: string;
|
|
9
|
+
description?: string;
|
|
10
|
+
url: string;
|
|
11
|
+
provider?: {
|
|
12
|
+
organization: string;
|
|
13
|
+
url?: string;
|
|
14
|
+
};
|
|
15
|
+
version: string;
|
|
16
|
+
documentationUrl?: string;
|
|
17
|
+
capabilities: AgentCapabilities;
|
|
18
|
+
authentication?: AgentAuthentication;
|
|
19
|
+
defaultInputModes?: InputMode[];
|
|
20
|
+
defaultOutputModes?: OutputMode[];
|
|
21
|
+
skills?: AgentSkill$1[];
|
|
22
|
+
}
|
|
23
|
+
interface AgentCapabilities {
|
|
24
|
+
streaming?: boolean;
|
|
25
|
+
pushNotifications?: boolean;
|
|
26
|
+
stateTransitionHistory?: boolean;
|
|
27
|
+
}
|
|
28
|
+
interface AgentAuthentication {
|
|
29
|
+
schemes: string[];
|
|
30
|
+
credentials?: string;
|
|
31
|
+
}
|
|
32
|
+
interface AgentSkill$1 {
|
|
33
|
+
id: string;
|
|
34
|
+
name: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
tags?: string[];
|
|
37
|
+
examples?: string[];
|
|
38
|
+
inputModes?: ContentMode[];
|
|
39
|
+
outputModes?: ContentMode[];
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Content mode - MIME type string or legacy shorthand
|
|
43
|
+
* Examples: 'text/plain', 'text/markdown', 'application/json', 'image/png'
|
|
44
|
+
* Legacy: 'text', 'file', 'data' (still supported for backwards compat)
|
|
45
|
+
*/
|
|
46
|
+
type ContentMode = string;
|
|
47
|
+
type InputMode = ContentMode;
|
|
48
|
+
type OutputMode = ContentMode;
|
|
49
|
+
interface A2AMessage {
|
|
50
|
+
role: 'user' | 'agent';
|
|
51
|
+
parts: Part[];
|
|
52
|
+
metadata?: Record<string, unknown>;
|
|
53
|
+
}
|
|
54
|
+
type Part = TextPart | FilePart | DataPart;
|
|
55
|
+
interface TextPart {
|
|
56
|
+
kind: 'text';
|
|
57
|
+
text: string;
|
|
58
|
+
}
|
|
59
|
+
interface FilePart {
|
|
60
|
+
kind: 'file';
|
|
61
|
+
file: FileContent;
|
|
62
|
+
}
|
|
63
|
+
interface DataPart {
|
|
64
|
+
kind: 'data';
|
|
65
|
+
data: DataContent;
|
|
66
|
+
}
|
|
67
|
+
interface FileContent {
|
|
68
|
+
name?: string;
|
|
69
|
+
mimeType?: string;
|
|
70
|
+
bytes?: string;
|
|
71
|
+
uri?: string;
|
|
72
|
+
}
|
|
73
|
+
interface DataContent {
|
|
74
|
+
mimeType: string;
|
|
75
|
+
data: string;
|
|
76
|
+
}
|
|
77
|
+
interface A2ATask {
|
|
78
|
+
id: string;
|
|
79
|
+
contextId: string;
|
|
80
|
+
status: A2ATaskStatus;
|
|
81
|
+
history?: A2AMessage[];
|
|
82
|
+
artifacts?: A2AArtifact[];
|
|
83
|
+
metadata?: Record<string, unknown>;
|
|
84
|
+
}
|
|
85
|
+
interface A2ATaskStatus {
|
|
86
|
+
state: TaskState;
|
|
87
|
+
timestamp: string;
|
|
88
|
+
message?: A2AMessage;
|
|
89
|
+
}
|
|
90
|
+
type TaskState = 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'canceled' | 'rejected' | 'auth-required';
|
|
91
|
+
interface A2AArtifact {
|
|
92
|
+
name?: string;
|
|
93
|
+
description?: string;
|
|
94
|
+
parts: Part[];
|
|
95
|
+
index?: number;
|
|
96
|
+
append?: boolean;
|
|
97
|
+
lastChunk?: boolean;
|
|
98
|
+
metadata?: Record<string, unknown>;
|
|
99
|
+
}
|
|
100
|
+
interface JsonRpcRequest {
|
|
101
|
+
jsonrpc: '2.0';
|
|
102
|
+
method: string;
|
|
103
|
+
params?: Record<string, unknown>;
|
|
104
|
+
id: string | number;
|
|
105
|
+
}
|
|
106
|
+
interface JsonRpcResponse<T = unknown> {
|
|
107
|
+
jsonrpc: '2.0';
|
|
108
|
+
result?: T;
|
|
109
|
+
error?: JsonRpcError;
|
|
110
|
+
id: string | number;
|
|
111
|
+
}
|
|
112
|
+
interface JsonRpcError {
|
|
113
|
+
code: number;
|
|
114
|
+
message: string;
|
|
115
|
+
data?: unknown;
|
|
116
|
+
}
|
|
117
|
+
declare const JsonRpcErrorCodes: {
|
|
118
|
+
readonly ParseError: -32700;
|
|
119
|
+
readonly InvalidRequest: -32600;
|
|
120
|
+
readonly MethodNotFound: -32601;
|
|
121
|
+
readonly InvalidParams: -32602;
|
|
122
|
+
readonly InternalError: -32603;
|
|
123
|
+
readonly TaskNotFound: -32001;
|
|
124
|
+
readonly TaskNotCancelable: -32002;
|
|
125
|
+
readonly PushNotificationNotSupported: -32003;
|
|
126
|
+
readonly UnsupportedOperation: -32004;
|
|
127
|
+
readonly ContentTypeNotSupported: -32005;
|
|
128
|
+
readonly InvalidAgentCard: -32006;
|
|
129
|
+
};
|
|
130
|
+
interface PushNotificationConfig {
|
|
131
|
+
url: string;
|
|
132
|
+
token?: string;
|
|
133
|
+
authentication?: {
|
|
134
|
+
scheme: string;
|
|
135
|
+
credentials?: string;
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
interface TaskPushNotificationConfig {
|
|
139
|
+
id: string;
|
|
140
|
+
taskId: string;
|
|
141
|
+
url: string;
|
|
142
|
+
token?: string;
|
|
143
|
+
authentication?: {
|
|
144
|
+
scheme: string;
|
|
145
|
+
credentials?: string;
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
interface MessageSendConfiguration {
|
|
149
|
+
agentId?: string;
|
|
150
|
+
contextId?: string;
|
|
151
|
+
historyLength?: number;
|
|
152
|
+
pushNotificationConfig?: PushNotificationConfig;
|
|
153
|
+
blocking?: boolean;
|
|
154
|
+
acceptedOutputModes?: OutputMode[];
|
|
155
|
+
}
|
|
156
|
+
interface TaskQueryConfiguration {
|
|
157
|
+
id: string;
|
|
158
|
+
historyLength?: number;
|
|
159
|
+
}
|
|
160
|
+
interface TaskListConfiguration {
|
|
161
|
+
contextId?: string;
|
|
162
|
+
pageSize?: number;
|
|
163
|
+
pageToken?: string;
|
|
164
|
+
sortOrder?: 'asc' | 'desc';
|
|
165
|
+
includeArtifacts?: boolean;
|
|
166
|
+
}
|
|
167
|
+
interface TaskStatusUpdateEvent {
|
|
168
|
+
type: 'status';
|
|
169
|
+
taskId: string;
|
|
170
|
+
contextId: string;
|
|
171
|
+
status: A2ATaskStatus;
|
|
172
|
+
final: boolean;
|
|
173
|
+
}
|
|
174
|
+
interface TaskArtifactUpdateEvent {
|
|
175
|
+
type: 'artifact';
|
|
176
|
+
taskId: string;
|
|
177
|
+
contextId: string;
|
|
178
|
+
artifact: A2AArtifact;
|
|
179
|
+
}
|
|
180
|
+
type TaskEvent = TaskStatusUpdateEvent | TaskArtifactUpdateEvent;
|
|
181
|
+
|
|
182
|
+
interface GopherHoleOptions {
|
|
183
|
+
/** API key (starts with gph_) */
|
|
184
|
+
apiKey: string;
|
|
185
|
+
/** Hub URL (defaults to production) */
|
|
186
|
+
hubUrl?: string;
|
|
187
|
+
/** Agent card to register on connect */
|
|
188
|
+
agentCard?: AgentCardConfig;
|
|
189
|
+
/** Auto-reconnect on disconnect */
|
|
190
|
+
autoReconnect?: boolean;
|
|
191
|
+
/** Reconnect delay in ms */
|
|
192
|
+
reconnectDelay?: number;
|
|
193
|
+
/** Max reconnect attempts */
|
|
194
|
+
maxReconnectAttempts?: number;
|
|
195
|
+
}
|
|
196
|
+
/** Agent card configuration for registration */
|
|
197
|
+
interface AgentCardConfig {
|
|
198
|
+
name: string;
|
|
199
|
+
description?: string;
|
|
200
|
+
url?: string;
|
|
201
|
+
version?: string;
|
|
202
|
+
skills?: AgentSkillConfig[];
|
|
203
|
+
}
|
|
204
|
+
/** Skill configuration */
|
|
205
|
+
interface AgentSkillConfig {
|
|
206
|
+
id: string;
|
|
207
|
+
name: string;
|
|
208
|
+
description?: string;
|
|
209
|
+
tags?: string[];
|
|
210
|
+
examples?: string[];
|
|
211
|
+
inputModes?: string[];
|
|
212
|
+
outputModes?: string[];
|
|
213
|
+
}
|
|
214
|
+
interface Message {
|
|
215
|
+
from: string;
|
|
216
|
+
taskId?: string;
|
|
217
|
+
payload: MessagePayload;
|
|
218
|
+
timestamp: number;
|
|
219
|
+
}
|
|
220
|
+
interface MessagePayload {
|
|
221
|
+
role: 'user' | 'agent';
|
|
222
|
+
parts: MessagePart[];
|
|
223
|
+
}
|
|
224
|
+
interface MessagePart {
|
|
225
|
+
kind: 'text' | 'file' | 'data';
|
|
226
|
+
text?: string;
|
|
227
|
+
mimeType?: string;
|
|
228
|
+
data?: string;
|
|
229
|
+
uri?: string;
|
|
230
|
+
}
|
|
231
|
+
interface Task {
|
|
232
|
+
id: string;
|
|
233
|
+
contextId: string;
|
|
234
|
+
status: TaskStatus;
|
|
235
|
+
history?: MessagePayload[];
|
|
236
|
+
artifacts?: Artifact[];
|
|
237
|
+
}
|
|
238
|
+
interface TaskStatus {
|
|
239
|
+
state: 'submitted' | 'working' | 'input-required' | 'completed' | 'failed' | 'canceled' | 'rejected';
|
|
240
|
+
timestamp: string;
|
|
241
|
+
message?: string;
|
|
242
|
+
}
|
|
243
|
+
interface Artifact {
|
|
244
|
+
name: string;
|
|
245
|
+
mimeType: string;
|
|
246
|
+
data?: string;
|
|
247
|
+
uri?: string;
|
|
248
|
+
}
|
|
249
|
+
interface SendOptions {
|
|
250
|
+
/** Existing context/conversation ID */
|
|
251
|
+
contextId?: string;
|
|
252
|
+
/** Push notification URL */
|
|
253
|
+
pushNotificationUrl?: string;
|
|
254
|
+
/** History length to include */
|
|
255
|
+
historyLength?: number;
|
|
256
|
+
}
|
|
257
|
+
type EventMap = {
|
|
258
|
+
connect: () => void;
|
|
259
|
+
disconnect: (reason: string) => void;
|
|
260
|
+
error: (error: Error) => void;
|
|
261
|
+
message: (message: Message) => void;
|
|
262
|
+
taskUpdate: (task: Task) => void;
|
|
263
|
+
};
|
|
264
|
+
declare class GopherHole extends EventEmitter<EventMap> {
|
|
265
|
+
private apiKey;
|
|
266
|
+
private hubUrl;
|
|
267
|
+
private apiUrl;
|
|
268
|
+
private ws;
|
|
269
|
+
private autoReconnect;
|
|
270
|
+
private reconnectDelay;
|
|
271
|
+
private maxReconnectAttempts;
|
|
272
|
+
private reconnectAttempts;
|
|
273
|
+
private reconnectTimer;
|
|
274
|
+
private pingInterval;
|
|
275
|
+
private agentId;
|
|
276
|
+
private agentCard;
|
|
277
|
+
constructor(apiKeyOrOptions: string | GopherHoleOptions);
|
|
278
|
+
/**
|
|
279
|
+
* Update agent card (sends to hub if connected)
|
|
280
|
+
*/
|
|
281
|
+
updateCard(card: AgentCardConfig): Promise<void>;
|
|
282
|
+
/**
|
|
283
|
+
* Connect to the GopherHole hub via WebSocket
|
|
284
|
+
*/
|
|
285
|
+
connect(): Promise<void>;
|
|
286
|
+
/**
|
|
287
|
+
* Disconnect from the hub
|
|
288
|
+
*/
|
|
289
|
+
disconnect(): void;
|
|
290
|
+
/**
|
|
291
|
+
* Send a message to another agent
|
|
292
|
+
*/
|
|
293
|
+
send(toAgentId: string, payload: MessagePayload, options?: SendOptions): Promise<Task>;
|
|
294
|
+
/**
|
|
295
|
+
* Send a text message to another agent
|
|
296
|
+
*/
|
|
297
|
+
sendText(toAgentId: string, text: string, options?: SendOptions): Promise<Task>;
|
|
298
|
+
/**
|
|
299
|
+
* Get a task by ID
|
|
300
|
+
*/
|
|
301
|
+
getTask(taskId: string, historyLength?: number): Promise<Task>;
|
|
302
|
+
/**
|
|
303
|
+
* List tasks
|
|
304
|
+
*/
|
|
305
|
+
listTasks(options?: {
|
|
306
|
+
contextId?: string;
|
|
307
|
+
pageSize?: number;
|
|
308
|
+
pageToken?: string;
|
|
309
|
+
}): Promise<{
|
|
310
|
+
tasks: Task[];
|
|
311
|
+
nextPageToken?: string;
|
|
312
|
+
totalSize: number;
|
|
313
|
+
}>;
|
|
314
|
+
/**
|
|
315
|
+
* Cancel a task
|
|
316
|
+
*/
|
|
317
|
+
cancelTask(taskId: string): Promise<Task>;
|
|
318
|
+
/**
|
|
319
|
+
* Reply to a message/task (sends back to the original caller)
|
|
320
|
+
*/
|
|
321
|
+
reply(taskId: string, payload: MessagePayload, toAgentId?: string): Promise<Task>;
|
|
322
|
+
/**
|
|
323
|
+
* Reply with text
|
|
324
|
+
*/
|
|
325
|
+
replyText(taskId: string, text: string): Promise<Task>;
|
|
326
|
+
/**
|
|
327
|
+
* Make a JSON-RPC call to the A2A endpoint
|
|
328
|
+
*/
|
|
329
|
+
private rpc;
|
|
330
|
+
/**
|
|
331
|
+
* Handle incoming WebSocket messages
|
|
332
|
+
*/
|
|
333
|
+
private handleMessage;
|
|
334
|
+
/**
|
|
335
|
+
* Start ping interval
|
|
336
|
+
*/
|
|
337
|
+
private startPing;
|
|
338
|
+
/**
|
|
339
|
+
* Stop ping interval
|
|
340
|
+
*/
|
|
341
|
+
private stopPing;
|
|
342
|
+
/**
|
|
343
|
+
* Schedule reconnection
|
|
344
|
+
*/
|
|
345
|
+
private scheduleReconnect;
|
|
346
|
+
/**
|
|
347
|
+
* Get connection state
|
|
348
|
+
*/
|
|
349
|
+
get connected(): boolean;
|
|
350
|
+
/**
|
|
351
|
+
* Get the agent ID (available after connect)
|
|
352
|
+
*/
|
|
353
|
+
get id(): string | null;
|
|
354
|
+
/**
|
|
355
|
+
* Discover public agents with comprehensive search
|
|
356
|
+
*/
|
|
357
|
+
discover(options?: DiscoverOptions): Promise<DiscoverResult>;
|
|
358
|
+
/**
|
|
359
|
+
* Discover all agents in your tenant (no limit)
|
|
360
|
+
*/
|
|
361
|
+
discoverTenantAgents(): Promise<DiscoverResult>;
|
|
362
|
+
/**
|
|
363
|
+
* Search agents with fuzzy matching on description
|
|
364
|
+
*/
|
|
365
|
+
searchAgents(query: string, options?: Omit<DiscoverOptions, 'query'>): Promise<DiscoverResult>;
|
|
366
|
+
/**
|
|
367
|
+
* Find agents by category
|
|
368
|
+
*/
|
|
369
|
+
findByCategory(category: string, options?: Omit<DiscoverOptions, 'category'>): Promise<DiscoverResult>;
|
|
370
|
+
/**
|
|
371
|
+
* Find agents by tag
|
|
372
|
+
*/
|
|
373
|
+
findByTag(tag: string, options?: Omit<DiscoverOptions, 'tag'>): Promise<DiscoverResult>;
|
|
374
|
+
/**
|
|
375
|
+
* Find agents by skill tag (searches within agent skills)
|
|
376
|
+
*/
|
|
377
|
+
findBySkillTag(skillTag: string, options?: Omit<DiscoverOptions, 'skillTag'>): Promise<DiscoverResult>;
|
|
378
|
+
/**
|
|
379
|
+
* Find agents that support a specific input/output mode
|
|
380
|
+
*/
|
|
381
|
+
findByContentMode(mode: string, options?: Omit<DiscoverOptions, 'contentMode'>): Promise<DiscoverResult>;
|
|
382
|
+
/**
|
|
383
|
+
* Get top-rated agents
|
|
384
|
+
*/
|
|
385
|
+
getTopRated(limit?: number): Promise<DiscoverResult>;
|
|
386
|
+
/**
|
|
387
|
+
* Get most popular agents (by usage)
|
|
388
|
+
*/
|
|
389
|
+
getPopular(limit?: number): Promise<DiscoverResult>;
|
|
390
|
+
/**
|
|
391
|
+
* Get featured/curated agents
|
|
392
|
+
*/
|
|
393
|
+
getFeatured(): Promise<{
|
|
394
|
+
featured: PublicAgent[];
|
|
395
|
+
}>;
|
|
396
|
+
/**
|
|
397
|
+
* Get available categories
|
|
398
|
+
*/
|
|
399
|
+
getCategories(): Promise<{
|
|
400
|
+
categories: AgentCategory[];
|
|
401
|
+
}>;
|
|
402
|
+
/**
|
|
403
|
+
* Get detailed info about a public agent
|
|
404
|
+
*/
|
|
405
|
+
getAgentInfo(agentId: string): Promise<AgentInfoResult>;
|
|
406
|
+
/**
|
|
407
|
+
* Rate an agent (requires authentication)
|
|
408
|
+
*/
|
|
409
|
+
rateAgent(agentId: string, rating: number, review?: string): Promise<RatingResult>;
|
|
410
|
+
/**
|
|
411
|
+
* Get best agent for a task using smart matching
|
|
412
|
+
* Searches by query and returns the top-rated match
|
|
413
|
+
*/
|
|
414
|
+
findBestAgent(query: string, options?: {
|
|
415
|
+
category?: string;
|
|
416
|
+
minRating?: number;
|
|
417
|
+
pricing?: 'free' | 'paid' | 'any';
|
|
418
|
+
}): Promise<PublicAgent | null>;
|
|
419
|
+
/**
|
|
420
|
+
* Find agents similar to a given agent
|
|
421
|
+
*/
|
|
422
|
+
findSimilar(agentId: string, limit?: number): Promise<DiscoverResult>;
|
|
423
|
+
}
|
|
424
|
+
interface DiscoverOptions {
|
|
425
|
+
/** Search query (fuzzy matches name, description, tags) */
|
|
426
|
+
query?: string;
|
|
427
|
+
/** Filter by category */
|
|
428
|
+
category?: string;
|
|
429
|
+
/** Filter by tag */
|
|
430
|
+
tag?: string;
|
|
431
|
+
/** Filter by skill tag (searches within agent skills) */
|
|
432
|
+
skillTag?: string;
|
|
433
|
+
/** Filter by content mode (MIME type, e.g., 'text/markdown', 'image/png') */
|
|
434
|
+
contentMode?: string;
|
|
435
|
+
/** Sort order */
|
|
436
|
+
sort?: 'rating' | 'popular' | 'recent';
|
|
437
|
+
/** Max results (default 20, max 100; ignored when scope=tenant) */
|
|
438
|
+
limit?: number;
|
|
439
|
+
/** Pagination offset */
|
|
440
|
+
offset?: number;
|
|
441
|
+
/** Scope: 'tenant' returns only same-tenant agents with no limit */
|
|
442
|
+
scope?: 'tenant';
|
|
443
|
+
}
|
|
444
|
+
interface DiscoverResult {
|
|
445
|
+
agents: PublicAgent[];
|
|
446
|
+
count: number;
|
|
447
|
+
offset: number;
|
|
448
|
+
}
|
|
449
|
+
interface PublicAgent {
|
|
450
|
+
id: string;
|
|
451
|
+
name: string;
|
|
452
|
+
description: string | null;
|
|
453
|
+
category: string | null;
|
|
454
|
+
tags: string[];
|
|
455
|
+
pricing: 'free' | 'paid' | 'contact';
|
|
456
|
+
avgRating: number;
|
|
457
|
+
ratingCount: number;
|
|
458
|
+
tenantName: string;
|
|
459
|
+
websiteUrl: string | null;
|
|
460
|
+
docsUrl: string | null;
|
|
461
|
+
}
|
|
462
|
+
interface AgentCategory {
|
|
463
|
+
name: string;
|
|
464
|
+
count: number;
|
|
465
|
+
}
|
|
466
|
+
interface AgentInfoResult {
|
|
467
|
+
agent: PublicAgent & {
|
|
468
|
+
agentCard: {
|
|
469
|
+
name: string;
|
|
470
|
+
description?: string;
|
|
471
|
+
skills?: AgentSkill[];
|
|
472
|
+
} | null;
|
|
473
|
+
stats: {
|
|
474
|
+
avgRating: number;
|
|
475
|
+
ratingCount: number;
|
|
476
|
+
totalMessages: number;
|
|
477
|
+
successRate: number;
|
|
478
|
+
avgResponseTime: number;
|
|
479
|
+
};
|
|
480
|
+
};
|
|
481
|
+
reviews: AgentReview[];
|
|
482
|
+
}
|
|
483
|
+
/** Full A2A skill schema */
|
|
484
|
+
interface AgentSkill {
|
|
485
|
+
id: string;
|
|
486
|
+
name: string;
|
|
487
|
+
description?: string;
|
|
488
|
+
tags?: string[];
|
|
489
|
+
examples?: string[];
|
|
490
|
+
inputModes?: string[];
|
|
491
|
+
outputModes?: string[];
|
|
492
|
+
}
|
|
493
|
+
interface AgentReview {
|
|
494
|
+
rating: number;
|
|
495
|
+
review: string;
|
|
496
|
+
created_at: number;
|
|
497
|
+
reviewer_name: string;
|
|
498
|
+
}
|
|
499
|
+
interface RatingResult {
|
|
500
|
+
success: boolean;
|
|
501
|
+
avgRating: number;
|
|
502
|
+
ratingCount: number;
|
|
503
|
+
}
|
|
504
|
+
|
|
505
|
+
export { type A2AArtifact, type A2AMessage, type A2ATask, type A2ATaskStatus, type AgentAuthentication, type AgentCapabilities, type AgentCard, type AgentCardConfig, type AgentCategory, type AgentInfoResult, type AgentReview, type AgentSkill, type AgentSkillConfig, type Artifact, type ContentMode, type DataContent, type DataPart, type DiscoverOptions, type DiscoverResult, type FileContent, type FilePart, GopherHole, type GopherHoleOptions, type InputMode, type JsonRpcError, JsonRpcErrorCodes, type JsonRpcRequest, type JsonRpcResponse, type Message, type MessagePart, type MessagePayload, type MessageSendConfiguration, type OutputMode, type Part, type PublicAgent, type PushNotificationConfig, type RatingResult, type SendOptions, type Task, type TaskArtifactUpdateEvent, type TaskEvent, type TaskListConfiguration, type TaskPushNotificationConfig, type TaskQueryConfiguration, type TaskState, type TaskStatus, type TaskStatusUpdateEvent, type TextPart, GopherHole as default };
|