@agentuity/server 1.0.22 → 1.0.23
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/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/project/deploy.d.ts +8 -0
- package/dist/api/project/deploy.d.ts.map +1 -1
- package/dist/api/project/deploy.js +14 -13
- package/dist/api/project/deploy.js.map +1 -1
- package/dist/api/sandbox/execute.d.ts +2 -2
- package/dist/api/sandbox/execution.d.ts +4 -4
- 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/webhook/deliveries.d.ts +94 -0
- package/dist/api/webhook/deliveries.d.ts.map +1 -0
- package/dist/api/webhook/deliveries.js +79 -0
- package/dist/api/webhook/deliveries.js.map +1 -0
- package/dist/api/webhook/destinations.d.ts +136 -0
- package/dist/api/webhook/destinations.d.ts.map +1 -0
- package/dist/api/webhook/destinations.js +137 -0
- package/dist/api/webhook/destinations.js.map +1 -0
- package/dist/api/webhook/index.d.ts +41 -0
- package/dist/api/webhook/index.d.ts.map +1 -0
- package/dist/api/webhook/index.js +59 -0
- package/dist/api/webhook/index.js.map +1 -0
- package/dist/api/webhook/receipts.d.ts +77 -0
- package/dist/api/webhook/receipts.d.ts.map +1 -0
- package/dist/api/webhook/receipts.js +78 -0
- package/dist/api/webhook/receipts.js.map +1 -0
- package/dist/api/webhook/types.d.ts +249 -0
- package/dist/api/webhook/types.d.ts.map +1 -0
- package/dist/api/webhook/types.js +221 -0
- package/dist/api/webhook/types.js.map +1 -0
- package/dist/api/webhook/util.d.ts +202 -0
- package/dist/api/webhook/util.d.ts.map +1 -0
- package/dist/api/webhook/util.js +201 -0
- package/dist/api/webhook/util.js.map +1 -0
- package/dist/api/webhook/webhooks.d.ts +146 -0
- package/dist/api/webhook/webhooks.d.ts.map +1 -0
- package/dist/api/webhook/webhooks.js +165 -0
- package/dist/api/webhook/webhooks.js.map +1 -0
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -0
- package/dist/config.js.map +1 -1
- package/dist/runtime-bootstrap.d.ts.map +1 -1
- package/dist/runtime-bootstrap.js +3 -0
- package/dist/runtime-bootstrap.js.map +1 -1
- package/package.json +4 -4
- package/src/api/index.ts +1 -0
- package/src/api/project/deploy.ts +16 -16
- package/src/api/sandbox/snapshot-build.ts +6 -0
- package/src/api/webhook/deliveries.ts +129 -0
- package/src/api/webhook/destinations.ts +224 -0
- package/src/api/webhook/index.ts +133 -0
- package/src/api/webhook/receipts.ts +124 -0
- package/src/api/webhook/types.ts +309 -0
- package/src/api/webhook/util.ts +237 -0
- package/src/api/webhook/webhooks.ts +260 -0
- package/src/config.ts +2 -0
- package/src/runtime-bootstrap.ts +3 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/api/webhook/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAMxB;;;;;;;;;GASG;AACH,eAAO,MAAM,4BAA4B;;EAAkB,CAAC;AAE5D;;GAEG;AACH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC;AAMlF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,2BAA2B;;;;EAA2C,CAAC;AAEpF;;GAEG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAMhF;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;iBAexB,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,OAAO,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEpD;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,wBAAwB;;;;;;;;;;iBAenC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,wBAAwB,CAAC,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,oBAAoB;;;;;;iBAW/B,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAElE;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;iBAmBhC,CAAC;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IACjC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAMD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B;;;iBAKrC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,0BAA0B;;;iBAKrC,CAAC;AAEH,2CAA2C;AAC3C,MAAM,MAAM,oBAAoB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC;AAE9E;;;;;;;;;;GAUG;AACH,eAAO,MAAM,qCAAqC;;;;;iBAKhD,CAAC;AAEH,uDAAuD;AACvD,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG;;;;;;;;;GASG;AACH,eAAO,MAAM,qCAAqC;;iBAGhD,CAAC;AAEH,uDAAuD;AACvD,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qCAAqC,CAAC,CAAC;AAEpG,eAAO,MAAM,uBAAuB;;;iBAGlC,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,eAAO,MAAM,yBAAyB;;;iBAA0B,CAAC;AAEjE,yCAAyC;AACzC,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,gCAAgC;;;iBAA0B,CAAC;AAExE,iDAAiD;AACjD,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gCAAgC,CAAC,CAAC;AAE1F,eAAO,MAAM,kCAAkC;;;iBAA0B,CAAC;AAE1E,mDAAmD;AACnD,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC"}
|
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Webhook Destination Types
|
|
4
|
+
// ============================================================================
|
|
5
|
+
/**
|
|
6
|
+
* Webhook destination type schema.
|
|
7
|
+
*
|
|
8
|
+
* Currently only 'url' destinations are supported.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* const destType = WebhookDestinationTypeSchema.parse('url');
|
|
13
|
+
* ```
|
|
14
|
+
*/
|
|
15
|
+
export const WebhookDestinationTypeSchema = z.enum(['url']);
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Webhook Delivery Status
|
|
18
|
+
// ============================================================================
|
|
19
|
+
/**
|
|
20
|
+
* Webhook delivery status schema.
|
|
21
|
+
*
|
|
22
|
+
* - `pending`: Delivery is queued and waiting to be sent.
|
|
23
|
+
* - `success`: Delivery was completed successfully.
|
|
24
|
+
* - `failed`: Delivery failed after all retry attempts.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* const status = WebhookDeliveryStatusSchema.parse('success');
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export const WebhookDeliveryStatusSchema = z.enum(['pending', 'success', 'failed']);
|
|
32
|
+
// ============================================================================
|
|
33
|
+
// Core Schemas
|
|
34
|
+
// ============================================================================
|
|
35
|
+
/**
|
|
36
|
+
* Webhook schema representing a webhook endpoint.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* const webhook = await getWebhook(client, 'wh_abc123');
|
|
41
|
+
* console.log(`Webhook: ${webhook.name} (${webhook.id})`);
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export const WebhookSchema = z.object({
|
|
45
|
+
/** Unique identifier for the webhook (prefixed with wh_). */
|
|
46
|
+
id: z.string(),
|
|
47
|
+
/** ISO 8601 timestamp when the webhook was created. */
|
|
48
|
+
created_at: z.string(),
|
|
49
|
+
/** ISO 8601 timestamp when the webhook was last updated. */
|
|
50
|
+
updated_at: z.string(),
|
|
51
|
+
/** ID of the user who created the webhook. */
|
|
52
|
+
created_by: z.string(),
|
|
53
|
+
/** Human-readable webhook name. */
|
|
54
|
+
name: z.string(),
|
|
55
|
+
/** Optional description of the webhook's purpose. */
|
|
56
|
+
description: z.string().nullable().optional(),
|
|
57
|
+
/** Fully-qualified ingest URL for sending events to this webhook. Only present on create. */
|
|
58
|
+
url: z.string().optional(),
|
|
59
|
+
});
|
|
60
|
+
/**
|
|
61
|
+
* Webhook destination schema representing a delivery target for webhook events.
|
|
62
|
+
*
|
|
63
|
+
* Destinations define where incoming webhook payloads are forwarded to.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* ```typescript
|
|
67
|
+
* const destinations = await listWebhookDestinations(client, 'wh_abc123');
|
|
68
|
+
* for (const dest of destinations) {
|
|
69
|
+
* console.log(`Destination ${dest.id}: type=${dest.type}`);
|
|
70
|
+
* }
|
|
71
|
+
* ```
|
|
72
|
+
*/
|
|
73
|
+
export const WebhookDestinationSchema = z.object({
|
|
74
|
+
/** Unique identifier for the destination (prefixed with whds_). */
|
|
75
|
+
id: z.string(),
|
|
76
|
+
/** ISO 8601 timestamp when the destination was created. */
|
|
77
|
+
created_at: z.string(),
|
|
78
|
+
/** ISO 8601 timestamp when the destination was last updated. */
|
|
79
|
+
updated_at: z.string(),
|
|
80
|
+
/** ID of the user who created the destination. */
|
|
81
|
+
created_by: z.string(),
|
|
82
|
+
/** ID of the webhook this destination belongs to. */
|
|
83
|
+
webhook_id: z.string(),
|
|
84
|
+
/** Type of destination (currently only 'url'). */
|
|
85
|
+
type: WebhookDestinationTypeSchema,
|
|
86
|
+
/** Configuration object for the destination (e.g., URL, headers). */
|
|
87
|
+
config: z.record(z.string(), z.unknown()),
|
|
88
|
+
});
|
|
89
|
+
/**
|
|
90
|
+
* Webhook receipt schema representing an incoming webhook payload that was received.
|
|
91
|
+
*
|
|
92
|
+
* Receipts capture the raw payload and headers of each incoming webhook request.
|
|
93
|
+
*
|
|
94
|
+
* @example
|
|
95
|
+
* ```typescript
|
|
96
|
+
* const receipt = await getWebhookReceipt(client, 'wh_abc123', 'whrc_def456');
|
|
97
|
+
* console.log(`Receipt ${receipt.id}: received at ${receipt.date}`);
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export const WebhookReceiptSchema = z.object({
|
|
101
|
+
/** Unique identifier for the receipt (prefixed with whrc_). */
|
|
102
|
+
id: z.string(),
|
|
103
|
+
/** ISO 8601 timestamp when the receipt was recorded. */
|
|
104
|
+
date: z.string(),
|
|
105
|
+
/** ID of the webhook this receipt belongs to. */
|
|
106
|
+
webhook_id: z.string(),
|
|
107
|
+
/** HTTP headers from the incoming webhook request. */
|
|
108
|
+
headers: z.record(z.string(), z.unknown()),
|
|
109
|
+
/** Raw payload from the incoming webhook request (can be any type). */
|
|
110
|
+
payload: z.unknown(),
|
|
111
|
+
});
|
|
112
|
+
/**
|
|
113
|
+
* Webhook delivery schema representing a delivery attempt to a destination.
|
|
114
|
+
*
|
|
115
|
+
* Deliveries track the status and result of forwarding a received webhook
|
|
116
|
+
* payload to a configured destination.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* const deliveries = await listWebhookDeliveries(client, 'wh_abc123');
|
|
121
|
+
* for (const delivery of deliveries) {
|
|
122
|
+
* console.log(`Delivery ${delivery.id}: ${delivery.status}`);
|
|
123
|
+
* }
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
export const WebhookDeliverySchema = z.object({
|
|
127
|
+
/** Unique identifier for the delivery (prefixed with whdv_). */
|
|
128
|
+
id: z.string(),
|
|
129
|
+
/** ISO 8601 timestamp when the delivery was attempted. */
|
|
130
|
+
date: z.string(),
|
|
131
|
+
/** ID of the webhook this delivery belongs to. */
|
|
132
|
+
webhook_id: z.string(),
|
|
133
|
+
/** ID of the destination this delivery was sent to. */
|
|
134
|
+
webhook_destination_id: z.string(),
|
|
135
|
+
/** ID of the receipt that triggered this delivery. */
|
|
136
|
+
webhook_receipt_id: z.string(),
|
|
137
|
+
/** Current status of the delivery. */
|
|
138
|
+
status: WebhookDeliveryStatusSchema,
|
|
139
|
+
/** Number of retry attempts made. */
|
|
140
|
+
retries: z.number(),
|
|
141
|
+
/** Error message if the delivery failed. */
|
|
142
|
+
error: z.string().nullable().optional(),
|
|
143
|
+
/** Response data from the destination (if available). */
|
|
144
|
+
response: z.record(z.string(), z.unknown()).nullable().optional(),
|
|
145
|
+
});
|
|
146
|
+
// ============================================================================
|
|
147
|
+
// Request Schemas
|
|
148
|
+
// ============================================================================
|
|
149
|
+
/**
|
|
150
|
+
* Request schema for creating a new webhook.
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* ```typescript
|
|
154
|
+
* const request: CreateWebhookRequest = {
|
|
155
|
+
* name: 'github-events',
|
|
156
|
+
* description: 'Receives GitHub webhook events',
|
|
157
|
+
* };
|
|
158
|
+
* ```
|
|
159
|
+
*/
|
|
160
|
+
export const CreateWebhookRequestSchema = z.object({
|
|
161
|
+
/** Human-readable name for the webhook. */
|
|
162
|
+
name: z.string(),
|
|
163
|
+
/** Optional description of the webhook's purpose. */
|
|
164
|
+
description: z.string().optional(),
|
|
165
|
+
});
|
|
166
|
+
/**
|
|
167
|
+
* Request schema for updating an existing webhook.
|
|
168
|
+
*
|
|
169
|
+
* @example
|
|
170
|
+
* ```typescript
|
|
171
|
+
* const request: UpdateWebhookRequest = {
|
|
172
|
+
* name: 'github-events-v2',
|
|
173
|
+
* description: 'Updated description',
|
|
174
|
+
* };
|
|
175
|
+
* ```
|
|
176
|
+
*/
|
|
177
|
+
export const UpdateWebhookRequestSchema = z.object({
|
|
178
|
+
/** New name for the webhook. */
|
|
179
|
+
name: z.string(),
|
|
180
|
+
/** New description for the webhook. */
|
|
181
|
+
description: z.string().optional(),
|
|
182
|
+
});
|
|
183
|
+
/**
|
|
184
|
+
* Request schema for creating a webhook destination.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* const request: CreateWebhookDestinationRequest = {
|
|
189
|
+
* type: 'url',
|
|
190
|
+
* config: { url: 'https://api.example.com/webhook' },
|
|
191
|
+
* };
|
|
192
|
+
* ```
|
|
193
|
+
*/
|
|
194
|
+
export const CreateWebhookDestinationRequestSchema = z.object({
|
|
195
|
+
/** Type of destination to create. */
|
|
196
|
+
type: WebhookDestinationTypeSchema,
|
|
197
|
+
/** Configuration object for the destination. */
|
|
198
|
+
config: z.record(z.string(), z.unknown()),
|
|
199
|
+
});
|
|
200
|
+
/**
|
|
201
|
+
* Request schema for updating a webhook destination.
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```typescript
|
|
205
|
+
* const request: UpdateWebhookDestinationRequest = {
|
|
206
|
+
* config: { url: 'https://api.example.com/webhook/v2' },
|
|
207
|
+
* };
|
|
208
|
+
* ```
|
|
209
|
+
*/
|
|
210
|
+
export const UpdateWebhookDestinationRequestSchema = z.object({
|
|
211
|
+
/** Updated configuration object for the destination. */
|
|
212
|
+
config: z.record(z.string(), z.unknown()).optional(),
|
|
213
|
+
});
|
|
214
|
+
export const PaginationRequestSchema = z.object({
|
|
215
|
+
limit: z.number().optional(),
|
|
216
|
+
offset: z.number().optional(),
|
|
217
|
+
});
|
|
218
|
+
export const ListWebhooksRequestSchema = PaginationRequestSchema;
|
|
219
|
+
export const ListWebhookReceiptsRequestSchema = PaginationRequestSchema;
|
|
220
|
+
export const ListWebhookDeliveriesRequestSchema = PaginationRequestSchema;
|
|
221
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/api/webhook/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* General webhook operation error.
|
|
3
|
+
*
|
|
4
|
+
* Thrown when a webhook operation fails for reasons other than not-found.
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* ```typescript
|
|
8
|
+
* try {
|
|
9
|
+
* await createWebhook(client, { name: 'my-webhook' });
|
|
10
|
+
* } catch (error) {
|
|
11
|
+
* if (error instanceof WebhookError) {
|
|
12
|
+
* console.error(`Webhook operation failed: ${error.message}`);
|
|
13
|
+
* }
|
|
14
|
+
* }
|
|
15
|
+
* ```
|
|
16
|
+
*/
|
|
17
|
+
export declare const WebhookError: {
|
|
18
|
+
new (args?: ({
|
|
19
|
+
webhookId?: string;
|
|
20
|
+
} & {
|
|
21
|
+
message?: string;
|
|
22
|
+
cause?: unknown;
|
|
23
|
+
}) | undefined): import("@agentuity/core").RichError & {
|
|
24
|
+
readonly _tag: "WebhookError";
|
|
25
|
+
} & Readonly<{
|
|
26
|
+
webhookId?: string;
|
|
27
|
+
}>;
|
|
28
|
+
readonly defaultMessage?: string;
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* Error thrown when a webhook is not found.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```typescript
|
|
35
|
+
* try {
|
|
36
|
+
* await getWebhook(client, 'wh_nonexistent');
|
|
37
|
+
* } catch (error) {
|
|
38
|
+
* if (error instanceof WebhookNotFoundError) {
|
|
39
|
+
* console.error(`Webhook not found: ${error.webhookId}`);
|
|
40
|
+
* }
|
|
41
|
+
* }
|
|
42
|
+
* ```
|
|
43
|
+
*/
|
|
44
|
+
export declare const WebhookNotFoundError: {
|
|
45
|
+
new (args?: ({
|
|
46
|
+
webhookId: string;
|
|
47
|
+
} & {
|
|
48
|
+
message?: string;
|
|
49
|
+
cause?: unknown;
|
|
50
|
+
}) | undefined): import("@agentuity/core").RichError & {
|
|
51
|
+
readonly _tag: "WebhookNotFoundError";
|
|
52
|
+
} & Readonly<{
|
|
53
|
+
webhookId: string;
|
|
54
|
+
}>;
|
|
55
|
+
readonly defaultMessage?: string;
|
|
56
|
+
};
|
|
57
|
+
/**
|
|
58
|
+
* Error thrown when a webhook destination is not found.
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* try {
|
|
63
|
+
* await deleteWebhookDestination(client, 'wh_abc', 'whds_nonexistent');
|
|
64
|
+
* } catch (error) {
|
|
65
|
+
* if (error instanceof WebhookDestinationNotFoundError) {
|
|
66
|
+
* console.error(`Destination ${error.destinationId} not found`);
|
|
67
|
+
* }
|
|
68
|
+
* }
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export declare const WebhookDestinationNotFoundError: {
|
|
72
|
+
new (args?: ({
|
|
73
|
+
webhookId: string;
|
|
74
|
+
destinationId: string;
|
|
75
|
+
} & {
|
|
76
|
+
message?: string;
|
|
77
|
+
cause?: unknown;
|
|
78
|
+
}) | undefined): import("@agentuity/core").RichError & {
|
|
79
|
+
readonly _tag: "WebhookDestinationNotFoundError";
|
|
80
|
+
} & Readonly<{
|
|
81
|
+
webhookId: string;
|
|
82
|
+
destinationId: string;
|
|
83
|
+
}>;
|
|
84
|
+
readonly defaultMessage?: string;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Error thrown when a webhook receipt is not found.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* ```typescript
|
|
91
|
+
* try {
|
|
92
|
+
* await getWebhookReceipt(client, 'wh_abc', 'whrc_nonexistent');
|
|
93
|
+
* } catch (error) {
|
|
94
|
+
* if (error instanceof WebhookReceiptNotFoundError) {
|
|
95
|
+
* console.error(`Receipt ${error.receiptId} not found`);
|
|
96
|
+
* }
|
|
97
|
+
* }
|
|
98
|
+
* ```
|
|
99
|
+
*/
|
|
100
|
+
export declare const WebhookReceiptNotFoundError: {
|
|
101
|
+
new (args?: ({
|
|
102
|
+
webhookId: string;
|
|
103
|
+
receiptId: string;
|
|
104
|
+
} & {
|
|
105
|
+
message?: string;
|
|
106
|
+
cause?: unknown;
|
|
107
|
+
}) | undefined): import("@agentuity/core").RichError & {
|
|
108
|
+
readonly _tag: "WebhookReceiptNotFoundError";
|
|
109
|
+
} & Readonly<{
|
|
110
|
+
webhookId: string;
|
|
111
|
+
receiptId: string;
|
|
112
|
+
}>;
|
|
113
|
+
readonly defaultMessage?: string;
|
|
114
|
+
};
|
|
115
|
+
/**
|
|
116
|
+
* Error thrown when a webhook delivery is not found.
|
|
117
|
+
*
|
|
118
|
+
* @example
|
|
119
|
+
* ```typescript
|
|
120
|
+
* try {
|
|
121
|
+
* await retryWebhookDelivery(client, 'wh_abc', 'whdv_nonexistent');
|
|
122
|
+
* } catch (error) {
|
|
123
|
+
* if (error instanceof WebhookDeliveryNotFoundError) {
|
|
124
|
+
* console.error(`Delivery ${error.deliveryId} not found`);
|
|
125
|
+
* }
|
|
126
|
+
* }
|
|
127
|
+
* ```
|
|
128
|
+
*/
|
|
129
|
+
export declare const WebhookDeliveryNotFoundError: {
|
|
130
|
+
new (args?: ({
|
|
131
|
+
webhookId: string;
|
|
132
|
+
deliveryId: string;
|
|
133
|
+
} & {
|
|
134
|
+
message?: string;
|
|
135
|
+
cause?: unknown;
|
|
136
|
+
}) | undefined): import("@agentuity/core").RichError & {
|
|
137
|
+
readonly _tag: "WebhookDeliveryNotFoundError";
|
|
138
|
+
} & Readonly<{
|
|
139
|
+
webhookId: string;
|
|
140
|
+
deliveryId: string;
|
|
141
|
+
}>;
|
|
142
|
+
readonly defaultMessage?: string;
|
|
143
|
+
};
|
|
144
|
+
/**
|
|
145
|
+
* Constructs a full API path for webhook operations.
|
|
146
|
+
*
|
|
147
|
+
* Pattern: `/webhook/${VERSION}/${verb}/${segments.join('/')}`
|
|
148
|
+
* Each verb is unique to avoid route conflicts with the Go mux.
|
|
149
|
+
*
|
|
150
|
+
* @param verb - The action verb (e.g., 'create', 'list', 'get', 'destination-list')
|
|
151
|
+
* @param segments - Additional path segments (e.g., webhook ID, sub-resource ID)
|
|
152
|
+
* @returns The full API path with version and verb prefix
|
|
153
|
+
*
|
|
154
|
+
* @internal
|
|
155
|
+
*/
|
|
156
|
+
export declare function webhookApiPath(verb: string, ...segments: string[]): string;
|
|
157
|
+
/**
|
|
158
|
+
* Constructs a full API path for webhook operations with query string.
|
|
159
|
+
*
|
|
160
|
+
* @param verb - The action verb
|
|
161
|
+
* @param queryString - Query string to append (without leading ?)
|
|
162
|
+
* @param segments - Additional path segments
|
|
163
|
+
* @returns The full API path with version, verb, and query string
|
|
164
|
+
*
|
|
165
|
+
* @internal
|
|
166
|
+
*/
|
|
167
|
+
export declare function webhookApiPathWithQuery(verb: string, queryString: string | undefined, ...segments: string[]): string;
|
|
168
|
+
/**
|
|
169
|
+
* Constructs the public ingest URL for a webhook.
|
|
170
|
+
*
|
|
171
|
+
* Pattern: `/webhook/{orgId}-{webhookId}` (non-versioned, public)
|
|
172
|
+
*
|
|
173
|
+
* @param orgId - The organization ID
|
|
174
|
+
* @param webhookId - The webhook ID (prefixed with wh_)
|
|
175
|
+
* @returns The public ingest URL
|
|
176
|
+
*
|
|
177
|
+
* @internal
|
|
178
|
+
*/
|
|
179
|
+
export declare function webhookIngestPath(orgId: string, webhookId: string): string;
|
|
180
|
+
/**
|
|
181
|
+
* Builds headers for webhook API requests.
|
|
182
|
+
*
|
|
183
|
+
* @param orgId - Optional organization ID for CLI authentication
|
|
184
|
+
* @returns Headers object to pass to API client
|
|
185
|
+
*
|
|
186
|
+
* @internal
|
|
187
|
+
*/
|
|
188
|
+
export declare function buildWebhookHeaders(orgId?: string): Record<string, string> | undefined;
|
|
189
|
+
/**
|
|
190
|
+
* Wraps an API call and translates APIError with HTTP status codes to domain-specific webhook errors.
|
|
191
|
+
*
|
|
192
|
+
* - 404 → WebhookNotFoundError / WebhookDestinationNotFoundError / WebhookReceiptNotFoundError / WebhookDeliveryNotFoundError
|
|
193
|
+
*
|
|
194
|
+
* @internal
|
|
195
|
+
*/
|
|
196
|
+
export declare function withWebhookErrorHandling<T>(apiCall: () => Promise<T>, context: {
|
|
197
|
+
webhookId?: string;
|
|
198
|
+
destinationId?: string;
|
|
199
|
+
receiptId?: string;
|
|
200
|
+
deliveryId?: string;
|
|
201
|
+
}): Promise<T>;
|
|
202
|
+
//# sourceMappingURL=util.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.d.ts","sourceRoot":"","sources":["../../../src/api/webhook/util.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;;;;;GAeG;AACH,eAAO,MAAM,YAAY;;oBAAiD,MAAM;;;;;;;oBAAN,MAAM;;;CAAK,CAAC;AAEtF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,oBAAoB;;mBACrB,MAAM;;;;;;;mBAAN,MAAM;;;CACd,CAAC;AAEL;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,+BAA+B;;mBAChC,MAAM;uBACF,MAAM;;;;;;;mBADV,MAAM;uBACF,MAAM;;;CAClB,CAAC;AAEL;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,2BAA2B;;mBAC5B,MAAM;mBACN,MAAM;;;;;;;mBADN,MAAM;mBACN,MAAM;;;CACd,CAAC;AAEL;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,4BAA4B;;mBAC7B,MAAM;oBACL,MAAM;;;;;;;mBADP,MAAM;oBACL,MAAM;;;CACf,CAAC;AASL;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAM1E;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACtC,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,GAAG,SAAS,EAC/B,GAAG,QAAQ,EAAE,MAAM,EAAE,GACnB,MAAM,CAGR;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1E;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,SAAS,CAKtF;AAMD;;;;;;GAMG;AACH,wBAAsB,wBAAwB,CAAC,CAAC,EAC/C,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACzB,OAAO,EAAE;IACR,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;CACpB,GACC,OAAO,CAAC,CAAC,CAAC,CAqCZ"}
|
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
import { StructuredError } from '@agentuity/core';
|
|
2
|
+
import { APIError } from "../api.js";
|
|
3
|
+
// ============================================================================
|
|
4
|
+
// Error Types
|
|
5
|
+
// ============================================================================
|
|
6
|
+
/**
|
|
7
|
+
* General webhook operation error.
|
|
8
|
+
*
|
|
9
|
+
* Thrown when a webhook operation fails for reasons other than not-found.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* try {
|
|
14
|
+
* await createWebhook(client, { name: 'my-webhook' });
|
|
15
|
+
* } catch (error) {
|
|
16
|
+
* if (error instanceof WebhookError) {
|
|
17
|
+
* console.error(`Webhook operation failed: ${error.message}`);
|
|
18
|
+
* }
|
|
19
|
+
* }
|
|
20
|
+
* ```
|
|
21
|
+
*/
|
|
22
|
+
export const WebhookError = StructuredError('WebhookError')();
|
|
23
|
+
/**
|
|
24
|
+
* Error thrown when a webhook is not found.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```typescript
|
|
28
|
+
* try {
|
|
29
|
+
* await getWebhook(client, 'wh_nonexistent');
|
|
30
|
+
* } catch (error) {
|
|
31
|
+
* if (error instanceof WebhookNotFoundError) {
|
|
32
|
+
* console.error(`Webhook not found: ${error.webhookId}`);
|
|
33
|
+
* }
|
|
34
|
+
* }
|
|
35
|
+
* ```
|
|
36
|
+
*/
|
|
37
|
+
export const WebhookNotFoundError = StructuredError('WebhookNotFoundError')();
|
|
38
|
+
/**
|
|
39
|
+
* Error thrown when a webhook destination is not found.
|
|
40
|
+
*
|
|
41
|
+
* @example
|
|
42
|
+
* ```typescript
|
|
43
|
+
* try {
|
|
44
|
+
* await deleteWebhookDestination(client, 'wh_abc', 'whds_nonexistent');
|
|
45
|
+
* } catch (error) {
|
|
46
|
+
* if (error instanceof WebhookDestinationNotFoundError) {
|
|
47
|
+
* console.error(`Destination ${error.destinationId} not found`);
|
|
48
|
+
* }
|
|
49
|
+
* }
|
|
50
|
+
* ```
|
|
51
|
+
*/
|
|
52
|
+
export const WebhookDestinationNotFoundError = StructuredError('WebhookDestinationNotFoundError')();
|
|
53
|
+
/**
|
|
54
|
+
* Error thrown when a webhook receipt is not found.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* ```typescript
|
|
58
|
+
* try {
|
|
59
|
+
* await getWebhookReceipt(client, 'wh_abc', 'whrc_nonexistent');
|
|
60
|
+
* } catch (error) {
|
|
61
|
+
* if (error instanceof WebhookReceiptNotFoundError) {
|
|
62
|
+
* console.error(`Receipt ${error.receiptId} not found`);
|
|
63
|
+
* }
|
|
64
|
+
* }
|
|
65
|
+
* ```
|
|
66
|
+
*/
|
|
67
|
+
export const WebhookReceiptNotFoundError = StructuredError('WebhookReceiptNotFoundError')();
|
|
68
|
+
/**
|
|
69
|
+
* Error thrown when a webhook delivery is not found.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* ```typescript
|
|
73
|
+
* try {
|
|
74
|
+
* await retryWebhookDelivery(client, 'wh_abc', 'whdv_nonexistent');
|
|
75
|
+
* } catch (error) {
|
|
76
|
+
* if (error instanceof WebhookDeliveryNotFoundError) {
|
|
77
|
+
* console.error(`Delivery ${error.deliveryId} not found`);
|
|
78
|
+
* }
|
|
79
|
+
* }
|
|
80
|
+
* ```
|
|
81
|
+
*/
|
|
82
|
+
export const WebhookDeliveryNotFoundError = StructuredError('WebhookDeliveryNotFoundError')();
|
|
83
|
+
// ============================================================================
|
|
84
|
+
// API Path Helpers
|
|
85
|
+
// ============================================================================
|
|
86
|
+
/** Current Webhook API version. */
|
|
87
|
+
const WEBHOOK_API_VERSION = '2026-02-24';
|
|
88
|
+
/**
|
|
89
|
+
* Constructs a full API path for webhook operations.
|
|
90
|
+
*
|
|
91
|
+
* Pattern: `/webhook/${VERSION}/${verb}/${segments.join('/')}`
|
|
92
|
+
* Each verb is unique to avoid route conflicts with the Go mux.
|
|
93
|
+
*
|
|
94
|
+
* @param verb - The action verb (e.g., 'create', 'list', 'get', 'destination-list')
|
|
95
|
+
* @param segments - Additional path segments (e.g., webhook ID, sub-resource ID)
|
|
96
|
+
* @returns The full API path with version and verb prefix
|
|
97
|
+
*
|
|
98
|
+
* @internal
|
|
99
|
+
*/
|
|
100
|
+
export function webhookApiPath(verb, ...segments) {
|
|
101
|
+
const encoded = segments.map((s) => encodeURIComponent(s)).join('/');
|
|
102
|
+
if (encoded) {
|
|
103
|
+
return `/webhook/${WEBHOOK_API_VERSION}/${verb}/${encoded}`;
|
|
104
|
+
}
|
|
105
|
+
return `/webhook/${WEBHOOK_API_VERSION}/${verb}`;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Constructs a full API path for webhook operations with query string.
|
|
109
|
+
*
|
|
110
|
+
* @param verb - The action verb
|
|
111
|
+
* @param queryString - Query string to append (without leading ?)
|
|
112
|
+
* @param segments - Additional path segments
|
|
113
|
+
* @returns The full API path with version, verb, and query string
|
|
114
|
+
*
|
|
115
|
+
* @internal
|
|
116
|
+
*/
|
|
117
|
+
export function webhookApiPathWithQuery(verb, queryString, ...segments) {
|
|
118
|
+
const basePath = webhookApiPath(verb, ...segments);
|
|
119
|
+
return queryString ? `${basePath}?${queryString}` : basePath;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Constructs the public ingest URL for a webhook.
|
|
123
|
+
*
|
|
124
|
+
* Pattern: `/webhook/{orgId}-{webhookId}` (non-versioned, public)
|
|
125
|
+
*
|
|
126
|
+
* @param orgId - The organization ID
|
|
127
|
+
* @param webhookId - The webhook ID (prefixed with wh_)
|
|
128
|
+
* @returns The public ingest URL
|
|
129
|
+
*
|
|
130
|
+
* @internal
|
|
131
|
+
*/
|
|
132
|
+
export function webhookIngestPath(orgId, webhookId) {
|
|
133
|
+
return `/webhook/${encodeURIComponent(orgId)}-${encodeURIComponent(webhookId)}`;
|
|
134
|
+
}
|
|
135
|
+
// ============================================================================
|
|
136
|
+
// Header Builder
|
|
137
|
+
// ============================================================================
|
|
138
|
+
/**
|
|
139
|
+
* Builds headers for webhook API requests.
|
|
140
|
+
*
|
|
141
|
+
* @param orgId - Optional organization ID for CLI authentication
|
|
142
|
+
* @returns Headers object to pass to API client
|
|
143
|
+
*
|
|
144
|
+
* @internal
|
|
145
|
+
*/
|
|
146
|
+
export function buildWebhookHeaders(orgId) {
|
|
147
|
+
if (orgId) {
|
|
148
|
+
return { 'x-agentuity-orgid': orgId };
|
|
149
|
+
}
|
|
150
|
+
return undefined;
|
|
151
|
+
}
|
|
152
|
+
// ============================================================================
|
|
153
|
+
// Error Handling
|
|
154
|
+
// ============================================================================
|
|
155
|
+
/**
|
|
156
|
+
* Wraps an API call and translates APIError with HTTP status codes to domain-specific webhook errors.
|
|
157
|
+
*
|
|
158
|
+
* - 404 → WebhookNotFoundError / WebhookDestinationNotFoundError / WebhookReceiptNotFoundError / WebhookDeliveryNotFoundError
|
|
159
|
+
*
|
|
160
|
+
* @internal
|
|
161
|
+
*/
|
|
162
|
+
export async function withWebhookErrorHandling(apiCall, context) {
|
|
163
|
+
try {
|
|
164
|
+
return await apiCall();
|
|
165
|
+
}
|
|
166
|
+
catch (error) {
|
|
167
|
+
if (error instanceof APIError) {
|
|
168
|
+
if (error.status === 404) {
|
|
169
|
+
if (context.deliveryId && context.webhookId) {
|
|
170
|
+
throw new WebhookDeliveryNotFoundError({
|
|
171
|
+
webhookId: context.webhookId,
|
|
172
|
+
deliveryId: context.deliveryId,
|
|
173
|
+
message: error.message,
|
|
174
|
+
});
|
|
175
|
+
}
|
|
176
|
+
if (context.receiptId && context.webhookId) {
|
|
177
|
+
throw new WebhookReceiptNotFoundError({
|
|
178
|
+
webhookId: context.webhookId,
|
|
179
|
+
receiptId: context.receiptId,
|
|
180
|
+
message: error.message,
|
|
181
|
+
});
|
|
182
|
+
}
|
|
183
|
+
if (context.destinationId && context.webhookId) {
|
|
184
|
+
throw new WebhookDestinationNotFoundError({
|
|
185
|
+
webhookId: context.webhookId,
|
|
186
|
+
destinationId: context.destinationId,
|
|
187
|
+
message: error.message,
|
|
188
|
+
});
|
|
189
|
+
}
|
|
190
|
+
if (context.webhookId) {
|
|
191
|
+
throw new WebhookNotFoundError({
|
|
192
|
+
webhookId: context.webhookId,
|
|
193
|
+
message: error.message,
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
throw error;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
//# sourceMappingURL=util.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"util.js","sourceRoot":"","sources":["../../../src/api/webhook/util.ts"],"names":[],"mappings":"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"}
|