sequentum-mcp 1.1.4 → 1.2.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.
Files changed (60) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/README.md +104 -3
  3. package/dist/{api-client.d.ts → api/api-client.d.ts} +106 -4
  4. package/dist/api/api-client.d.ts.map +1 -0
  5. package/dist/{api-client.js → api/api-client.js} +345 -99
  6. package/dist/api/api-client.js.map +1 -0
  7. package/dist/{types.d.ts → api/types.d.ts} +122 -12
  8. package/dist/api/types.d.ts.map +1 -0
  9. package/dist/{types.js → api/types.js} +57 -0
  10. package/dist/api/types.js.map +1 -0
  11. package/dist/index.js +11 -1737
  12. package/dist/index.js.map +1 -1
  13. package/dist/server/cors.d.ts +33 -0
  14. package/dist/server/cors.d.ts.map +1 -0
  15. package/dist/server/cors.js +72 -0
  16. package/dist/server/cors.js.map +1 -0
  17. package/dist/server/handlers.d.ts +49 -0
  18. package/dist/server/handlers.d.ts.map +1 -0
  19. package/dist/server/handlers.js +1031 -0
  20. package/dist/server/handlers.js.map +1 -0
  21. package/dist/server/http-server.d.ts +13 -0
  22. package/dist/server/http-server.d.ts.map +1 -0
  23. package/dist/server/http-server.js +393 -0
  24. package/dist/server/http-server.js.map +1 -0
  25. package/dist/server/policies.d.ts +19 -0
  26. package/dist/server/policies.d.ts.map +1 -0
  27. package/dist/server/policies.js +32 -0
  28. package/dist/server/policies.js.map +1 -0
  29. package/dist/server/prompts.d.ts +19 -0
  30. package/dist/server/prompts.d.ts.map +1 -0
  31. package/dist/server/prompts.js +464 -0
  32. package/dist/server/prompts.js.map +1 -0
  33. package/dist/server/resources.d.ts +26 -0
  34. package/dist/server/resources.d.ts.map +1 -0
  35. package/dist/server/resources.js +348 -0
  36. package/dist/server/resources.js.map +1 -0
  37. package/dist/server/tools.d.ts +9 -0
  38. package/dist/server/tools.d.ts.map +1 -0
  39. package/dist/server/tools.js +977 -0
  40. package/dist/server/tools.js.map +1 -0
  41. package/dist/utils/oauth-metadata.d.ts.map +1 -0
  42. package/dist/utils/oauth-metadata.js.map +1 -0
  43. package/dist/{validation.d.ts → utils/validation.d.ts} +25 -2
  44. package/dist/utils/validation.d.ts.map +1 -0
  45. package/dist/{validation.js → utils/validation.js} +43 -3
  46. package/dist/utils/validation.js.map +1 -0
  47. package/docs/prompts-reference.md +370 -0
  48. package/docs/resources-reference.md +300 -0
  49. package/docs/tool-reference.md +244 -2
  50. package/package.json +4 -3
  51. package/dist/api-client.d.ts.map +0 -1
  52. package/dist/api-client.js.map +0 -1
  53. package/dist/oauth-metadata.d.ts.map +0 -1
  54. package/dist/oauth-metadata.js.map +0 -1
  55. package/dist/types.d.ts.map +0 -1
  56. package/dist/types.js.map +0 -1
  57. package/dist/validation.d.ts.map +0 -1
  58. package/dist/validation.js.map +0 -1
  59. /package/dist/{oauth-metadata.d.ts → utils/oauth-metadata.d.ts} +0 -0
  60. /package/dist/{oauth-metadata.js → utils/oauth-metadata.js} +0 -0
@@ -2,22 +2,35 @@
2
2
  * Sequentum API Client
3
3
  * Handles all HTTP communication with the Sequentum Control Center API
4
4
  */
