@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.
Files changed (92) hide show
  1. package/README.md +397 -0
  2. package/dist/client.d.ts +125 -0
  3. package/dist/client.d.ts.map +1 -0
  4. package/dist/client.js +129 -0
  5. package/dist/client.js.map +1 -0
  6. package/dist/core/api-operations.d.ts +37 -0
  7. package/dist/core/api-operations.d.ts.map +1 -0
  8. package/dist/core/api-operations.js +90 -0
  9. package/dist/core/api-operations.js.map +1 -0
  10. package/dist/core/execution-operations.d.ts +34 -0
  11. package/dist/core/execution-operations.d.ts.map +1 -0
  12. package/dist/core/execution-operations.js +237 -0
  13. package/dist/core/execution-operations.js.map +1 -0
  14. package/dist/core/index.d.ts +8 -0
  15. package/dist/core/index.d.ts.map +1 -0
  16. package/dist/core/index.js +7 -0
  17. package/dist/core/index.js.map +1 -0
  18. package/dist/core/provenance-registry.d.ts +40 -0
  19. package/dist/core/provenance-registry.d.ts.map +1 -0
  20. package/dist/core/provenance-registry.js +108 -0
  21. package/dist/core/provenance-registry.js.map +1 -0
  22. package/dist/core/service-providers.d.ts +29 -0
  23. package/dist/core/service-providers.d.ts.map +1 -0
  24. package/dist/core/service-providers.js +139 -0
  25. package/dist/core/service-providers.js.map +1 -0
  26. package/dist/core/session.d.ts +50 -0
  27. package/dist/core/session.d.ts.map +1 -0
  28. package/dist/core/session.js +138 -0
  29. package/dist/core/session.js.map +1 -0
  30. package/dist/core/types.d.ts +73 -0
  31. package/dist/core/types.d.ts.map +1 -0
  32. package/dist/core/types.js +2 -0
  33. package/dist/core/types.js.map +1 -0
  34. package/dist/errors.d.ts +22 -0
  35. package/dist/errors.d.ts.map +1 -0
  36. package/dist/errors.js +25 -0
  37. package/dist/errors.js.map +1 -0
  38. package/dist/generator.d.ts +7 -0
  39. package/dist/generator.d.ts.map +1 -0
  40. package/dist/generator.js +12 -0
  41. package/dist/generator.js.map +1 -0
  42. package/dist/index.d.ts +10 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +8 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/tools/execute-code.d.ts +20 -0
  47. package/dist/tools/execute-code.d.ts.map +1 -0
  48. package/dist/tools/execute-code.js +57 -0
  49. package/dist/tools/execute-code.js.map +1 -0
  50. package/dist/tools/explore-api.d.ts +14 -0
  51. package/dist/tools/explore-api.d.ts.map +1 -0
  52. package/dist/tools/explore-api.js +47 -0
  53. package/dist/tools/explore-api.js.map +1 -0
  54. package/dist/tools/fetch-all-apis.d.ts +14 -0
  55. package/dist/tools/fetch-all-apis.d.ts.map +1 -0
  56. package/dist/tools/fetch-all-apis.js +31 -0
  57. package/dist/tools/fetch-all-apis.js.map +1 -0
  58. package/dist/tools/index.d.ts +6 -0
  59. package/dist/tools/index.d.ts.map +1 -0
  60. package/dist/tools/index.js +6 -0
  61. package/dist/tools/index.js.map +1 -0
  62. package/dist/tools/search-api.d.ts +14 -0
  63. package/dist/tools/search-api.d.ts.map +1 -0
  64. package/dist/tools/search-api.js +36 -0
  65. package/dist/tools/search-api.js.map +1 -0
  66. package/dist/tools/types.d.ts +23 -0
  67. package/dist/tools/types.d.ts.map +1 -0
  68. package/dist/tools/types.js +7 -0
  69. package/dist/tools/types.js.map +1 -0
  70. package/dist/tools.d.ts +8 -0
  71. package/dist/tools.d.ts.map +1 -0
  72. package/dist/tools.js +14 -0
  73. package/dist/tools.js.map +1 -0
  74. package/package.json +46 -0
  75. package/src/client.ts +194 -0
  76. package/src/core/api-operations.ts +130 -0
  77. package/src/core/execution-operations.ts +301 -0
  78. package/src/core/index.ts +13 -0
  79. package/src/core/provenance-registry.ts +129 -0
  80. package/src/core/service-providers.ts +176 -0
  81. package/src/core/session.ts +180 -0
  82. package/src/core/types.ts +79 -0
  83. package/src/errors.ts +24 -0
  84. package/src/generator.ts +15 -0
  85. package/src/index.ts +10 -0
  86. package/src/tools/execute-code.ts +76 -0
  87. package/src/tools/explore-api.ts +63 -0
  88. package/src/tools/fetch-all-apis.ts +43 -0
  89. package/src/tools/index.ts +5 -0
  90. package/src/tools/search-api.ts +48 -0
  91. package/src/tools/types.ts +24 -0
  92. 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
@@ -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"}