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.
- package/CHANGELOG.md +100 -0
- package/README.md +104 -3
- package/dist/{api-client.d.ts → api/api-client.d.ts} +106 -4
- package/dist/api/api-client.d.ts.map +1 -0
- package/dist/{api-client.js → api/api-client.js} +345 -99
- package/dist/api/api-client.js.map +1 -0
- package/dist/{types.d.ts → api/types.d.ts} +122 -12
- package/dist/api/types.d.ts.map +1 -0
- package/dist/{types.js → api/types.js} +57 -0
- package/dist/api/types.js.map +1 -0
- package/dist/index.js +11 -1737
- package/dist/index.js.map +1 -1
- package/dist/server/cors.d.ts +33 -0
- package/dist/server/cors.d.ts.map +1 -0
- package/dist/server/cors.js +72 -0
- package/dist/server/cors.js.map +1 -0
- package/dist/server/handlers.d.ts +49 -0
- package/dist/server/handlers.d.ts.map +1 -0
- package/dist/server/handlers.js +1031 -0
- package/dist/server/handlers.js.map +1 -0
- package/dist/server/http-server.d.ts +13 -0
- package/dist/server/http-server.d.ts.map +1 -0
- package/dist/server/http-server.js +393 -0
- package/dist/server/http-server.js.map +1 -0
- package/dist/server/policies.d.ts +19 -0
- package/dist/server/policies.d.ts.map +1 -0
- package/dist/server/policies.js +32 -0
- package/dist/server/policies.js.map +1 -0
- package/dist/server/prompts.d.ts +19 -0
- package/dist/server/prompts.d.ts.map +1 -0
- package/dist/server/prompts.js +464 -0
- package/dist/server/prompts.js.map +1 -0
- package/dist/server/resources.d.ts +26 -0
- package/dist/server/resources.d.ts.map +1 -0
- package/dist/server/resources.js +348 -0
- package/dist/server/resources.js.map +1 -0
- package/dist/server/tools.d.ts +9 -0
- package/dist/server/tools.d.ts.map +1 -0
- package/dist/server/tools.js +977 -0
- package/dist/server/tools.js.map +1 -0
- package/dist/utils/oauth-metadata.d.ts.map +1 -0
- package/dist/utils/oauth-metadata.js.map +1 -0
- package/dist/{validation.d.ts → utils/validation.d.ts} +25 -2
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/{validation.js → utils/validation.js} +43 -3
- package/dist/utils/validation.js.map +1 -0
- package/docs/prompts-reference.md +370 -0
- package/docs/resources-reference.md +300 -0
- package/docs/tool-reference.md +244 -2
- package/package.json +4 -3
- package/dist/api-client.d.ts.map +0 -1
- package/dist/api-client.js.map +0 -1
- package/dist/oauth-metadata.d.ts.map +0 -1
- package/dist/oauth-metadata.js.map +0 -1
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js.map +0 -1
- package/dist/validation.d.ts.map +0 -1
- package/dist/validation.js.map +0 -1
- /package/dist/{oauth-metadata.d.ts → utils/oauth-metadata.d.ts} +0 -0
- /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
|
-
*
|
|
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
|
-
|
|
51
|
-
const
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const
|
|
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
|
|
63
|
-
|
|
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
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
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
|
-
//
|
|
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
|
|
99
|
-
|
|
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
|
-
|
|
105
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
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
|
-
|
|
144
|
-
|
|
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
|
|
221
|
+
// Non-retryable error — throw immediately
|
|
222
|
+
throw error;
|
|
147
223
|
}
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
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
|
-
|
|
157
|
-
|
|
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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"}
|