@mondaydotcomorg/atp-client 0.17.14
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 +397 -0
- package/dist/client.d.ts +125 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +129 -0
- package/dist/client.js.map +1 -0
- package/dist/core/api-operations.d.ts +37 -0
- package/dist/core/api-operations.d.ts.map +1 -0
- package/dist/core/api-operations.js +90 -0
- package/dist/core/api-operations.js.map +1 -0
- package/dist/core/execution-operations.d.ts +34 -0
- package/dist/core/execution-operations.d.ts.map +1 -0
- package/dist/core/execution-operations.js +237 -0
- package/dist/core/execution-operations.js.map +1 -0
- package/dist/core/index.d.ts +8 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/provenance-registry.d.ts +40 -0
- package/dist/core/provenance-registry.d.ts.map +1 -0
- package/dist/core/provenance-registry.js +108 -0
- package/dist/core/provenance-registry.js.map +1 -0
- package/dist/core/service-providers.d.ts +29 -0
- package/dist/core/service-providers.d.ts.map +1 -0
- package/dist/core/service-providers.js +139 -0
- package/dist/core/service-providers.js.map +1 -0
- package/dist/core/session.d.ts +50 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +138 -0
- package/dist/core/session.js.map +1 -0
- package/dist/core/types.d.ts +73 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +2 -0
- package/dist/core/types.js.map +1 -0
- package/dist/errors.d.ts +22 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +25 -0
- package/dist/errors.js.map +1 -0
- package/dist/generator.d.ts +7 -0
- package/dist/generator.d.ts.map +1 -0
- package/dist/generator.js +12 -0
- package/dist/generator.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/execute-code.d.ts +20 -0
- package/dist/tools/execute-code.d.ts.map +1 -0
- package/dist/tools/execute-code.js +57 -0
- package/dist/tools/execute-code.js.map +1 -0
- package/dist/tools/explore-api.d.ts +14 -0
- package/dist/tools/explore-api.d.ts.map +1 -0
- package/dist/tools/explore-api.js +47 -0
- package/dist/tools/explore-api.js.map +1 -0
- package/dist/tools/fetch-all-apis.d.ts +14 -0
- package/dist/tools/fetch-all-apis.d.ts.map +1 -0
- package/dist/tools/fetch-all-apis.js +31 -0
- package/dist/tools/fetch-all-apis.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/search-api.d.ts +14 -0
- package/dist/tools/search-api.d.ts.map +1 -0
- package/dist/tools/search-api.js +36 -0
- package/dist/tools/search-api.js.map +1 -0
- package/dist/tools/types.d.ts +23 -0
- package/dist/tools/types.d.ts.map +1 -0
- package/dist/tools/types.js +7 -0
- package/dist/tools/types.js.map +1 -0
- package/dist/tools.d.ts +8 -0
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +14 -0
- package/dist/tools.js.map +1 -0
- package/package.json +46 -0
- package/src/client.ts +194 -0
- package/src/core/api-operations.ts +130 -0
- package/src/core/execution-operations.ts +301 -0
- package/src/core/index.ts +13 -0
- package/src/core/provenance-registry.ts +129 -0
- package/src/core/service-providers.ts +176 -0
- package/src/core/session.ts +180 -0
- package/src/core/types.ts +79 -0
- package/src/errors.ts +24 -0
- package/src/generator.ts +15 -0
- package/src/index.ts +10 -0
- package/src/tools/execute-code.ts +76 -0
- package/src/tools/explore-api.ts +63 -0
- package/src/tools/fetch-all-apis.ts +43 -0
- package/src/tools/index.ts +5 -0
- package/src/tools/search-api.ts +48 -0
- package/src/tools/types.ts +24 -0
- package/src/tools.ts +21 -0
package/README.md
ADDED
|
@@ -0,0 +1,397 @@
|
|
|
1
|
+
# @mondaydotcomorg/atp-client
|
|
2
|
+
|
|
3
|
+
Client library for connecting to Agent Tool Protocol servers and executing code.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The ATP client enables agents to connect to ATP servers, execute TypeScript code with runtime APIs, handle pauses for LLM/approval/embedding callbacks, and manage client-side tool execution.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @mondaydotcomorg/atp-client
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Architecture
|
|
16
|
+
|
|
17
|
+
```mermaid
|
|
18
|
+
graph TB
|
|
19
|
+
Client[AgentToolProtocolClient] --> Session[ClientSession]
|
|
20
|
+
Client --> API[APIOperations]
|
|
21
|
+
Client --> Exec[ExecutionOperations]
|
|
22
|
+
Client --> Services[ServiceProviders]
|
|
23
|
+
|
|
24
|
+
Services --> LLM[LLM Handler]
|
|
25
|
+
Services --> Approval[Approval Handler]
|
|
26
|
+
Services --> Embedding[Embedding Handler]
|
|
27
|
+
Services --> Tools[Client Tools]
|
|
28
|
+
|
|
29
|
+
Exec --> Pause[Pause/Resume]
|
|
30
|
+
Session --> Hooks[Pre-Request Hooks]
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
## Quick Start
|
|
34
|
+
|
|
35
|
+
### Basic Client
|
|
36
|
+
|
|
37
|
+
```typescript
|
|
38
|
+
import { AgentToolProtocolClient } from '@mondaydotcomorg/atp-client';
|
|
39
|
+
|
|
40
|
+
const client = new AgentToolProtocolClient({
|
|
41
|
+
baseUrl: 'http://localhost:3333',
|
|
42
|
+
headers: {
|
|
43
|
+
Authorization: 'Bearer your-api-key',
|
|
44
|
+
},
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
await client.init();
|
|
48
|
+
|
|
49
|
+
// Execute code
|
|
50
|
+
const result = await client.execute({
|
|
51
|
+
code: `
|
|
52
|
+
const items = ['apple', 'banana', 'cherry'];
|
|
53
|
+
return items.length;
|
|
54
|
+
`,
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
console.log(result.result); // 3
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### With LLM Support
|
|
61
|
+
|
|
62
|
+
```typescript
|
|
63
|
+
import { ChatOpenAI } from '@langchain/openai';
|
|
64
|
+
|
|
65
|
+
const llm = new ChatOpenAI({ modelName: 'gpt-4' });
|
|
66
|
+
|
|
67
|
+
const client = new AgentToolProtocolClient({
|
|
68
|
+
baseUrl: 'http://localhost:3333',
|
|
69
|
+
headers: { Authorization: 'Bearer key' },
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Provide LLM for atp.llm.* calls
|
|
73
|
+
client.provideLLM({
|
|
74
|
+
call: async (prompt, options) => {
|
|
75
|
+
const response = await llm.invoke(prompt);
|
|
76
|
+
return response.content;
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
await client.init();
|
|
81
|
+
|
|
82
|
+
// Now code can use atp.llm.call()
|
|
83
|
+
const result = await client.execute({
|
|
84
|
+
code: `
|
|
85
|
+
const joke = await atp.llm.call({
|
|
86
|
+
prompt: 'Tell me a programming joke',
|
|
87
|
+
});
|
|
88
|
+
return joke;
|
|
89
|
+
`,
|
|
90
|
+
});
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### With Embeddings
|
|
94
|
+
|
|
95
|
+
```typescript
|
|
96
|
+
import { OpenAIEmbeddings } from '@langchain/openai';
|
|
97
|
+
|
|
98
|
+
const embeddings = new OpenAIEmbeddings();
|
|
99
|
+
|
|
100
|
+
client.provideEmbedding({
|
|
101
|
+
embed: async (text) => {
|
|
102
|
+
const vector = await embeddings.embedQuery(text);
|
|
103
|
+
// Store and return ID
|
|
104
|
+
return 'embedding-id-123';
|
|
105
|
+
},
|
|
106
|
+
search: async (query, options) => {
|
|
107
|
+
const queryVector = await embeddings.embedQuery(query);
|
|
108
|
+
// Perform similarity search
|
|
109
|
+
return results;
|
|
110
|
+
},
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
// Code can now use atp.embedding.*
|
|
114
|
+
const result = await client.execute({
|
|
115
|
+
code: `
|
|
116
|
+
const id = await atp.embedding.embed('Important document');
|
|
117
|
+
const similar = await atp.embedding.search('document', { topK: 5 });
|
|
118
|
+
return similar;
|
|
119
|
+
`,
|
|
120
|
+
});
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### With Approval Handler
|
|
124
|
+
|
|
125
|
+
```typescript
|
|
126
|
+
client.provideApproval({
|
|
127
|
+
request: async (message, context) => {
|
|
128
|
+
// Prompt user for approval
|
|
129
|
+
const approved = await askUser(message);
|
|
130
|
+
return {
|
|
131
|
+
approved,
|
|
132
|
+
response: { reason: 'User decision' },
|
|
133
|
+
timestamp: Date.now(),
|
|
134
|
+
};
|
|
135
|
+
},
|
|
136
|
+
});
|
|
137
|
+
|
|
138
|
+
// Code can use atp.approval.request()
|
|
139
|
+
const result = await client.execute({
|
|
140
|
+
code: `
|
|
141
|
+
const approval = await atp.approval.request(
|
|
142
|
+
'Delete all files?',
|
|
143
|
+
{ critical: true }
|
|
144
|
+
);
|
|
145
|
+
|
|
146
|
+
if (!approval.approved) {
|
|
147
|
+
return { cancelled: true };
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
return { deleted: true };
|
|
151
|
+
`,
|
|
152
|
+
});
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Client-Side Tools
|
|
156
|
+
|
|
157
|
+
Register custom tools that execute on the client:
|
|
158
|
+
|
|
159
|
+
```typescript
|
|
160
|
+
import { createClientTool } from '@mondaydotcomorg/atp-client';
|
|
161
|
+
|
|
162
|
+
const fetchTool = createClientTool({
|
|
163
|
+
name: 'fetch',
|
|
164
|
+
description: 'Make HTTP requests from client',
|
|
165
|
+
inputSchema: {
|
|
166
|
+
type: 'object',
|
|
167
|
+
properties: {
|
|
168
|
+
url: { type: 'string' },
|
|
169
|
+
method: { type: 'string', enum: ['GET', 'POST'] },
|
|
170
|
+
},
|
|
171
|
+
required: ['url'],
|
|
172
|
+
},
|
|
173
|
+
handler: async (input) => {
|
|
174
|
+
const response = await fetch(input.url, {
|
|
175
|
+
method: input.method || 'GET',
|
|
176
|
+
});
|
|
177
|
+
return await response.json();
|
|
178
|
+
},
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
const client = new AgentToolProtocolClient({
|
|
182
|
+
baseUrl: 'http://localhost:3333',
|
|
183
|
+
headers: { Authorization: 'Bearer key' },
|
|
184
|
+
serviceProviders: {
|
|
185
|
+
tools: [fetchTool],
|
|
186
|
+
},
|
|
187
|
+
});
|
|
188
|
+
|
|
189
|
+
await client.init(); // Registers tools with server
|
|
190
|
+
|
|
191
|
+
// Code can now use atp.tool.fetch()
|
|
192
|
+
const result = await client.execute({
|
|
193
|
+
code: `
|
|
194
|
+
const data = await atp.tool.fetch({
|
|
195
|
+
url: 'https://api.example.com/data',
|
|
196
|
+
method: 'GET',
|
|
197
|
+
});
|
|
198
|
+
return data;
|
|
199
|
+
`,
|
|
200
|
+
});
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
### Pre-Request Hooks
|
|
204
|
+
|
|
205
|
+
Intercept and modify requests (e.g., token refresh):
|
|
206
|
+
|
|
207
|
+
```typescript
|
|
208
|
+
const client = new AgentToolProtocolClient({
|
|
209
|
+
baseUrl: 'http://localhost:3333',
|
|
210
|
+
hooks: {
|
|
211
|
+
preRequest: async (context) => {
|
|
212
|
+
// Refresh token if needed
|
|
213
|
+
if (tokenExpired()) {
|
|
214
|
+
const newToken = await refreshToken();
|
|
215
|
+
return {
|
|
216
|
+
headers: {
|
|
217
|
+
...context.currentHeaders,
|
|
218
|
+
Authorization: `Bearer ${newToken}`,
|
|
219
|
+
},
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
return {};
|
|
223
|
+
},
|
|
224
|
+
},
|
|
225
|
+
});
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Core Features
|
|
229
|
+
|
|
230
|
+
### Execute Code
|
|
231
|
+
|
|
232
|
+
```typescript
|
|
233
|
+
const result = await client.execute({
|
|
234
|
+
code: 'return 1 + 1',
|
|
235
|
+
timeout: 30000,
|
|
236
|
+
pausable: true,
|
|
237
|
+
});
|
|
238
|
+
|
|
239
|
+
// Result structure
|
|
240
|
+
interface ExecutionResult {
|
|
241
|
+
status: 'success' | 'error' | 'paused' | 'timeout';
|
|
242
|
+
result?: unknown;
|
|
243
|
+
error?: string;
|
|
244
|
+
pauseReason?: string;
|
|
245
|
+
executionId?: string;
|
|
246
|
+
}
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### Search APIs
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
const results = await client.search({
|
|
253
|
+
query: 'user authentication',
|
|
254
|
+
limit: 10,
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// Search by natural language query
|
|
258
|
+
const searchResults = await client.searchQuery('how to create a user');
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Explore APIs
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
const schema = await client.explore();
|
|
265
|
+
|
|
266
|
+
// Returns API structure
|
|
267
|
+
interface ExploreResult {
|
|
268
|
+
apis: Array<{
|
|
269
|
+
name: string;
|
|
270
|
+
description: string;
|
|
271
|
+
functions: Array<{
|
|
272
|
+
name: string;
|
|
273
|
+
description: string;
|
|
274
|
+
parameters: unknown;
|
|
275
|
+
}>;
|
|
276
|
+
}>;
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
### Type Definitions
|
|
281
|
+
|
|
282
|
+
```typescript
|
|
283
|
+
const types = await client.getTypeDefinitions();
|
|
284
|
+
// Returns TypeScript definitions for atp.* APIs
|
|
285
|
+
```
|
|
286
|
+
|
|
287
|
+
## API Reference
|
|
288
|
+
|
|
289
|
+
### AgentToolProtocolClient
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
class AgentToolProtocolClient {
|
|
293
|
+
constructor(options: AgentToolProtocolClientOptions);
|
|
294
|
+
|
|
295
|
+
// Initialize session
|
|
296
|
+
init(clientInfo?: Record<string, unknown>): Promise<{
|
|
297
|
+
clientId: string;
|
|
298
|
+
token: string;
|
|
299
|
+
expiresAt: number;
|
|
300
|
+
tokenRotateAt: number;
|
|
301
|
+
}>;
|
|
302
|
+
|
|
303
|
+
// Execute code
|
|
304
|
+
execute(config: ExecutionConfig): Promise<ExecutionResult>;
|
|
305
|
+
|
|
306
|
+
// Resume paused execution
|
|
307
|
+
resume(executionId: string, resumeData: ResumeData): Promise<ExecutionResult>;
|
|
308
|
+
|
|
309
|
+
// Provide services
|
|
310
|
+
provideLLM(handler: ClientLLMHandler): void;
|
|
311
|
+
provideApproval(handler: ClientApprovalHandler): void;
|
|
312
|
+
provideEmbedding(handler: ClientEmbeddingHandler): void;
|
|
313
|
+
|
|
314
|
+
// API discovery
|
|
315
|
+
search(options: SearchOptions): Promise<SearchResult[]>;
|
|
316
|
+
searchQuery(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
317
|
+
explore(): Promise<ExploreResult>;
|
|
318
|
+
getTypeDefinitions(): Promise<string>;
|
|
319
|
+
|
|
320
|
+
// Session info
|
|
321
|
+
getClientId(): string;
|
|
322
|
+
}
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Options
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
interface AgentToolProtocolClientOptions {
|
|
329
|
+
baseUrl: string;
|
|
330
|
+
headers?: Record<string, string>;
|
|
331
|
+
serviceProviders?: {
|
|
332
|
+
llm?: ClientLLMHandler;
|
|
333
|
+
approval?: ClientApprovalHandler;
|
|
334
|
+
embedding?: ClientEmbeddingHandler;
|
|
335
|
+
tools?: ClientTool[];
|
|
336
|
+
};
|
|
337
|
+
hooks?: {
|
|
338
|
+
preRequest?: (context: HookContext) => Promise<HookResult>;
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
## Flow Diagram
|
|
344
|
+
|
|
345
|
+
```mermaid
|
|
346
|
+
sequenceDiagram
|
|
347
|
+
participant Agent
|
|
348
|
+
participant Client
|
|
349
|
+
participant Server
|
|
350
|
+
participant LLM
|
|
351
|
+
|
|
352
|
+
Agent->>Client: execute(code)
|
|
353
|
+
Client->>Server: POST /execute
|
|
354
|
+
Server->>Server: Run code
|
|
355
|
+
|
|
356
|
+
alt Code calls atp.llm.call()
|
|
357
|
+
Server->>Client: Pause (LLM callback)
|
|
358
|
+
Client->>Agent: Request LLM
|
|
359
|
+
Agent->>LLM: API call
|
|
360
|
+
LLM-->>Agent: Response
|
|
361
|
+
Agent->>Client: Resume with result
|
|
362
|
+
Client->>Server: POST /resume
|
|
363
|
+
Server->>Server: Continue execution
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
Server-->>Client: Execution result
|
|
367
|
+
Client-->>Agent: Return result
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
## Error Handling
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
import { ExecutionStatus } from '@mondaydotcomorg/atp-client';
|
|
374
|
+
|
|
375
|
+
try {
|
|
376
|
+
const result = await client.execute({ code: '...' });
|
|
377
|
+
|
|
378
|
+
if (result.status === ExecutionStatus.ERROR) {
|
|
379
|
+
console.error('Execution failed:', result.error);
|
|
380
|
+
} else if (result.status === ExecutionStatus.TIMEOUT) {
|
|
381
|
+
console.error('Execution timed out');
|
|
382
|
+
} else if (result.status === ExecutionStatus.PAUSED) {
|
|
383
|
+
console.log('Execution paused:', result.pauseReason);
|
|
384
|
+
// Handle pause (resume later)
|
|
385
|
+
}
|
|
386
|
+
} catch (error) {
|
|
387
|
+
console.error('Client error:', error);
|
|
388
|
+
}
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
## TypeScript Support
|
|
392
|
+
|
|
393
|
+
Full TypeScript definitions with strict typing for all APIs.
|
|
394
|
+
|
|
395
|
+
## License
|
|
396
|
+
|
|
397
|
+
MIT
|
package/dist/client.d.ts
ADDED
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import type { ExecutionResult, ExecutionConfig, SearchOptions, SearchResult, ClientTool, ExploreResult } from '@mondaydotcomorg/atp-protocol';
|
|
2
|
+
import { CallbackType } from '@mondaydotcomorg/atp-protocol';
|
|
3
|
+
import { type ClientLLMHandler, type ClientApprovalHandler, type ClientEmbeddingHandler, type ClientServiceProviders, type ClientHooks } from './core/index.js';
|
|
4
|
+
/**
|
|
5
|
+
* Options for creating an AgentToolProtocolClient
|
|
6
|
+
*/
|
|
7
|
+
export interface AgentToolProtocolClientOptions {
|
|
8
|
+
/** Base URL of the Agent Tool Protocol server */
|
|
9
|
+
baseUrl: string;
|
|
10
|
+
/** Optional headers for authentication (e.g., { Authorization: 'Bearer token' }) */
|
|
11
|
+
headers?: Record<string, string>;
|
|
12
|
+
/** Optional client-provided services (LLM, approval, embedding) */
|
|
13
|
+
serviceProviders?: ClientServiceProviders;
|
|
14
|
+
/** Optional hooks for intercepting and modifying client behavior */
|
|
15
|
+
hooks?: ClientHooks;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* AgentToolProtocolClient provides a client interface for connecting to
|
|
19
|
+
* Agent Tool Protocol servers and executing code.
|
|
20
|
+
*/
|
|
21
|
+
export declare class AgentToolProtocolClient {
|
|
22
|
+
private session;
|
|
23
|
+
private apiOps;
|
|
24
|
+
private execOps;
|
|
25
|
+
private serviceProviders;
|
|
26
|
+
/**
|
|
27
|
+
* Creates a new client instance.
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* const client = new AgentToolProtocolClient({
|
|
32
|
+
* baseUrl: 'http://localhost:3333',
|
|
33
|
+
* headers: { Authorization: 'Bearer token' },
|
|
34
|
+
* hooks: {
|
|
35
|
+
* preRequest: async (context) => {
|
|
36
|
+
* const token = await refreshToken();
|
|
37
|
+
* return { headers: { ...context.currentHeaders, Authorization: `Bearer ${token}` } };
|
|
38
|
+
* }
|
|
39
|
+
* }
|
|
40
|
+
* });
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
constructor(options: AgentToolProtocolClientOptions);
|
|
44
|
+
/**
|
|
45
|
+
* Initializes the client session with the server.
|
|
46
|
+
* Automatically registers any client-provided tools with the server.
|
|
47
|
+
*/
|
|
48
|
+
init(clientInfo?: {
|
|
49
|
+
name?: string;
|
|
50
|
+
version?: string;
|
|
51
|
+
[key: string]: unknown;
|
|
52
|
+
}): Promise<{
|
|
53
|
+
clientId: string;
|
|
54
|
+
token: string;
|
|
55
|
+
expiresAt: number;
|
|
56
|
+
tokenRotateAt: number;
|
|
57
|
+
}>;
|
|
58
|
+
/**
|
|
59
|
+
* Gets the unique client ID.
|
|
60
|
+
*/
|
|
61
|
+
getClientId(): string;
|
|
62
|
+
/**
|
|
63
|
+
* Provides an LLM implementation for server to use during execution.
|
|
64
|
+
*/
|
|
65
|
+
provideLLM(handler: ClientLLMHandler): void;
|
|
66
|
+
/**
|
|
67
|
+
* Provides an approval handler for server to request human approval.
|
|
68
|
+
*/
|
|
69
|
+
provideApproval(handler: ClientApprovalHandler): void;
|
|
70
|
+
/**
|
|
71
|
+
* Provides an embedding model for server to use.
|
|
72
|
+
*/
|
|
73
|
+
provideEmbedding(handler: ClientEmbeddingHandler): void;
|
|
74
|
+
/**
|
|
75
|
+
* Provides custom tools that execute on the client side.
|
|
76
|
+
* Note: Must be called before init() or re-initialize after calling this.
|
|
77
|
+
*/
|
|
78
|
+
provideTools(tools: ClientTool[]): void;
|
|
79
|
+
/**
|
|
80
|
+
* Connects to the server and retrieves API definitions.
|
|
81
|
+
*/
|
|
82
|
+
connect(options?: {
|
|
83
|
+
apiGroups?: string[];
|
|
84
|
+
}): Promise<{
|
|
85
|
+
serverVersion: string;
|
|
86
|
+
capabilities: unknown;
|
|
87
|
+
apiGroups: string[];
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Gets the TypeScript type definitions for available APIs.
|
|
91
|
+
*/
|
|
92
|
+
getTypeDefinitions(): string;
|
|
93
|
+
/**
|
|
94
|
+
* Searches for available API functions.
|
|
95
|
+
*/
|
|
96
|
+
searchAPI(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
97
|
+
/**
|
|
98
|
+
* Explores the API filesystem at the given path.
|
|
99
|
+
*/
|
|
100
|
+
exploreAPI(path: string): Promise<ExploreResult>;
|
|
101
|
+
/**
|
|
102
|
+
* Executes code on the server with real-time progress updates via SSE.
|
|
103
|
+
*/
|
|
104
|
+
executeStream(code: string, config?: Partial<ExecutionConfig>, onProgress?: (message: string, fraction: number) => void): Promise<ExecutionResult>;
|
|
105
|
+
/**
|
|
106
|
+
* Executes code on the server in a sandboxed environment.
|
|
107
|
+
*/
|
|
108
|
+
execute(code: string, config?: Partial<ExecutionConfig>): Promise<ExecutionResult>;
|
|
109
|
+
/**
|
|
110
|
+
* Resumes a paused execution with a callback result.
|
|
111
|
+
*/
|
|
112
|
+
resume(executionId: string, callbackResult: unknown): Promise<ExecutionResult>;
|
|
113
|
+
/**
|
|
114
|
+
* Handles a callback request from the server during execution.
|
|
115
|
+
*/
|
|
116
|
+
handleCallback(callbackType: CallbackType, payload: any): Promise<any>;
|
|
117
|
+
/**
|
|
118
|
+
* Gets information about the server.
|
|
119
|
+
*/
|
|
120
|
+
getServerInfo(): Promise<{
|
|
121
|
+
version: string;
|
|
122
|
+
capabilities: Record<string, boolean>;
|
|
123
|
+
}>;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/dist/client.js
ADDED
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
import { ClientSession, APIOperations, ExecutionOperations, ServiceProviders, } from './core/index.js';
|
|
2
|
+
/**
|
|
3
|
+
* AgentToolProtocolClient provides a client interface for connecting to
|
|
4
|
+
* Agent Tool Protocol servers and executing code.
|
|
5
|
+
*/
|
|
6
|
+
export class AgentToolProtocolClient {
|
|
7
|
+
session;
|
|
8
|
+
apiOps;
|
|
9
|
+
execOps;
|
|
10
|
+
serviceProviders;
|
|
11
|
+
/**
|
|
12
|
+
* Creates a new client instance.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* const client = new AgentToolProtocolClient({
|
|
17
|
+
* baseUrl: 'http://localhost:3333',
|
|
18
|
+
* headers: { Authorization: 'Bearer token' },
|
|
19
|
+
* hooks: {
|
|
20
|
+
* preRequest: async (context) => {
|
|
21
|
+
* const token = await refreshToken();
|
|
22
|
+
* return { headers: { ...context.currentHeaders, Authorization: `Bearer ${token}` } };
|
|
23
|
+
* }
|
|
24
|
+
* }
|
|
25
|
+
* });
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
constructor(options) {
|
|
29
|
+
const { baseUrl, headers, serviceProviders, hooks } = options;
|
|
30
|
+
this.session = new ClientSession(baseUrl, headers, hooks);
|
|
31
|
+
this.serviceProviders = new ServiceProviders(serviceProviders);
|
|
32
|
+
this.apiOps = new APIOperations(this.session);
|
|
33
|
+
this.execOps = new ExecutionOperations(this.session, this.serviceProviders);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Initializes the client session with the server.
|
|
37
|
+
* Automatically registers any client-provided tools with the server.
|
|
38
|
+
*/
|
|
39
|
+
async init(clientInfo) {
|
|
40
|
+
const toolDefinitions = this.serviceProviders.getToolDefinitions();
|
|
41
|
+
return await this.session.init(clientInfo, toolDefinitions);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Gets the unique client ID.
|
|
45
|
+
*/
|
|
46
|
+
getClientId() {
|
|
47
|
+
return this.session.getClientId();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Provides an LLM implementation for server to use during execution.
|
|
51
|
+
*/
|
|
52
|
+
provideLLM(handler) {
|
|
53
|
+
this.serviceProviders.provideLLM(handler);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Provides an approval handler for server to request human approval.
|
|
57
|
+
*/
|
|
58
|
+
provideApproval(handler) {
|
|
59
|
+
this.serviceProviders.provideApproval(handler);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Provides an embedding model for server to use.
|
|
63
|
+
*/
|
|
64
|
+
provideEmbedding(handler) {
|
|
65
|
+
this.serviceProviders.provideEmbedding(handler);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Provides custom tools that execute on the client side.
|
|
69
|
+
* Note: Must be called before init() or re-initialize after calling this.
|
|
70
|
+
*/
|
|
71
|
+
provideTools(tools) {
|
|
72
|
+
this.serviceProviders.provideTools(tools);
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Connects to the server and retrieves API definitions.
|
|
76
|
+
*/
|
|
77
|
+
async connect(options) {
|
|
78
|
+
return await this.apiOps.connect(options);
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Gets the TypeScript type definitions for available APIs.
|
|
82
|
+
*/
|
|
83
|
+
getTypeDefinitions() {
|
|
84
|
+
return this.apiOps.getTypeDefinitions();
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Searches for available API functions.
|
|
88
|
+
*/
|
|
89
|
+
async searchAPI(query, options) {
|
|
90
|
+
return await this.apiOps.searchAPI(query, options);
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Explores the API filesystem at the given path.
|
|
94
|
+
*/
|
|
95
|
+
async exploreAPI(path) {
|
|
96
|
+
return await this.apiOps.exploreAPI(path);
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Executes code on the server with real-time progress updates via SSE.
|
|
100
|
+
*/
|
|
101
|
+
async executeStream(code, config, onProgress) {
|
|
102
|
+
return await this.execOps.executeStream(code, config, onProgress);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Executes code on the server in a sandboxed environment.
|
|
106
|
+
*/
|
|
107
|
+
async execute(code, config) {
|
|
108
|
+
return await this.execOps.execute(code, config);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Resumes a paused execution with a callback result.
|
|
112
|
+
*/
|
|
113
|
+
async resume(executionId, callbackResult) {
|
|
114
|
+
return await this.execOps.resume(executionId, callbackResult);
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Handles a callback request from the server during execution.
|
|
118
|
+
*/
|
|
119
|
+
async handleCallback(callbackType, payload) {
|
|
120
|
+
return await this.serviceProviders.handleCallback(callbackType, payload);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Gets information about the server.
|
|
124
|
+
*/
|
|
125
|
+
async getServerInfo() {
|
|
126
|
+
return await this.apiOps.getServerInfo();
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { SearchOptions, SearchResult, ExploreResult } from '@mondaydotcomorg/atp-protocol';
|
|
2
|
+
import type { ClientSession } from './session.js';
|
|
3
|
+
export declare class APIOperations {
|
|
4
|
+
private session;
|
|
5
|
+
private apiDefinitions?;
|
|
6
|
+
constructor(session: ClientSession);
|
|
7
|
+
/**
|
|
8
|
+
* Connects to the server and retrieves API definitions.
|
|
9
|
+
*/
|
|
10
|
+
connect(options?: {
|
|
11
|
+
apiGroups?: string[];
|
|
12
|
+
}): Promise<{
|
|
13
|
+
serverVersion: string;
|
|
14
|
+
capabilities: unknown;
|
|
15
|
+
apiGroups: string[];
|
|
16
|
+
}>;
|
|
17
|
+
/**
|
|
18
|
+
* Gets the TypeScript type definitions for available APIs.
|
|
19
|
+
*/
|
|
20
|
+
getTypeDefinitions(): string;
|
|
21
|
+
/**
|
|
22
|
+
* Searches for available API functions.
|
|
23
|
+
*/
|
|
24
|
+
searchAPI(query: string, options?: SearchOptions): Promise<SearchResult[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Explores the API filesystem at the given path.
|
|
27
|
+
*/
|
|
28
|
+
exploreAPI(path: string): Promise<ExploreResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Gets information about the server.
|
|
31
|
+
*/
|
|
32
|
+
getServerInfo(): Promise<{
|
|
33
|
+
version: string;
|
|
34
|
+
capabilities: Record<string, boolean>;
|
|
35
|
+
}>;
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=api-operations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-operations.d.ts","sourceRoot":"","sources":["../../src/core/api-operations.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAChG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,qBAAa,aAAa;IACzB,OAAO,CAAC,OAAO,CAAgB;IAC/B,OAAO,CAAC,cAAc,CAAC,CAAS;gBAEpB,OAAO,EAAE,aAAa;IAIlC;;OAEG;IACG,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,CAAC;QAC1D,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,OAAO,CAAC;QACtB,SAAS,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IA+BF;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAO5B;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAqBhF;;OAEG;IACG,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAoBtD;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC;QAC9B,OAAO,EAAE,MAAM,CAAC;QAChB,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC;CAiBF"}
|