5
- import { AuthenticationError, } from "./types.js";
5
+ import { AuthenticationError, ApiRequestError, RateLimitError, } from "./types.js";
6
+ /** Default retry configuration for transient failures */
7
+ const DEFAULT_MAX_RETRIES = 3;
8
+ const DEFAULT_BASE_DELAY_MS = 1000;
9
+ const DEFAULT_MAX_DELAY_MS = 30000;
10
+ /** HTTP status codes that are safe to retry on idempotent requests */
11
+ const RETRYABLE_STATUS_CODES = new Set([429, 502, 503, 504]);
6
12
  export class SequentumApiClient {
7
13
  baseUrl;
8
14
  apiKey;
9
15
  accessToken = null;
10
16
  requestTimeoutMs;
17
+ maxRetries;
18
+ baseDelayMs;
19
+ maxDelayMs;
11
20
  /**
12
21
  * Create a new Sequentum API client
13
22
  * @param baseUrl - The base URL of the Sequentum API (e.g., https://dashboard.sequentum.com)
14
23
  * @param apiKey - The API key (sk-...) for authentication (optional if using OAuth2)
15
24
  * @param requestTimeoutMs - Request timeout in milliseconds (default: 30000)
25
+ * @param maxRetries - Maximum number of retries for transient failures (default: 3)
16
26
  */
17
- constructor(baseUrl, apiKey = null, requestTimeoutMs = 30000) {
27
+ constructor(baseUrl, apiKey = null, requestTimeoutMs = 30000, maxRetries = DEFAULT_MAX_RETRIES) {
18
28
  this.baseUrl = baseUrl.replace(/\/$/, "");
19
29
  this.apiKey = apiKey;
20
30
  this.requestTimeoutMs = requestTimeoutMs;
31
+ this.maxRetries = maxRetries;
32
+ this.baseDelayMs = DEFAULT_BASE_DELAY_MS;
33
+ this.maxDelayMs = DEFAULT_MAX_DELAY_MS;
21
34
  }
22
35
  /**
23
36
  * Set the OAuth2 access token for Bearer authentication
@@ -44,71 +57,128 @@ export class SequentumApiClient {
44
57
  }
45
58
  throw new AuthenticationError("No authentication configured. Set either an API key or OAuth2 access token.");
46
59
  }
60
+ // ==========================================
61
+ // Error Parsing
62
+ // ==========================================
63
+ /**
64
+ * Parse an error response body from the Sequentum API.
65
+ *
66
+ * The API returns errors in two formats:
67
+ * - BadRequestError / InternalServerError: { statusCode, statusDescription, message, severity }
68
+ * - ProblemDetails (RFC 7807): { type, title, status, detail, instance }
69
+ *
70
+ * This method tries both formats and returns a human-readable message.
71
+ */
72
+ parseErrorBody(body) {
73
+ // Try BadRequestError / InternalServerError format first (has 'message')
74
+ if (body.message) {
75
+ return body.message;
76
+ }
77
+ // Try ProblemDetails (RFC 7807) format (has 'detail' or 'title')
78
+ if (body.detail) {
79
+ return body.title ? `${body.title}: ${body.detail}` : body.detail;
80
+ }
81
+ if (body.title) {
82
+ return body.title;
83
+ }
84
+ // Try statusDescription as last resort
85
+ if (body.statusDescription) {
86
+ return body.statusDescription;
87
+ }
88
+ return "";
89
+ }
47
90
  /**
48
- * Make an authenticated request to the API
91
+ * Parse the Retry-After header value into seconds.
92
+ * Supports both delta-seconds (e.g. "120") and HTTP-date formats.
93
+ * @returns seconds to wait, or null if header is missing/unparseable
49
94
  */
50
- async request(endpoint, options = {}) {
51
- const url = `${this.baseUrl}${endpoint}`;
52
- const headers = {
53
- Authorization: this.getAuthorizationHeader(),
54
- "Content-Type": "application/json",
55
- Accept: "application/json",
56
- ...options.headers,
57
- };
58
- // Setup timeout using AbortController
59
- const controller = new AbortController();
60
- const timeoutId = setTimeout(() => controller.abort(), this.requestTimeoutMs);
95
+ parseRetryAfter(response) {
96
+ const header = response.headers.get("retry-after");
97
+ if (!header)
98
+ return null;
99
+ // Try numeric (delta-seconds)
100
+ const seconds = Number(header);
101
+ if (!isNaN(seconds) && seconds >= 0) {
102
+ return seconds;
103
+ }
104
+ // Try HTTP-date
105
+ const date = new Date(header);
106
+ if (!isNaN(date.getTime())) {
107
+ const delayMs = date.getTime() - Date.now();
108
+ return Math.max(0, Math.ceil(delayMs / 1000));
109
+ }
110
+ return null;
111
+ }
112
+ /**
113
+ * Build a typed error from an HTTP error response.
114
+ * Reads the response body, parses it as JSON (handling both API error formats),
115
+ * and returns the appropriate error class.
116
+ */
117
+ async buildErrorFromResponse(response, endpoint) {
118
+ let errorMessage = `API Error ${response.status}: ${response.statusText}`;
61
119
  try {
62
- const response = await fetch(url, {
63
- ...options,
64
- headers,
65
- signal: controller.signal,
66
- });
67
- if (!response.ok) {
68
- let errorMessage = `API Error ${response.status}: ${response.statusText}`;
120
+ const errorText = await response.text();
121
+ if (errorText) {
69
122
  try {
70
- const errorText = await response.text();
71
- if (errorText) {
72
- try {
73
- const errorJson = JSON.parse(errorText);
74
- if (errorJson.message) {
75
- errorMessage = errorJson.message;
76
- }
77
- }
78
- catch {
79
- errorMessage = errorText;
80
- }
123
+ const errorJson = JSON.parse(errorText);
124
+ const parsed = this.parseErrorBody(errorJson);
125
+ if (parsed) {
126
+ errorMessage = parsed;
81
127
  }
82
128
  }
83
129
  catch {
84
- // Use default error message
130
+ // Not JSON — use raw text (but cap length to avoid huge HTML error pages)
131
+ errorMessage = errorText.length > 500 ? errorText.substring(0, 500) + "..." : errorText;
85
132
  }
86
- throw new Error(errorMessage);
87
- }
88
- // Handle redirect for file downloads
89
- if (response.redirected) {
90
- return { redirectUrl: response.url };
91
- }
92
- const contentType = response.headers.get("content-type");
93
- if (contentType?.includes("application/json")) {
94
- return response.json();
95
133
  }
96
- return response.text();
97
134
  }
98
- catch (error) {
99
- if (error instanceof Error && error.name === "AbortError") {
100
- throw new Error(`Request timeout after ${this.requestTimeoutMs}ms: ${endpoint}`);
101
- }
102
- throw error;
135
+ catch {
136
+ // Could not read body at all use default message
103
137
  }
104
- finally {
105
- clearTimeout(timeoutId);
138
+ // Return specialised subclass for 429
139
+ if (response.status === 429) {
140
+ const retryAfter = this.parseRetryAfter(response);
141
+ return new RateLimitError(errorMessage, endpoint, retryAfter);
106
142
  }
143
+ return new ApiRequestError(response.status, response.statusText, errorMessage, endpoint);
107
144
  }
145
+ // ==========================================
146
+ // Core HTTP Methods
147
+ // ==========================================
108
148
  /**
109
- * Make an authenticated request that doesn't expect a response body
149
+ * Calculate delay for exponential backoff with jitter.
150
+ * @param attempt - 0-based attempt number
151
+ * @param retryAfterSeconds - Optional Retry-After hint from the server
110
152
  */
111
- async requestVoid(endpoint, options = {}) {
153
+ getRetryDelay(attempt, retryAfterSeconds) {
154
+ if (retryAfterSeconds !== null && retryAfterSeconds > 0) {
155
+ // Respect Retry-After from server, capped at maxDelayMs
156
+ return Math.min(retryAfterSeconds * 1000, this.maxDelayMs);
157
+ }
158
+ // Exponential backoff: base * 2^attempt, with ±25% jitter
159
+ const exponential = this.baseDelayMs * Math.pow(2, attempt);
160
+ const jitter = exponential * (0.75 + Math.random() * 0.5);
161
+ return Math.min(jitter, this.maxDelayMs);
162
+ }
163
+ /**
164
+ * Sleep for the given number of milliseconds.
165
+ */
166
+ sleep(ms) {
167
+ return new Promise((resolve) => setTimeout(resolve, ms));
168
+ }
169
+ /**
170
+ * Core HTTP method used by both request<T>() and requestVoid().
171
+ * Handles authentication, timeout, error parsing, and automatic retry
172
+ * for transient failures (429, 502, 503, 504).
173
+ *
174
+ * @param endpoint - API path (e.g. "/api/v1/agent/all")
175
+ * @param options - fetch() options (method, body, etc.)
176
+ * @returns The raw Response object on success
177
+ * @throws ApiRequestError (or subclass) on HTTP errors after retries are exhausted
178
+ * @throws AuthenticationError if no credentials are configured
179
+ * @throws Error on timeout or network failure
180
+ */
181
+ async fetchWithRetry(endpoint, options = {}) {
112
182
  const url = `${this.baseUrl}${endpoint}`;
113
183
  const headers = {
114
184
  Authorization: this.getAuthorizationHeader(),
@@ -116,46 +186,90 @@ export class SequentumApiClient {
116
186
  Accept: "application/json",
117
187
  ...options.headers,
118
188
  };
119
- const controller = new AbortController();
120
- const timeoutId = setTimeout(() => controller.abort(), this.requestTimeoutMs);
121
- try {
122
- const response = await fetch(url, {
123
- ...options,
124
- headers,
125
- signal: controller.signal,
126
- });
127
- if (!response.ok) {
128
- let errorMessage = `API Error ${response.status}: ${response.statusText}`;
129
- try {
130
- const errorText = await response.text();
131
- if (errorText) {
132
- try {
133
- const errorJson = JSON.parse(errorText);
134
- if (errorJson.message) {
135
- errorMessage = errorJson.message;
136
- }
137
- }
138
- catch {
139
- errorMessage = errorText;
140
- }
141
- }
189
+ const method = (options.method || "GET").toUpperCase();
190
+ // Only retry on idempotent methods (GET, HEAD, PUT, DELETE, OPTIONS)
191
+ // POST is NOT retried to avoid duplicate side effects (e.g. starting an agent twice)
192
+ const isIdempotent = method !== "POST";
193
+ const maxAttempts = isIdempotent ? this.maxRetries + 1 : 1;
194
+ let lastError = null;
195
+ for (let attempt = 0; attempt < maxAttempts; attempt++) {
196
+ const controller = new AbortController();
197
+ const timeoutId = setTimeout(() => controller.abort(), this.requestTimeoutMs);
198
+ try {
199
+ const response = await fetch(url, {
200
+ ...options,
201
+ headers,
202
+ signal: controller.signal,
203
+ });
204
+ if (response.ok) {
205
+ return response;
142
206
  }
143
- catch {
144
- // Use default error message
207
+ // Build typed error from response
208
+ const error = await this.buildErrorFromResponse(response, endpoint);
209
+ // Don't retry auth errors (401/403) — they won't resolve with retries
210
+ if (error.isUnauthorized || error.isForbidden) {
211
+ throw error;
212
+ }
213
+ // Check if this status code is retryable
214
+ if (RETRYABLE_STATUS_CODES.has(response.status) && attempt < maxAttempts - 1) {
215
+ const retryAfter = error instanceof RateLimitError ? error.retryAfterSeconds : null;
216
+ const delay = this.getRetryDelay(attempt, retryAfter);
217
+ lastError = error;
218
+ await this.sleep(delay);
219
+ continue;
145
220
  }
146
- throw new Error(errorMessage);
221
+ // Non-retryable error — throw immediately
222
+ throw error;
147
223
  }
148
- // 204 No Content or any success status - just return
149
- }
150
- catch (error) {
151
- if (error instanceof Error && error.name === "AbortError") {
152
- throw new Error(`Request timeout after ${this.requestTimeoutMs}ms: ${endpoint}`);
224
+ catch (error) {
225
+ if (error instanceof ApiRequestError || error instanceof AuthenticationError) {
226
+ throw error;
227
+ }
228
+ if (error instanceof Error && error.name === "AbortError") {
229
+ const timeoutError = new Error(`Request timeout after ${this.requestTimeoutMs}ms: ${endpoint}`);
230
+ // Retry timeouts on idempotent requests
231
+ if (attempt < maxAttempts - 1) {
232
+ lastError = timeoutError;
233
+ const delay = this.getRetryDelay(attempt, null);
234
+ await this.sleep(delay);
235
+ continue;
236
+ }
237
+ throw timeoutError;
238
+ }
239
+ throw error;
240
+ }
241
+ finally {
242
+ clearTimeout(timeoutId);
153
243
  }
154
- throw error;
155
244
  }
156
- finally {
157
- clearTimeout(timeoutId);
245
+ // Should not reach here, but just in case
246
+ throw lastError || new Error(`Request failed after ${maxAttempts} attempts: ${endpoint}`);
247
+ }
248
+ /**
249
+ * Make an authenticated request to the API and parse the JSON response.
250
+ * Includes automatic retry for transient failures (429, 502, 503, 504) on
251
+ * idempotent methods.
252
+ */
253
+ async request(endpoint, options = {}) {
254
+ const response = await this.fetchWithRetry(endpoint, options);
255
+ // Handle redirect for file downloads
256
+ if (response.redirected) {
257
+ return { redirectUrl: response.url };
158
258
  }
259
+ const contentType = response.headers.get("content-type");
260
+ if (contentType?.includes("application/json")) {
261
+ return response.json();
262
+ }
263
+ return response.text();
264
+ }
265
+ /**
266
+ * Make an authenticated request that doesn't expect a response body.
267
+ * Includes automatic retry for transient failures (429, 502, 503, 504) on
268
+ * idempotent methods.
269
+ */
270
+ async requestVoid(endpoint, options = {}) {
271
+ await this.fetchWithRetry(endpoint, options);
272
+ // 204 No Content or any success status — just return
159
273
  }
160
274
  // ==========================================
161
275
  // Agent Operations
@@ -353,20 +467,40 @@ export class SequentumApiClient {
353
467
  * @returns The created schedule
354
468
  */
355
469
  async createAgentSchedule(agentId, request) {
470
+ const body = {
471
+ Name: request.name,
472
+ IsEnabled: request.isEnabled ?? true,
473
+ Parallelism: request.parallelism ?? 1,
474
+ };
475
+ if (request.scheduleType !== undefined)
476
+ body.ScheduleType = request.scheduleType;
477
+ if (request.cronExpression !== undefined)
478
+ body.CronExpression = request.cronExpression;
479
+ if (request.startTime !== undefined)
480
+ body.StartTime = request.startTime;
481
+ if (request.runEveryCount !== undefined)
482
+ body.RunEveryCount = request.runEveryCount;
483
+ if (request.runEveryPeriod !== undefined)
484
+ body.RunEveryPeriod = request.runEveryPeriod;
485
+ if (request.timezone !== undefined)
486
+ body.Timezone = request.timezone;
487
+ if (request.inputParameters !== undefined)
488
+ body.InputParameters = request.inputParameters;
489
+ if (request.parallelMaxConcurrency !== undefined)
490
+ body.ParallelMaxConcurrency = request.parallelMaxConcurrency;
491
+ if (request.parallelExport !== undefined)
492
+ body.ParallelExport = request.parallelExport;
493
+ if (request.logLevel !== undefined)
494
+ body.LogLevel = request.logLevel;
495
+ if (request.logMode !== undefined)
496
+ body.LogMode = request.logMode;
497
+ if (request.isExclusive !== undefined)
498
+ body.IsExclusive = request.isExclusive;
499
+ if (request.isWaitOnFailure !== undefined)
500
+ body.IsWaitOnFailure = request.isWaitOnFailure;
356
501
  return this.request(`/api/v1/agent/${agentId}/schedules`, {
357
502
  method: "POST",
358
- body: JSON.stringify({
359
- Name: request.name,
360
- ScheduleType: request.scheduleType,
361
- CronExpression: request.cronExpression,
362
- StartTime: request.startTime,
363
- RunEveryCount: request.runEveryCount,
364
- RunEveryPeriod: request.runEveryPeriod,
365
- Timezone: request.timezone,
366
- InputParameters: request.inputParameters,
367
- IsEnabled: request.isEnabled ?? true,
368
- Parallelism: request.parallelism ?? 1,
369
- }),
503
+ body: JSON.stringify(body),
370
504
  });
371
505
  }
372
506
  /**
@@ -377,6 +511,81 @@ export class SequentumApiClient {
377
511
  async deleteAgentSchedule(agentId, scheduleId) {
378
512
  await this.requestVoid(`/api/v1/agent/${agentId}/schedules/${scheduleId}`, { method: "DELETE" });
379
513
  }
514
+ /**
515
+ * Get a specific schedule by ID
516
+ * @param agentId - The ID of the agent
517
+ * @param scheduleId - The ID of the schedule
518
+ * @returns The schedule details
519
+ */
520
+ async getAgentSchedule(agentId, scheduleId) {
521
+ return this.request(`/api/v1/agent/${agentId}/schedules/${scheduleId}`);
522
+ }
523
+ /**
524
+ * Update an existing schedule
525
+ * @param agentId - The ID of the agent
526
+ * @param scheduleId - The ID of the schedule to update
527
+ * @param request - The updated schedule configuration
528
+ * @returns The updated schedule
529
+ */
530
+ async updateAgentSchedule(agentId, scheduleId, request) {
531
+ const body = { Name: request.name };
532
+ if (request.scheduleType !== undefined)
533
+ body.ScheduleType = request.scheduleType;
534
+ if (request.cronExpression !== undefined)
535
+ body.CronExpression = request.cronExpression;
536
+ if (request.localSchedule !== undefined)
537
+ body.LocalSchedule = request.localSchedule;
538
+ if (request.startTime !== undefined)
539
+ body.StartTime = request.startTime;
540
+ if (request.runEveryCount !== undefined)
541
+ body.RunEveryCount = request.runEveryCount;
542
+ if (request.runEveryPeriod !== undefined)
543
+ body.RunEveryPeriod = request.runEveryPeriod;
544
+ if (request.timezone !== undefined)
545
+ body.Timezone = request.timezone;
546
+ if (request.inputParameters !== undefined)
547
+ body.InputParameters = request.inputParameters;
548
+ if (request.isEnabled !== undefined)
549
+ body.IsEnabled = request.isEnabled;
550
+ if (request.parallelism !== undefined)
551
+ body.Parallelism = request.parallelism;
552
+ if (request.parallelMaxConcurrency !== undefined)
553
+ body.ParallelMaxConcurrency = request.parallelMaxConcurrency;
554
+ if (request.parallelExport !== undefined)
555
+ body.ParallelExport = request.parallelExport;
556
+ if (request.proxyPoolId !== undefined)
557
+ body.ProxyPoolId = request.proxyPoolId;
558
+ if (request.serverGroupId !== undefined)
559
+ body.ServerGroupId = request.serverGroupId;
560
+ if (request.logLevel !== undefined)
561
+ body.LogLevel = request.logLevel;
562
+ if (request.logMode !== undefined)
563
+ body.LogMode = request.logMode;
564
+ if (request.isExclusive !== undefined)
565
+ body.IsExclusive = request.isExclusive;
566
+ if (request.isWaitOnFailure !== undefined)
567
+ body.IsWaitOnFailure = request.isWaitOnFailure;
568
+ return this.request(`/api/v1/agent/${agentId}/schedules/${scheduleId}`, {
569
+ method: "PUT",
570
+ body: JSON.stringify(body),
571
+ });
572
+ }
573
+ /**
574
+ * Enable a schedule so it runs according to its configuration
575
+ * @param agentId - The ID of the agent
576
+ * @param scheduleId - The ID of the schedule to enable
577
+ */
578
+ async enableAgentSchedule(agentId, scheduleId) {
579
+ await this.requestVoid(`/api/v1/agent/${agentId}/schedules/${scheduleId}/enable`, { method: "POST" });
580
+ }
581
+ /**
582
+ * Disable a schedule so it will not run until re-enabled
583
+ * @param agentId - The ID of the agent
584
+ * @param scheduleId - The ID of the schedule to disable
585
+ */
586
+ async disableAgentSchedule(agentId, scheduleId) {
587
+ await this.requestVoid(`/api/v1/agent/${agentId}/schedules/${scheduleId}/disable`, { method: "POST" });
588
+ }
380
589
  /**
381
590
  * Get upcoming scheduled runs
382
591
  * @param startDate - Optional start date (ISO format)
@@ -583,7 +792,7 @@ export class SequentumApiClient {
583
792
  params.append("startDate", startDate);
584
793
  if (endDate)
585
794
  params.append("endDate", endDate);
586
- if (agentId)
795
+ if (agentId !== undefined)
587
796
  params.append("agentId", String(agentId));
588
797
  const query = params.toString() ? `?${params.toString()}` : "";
589
798
  return this.request(`/api/v1/analytics/records/summary${query}`);
@@ -603,5 +812,42 @@ export class SequentumApiClient {
603
812
  async getLatestFailure(agentId) {
604
813
  return this.request(`/api/v1/analytics/agents/${agentId}/latest-failure`);
605
814
  }
815
+ // ==========================================
816
+ // Agent Builder Operations
817
+ // ==========================================
818
+ /**
819
+ * Start a new agent building session.
820
+ * Returns immediately with a sessionId — building runs asynchronously.
821
+ * Poll getAgentBuildStatus until status reaches a terminal value: "completed", "ready", "error", or "cancelled".
822
+ * @param request - The prompt and optional spaceId
823
+ */
824
+ async startAgentBuild(request) {
825
+ return this.request(`/api/v1/agent-builder/start`, {
826
+ method: "POST",
827
+ body: JSON.stringify({
828
+ prompt: request.prompt,
829
+ ...(request.spaceId !== undefined && { spaceId: request.spaceId }),
830
+ }),
831
+ });
832
+ }
833
+ /**
834
+ * Get the current status of an agent building session.
835
+ * Lightweight polling endpoint — call this until status reaches a terminal value: "completed", "ready", "error", or "cancelled".
836
+ * @param sessionId - The session ID returned from startAgentBuild
837
+ */
838
+ async getAgentBuildStatus(sessionId) {
839
+ return this.request(`/api/v1/agent-builder/${encodeURIComponent(sessionId)}/status`);
840
+ }
841
+ /**
842
+ * Abort an in-progress agent building session early.
843
+ * Has no effect once the session has already reached a terminal status.
844
+ * The agent draft (if already created) persists in the workspace — use
845
+ * the standard agents API to delete it if unwanted.
846
+ * Returns 204 No Content on success.
847
+ * @param sessionId - The session ID
848
+ */
849
+ async stopAgentBuild(sessionId) {
850
+ await this.requestVoid(`/api/v1/agent-builder/${encodeURIComponent(sessionId)}/stop`, { method: "POST" });
851
+ }
606
852
  }
607
853
  //# sourceMappingURL=api-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-client.js","sourceRoot":"","sources":["../../src/api/api-client.ts"],"names":[],"mappings":"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"}