@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.
Files changed (93) hide show
  1. package/dist/api/api.d.ts +11 -6
  2. package/dist/api/api.d.ts.map +1 -1
  3. package/dist/api/api.js +19 -12
  4. package/dist/api/api.js.map +1 -1
  5. package/dist/api/index.d.ts +1 -0
  6. package/dist/api/index.d.ts.map +1 -1
  7. package/dist/api/index.js +1 -0
  8. package/dist/api/index.js.map +1 -1
  9. package/dist/api/org/env-delete.d.ts.map +1 -1
  10. package/dist/api/org/env-delete.js.map +1 -1
  11. package/dist/api/org/env-get.d.ts.map +1 -1
  12. package/dist/api/org/env-get.js.map +1 -1
  13. package/dist/api/org/env-update.d.ts.map +1 -1
  14. package/dist/api/org/env-update.js.map +1 -1
  15. package/dist/api/queue/analytics.d.ts +108 -0
  16. package/dist/api/queue/analytics.d.ts.map +1 -0
  17. package/dist/api/queue/analytics.js +245 -0
  18. package/dist/api/queue/analytics.js.map +1 -0
  19. package/dist/api/queue/destinations.d.ts +108 -0
  20. package/dist/api/queue/destinations.d.ts.map +1 -0
  21. package/dist/api/queue/destinations.js +238 -0
  22. package/dist/api/queue/destinations.js.map +1 -0
  23. package/dist/api/queue/dlq.d.ts +100 -0
  24. package/dist/api/queue/dlq.d.ts.map +1 -0
  25. package/dist/api/queue/dlq.js +204 -0
  26. package/dist/api/queue/dlq.js.map +1 -0
  27. package/dist/api/queue/index.d.ts +55 -0
  28. package/dist/api/queue/index.d.ts.map +1 -0
  29. package/dist/api/queue/index.js +86 -0
  30. package/dist/api/queue/index.js.map +1 -0
  31. package/dist/api/queue/messages.d.ts +332 -0
  32. package/dist/api/queue/messages.d.ts.map +1 -0
  33. package/dist/api/queue/messages.js +637 -0
  34. package/dist/api/queue/messages.js.map +1 -0
  35. package/dist/api/queue/queues.d.ts +153 -0
  36. package/dist/api/queue/queues.d.ts.map +1 -0
  37. package/dist/api/queue/queues.js +319 -0
  38. package/dist/api/queue/queues.js.map +1 -0
  39. package/dist/api/queue/sources.d.ts +132 -0
  40. package/dist/api/queue/sources.d.ts.map +1 -0
  41. package/dist/api/queue/sources.js +285 -0
  42. package/dist/api/queue/sources.js.map +1 -0
  43. package/dist/api/queue/types.d.ts +1129 -0
  44. package/dist/api/queue/types.d.ts.map +1 -0
  45. package/dist/api/queue/types.js +949 -0
  46. package/dist/api/queue/types.js.map +1 -0
  47. package/dist/api/queue/util.d.ts +262 -0
  48. package/dist/api/queue/util.d.ts.map +1 -0
  49. package/dist/api/queue/util.js +171 -0
  50. package/dist/api/queue/util.js.map +1 -0
  51. package/dist/api/queue/validation.d.ts +247 -0
  52. package/dist/api/queue/validation.d.ts.map +1 -0
  53. package/dist/api/queue/validation.js +513 -0
  54. package/dist/api/queue/validation.js.map +1 -0
  55. package/dist/api/sandbox/get.d.ts.map +1 -1
  56. package/dist/api/sandbox/get.js +5 -0
  57. package/dist/api/sandbox/get.js.map +1 -1
  58. package/dist/api/sandbox/index.d.ts +3 -3
  59. package/dist/api/sandbox/index.d.ts.map +1 -1
  60. package/dist/api/sandbox/index.js +1 -1
  61. package/dist/api/sandbox/index.js.map +1 -1
  62. package/dist/api/sandbox/run.d.ts.map +1 -1
  63. package/dist/api/sandbox/run.js +5 -2
  64. package/dist/api/sandbox/run.js.map +1 -1
  65. package/dist/api/sandbox/snapshot-build.d.ts +2 -0
  66. package/dist/api/sandbox/snapshot-build.d.ts.map +1 -1
  67. package/dist/api/sandbox/snapshot-build.js +4 -0
  68. package/dist/api/sandbox/snapshot-build.js.map +1 -1
  69. package/dist/api/sandbox/snapshot.d.ts +143 -1
  70. package/dist/api/sandbox/snapshot.d.ts.map +1 -1
  71. package/dist/api/sandbox/snapshot.js +183 -4
  72. package/dist/api/sandbox/snapshot.js.map +1 -1
  73. package/package.json +4 -4
  74. package/src/api/api.ts +62 -13
  75. package/src/api/index.ts +1 -0
  76. package/src/api/org/env-delete.ts +1 -4
  77. package/src/api/org/env-get.ts +1 -4
  78. package/src/api/org/env-update.ts +1 -4
  79. package/src/api/queue/analytics.ts +313 -0
  80. package/src/api/queue/destinations.ts +321 -0
  81. package/src/api/queue/dlq.ts +283 -0
  82. package/src/api/queue/index.ts +261 -0
  83. package/src/api/queue/messages.ts +875 -0
  84. package/src/api/queue/queues.ts +448 -0
  85. package/src/api/queue/sources.ts +384 -0
  86. package/src/api/queue/types.ts +1253 -0
  87. package/src/api/queue/util.ts +204 -0
  88. package/src/api/queue/validation.ts +560 -0
  89. package/src/api/sandbox/get.ts +5 -0
  90. package/src/api/sandbox/index.ts +13 -1
  91. package/src/api/sandbox/run.ts +5 -2
  92. package/src/api/sandbox/snapshot-build.ts +4 -0
  93. 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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"}