@agentuity/server 0.1.16 → 0.1.18
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 +11 -6
- package/dist/api/api.d.ts.map +1 -1
- package/dist/api/api.js +19 -12
- package/dist/api/api.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/org/env-delete.d.ts.map +1 -1
- package/dist/api/org/env-delete.js.map +1 -1
- package/dist/api/org/env-get.d.ts.map +1 -1
- package/dist/api/org/env-get.js.map +1 -1
- package/dist/api/org/env-update.d.ts.map +1 -1
- package/dist/api/org/env-update.js.map +1 -1
- package/dist/api/queue/analytics.d.ts +108 -0
- package/dist/api/queue/analytics.d.ts.map +1 -0
- package/dist/api/queue/analytics.js +245 -0
- package/dist/api/queue/analytics.js.map +1 -0
- package/dist/api/queue/destinations.d.ts +108 -0
- package/dist/api/queue/destinations.d.ts.map +1 -0
- package/dist/api/queue/destinations.js +238 -0
- package/dist/api/queue/destinations.js.map +1 -0
- package/dist/api/queue/dlq.d.ts +100 -0
- package/dist/api/queue/dlq.d.ts.map +1 -0
- package/dist/api/queue/dlq.js +204 -0
- package/dist/api/queue/dlq.js.map +1 -0
- package/dist/api/queue/index.d.ts +55 -0
- package/dist/api/queue/index.d.ts.map +1 -0
- package/dist/api/queue/index.js +86 -0
- package/dist/api/queue/index.js.map +1 -0
- package/dist/api/queue/messages.d.ts +332 -0
- package/dist/api/queue/messages.d.ts.map +1 -0
- package/dist/api/queue/messages.js +637 -0
- package/dist/api/queue/messages.js.map +1 -0
- package/dist/api/queue/queues.d.ts +153 -0
- package/dist/api/queue/queues.d.ts.map +1 -0
- package/dist/api/queue/queues.js +319 -0
- package/dist/api/queue/queues.js.map +1 -0
- package/dist/api/queue/sources.d.ts +132 -0
- package/dist/api/queue/sources.d.ts.map +1 -0
- package/dist/api/queue/sources.js +285 -0
- package/dist/api/queue/sources.js.map +1 -0
- package/dist/api/queue/types.d.ts +1129 -0
- package/dist/api/queue/types.d.ts.map +1 -0
- package/dist/api/queue/types.js +949 -0
- package/dist/api/queue/types.js.map +1 -0
- package/dist/api/queue/util.d.ts +262 -0
- package/dist/api/queue/util.d.ts.map +1 -0
- package/dist/api/queue/util.js +171 -0
- package/dist/api/queue/util.js.map +1 -0
- package/dist/api/queue/validation.d.ts +247 -0
- package/dist/api/queue/validation.d.ts.map +1 -0
- package/dist/api/queue/validation.js +513 -0
- package/dist/api/queue/validation.js.map +1 -0
- package/dist/api/sandbox/get.d.ts.map +1 -1
- package/dist/api/sandbox/get.js +5 -0
- package/dist/api/sandbox/get.js.map +1 -1
- package/dist/api/sandbox/index.d.ts +3 -3
- package/dist/api/sandbox/index.d.ts.map +1 -1
- package/dist/api/sandbox/index.js +1 -1
- package/dist/api/sandbox/index.js.map +1 -1
- package/dist/api/sandbox/run.d.ts.map +1 -1
- package/dist/api/sandbox/run.js +5 -2
- package/dist/api/sandbox/run.js.map +1 -1
- package/dist/api/sandbox/snapshot-build.d.ts +2 -0
- package/dist/api/sandbox/snapshot-build.d.ts.map +1 -1
- package/dist/api/sandbox/snapshot-build.js +4 -0
- package/dist/api/sandbox/snapshot-build.js.map +1 -1
- package/dist/api/sandbox/snapshot.d.ts +143 -1
- package/dist/api/sandbox/snapshot.d.ts.map +1 -1
- package/dist/api/sandbox/snapshot.js +183 -4
- package/dist/api/sandbox/snapshot.js.map +1 -1
- package/package.json +4 -4
- package/src/api/api.ts +62 -13
- package/src/api/index.ts +1 -0
- package/src/api/org/env-delete.ts +1 -4
- package/src/api/org/env-get.ts +1 -4
- package/src/api/org/env-update.ts +1 -4
- package/src/api/queue/analytics.ts +313 -0
- package/src/api/queue/destinations.ts +321 -0
- package/src/api/queue/dlq.ts +283 -0
- package/src/api/queue/index.ts +261 -0
- package/src/api/queue/messages.ts +875 -0
- package/src/api/queue/queues.ts +448 -0
- package/src/api/queue/sources.ts +384 -0
- package/src/api/queue/types.ts +1253 -0
- package/src/api/queue/util.ts +204 -0
- package/src/api/queue/validation.ts +560 -0
- package/src/api/sandbox/get.ts +5 -0
- package/src/api/sandbox/index.ts +13 -1
- package/src/api/sandbox/run.ts +5 -2
- package/src/api/sandbox/snapshot-build.ts +4 -0
- package/src/api/sandbox/snapshot.ts +223 -5
|
@@ -0,0 +1,285 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { APIResponseSchema, APIResponseSchemaNoData, APIError } from '../api';
|
|
3
|
+
import { SourceSchema, CreateSourceRequestSchema, UpdateSourceRequestSchema, } from './types';
|
|
4
|
+
import { QueueError, QueueNotFoundError, SourceNotFoundError, SourceAlreadyExistsError, queueApiPath, buildQueueHeaders, } from './util';
|
|
5
|
+
import { validateQueueName, validateSourceId, validateSourceName } from './validation';
|
|
6
|
+
const SourceResponseSchema = APIResponseSchema(z.object({ source: SourceSchema }));
|
|
7
|
+
const SourcesListResponseSchema = APIResponseSchema(z.object({
|
|
8
|
+
sources: z.array(SourceSchema),
|
|
9
|
+
}));
|
|
10
|
+
const DeleteSourceResponseSchema = APIResponseSchemaNoData();
|
|
11
|
+
/**
|
|
12
|
+
* Create a source for a queue.
|
|
13
|
+
*
|
|
14
|
+
* Sources are public HTTP ingestion endpoints that allow external systems to
|
|
15
|
+
* publish messages to a queue. They support various authentication methods
|
|
16
|
+
* to secure access.
|
|
17
|
+
*
|
|
18
|
+
* @param client - The API client instance
|
|
19
|
+
* @param queueName - The name of the queue to add the source to
|
|
20
|
+
* @param params - Source configuration including name and optional auth settings
|
|
21
|
+
* @returns The created source with assigned ID and public URL
|
|
22
|
+
* @throws {QueueValidationError} If validation fails (invalid queue name or source name)
|
|
23
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
24
|
+
* @throws {SourceAlreadyExistsError} If a source with the same name already exists
|
|
25
|
+
* @throws {QueueError} If the API request fails
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* const source = await createSource(client, 'order-events', {
|
|
30
|
+
* name: 'webhook-ingestion',
|
|
31
|
+
* description: 'Receives webhooks from external service',
|
|
32
|
+
* auth_type: 'header',
|
|
33
|
+
* auth_value: 'Bearer my-secret-token',
|
|
34
|
+
* });
|
|
35
|
+
* console.log(`Created source ${source.id} at ${source.url}`);
|
|
36
|
+
* ```
|
|
37
|
+
*/
|
|
38
|
+
export async function createSource(client, queueName, params, options) {
|
|
39
|
+
validateQueueName(queueName);
|
|
40
|
+
validateSourceName(params.name);
|
|
41
|
+
const url = queueApiPath('sources/create', queueName);
|
|
42
|
+
try {
|
|
43
|
+
const resp = await client.post(url, params, SourceResponseSchema, CreateSourceRequestSchema, undefined, buildQueueHeaders(options?.orgId));
|
|
44
|
+
if (resp.success) {
|
|
45
|
+
return resp.data.source;
|
|
46
|
+
}
|
|
47
|
+
if (resp.message?.includes('queue') && resp.message?.includes('not found')) {
|
|
48
|
+
throw new QueueNotFoundError({
|
|
49
|
+
queueName,
|
|
50
|
+
message: resp.message,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
if (resp.message?.includes('already exists')) {
|
|
54
|
+
throw new SourceAlreadyExistsError({
|
|
55
|
+
queueName,
|
|
56
|
+
name: params.name,
|
|
57
|
+
message: `A source with name "${params.name}" already exists for queue "${queueName}"`,
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
throw new QueueError({
|
|
61
|
+
queueName,
|
|
62
|
+
message: resp.message || 'Failed to create source',
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
if (error instanceof APIError) {
|
|
67
|
+
const message = error.message || '';
|
|
68
|
+
if (message.includes('already exists')) {
|
|
69
|
+
throw new SourceAlreadyExistsError({
|
|
70
|
+
queueName,
|
|
71
|
+
name: params.name,
|
|
72
|
+
message: `A source with name "${params.name}" already exists for queue "${queueName}"`,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
if (message.includes('queue') && message.includes('not found')) {
|
|
76
|
+
throw new QueueNotFoundError({
|
|
77
|
+
queueName,
|
|
78
|
+
message,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
throw new QueueError({
|
|
82
|
+
queueName,
|
|
83
|
+
message: message || 'Failed to create source',
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
throw error;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* List all sources for a queue.
|
|
91
|
+
*
|
|
92
|
+
* Retrieves all HTTP ingestion endpoints configured for a queue. Each source
|
|
93
|
+
* provides a public URL for external systems to publish messages.
|
|
94
|
+
*
|
|
95
|
+
* @param client - The API client instance
|
|
96
|
+
* @param queueName - The name of the queue
|
|
97
|
+
* @returns Array of sources configured for the queue
|
|
98
|
+
* @throws {QueueValidationError} If validation fails (invalid queue name)
|
|
99
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
100
|
+
* @throws {QueueError} If the API request fails
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```typescript
|
|
104
|
+
* const sources = await listSources(client, 'order-events');
|
|
105
|
+
* for (const source of sources) {
|
|
106
|
+
* console.log(`Source ${source.id}: ${source.name} (${source.enabled ? 'enabled' : 'disabled'})`);
|
|
107
|
+
* console.log(` URL: ${source.url}`);
|
|
108
|
+
* console.log(` Success rate: ${source.success_count}/${source.request_count}`);
|
|
109
|
+
* }
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
export async function listSources(client, queueName, options) {
|
|
113
|
+
validateQueueName(queueName);
|
|
114
|
+
const url = queueApiPath('sources/list', queueName);
|
|
115
|
+
const resp = await client.get(url, SourcesListResponseSchema, undefined, buildQueueHeaders(options?.orgId));
|
|
116
|
+
if (resp.success) {
|
|
117
|
+
return resp.data.sources;
|
|
118
|
+
}
|
|
119
|
+
if (resp.message?.includes('not found')) {
|
|
120
|
+
throw new QueueNotFoundError({
|
|
121
|
+
queueName,
|
|
122
|
+
message: resp.message,
|
|
123
|
+
});
|
|
124
|
+
}
|
|
125
|
+
throw new QueueError({
|
|
126
|
+
queueName,
|
|
127
|
+
message: resp.message || 'Failed to list sources',
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Get a source by ID.
|
|
132
|
+
*
|
|
133
|
+
* Retrieves a specific source's details including its public URL and statistics.
|
|
134
|
+
*
|
|
135
|
+
* @param client - The API client instance
|
|
136
|
+
* @param queueName - The name of the queue
|
|
137
|
+
* @param sourceId - The source ID to retrieve (prefixed with qsrc_)
|
|
138
|
+
* @returns The source details
|
|
139
|
+
* @throws {QueueValidationError} If validation fails (invalid queue name or source ID)
|
|
140
|
+
* @throws {SourceNotFoundError} If the source does not exist
|
|
141
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
142
|
+
* @throws {QueueError} If the API request fails
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* ```typescript
|
|
146
|
+
* const source = await getSource(client, 'order-events', 'qsrc_abc123');
|
|
147
|
+
* console.log(`Source: ${source.name}`);
|
|
148
|
+
* console.log(`URL: ${source.url}`);
|
|
149
|
+
* console.log(`Auth type: ${source.auth_type}`);
|
|
150
|
+
* console.log(`Last request: ${source.last_request_at}`);
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
export async function getSource(client, queueName, sourceId, options) {
|
|
154
|
+
validateQueueName(queueName);
|
|
155
|
+
validateSourceId(sourceId);
|
|
156
|
+
const url = queueApiPath('sources/get', queueName, sourceId);
|
|
157
|
+
const resp = await client.get(url, SourceResponseSchema, undefined, buildQueueHeaders(options?.orgId));
|
|
158
|
+
if (resp.success) {
|
|
159
|
+
return resp.data.source;
|
|
160
|
+
}
|
|
161
|
+
if (resp.message?.includes('source') && resp.message?.includes('not found')) {
|
|
162
|
+
throw new SourceNotFoundError({
|
|
163
|
+
queueName,
|
|
164
|
+
sourceId,
|
|
165
|
+
message: resp.message,
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
if (resp.message?.includes('queue') && resp.message?.includes('not found')) {
|
|
169
|
+
throw new QueueNotFoundError({
|
|
170
|
+
queueName,
|
|
171
|
+
message: resp.message,
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
throw new QueueError({
|
|
175
|
+
queueName,
|
|
176
|
+
message: resp.message || 'Failed to get source',
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Update a source's configuration.
|
|
181
|
+
*
|
|
182
|
+
* Modifies an existing source's settings such as name, enabled status,
|
|
183
|
+
* or authentication configuration. Only the fields provided in params will be updated.
|
|
184
|
+
*
|
|
185
|
+
* @param client - The API client instance
|
|
186
|
+
* @param queueName - The name of the queue
|
|
187
|
+
* @param sourceId - The source ID to update (prefixed with qsrc_)
|
|
188
|
+
* @param params - Fields to update (partial update supported)
|
|
189
|
+
* @returns The updated source
|
|
190
|
+
* @throws {QueueValidationError} If validation fails (invalid queue name or source ID)
|
|
191
|
+
* @throws {SourceNotFoundError} If the source does not exist
|
|
192
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
193
|
+
* @throws {QueueError} If the API request fails
|
|
194
|
+
*
|
|
195
|
+
* @example
|
|
196
|
+
* ```typescript
|
|
197
|
+
* // Disable a source temporarily
|
|
198
|
+
* const updated = await updateSource(client, 'order-events', 'qsrc_abc123', {
|
|
199
|
+
* enabled: false,
|
|
200
|
+
* });
|
|
201
|
+
*
|
|
202
|
+
* // Update authentication
|
|
203
|
+
* const updated = await updateSource(client, 'order-events', 'qsrc_abc123', {
|
|
204
|
+
* auth_type: 'basic',
|
|
205
|
+
* auth_value: 'user:password',
|
|
206
|
+
* });
|
|
207
|
+
* ```
|
|
208
|
+
*/
|
|
209
|
+
export async function updateSource(client, queueName, sourceId, params, options) {
|
|
210
|
+
validateQueueName(queueName);
|
|
211
|
+
validateSourceId(sourceId);
|
|
212
|
+
if (params.name) {
|
|
213
|
+
validateSourceName(params.name);
|
|
214
|
+
}
|
|
215
|
+
const url = queueApiPath('sources/update', queueName, sourceId);
|
|
216
|
+
const resp = await client.patch(url, params, SourceResponseSchema, UpdateSourceRequestSchema, undefined, buildQueueHeaders(options?.orgId));
|
|
217
|
+
if (resp.success) {
|
|
218
|
+
return resp.data.source;
|
|
219
|
+
}
|
|
220
|
+
if (resp.message?.includes('source') && resp.message?.includes('not found')) {
|
|
221
|
+
throw new SourceNotFoundError({
|
|
222
|
+
queueName,
|
|
223
|
+
sourceId,
|
|
224
|
+
message: resp.message,
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
if (resp.message?.includes('queue') && resp.message?.includes('not found')) {
|
|
228
|
+
throw new QueueNotFoundError({
|
|
229
|
+
queueName,
|
|
230
|
+
message: resp.message,
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
throw new QueueError({
|
|
234
|
+
queueName,
|
|
235
|
+
message: resp.message || 'Failed to update source',
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
/**
|
|
239
|
+
* Delete a source from a queue.
|
|
240
|
+
*
|
|
241
|
+
* Permanently removes an HTTP ingestion endpoint. The public URL will no longer
|
|
242
|
+
* accept requests. This action cannot be undone.
|
|
243
|
+
*
|
|
244
|
+
* @param client - The API client instance
|
|
245
|
+
* @param queueName - The name of the queue
|
|
246
|
+
* @param sourceId - The source ID to delete (prefixed with qsrc_)
|
|
247
|
+
* @returns void
|
|
248
|
+
* @throws {QueueValidationError} If validation fails (invalid queue name or source ID)
|
|
249
|
+
* @throws {SourceNotFoundError} If the source does not exist
|
|
250
|
+
* @throws {QueueNotFoundError} If the queue does not exist
|
|
251
|
+
* @throws {QueueError} If the API request fails
|
|
252
|
+
*
|
|
253
|
+
* @example
|
|
254
|
+
* ```typescript
|
|
255
|
+
* await deleteSource(client, 'order-events', 'qsrc_abc123');
|
|
256
|
+
* console.log('Source deleted');
|
|
257
|
+
* ```
|
|
258
|
+
*/
|
|
259
|
+
export async function deleteSource(client, queueName, sourceId, options) {
|
|
260
|
+
validateQueueName(queueName);
|
|
261
|
+
validateSourceId(sourceId);
|
|
262
|
+
const url = queueApiPath('sources/delete', queueName, sourceId);
|
|
263
|
+
const resp = await client.delete(url, DeleteSourceResponseSchema, undefined, buildQueueHeaders(options?.orgId));
|
|
264
|
+
if (resp.success) {
|
|
265
|
+
return;
|
|
266
|
+
}
|
|
267
|
+
if (resp.message?.includes('source') && resp.message?.includes('not found')) {
|
|
268
|
+
throw new SourceNotFoundError({
|
|
269
|
+
queueName,
|
|
270
|
+
sourceId,
|
|
271
|
+
message: resp.message,
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (resp.message?.includes('queue') && resp.message?.includes('not found')) {
|
|
275
|
+
throw new QueueNotFoundError({
|
|
276
|
+
queueName,
|
|
277
|
+
message: resp.message,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
throw new QueueError({
|
|
281
|
+
queueName,
|
|
282
|
+
message: resp.message || 'Failed to delete source',
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
//# sourceMappingURL=sources.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sources.js","sourceRoot":"","sources":["../../../src/api/queue/sources.ts"],"names":[],"mappings":"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"}
|