@agentuity/server 1.0.18 → 1.0.20
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/dist/api/api.d.ts.map +1 -1
- package/dist/api/api.js.map +1 -1
- package/dist/api/queue/analytics.d.ts.map +1 -1
- package/dist/api/queue/analytics.js.map +1 -1
- package/dist/api/queue/destinations.d.ts.map +1 -1
- package/dist/api/queue/destinations.js +2 -2
- package/dist/api/queue/destinations.js.map +1 -1
- package/dist/api/queue/dlq.d.ts.map +1 -1
- package/dist/api/queue/dlq.js +1 -1
- package/dist/api/queue/dlq.js.map +1 -1
- package/dist/api/queue/queues.d.ts.map +1 -1
- package/dist/api/queue/queues.js.map +1 -1
- package/dist/api/queue/sources.d.ts.map +1 -1
- package/dist/api/queue/sources.js +1 -1
- package/dist/api/queue/sources.js.map +1 -1
- package/dist/api/queue/websocket.d.ts +24 -0
- package/dist/api/queue/websocket.d.ts.map +1 -1
- package/dist/api/queue/websocket.js +20 -2
- package/dist/api/queue/websocket.js.map +1 -1
- package/dist/api/region/create.d.ts.map +1 -1
- package/dist/api/region/create.js +6 -0
- package/dist/api/region/create.js.map +1 -1
- package/dist/api/sandbox/cli-list.d.ts.map +1 -1
- package/dist/api/sandbox/cli-list.js.map +1 -1
- package/dist/api/sandbox/client.d.ts +4 -0
- package/dist/api/sandbox/client.d.ts.map +1 -1
- package/dist/api/sandbox/client.js +1 -0
- package/dist/api/sandbox/client.js.map +1 -1
- package/dist/api/sandbox/create.d.ts +6 -0
- package/dist/api/sandbox/create.d.ts.map +1 -1
- package/dist/api/sandbox/create.js +12 -1
- package/dist/api/sandbox/create.js.map +1 -1
- package/dist/api/sandbox/get.d.ts +4 -0
- package/dist/api/sandbox/get.d.ts.map +1 -1
- package/dist/api/sandbox/get.js +15 -1
- package/dist/api/sandbox/get.js.map +1 -1
- package/dist/api/sandbox/getStatus.d.ts +16 -0
- package/dist/api/sandbox/getStatus.d.ts.map +1 -0
- package/dist/api/sandbox/getStatus.js +32 -0
- package/dist/api/sandbox/getStatus.js.map +1 -0
- package/dist/api/sandbox/index.d.ts +2 -0
- package/dist/api/sandbox/index.d.ts.map +1 -1
- package/dist/api/sandbox/index.js +1 -0
- package/dist/api/sandbox/index.js.map +1 -1
- package/dist/api/sandbox/list.d.ts +6 -0
- package/dist/api/sandbox/list.d.ts.map +1 -1
- package/dist/api/sandbox/list.js +15 -1
- package/dist/api/sandbox/list.js.map +1 -1
- package/dist/api/sandbox/pause.d.ts.map +1 -1
- package/dist/api/sandbox/pause.js.map +1 -1
- package/dist/api/sandbox/resume.d.ts.map +1 -1
- package/dist/api/sandbox/resume.js.map +1 -1
- package/dist/api/sandbox/run.d.ts.map +1 -1
- package/dist/api/sandbox/run.js +94 -70
- package/dist/api/sandbox/run.js.map +1 -1
- package/package.json +4 -4
- package/src/api/api.ts +3 -8
- package/src/api/queue/analytics.ts +1 -7
- package/src/api/queue/destinations.ts +5 -6
- package/src/api/queue/dlq.ts +7 -7
- package/src/api/queue/queues.ts +6 -1
- package/src/api/queue/sources.ts +1 -6
- package/src/api/queue/websocket.ts +32 -6
- package/src/api/region/create.ts +6 -0
- package/src/api/sandbox/cli-list.ts +9 -1
- package/src/api/sandbox/client.ts +6 -0
- package/src/api/sandbox/create.ts +14 -1
- package/src/api/sandbox/get.ts +15 -1
- package/src/api/sandbox/getStatus.ts +54 -0
- package/src/api/sandbox/index.ts +2 -0
- package/src/api/sandbox/list.ts +15 -1
- package/src/api/sandbox/pause.ts +1 -4
- package/src/api/sandbox/resume.ts +1 -4
- package/src/api/sandbox/run.ts +103 -78
package/dist/api/sandbox/run.js
CHANGED
|
@@ -2,9 +2,10 @@ import { PassThrough } from 'node:stream';
|
|
|
2
2
|
import { PaymentRequiredError } from "../api.js";
|
|
3
3
|
import { sandboxCreate } from "./create.js";
|
|
4
4
|
import { sandboxDestroy } from "./destroy.js";
|
|
5
|
-
import {
|
|
6
|
-
import { ExecutionCancelledError,
|
|
5
|
+
import { sandboxGetStatus } from "./getStatus.js";
|
|
6
|
+
import { ExecutionCancelledError, writeAndDrain } from "./util.js";
|
|
7
7
|
import { getServiceUrls } from "../../config.js";
|
|
8
|
+
const timingLogsEnabled = false;
|
|
8
9
|
/**
|
|
9
10
|
* Creates a Writable stream that captures all chunks to a buffer array
|
|
10
11
|
* and optionally tees (forwards) them to one or more user-provided streams.
|
|
@@ -22,13 +23,11 @@ function createTeeWritable(chunks, ...userStreams) {
|
|
|
22
23
|
// Pipe to all provided user streams with proper backpressure handling
|
|
23
24
|
for (const userStream of userStreams) {
|
|
24
25
|
if (userStream) {
|
|
25
|
-
tee.pipe(userStream);
|
|
26
|
+
tee.pipe(userStream, { end: false });
|
|
26
27
|
}
|
|
27
28
|
}
|
|
28
29
|
return tee;
|
|
29
30
|
}
|
|
30
|
-
const POLL_INTERVAL_MS = 500;
|
|
31
|
-
const MAX_POLL_ATTEMPTS = 7200;
|
|
32
31
|
/**
|
|
33
32
|
* Creates a sandbox, executes a command, and waits for completion.
|
|
34
33
|
*
|
|
@@ -43,6 +42,8 @@ const MAX_POLL_ATTEMPTS = 7200;
|
|
|
43
42
|
export async function sandboxRun(client, params) {
|
|
44
43
|
const { options, orgId, region, apiKey, signal, stdin, stdout, stderr, logger } = params;
|
|
45
44
|
const started = Date.now();
|
|
45
|
+
if (timingLogsEnabled)
|
|
46
|
+
console.error(`[TIMING] +0ms: sandbox run started`);
|
|
46
47
|
let stdinStreamId;
|
|
47
48
|
let stdinStreamUrl;
|
|
48
49
|
// If stdin is provided and has data, create a stream for it
|
|
@@ -71,6 +72,8 @@ export async function sandboxRun(client, params) {
|
|
|
71
72
|
const stdoutStreamUrl = createResponse.stdoutStreamUrl;
|
|
72
73
|
const stderrStreamUrl = createResponse.stderrStreamUrl;
|
|
73
74
|
logger?.debug('sandbox created: %s, stdoutUrl: %s, stderrUrl: %s', sandboxId, stdoutStreamUrl ?? 'none', stderrStreamUrl ?? 'none');
|
|
75
|
+
if (timingLogsEnabled)
|
|
76
|
+
console.error(`[TIMING] +${Date.now() - started}ms: sandbox created (${sandboxId})`);
|
|
74
77
|
const abortController = new AbortController();
|
|
75
78
|
const streamPromises = [];
|
|
76
79
|
// Create capture buffers for stdout/stderr
|
|
@@ -85,12 +88,11 @@ export async function sandboxRun(client, params) {
|
|
|
85
88
|
// Check if stdout and stderr are the same stream (combined output)
|
|
86
89
|
const isCombinedOutput = stdoutStreamUrl && stderrStreamUrl && stdoutStreamUrl === stderrStreamUrl;
|
|
87
90
|
if (isCombinedOutput) {
|
|
88
|
-
// Stream combined output
|
|
91
|
+
// Stream combined output to stdout only to avoid duplicates
|
|
89
92
|
if (stdoutStreamUrl) {
|
|
90
93
|
logger?.debug('using combined output stream (stdout === stderr)');
|
|
91
|
-
|
|
92
|
-
const
|
|
93
|
-
const combinedPromise = streamUrlToWritable(stdoutStreamUrl, teeStream, abortController.signal, logger);
|
|
94
|
+
const teeStream = createTeeWritable(stdoutChunks, stdout);
|
|
95
|
+
const combinedPromise = streamUrlToWritable(stdoutStreamUrl, teeStream, abortController.signal, logger, started);
|
|
94
96
|
streamPromises.push(combinedPromise);
|
|
95
97
|
}
|
|
96
98
|
}
|
|
@@ -98,82 +100,94 @@ export async function sandboxRun(client, params) {
|
|
|
98
100
|
// Start stdout streaming with capture
|
|
99
101
|
if (stdoutStreamUrl) {
|
|
100
102
|
const teeStream = createTeeWritable(stdoutChunks, stdout);
|
|
101
|
-
const stdoutPromise = streamUrlToWritable(stdoutStreamUrl, teeStream, abortController.signal, logger);
|
|
103
|
+
const stdoutPromise = streamUrlToWritable(stdoutStreamUrl, teeStream, abortController.signal, logger, started);
|
|
102
104
|
streamPromises.push(stdoutPromise);
|
|
103
105
|
}
|
|
104
106
|
// Start stderr streaming with capture
|
|
105
107
|
if (stderrStreamUrl) {
|
|
106
108
|
const teeStream = createTeeWritable(stderrChunks, stderr);
|
|
107
|
-
const stderrPromise = streamUrlToWritable(stderrStreamUrl, teeStream, abortController.signal, logger);
|
|
109
|
+
const stderrPromise = streamUrlToWritable(stderrStreamUrl, teeStream, abortController.signal, logger, started);
|
|
108
110
|
streamPromises.push(stderrPromise);
|
|
109
111
|
}
|
|
110
112
|
}
|
|
111
|
-
//
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
113
|
+
// Wait for streams to complete — Pulse closes streams on sandbox termination (EOF).
|
|
114
|
+
// This is our primary completion signal; no polling needed.
|
|
115
|
+
logger?.debug('waiting for streams to complete...');
|
|
116
|
+
if (streamPromises.length > 0) {
|
|
117
|
+
if (signal) {
|
|
118
|
+
// Race streams against abort signal, cleaning up the listener
|
|
119
|
+
// in all cases so an orphaned reject cannot fire after settlement.
|
|
120
|
+
let onAbort;
|
|
121
|
+
try {
|
|
122
|
+
await Promise.race([
|
|
123
|
+
Promise.allSettled(streamPromises),
|
|
124
|
+
new Promise((_, reject) => {
|
|
125
|
+
onAbort = () => {
|
|
126
|
+
abortController.abort();
|
|
127
|
+
reject(new ExecutionCancelledError({
|
|
128
|
+
message: 'Sandbox execution cancelled',
|
|
129
|
+
sandboxId,
|
|
130
|
+
}));
|
|
131
|
+
};
|
|
132
|
+
if (signal.aborted) {
|
|
133
|
+
onAbort();
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
signal.addEventListener('abort', onAbort, { once: true });
|
|
137
|
+
}
|
|
138
|
+
}),
|
|
139
|
+
]);
|
|
131
140
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
141
|
+
finally {
|
|
142
|
+
if (onAbort && signal) {
|
|
143
|
+
signal.removeEventListener('abort', onAbort);
|
|
144
|
+
}
|
|
136
145
|
}
|
|
137
146
|
}
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
continue;
|
|
147
|
+
else {
|
|
148
|
+
await Promise.allSettled(streamPromises);
|
|
141
149
|
}
|
|
142
150
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
151
|
+
else {
|
|
152
|
+
// No streams available (shouldn't happen for oneshot, but handle defensively).
|
|
153
|
+
// Fall back to a single wait then check.
|
|
154
|
+
logger?.debug('no streams to wait on, checking sandbox status directly');
|
|
155
|
+
}
|
|
156
|
+
if (timingLogsEnabled)
|
|
157
|
+
console.error(`[TIMING] +${Date.now() - started}ms: all streams done, fetching exit code`);
|
|
158
|
+
logger?.debug('streams completed, fetching final status');
|
|
159
|
+
// Stream EOF means the sandbox is done — hadron only closes streams after the
|
|
160
|
+
// container exits. Fetch status once for the exit code; if lifecycle events
|
|
161
|
+
// haven't propagated to Catalyst yet, default to exit code 0.
|
|
162
|
+
let exitCode = 0;
|
|
163
|
+
try {
|
|
164
|
+
const sandboxStatus = await sandboxGetStatus(client, { sandboxId, orgId });
|
|
165
|
+
if (sandboxStatus.exitCode != null) {
|
|
166
|
+
exitCode = sandboxStatus.exitCode;
|
|
167
|
+
}
|
|
168
|
+
else if (sandboxStatus.status === 'failed') {
|
|
169
|
+
exitCode = 1;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
catch {
|
|
173
|
+
// Sandbox may already be destroyed (fire-and-forget teardown).
|
|
174
|
+
// Stream EOF already confirmed execution completed.
|
|
175
|
+
logger?.debug('sandboxGetStatus failed after stream EOF, using default exit code 0');
|
|
176
|
+
}
|
|
177
|
+
if (timingLogsEnabled)
|
|
178
|
+
console.error(`[TIMING] +${Date.now() - started}ms: sandboxGet complete (exit: ${exitCode})`);
|
|
149
179
|
// Build captured output strings
|
|
150
180
|
const capturedStdout = Buffer.concat(stdoutChunks).toString('utf-8');
|
|
151
|
-
// For combined output, stderr is the same as stdout; otherwise use stderrChunks
|
|
152
181
|
const capturedStderr = isCombinedOutput
|
|
153
182
|
? capturedStdout
|
|
154
183
|
: Buffer.concat(stderrChunks).toString('utf-8');
|
|
155
|
-
|
|
156
|
-
return {
|
|
157
|
-
sandboxId,
|
|
158
|
-
exitCode: finalExitCode ?? 0,
|
|
159
|
-
durationMs: Date.now() - started,
|
|
160
|
-
stdout: capturedStdout,
|
|
161
|
-
stderr: capturedStderr,
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
if (finalStatus === 'failed') {
|
|
165
|
-
return {
|
|
166
|
-
sandboxId,
|
|
167
|
-
exitCode: finalExitCode ?? 1,
|
|
168
|
-
durationMs: Date.now() - started,
|
|
169
|
-
stdout: capturedStdout,
|
|
170
|
-
stderr: capturedStderr,
|
|
171
|
-
};
|
|
172
|
-
}
|
|
173
|
-
throw new ExecutionTimeoutError({
|
|
174
|
-
message: 'Sandbox execution polling timed out',
|
|
184
|
+
return {
|
|
175
185
|
sandboxId,
|
|
176
|
-
|
|
186
|
+
exitCode,
|
|
187
|
+
durationMs: Date.now() - started,
|
|
188
|
+
stdout: capturedStdout,
|
|
189
|
+
stderr: capturedStderr,
|
|
190
|
+
};
|
|
177
191
|
}
|
|
178
192
|
catch (error) {
|
|
179
193
|
abortController.abort();
|
|
@@ -281,28 +295,41 @@ async function streamStdinToUrl(stdin, url, apiKey, signal, logger) {
|
|
|
281
295
|
}
|
|
282
296
|
}
|
|
283
297
|
}
|
|
284
|
-
async function streamUrlToWritable(url, writable, signal, logger) {
|
|
298
|
+
async function streamUrlToWritable(url, writable, signal, logger, started) {
|
|
285
299
|
try {
|
|
286
300
|
logger?.debug('fetching stream: %s', url);
|
|
287
301
|
const response = await fetch(url, { signal });
|
|
288
302
|
logger?.debug('stream response status: %d', response.status);
|
|
303
|
+
if (timingLogsEnabled && started)
|
|
304
|
+
console.error(`[TIMING] +${Date.now() - started}ms: stream response received (status: ${response.status})`);
|
|
289
305
|
if (!response.ok || !response.body) {
|
|
290
306
|
logger?.debug('stream response not ok or no body');
|
|
291
307
|
return;
|
|
292
308
|
}
|
|
293
309
|
const reader = response.body.getReader();
|
|
310
|
+
let firstChunk = true;
|
|
294
311
|
// Read until EOF - Pulse will block until data is available
|
|
295
312
|
while (true) {
|
|
296
313
|
const { done, value } = await reader.read();
|
|
297
314
|
if (done) {
|
|
298
315
|
logger?.debug('stream EOF');
|
|
316
|
+
if (timingLogsEnabled && started)
|
|
317
|
+
console.error(`[TIMING] +${Date.now() - started}ms: stream EOF`);
|
|
299
318
|
break;
|
|
300
319
|
}
|
|
301
320
|
if (value) {
|
|
321
|
+
if (firstChunk && started) {
|
|
322
|
+
if (timingLogsEnabled)
|
|
323
|
+
console.error(`[TIMING] +${Date.now() - started}ms: first chunk (${value.length} bytes)`);
|
|
324
|
+
firstChunk = false;
|
|
325
|
+
}
|
|
302
326
|
logger?.debug('stream chunk: %d bytes', value.length);
|
|
303
327
|
await writeAndDrain(writable, value);
|
|
304
328
|
}
|
|
305
329
|
}
|
|
330
|
+
// Signal end-of-stream to the tee/pipe chain so downstream
|
|
331
|
+
// consumers (e.g. process.stdout pipe) know no more data is coming.
|
|
332
|
+
writable.end();
|
|
306
333
|
}
|
|
307
334
|
catch (err) {
|
|
308
335
|
if (err instanceof Error && err.name === 'AbortError') {
|
|
@@ -312,7 +339,4 @@ async function streamUrlToWritable(url, writable, signal, logger) {
|
|
|
312
339
|
logger?.debug('stream error: %s', err);
|
|
313
340
|
}
|
|
314
341
|
}
|
|
315
|
-
function sleep(ms) {
|
|
316
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
317
|
-
}
|
|
318
342
|
//# sourceMappingURL=run.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/api/sandbox/run.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../../src/api/sandbox/run.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentuity/server",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.20",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"author": "Agentuity employees and contributors",
|
|
6
6
|
"type": "module",
|
|
@@ -25,12 +25,12 @@
|
|
|
25
25
|
"prepublishOnly": "bun run clean && bun run build"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@agentuity/core": "1.0.
|
|
29
|
-
"@agentuity/schema": "1.0.
|
|
28
|
+
"@agentuity/core": "1.0.20",
|
|
29
|
+
"@agentuity/schema": "1.0.20",
|
|
30
30
|
"zod": "^4.3.5"
|
|
31
31
|
},
|
|
32
32
|
"devDependencies": {
|
|
33
|
-
"@agentuity/test-utils": "1.0.
|
|
33
|
+
"@agentuity/test-utils": "1.0.20",
|
|
34
34
|
"@types/bun": "latest",
|
|
35
35
|
"@types/node": "^22.0.0",
|
|
36
36
|
"bun-types": "latest",
|
package/src/api/api.ts
CHANGED
|
@@ -368,8 +368,7 @@ export class APIClient {
|
|
|
368
368
|
|
|
369
369
|
const maxRetries = this.#config?.maxRetries ?? 3;
|
|
370
370
|
const baseDelayMs = this.#config?.retryDelayMs ?? 100;
|
|
371
|
-
const serviceUnavailableTimeoutMs =
|
|
372
|
-
this.#config?.serviceUnavailableTimeoutMs ?? 30_000;
|
|
371
|
+
const serviceUnavailableTimeoutMs = this.#config?.serviceUnavailableTimeoutMs ?? 30_000;
|
|
373
372
|
|
|
374
373
|
// Track when we first see a 502/503 so we can retry for up to the timeout
|
|
375
374
|
let serviceUnavailableStart: number | null = null;
|
|
@@ -535,8 +534,7 @@ export class APIClient {
|
|
|
535
534
|
// 502/503 indicate the service is restarting (hot-swap) — retry
|
|
536
535
|
// for up to serviceUnavailableTimeoutMs (default 30s) with a
|
|
537
536
|
// slower backoff (1s base) so we survive typical restart windows.
|
|
538
|
-
const isServiceUnavailable =
|
|
539
|
-
response.status === 502 || response.status === 503;
|
|
537
|
+
const isServiceUnavailable = response.status === 502 || response.status === 503;
|
|
540
538
|
|
|
541
539
|
if (isServiceUnavailable && canRetry) {
|
|
542
540
|
if (serviceUnavailableStart === null) {
|
|
@@ -545,10 +543,7 @@ export class APIClient {
|
|
|
545
543
|
const elapsed = Date.now() - serviceUnavailableStart;
|
|
546
544
|
if (elapsed < serviceUnavailableTimeoutMs) {
|
|
547
545
|
// Use 1s base delay with exponential backoff, capped at 5s
|
|
548
|
-
const delayMs = Math.min(
|
|
549
|
-
this.#getRetryDelay(attempt, 1000),
|
|
550
|
-
5000
|
|
551
|
-
);
|
|
546
|
+
const delayMs = Math.min(this.#getRetryDelay(attempt, 1000), 5000);
|
|
552
547
|
this.#logger.debug(
|
|
553
548
|
`Got ${response.status} sending to ${url}, service unavailable for ${Math.round(elapsed / 1000)}s, retrying (will delay ${delayMs}ms), sessionId: ${sessionId ?? null}`
|
|
554
549
|
);
|
|
@@ -172,13 +172,7 @@ export async function getQueueTimeSeries(
|
|
|
172
172
|
const queryString = buildAnalyticsQuery(options);
|
|
173
173
|
const url = queueApiPathWithQuery('analytics/timeseries', queryString, name);
|
|
174
174
|
const resp = await withQueueErrorHandling(
|
|
175
|
-
() =>
|
|
176
|
-
client.get(
|
|
177
|
-
url,
|
|
178
|
-
TimeSeriesResponseSchema,
|
|
179
|
-
undefined,
|
|
180
|
-
buildQueueHeaders(options?.orgId)
|
|
181
|
-
),
|
|
175
|
+
() => client.get(url, TimeSeriesResponseSchema, undefined, buildQueueHeaders(options?.orgId)),
|
|
182
176
|
{ queueName: name }
|
|
183
177
|
);
|
|
184
178
|
|
|
@@ -9,13 +9,12 @@ import {
|
|
|
9
9
|
type UpdateDestinationRequest,
|
|
10
10
|
UpdateDestinationRequestSchema,
|
|
11
11
|
} from './types.ts';
|
|
12
|
+
import { buildQueueHeaders, QueueError, queueApiPath, withQueueErrorHandling } from './util.ts';
|
|
12
13
|
import {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
} from './util.ts';
|
|
18
|
-
import { validateDestinationConfig, validateDestinationId, validateQueueName } from './validation.ts';
|
|
14
|
+
validateDestinationConfig,
|
|
15
|
+
validateDestinationId,
|
|
16
|
+
validateQueueName,
|
|
17
|
+
} from './validation.ts';
|
|
19
18
|
|
|
20
19
|
export const DestinationResponseSchema = APIResponseSchema(
|
|
21
20
|
z.object({ destination: DestinationSchema })
|
package/src/api/queue/dlq.ts
CHANGED
|
@@ -15,7 +15,12 @@ import {
|
|
|
15
15
|
queueApiPathWithQuery,
|
|
16
16
|
withQueueErrorHandling,
|
|
17
17
|
} from './util.ts';
|
|
18
|
-
import {
|
|
18
|
+
import {
|
|
19
|
+
validateLimit,
|
|
20
|
+
validateMessageId,
|
|
21
|
+
validateOffset,
|
|
22
|
+
validateQueueName,
|
|
23
|
+
} from './validation.ts';
|
|
19
24
|
|
|
20
25
|
export const DlqListResponseSchema = APIResponseSchema(
|
|
21
26
|
z.object({
|
|
@@ -223,12 +228,7 @@ export async function deleteDeadLetterMessage(
|
|
|
223
228
|
const url = queueApiPath('dlq/delete', queueName, messageId);
|
|
224
229
|
const resp = await withQueueErrorHandling(
|
|
225
230
|
() =>
|
|
226
|
-
client.delete(
|
|
227
|
-
url,
|
|
228
|
-
DeleteDlqResponseSchema,
|
|
229
|
-
undefined,
|
|
230
|
-
buildQueueHeaders(options?.orgId)
|
|
231
|
-
),
|
|
231
|
+
client.delete(url, DeleteDlqResponseSchema, undefined, buildQueueHeaders(options?.orgId)),
|
|
232
232
|
{ queueName, messageId }
|
|
233
233
|
);
|
|
234
234
|
|
package/src/api/queue/queues.ts
CHANGED
|
@@ -342,7 +342,12 @@ export async function deleteQueue(
|
|
|
342
342
|
const url = queueApiPath('delete', name);
|
|
343
343
|
const resp = await withQueueErrorHandling(
|
|
344
344
|
() =>
|
|
345
|
-
client.delete(
|
|
345
|
+
client.delete(
|
|
346
|
+
url,
|
|
347
|
+
DeleteQueueResponseSchema,
|
|
348
|
+
undefined,
|
|
349
|
+
buildQueueHeaders(options?.orgId)
|
|
350
|
+
),
|
|
346
351
|
{ queueName: name }
|
|
347
352
|
);
|
|
348
353
|
|
package/src/api/queue/sources.ts
CHANGED
|
@@ -9,12 +9,7 @@ import {
|
|
|
9
9
|
type UpdateSourceRequest,
|
|
10
10
|
UpdateSourceRequestSchema,
|
|
11
11
|
} from './types.ts';
|
|
12
|
-
import {
|
|
13
|
-
buildQueueHeaders,
|
|
14
|
-
QueueError,
|
|
15
|
-
queueApiPath,
|
|
16
|
-
withQueueErrorHandling,
|
|
17
|
-
} from './util.ts';
|
|
12
|
+
import { buildQueueHeaders, QueueError, queueApiPath, withQueueErrorHandling } from './util.ts';
|
|
18
13
|
import { validateQueueName, validateSourceId, validateSourceName } from './validation.ts';
|
|
19
14
|
|
|
20
15
|
export const SourceResponseSchema = APIResponseSchema(z.object({ source: SourceSchema }));
|
|
@@ -26,6 +26,22 @@
|
|
|
26
26
|
* connection.close();
|
|
27
27
|
* ```
|
|
28
28
|
*
|
|
29
|
+
* @example Resuming from a previous session
|
|
30
|
+
* ```typescript
|
|
31
|
+
* import { createQueueWebSocket } from '@agentuity/server';
|
|
32
|
+
*
|
|
33
|
+
* // Use a previously obtained clientId and lastOffset to resume
|
|
34
|
+
* const connection = createQueueWebSocket({
|
|
35
|
+
* queueName: 'order-processing',
|
|
36
|
+
* baseUrl: 'https://catalyst.agentuity.cloud',
|
|
37
|
+
* clientId: previousClientId,
|
|
38
|
+
* lastOffset: previousOffset,
|
|
39
|
+
* onMessage: (message) => {
|
|
40
|
+
* console.log('Received:', message.id, message.payload);
|
|
41
|
+
* },
|
|
42
|
+
* });
|
|
43
|
+
* ```
|
|
44
|
+
*
|
|
29
45
|
* @example Async iterator API
|
|
30
46
|
* ```typescript
|
|
31
47
|
* import { subscribeToQueue } from '@agentuity/server';
|
|
@@ -82,6 +98,10 @@ export interface QueueWebSocketOptions {
|
|
|
82
98
|
reconnectDelayMs?: number;
|
|
83
99
|
/** Maximum reconnection delay in ms (default: 30000). */
|
|
84
100
|
maxReconnectDelayMs?: number;
|
|
101
|
+
/** Optional client ID from a previous session to resume a subscription. */
|
|
102
|
+
clientId?: string;
|
|
103
|
+
/** Optional last processed offset from a previous session to resume from. */
|
|
104
|
+
lastOffset?: number;
|
|
85
105
|
}
|
|
86
106
|
|
|
87
107
|
/** Return type from {@link createQueueWebSocket}. */
|
|
@@ -106,6 +126,10 @@ export interface SubscribeToQueueOptions {
|
|
|
106
126
|
baseUrl: string;
|
|
107
127
|
/** AbortSignal to stop the subscription. */
|
|
108
128
|
signal?: AbortSignal;
|
|
129
|
+
/** Optional client ID from a previous session to resume a subscription. */
|
|
130
|
+
clientId?: string;
|
|
131
|
+
/** Optional last processed offset from a previous session to resume from. */
|
|
132
|
+
lastOffset?: number;
|
|
109
133
|
}
|
|
110
134
|
|
|
111
135
|
// ============================================================================
|
|
@@ -192,8 +216,8 @@ export function createQueueWebSocket(options: QueueWebSocketOptions): QueueWebSo
|
|
|
192
216
|
let intentionallyClosed = false;
|
|
193
217
|
let reconnectAttempts = 0;
|
|
194
218
|
let reconnectTimer: ReturnType<typeof setTimeout> | null = null;
|
|
195
|
-
let clientId: string | undefined;
|
|
196
|
-
let lastProcessedOffset: number | undefined;
|
|
219
|
+
let clientId: string | undefined = options.clientId;
|
|
220
|
+
let lastProcessedOffset: number | undefined = options.lastOffset;
|
|
197
221
|
|
|
198
222
|
function connect() {
|
|
199
223
|
if (intentionallyClosed) return;
|
|
@@ -210,7 +234,7 @@ export function createQueueWebSocket(options: QueueWebSocketOptions): QueueWebSo
|
|
|
210
234
|
message: `Failed to create WebSocket connection: ${err instanceof Error ? err.message : String(err)}`,
|
|
211
235
|
queueName,
|
|
212
236
|
cause: err instanceof Error ? err : undefined,
|
|
213
|
-
})
|
|
237
|
+
})
|
|
214
238
|
);
|
|
215
239
|
scheduleReconnect();
|
|
216
240
|
return;
|
|
@@ -319,7 +343,7 @@ export function createQueueWebSocket(options: QueueWebSocketOptions): QueueWebSo
|
|
|
319
343
|
new QueueError({
|
|
320
344
|
message: 'WebSocket connection error',
|
|
321
345
|
queueName,
|
|
322
|
-
})
|
|
346
|
+
})
|
|
323
347
|
);
|
|
324
348
|
};
|
|
325
349
|
}
|
|
@@ -331,7 +355,7 @@ export function createQueueWebSocket(options: QueueWebSocketOptions): QueueWebSo
|
|
|
331
355
|
new QueueError({
|
|
332
356
|
message: `Exceeded maximum reconnection attempts (${maxReconnectAttempts})`,
|
|
333
357
|
queueName,
|
|
334
|
-
})
|
|
358
|
+
})
|
|
335
359
|
);
|
|
336
360
|
return;
|
|
337
361
|
}
|
|
@@ -405,7 +429,7 @@ export function createQueueWebSocket(options: QueueWebSocketOptions): QueueWebSo
|
|
|
405
429
|
* ```
|
|
406
430
|
*/
|
|
407
431
|
export async function* subscribeToQueue(
|
|
408
|
-
options: SubscribeToQueueOptions
|
|
432
|
+
options: SubscribeToQueueOptions
|
|
409
433
|
): AsyncGenerator<Message, void, unknown> {
|
|
410
434
|
const { signal } = options;
|
|
411
435
|
|
|
@@ -440,6 +464,8 @@ export async function* subscribeToQueue(
|
|
|
440
464
|
queueName: options.queueName,
|
|
441
465
|
apiKey: options.apiKey,
|
|
442
466
|
baseUrl: options.baseUrl,
|
|
467
|
+
clientId: options.clientId,
|
|
468
|
+
lastOffset: options.lastOffset,
|
|
443
469
|
onMessage: push,
|
|
444
470
|
onError: (err) => finish(err),
|
|
445
471
|
onClose: () => {
|
package/src/api/region/create.ts
CHANGED
|
@@ -51,6 +51,12 @@ export function validateDatabaseName(name: string): { valid: boolean; error?: st
|
|
|
51
51
|
error: 'database name must start with a letter or underscore and contain only lowercase letters, digits, and underscores',
|
|
52
52
|
};
|
|
53
53
|
}
|
|
54
|
+
if (name.startsWith('pg_')) {
|
|
55
|
+
return {
|
|
56
|
+
valid: false,
|
|
57
|
+
error: "database name cannot start with 'pg_' (reserved by PostgreSQL)",
|
|
58
|
+
};
|
|
59
|
+
}
|
|
54
60
|
return { valid: true };
|
|
55
61
|
}
|
|
56
62
|
|
|
@@ -45,7 +45,15 @@ export interface CLISandboxListOptions {
|
|
|
45
45
|
/**
|
|
46
46
|
* Filter by sandbox status
|
|
47
47
|
*/
|
|
48
|
-
status?:
|
|
48
|
+
status?:
|
|
49
|
+
| 'creating'
|
|
50
|
+
| 'idle'
|
|
51
|
+
| 'running'
|
|
52
|
+
| 'paused'
|
|
53
|
+
| 'stopping'
|
|
54
|
+
| 'suspended'
|
|
55
|
+
| 'terminated'
|
|
56
|
+
| 'failed';
|
|
49
57
|
/**
|
|
50
58
|
* Maximum number of sandboxes to return (default: 50, max: 100)
|
|
51
59
|
*/
|
|
@@ -177,6 +177,11 @@ export interface SandboxInstance {
|
|
|
177
177
|
*/
|
|
178
178
|
stderrStreamUrl?: string;
|
|
179
179
|
|
|
180
|
+
/**
|
|
181
|
+
* URL to stream audit events (eBPF/Tetragon security events)
|
|
182
|
+
*/
|
|
183
|
+
auditStreamUrl?: string;
|
|
184
|
+
|
|
180
185
|
/**
|
|
181
186
|
* Execute a command in the sandbox
|
|
182
187
|
*/
|
|
@@ -313,6 +318,7 @@ export class SandboxClient {
|
|
|
313
318
|
status: response.status,
|
|
314
319
|
stdoutStreamUrl: response.stdoutStreamUrl,
|
|
315
320
|
stderrStreamUrl: response.stderrStreamUrl,
|
|
321
|
+
auditStreamUrl: response.auditStreamUrl,
|
|
316
322
|
|
|
317
323
|
async execute(executeOptions: ExecuteOptions): Promise<Execution> {
|
|
318
324
|
const { pipe, ...coreOptions } = executeOptions;
|
|
@@ -122,12 +122,23 @@ export const SandboxCreateDataSchema = z
|
|
|
122
122
|
.object({
|
|
123
123
|
sandboxId: z.string().describe('Unique identifier for the created sandbox'),
|
|
124
124
|
status: z
|
|
125
|
-
.enum([
|
|
125
|
+
.enum([
|
|
126
|
+
'creating',
|
|
127
|
+
'idle',
|
|
128
|
+
'running',
|
|
129
|
+
'paused',
|
|
130
|
+
'stopping',
|
|
131
|
+
'suspended',
|
|
132
|
+
'terminated',
|
|
133
|
+
'failed',
|
|
134
|
+
])
|
|
126
135
|
.describe('Current status of the sandbox'),
|
|
127
136
|
stdoutStreamId: z.string().optional().describe('Stream ID for reading stdout'),
|
|
128
137
|
stdoutStreamUrl: z.string().optional().describe('URL for streaming stdout output'),
|
|
129
138
|
stderrStreamId: z.string().optional().describe('Stream ID for reading stderr'),
|
|
130
139
|
stderrStreamUrl: z.string().optional().describe('URL for streaming stderr output'),
|
|
140
|
+
auditStreamId: z.string().optional().describe('Stream ID for reading audit events'),
|
|
141
|
+
auditStreamUrl: z.string().optional().describe('URL for streaming audit events'),
|
|
131
142
|
})
|
|
132
143
|
.describe('Response data from sandbox creation');
|
|
133
144
|
|
|
@@ -140,6 +151,8 @@ export interface SandboxCreateResponse {
|
|
|
140
151
|
stdoutStreamUrl?: string;
|
|
141
152
|
stderrStreamId?: string;
|
|
142
153
|
stderrStreamUrl?: string;
|
|
154
|
+
auditStreamId?: string;
|
|
155
|
+
auditStreamUrl?: string;
|
|
143
156
|
}
|
|
144
157
|
|
|
145
158
|
export interface SandboxCreateParams {
|