@mastra/factory 0.13.0 → 0.13.1-alpha.1

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 (37) hide show
  1. package/README.md +21 -0
  2. package/dist/factory.d.ts +3 -2
  3. package/dist/factory.d.ts.map +1 -1
  4. package/dist/factory.js +5 -2
  5. package/dist/factory.js.map +1 -1
  6. package/dist/integrations/incidentio/api.d.ts +400 -0
  7. package/dist/integrations/incidentio/api.d.ts.map +1 -0
  8. package/dist/integrations/incidentio/api.js +192 -0
  9. package/dist/integrations/incidentio/api.js.map +1 -0
  10. package/dist/integrations/incidentio/intake.d.ts +10 -0
  11. package/dist/integrations/incidentio/intake.d.ts.map +1 -0
  12. package/dist/integrations/incidentio/intake.js +307 -0
  13. package/dist/integrations/incidentio/intake.js.map +1 -0
  14. package/dist/integrations/incidentio/integration.d.ts +17 -0
  15. package/dist/integrations/incidentio/integration.d.ts.map +1 -0
  16. package/dist/integrations/incidentio/integration.js +54 -0
  17. package/dist/integrations/incidentio/integration.js.map +1 -0
  18. package/dist/integrations/incidentio/issue-reconciler.d.ts +8 -0
  19. package/dist/integrations/incidentio/issue-reconciler.d.ts.map +1 -0
  20. package/dist/integrations/incidentio/issue-reconciler.js +39 -0
  21. package/dist/integrations/incidentio/issue-reconciler.js.map +1 -0
  22. package/dist/integrations/incidentio/reconciliation-config.d.ts +3 -0
  23. package/dist/integrations/incidentio/reconciliation-config.d.ts.map +1 -0
  24. package/dist/integrations/incidentio/reconciliation-config.js +17 -0
  25. package/dist/integrations/incidentio/reconciliation-config.js.map +1 -0
  26. package/dist/integrations/linear/reconciliation-config.d.ts.map +1 -1
  27. package/dist/integrations/linear/reconciliation-config.js +4 -10
  28. package/dist/integrations/linear/reconciliation-config.js.map +1 -1
  29. package/dist/integrations/platform/incidentio/integration.d.ts +17 -0
  30. package/dist/integrations/platform/incidentio/integration.d.ts.map +1 -0
  31. package/dist/integrations/platform/incidentio/integration.js +56 -0
  32. package/dist/integrations/platform/incidentio/integration.js.map +1 -0
  33. package/dist/integrations/reconciliation-config.d.ts +1 -0
  34. package/dist/integrations/reconciliation-config.d.ts.map +1 -1
  35. package/dist/integrations/reconciliation-config.js +8 -1
  36. package/dist/integrations/reconciliation-config.js.map +1 -1
  37. package/package.json +7 -7
@@ -0,0 +1,400 @@
1
+ export interface IncidentioUser {
2
+ id: string;
3
+ name: string;
4
+ email?: string;
5
+ role?: string;
6
+ slack_user_id?: string;
7
+ }
8
+ export interface IncidentioActor {
9
+ alert?: {
10
+ id: string;
11
+ title: string;
12
+ };
13
+ api_key?: {
14
+ id: string;
15
+ name: string;
16
+ };
17
+ user?: IncidentioUser;
18
+ workflow?: {
19
+ id: string;
20
+ name: string;
21
+ };
22
+ }
23
+ export interface IncidentioIncident {
24
+ id: string;
25
+ reference: string;
26
+ name: string;
27
+ summary?: string;
28
+ permalink?: string;
29
+ visibility: string;
30
+ mode: string;
31
+ creator: IncidentioActor;
32
+ incident_status: {
33
+ id: string;
34
+ name: string;
35
+ category: string;
36
+ };
37
+ incident_type?: {
38
+ id: string;
39
+ name: string;
40
+ };
41
+ severity?: {
42
+ id: string;
43
+ name: string;
44
+ rank: number;
45
+ };
46
+ slack_channel_url?: string;
47
+ postmortem_document_url?: string;
48
+ created_at: string;
49
+ updated_at: string;
50
+ }
51
+ export interface IncidentioFollowUp {
52
+ id: string;
53
+ incident_id: string;
54
+ title: string;
55
+ description?: string;
56
+ status: 'outstanding' | 'completed' | 'deleted' | 'not_doing';
57
+ creator: IncidentioActor;
58
+ assignee?: IncidentioUser | null;
59
+ assignee_team?: {
60
+ id: string;
61
+ name: string;
62
+ } | null;
63
+ labels: string[];
64
+ priority?: {
65
+ id: string;
66
+ name: string;
67
+ rank: number;
68
+ } | null;
69
+ category?: {
70
+ id: string;
71
+ name: string;
72
+ } | null;
73
+ external_issue_reference?: {
74
+ issue_name: string;
75
+ issue_permalink: string;
76
+ provider: string;
77
+ } | null;
78
+ completed_at?: string;
79
+ created_at: string;
80
+ updated_at: string;
81
+ }
82
+ export interface IncidentioAction {
83
+ id: string;
84
+ incident_id: string;
85
+ description: string;
86
+ status: 'outstanding' | 'completed' | 'deleted' | 'not_doing';
87
+ creator: IncidentioActor;
88
+ assignee?: IncidentioUser;
89
+ completed_at?: string;
90
+ created_at: string;
91
+ updated_at: string;
92
+ }
93
+ export interface IncidentioIncidentUpdate {
94
+ id: string;
95
+ incident_id: string;
96
+ updater: IncidentioActor;
97
+ new_incident_status: {
98
+ id: string;
99
+ name: string;
100
+ category: string;
101
+ };
102
+ message?: string;
103
+ merged_into_incident_id?: string;
104
+ new_severity?: {
105
+ id: string;
106
+ name: string;
107
+ rank: number;
108
+ };
109
+ created_at: string;
110
+ }
111
+ export interface IncidentioAlertAttributeValue {
112
+ catalog_entry?: {
113
+ id: string;
114
+ name: string;
115
+ catalog_type_id?: string;
116
+ };
117
+ label?: string;
118
+ literal?: string;
119
+ }
120
+ export interface IncidentioAlertAttributeEntry {
121
+ attribute: {
122
+ id: string;
123
+ name: string;
124
+ type: string;
125
+ array: boolean;
126
+ required: boolean;
127
+ emoji?: string;
128
+ };
129
+ value?: IncidentioAlertAttributeValue;
130
+ array_value?: IncidentioAlertAttributeValue[];
131
+ }
132
+ export interface IncidentioAlert {
133
+ id: string;
134
+ alert_source_id: string;
135
+ deduplication_key: string;
136
+ status: 'firing' | 'resolved';
137
+ title: string;
138
+ attributes: IncidentioAlertAttributeEntry[];
139
+ alert_group_ids?: string[];
140
+ description?: string;
141
+ resolved_at?: string;
142
+ source_url?: string;
143
+ created_at: string;
144
+ updated_at: string;
145
+ }
146
+ export interface IncidentioEscalation {
147
+ id: string;
148
+ status: 'pending' | 'triggered' | 'acked' | 'resolved' | 'expired' | 'cancelled' | 'snoozed' | 'delayed' | 'pending_repeat';
149
+ title: string;
150
+ description: string;
151
+ priority: {
152
+ name: string;
153
+ };
154
+ creator: IncidentioActor;
155
+ escalation_path_id?: string;
156
+ events: Array<{
157
+ id: string;
158
+ event: 'entered_grace_period' | 'triggered' | 'notified_users' | 'notified_channels' | 'acked' | 'cancelled' | 'resolved' | 'expired';
159
+ occurred_at: string;
160
+ urgency?: 'high' | 'low';
161
+ users?: IncidentioUser[];
162
+ channels?: Array<{
163
+ microsoft_teams_channel_id?: string;
164
+ microsoft_teams_team_id?: string;
165
+ slack_channel_id?: string;
166
+ slack_team_id?: string;
167
+ }>;
168
+ }>;
169
+ related_incidents: Array<{
170
+ id: string;
171
+ external_id: number;
172
+ name: string;
173
+ reference: string;
174
+ visibility: 'public' | 'private';
175
+ status_category: string;
176
+ summary?: string;
177
+ }>;
178
+ related_alerts: Array<{
179
+ id: string;
180
+ alert_source_id: string;
181
+ deduplication_key: string;
182
+ status: 'firing' | 'resolved';
183
+ title: string;
184
+ alert_group_ids?: string[];
185
+ description?: string;
186
+ resolved_at?: string;
187
+ source_url?: string;
188
+ created_at: string;
189
+ updated_at: string;
190
+ }>;
191
+ created_at: string;
192
+ updated_at: string;
193
+ }
194
+ export interface IncidentioCatalogEntry {
195
+ id: string;
196
+ catalog_type_id: string;
197
+ name: string;
198
+ aliases: string[];
199
+ rank: number;
200
+ attribute_values: Record<string, {
201
+ value?: {
202
+ label: string;
203
+ literal?: string;
204
+ };
205
+ array_value?: Array<{
206
+ label: string;
207
+ literal?: string;
208
+ }>;
209
+ }>;
210
+ external_id?: string;
211
+ archived_at?: string;
212
+ created_at: string;
213
+ updated_at: string;
214
+ }
215
+ export interface IncidentioCatalogType {
216
+ id: string;
217
+ name: string;
218
+ description: string;
219
+ type_name: string;
220
+ ranked: boolean;
221
+ is_editable: boolean;
222
+ use_name_as_identifier: boolean;
223
+ categories: string[];
224
+ annotations: Record<string, string>;
225
+ color: string;
226
+ icon: string;
227
+ created_at: string;
228
+ updated_at: string;
229
+ }
230
+ export interface IncidentioCatalogResource {
231
+ type: string;
232
+ engine_resource_type: string;
233
+ label: string;
234
+ description: string;
235
+ value_docstring: string;
236
+ category: string;
237
+ }
238
+ export interface IncidentioTeam {
239
+ id: string;
240
+ name: string;
241
+ catalog_entry: {
242
+ id: string;
243
+ name: string;
244
+ external_id?: string;
245
+ };
246
+ members: IncidentioUser[];
247
+ }
248
+ export interface IncidentioSchedule {
249
+ id: string;
250
+ name: string;
251
+ timezone: string;
252
+ team_ids: string[];
253
+ permalink: string;
254
+ annotations: Record<string, string>;
255
+ config?: {
256
+ rotations: Array<{
257
+ id: string;
258
+ name: string;
259
+ users: IncidentioUser[];
260
+ handover_start_at: string;
261
+ scheduling_mode?: 'fair' | 'sequential';
262
+ }>;
263
+ };
264
+ current_shifts?: IncidentioScheduleEntry[];
265
+ next_shifts?: IncidentioScheduleEntry[];
266
+ holidays_public_config?: {
267
+ country_codes: string[];
268
+ };
269
+ created_at: string;
270
+ updated_at: string;
271
+ }
272
+ export interface IncidentioScheduleEntry {
273
+ start_at: string;
274
+ end_at: string;
275
+ entry_id?: string;
276
+ fingerprint?: string;
277
+ layer_id?: string;
278
+ rotation_id?: string;
279
+ user?: IncidentioUser;
280
+ }
281
+ export interface IncidentioPolicyFinding {
282
+ id: string;
283
+ policy_id: string;
284
+ policy_type: 'debrief' | 'follow_up' | 'on_call_readiness' | 'post_mortem' | 'schedule' | 'vacation_conflict';
285
+ state: 'pending' | 'active' | 'resolved' | 'cancelled' | 'dismissed';
286
+ responsible_users: IncidentioUser[];
287
+ days?: number;
288
+ due_at?: string;
289
+ debrief?: {
290
+ incident_id: string;
291
+ };
292
+ dismissal?: {
293
+ dismissed_at: string;
294
+ dismissed_by: IncidentioActor;
295
+ reason: string;
296
+ };
297
+ follow_up?: {
298
+ incident_id: string;
299
+ follow_up_id: string;
300
+ };
301
+ on_call_readiness?: {
302
+ user_id: string;
303
+ high_urgency: IncidentioReadinessRule[];
304
+ low_urgency: IncidentioReadinessRule[];
305
+ };
306
+ post_mortem?: {
307
+ incident_id: string;
308
+ };
309
+ schedule?: {
310
+ schedule_id: string;
311
+ start_at: string;
312
+ end_at: string;
313
+ cause?: 'nobody_scheduled' | 'no_on_call_seat' | 'user_deactivated';
314
+ has_unscheduled_time?: boolean;
315
+ rotation_id?: string;
316
+ };
317
+ vacation_conflict?: {
318
+ user_id: string;
319
+ schedule_id: string;
320
+ start_at: string;
321
+ end_at: string;
322
+ holiday_name?: string;
323
+ rotation_id?: string;
324
+ };
325
+ last_checked_at: string;
326
+ created_at: string;
327
+ updated_at: string;
328
+ }
329
+ export interface IncidentioReadinessRule {
330
+ method_types: string[];
331
+ met: boolean;
332
+ max_delay_seconds?: number;
333
+ }
334
+ export interface IncidentioPage<T> {
335
+ items: T[];
336
+ nextCursor: string | null;
337
+ total?: number;
338
+ }
339
+ export interface IncidentioCatalogEntryPage extends IncidentioPage<IncidentioCatalogEntry> {
340
+ catalogType: IncidentioCatalogType;
341
+ }
342
+ export interface IncidentioCatalogEntryResult {
343
+ entry: IncidentioCatalogEntry;
344
+ catalogType: IncidentioCatalogType;
345
+ }
346
+ export interface IncidentioListOptions {
347
+ cursor?: string;
348
+ pageSize?: number;
349
+ }
350
+ export interface IncidentioListActionsOptions extends IncidentioListOptions {
351
+ incidentId?: string;
352
+ incidentMode?: string;
353
+ }
354
+ export interface IncidentioListIncidentUpdatesOptions extends IncidentioListOptions {
355
+ incidentId?: string;
356
+ }
357
+ export interface IncidentioListPolicyFindingsOptions extends IncidentioListOptions {
358
+ policyId?: string;
359
+ }
360
+ export declare class IncidentioApiError extends Error {
361
+ readonly status: number | null;
362
+ constructor(message: string, status: number | null);
363
+ }
364
+ export interface IncidentioApiClientConfig {
365
+ baseUrl: string;
366
+ accessToken: string;
367
+ fetchImpl?: typeof fetch;
368
+ }
369
+ export declare class IncidentioApiClient {
370
+ #private;
371
+ constructor(config: IncidentioApiClientConfig);
372
+ listIncidents(cursor?: string): Promise<IncidentioPage<IncidentioIncident>>;
373
+ getIncident(id: string): Promise<IncidentioIncident>;
374
+ listFollowUps(cursor?: string): Promise<IncidentioPage<IncidentioFollowUp>>;
375
+ getFollowUp(id: string): Promise<IncidentioFollowUp>;
376
+ updateFollowUp(followUp: IncidentioFollowUp, status: IncidentioFollowUp['status']): Promise<IncidentioFollowUp>;
377
+ listActions(options?: IncidentioListActionsOptions): Promise<IncidentioPage<IncidentioAction>>;
378
+ getAction(id: string): Promise<IncidentioAction>;
379
+ listIncidentUpdates(options?: IncidentioListIncidentUpdatesOptions): Promise<IncidentioPage<IncidentioIncidentUpdate>>;
380
+ listAlerts(options?: IncidentioListOptions): Promise<IncidentioPage<IncidentioAlert>>;
381
+ getAlert(id: string): Promise<IncidentioAlert>;
382
+ listEscalations(options?: IncidentioListOptions): Promise<IncidentioPage<IncidentioEscalation>>;
383
+ getEscalation(id: string): Promise<IncidentioEscalation>;
384
+ listCatalogEntries(catalogTypeId: string, options?: IncidentioListOptions & {
385
+ identifier?: string;
386
+ }): Promise<IncidentioCatalogEntryPage>;
387
+ getCatalogEntry(id: string, options?: {
388
+ expand?: boolean;
389
+ }): Promise<IncidentioCatalogEntryResult>;
390
+ listCatalogTypes(): Promise<IncidentioCatalogType[]>;
391
+ getCatalogType(id: string): Promise<IncidentioCatalogType>;
392
+ listCatalogResources(): Promise<IncidentioCatalogResource[]>;
393
+ listTeams(options?: IncidentioListOptions): Promise<IncidentioPage<IncidentioTeam>>;
394
+ getTeam(id: string): Promise<IncidentioTeam>;
395
+ listSchedules(options?: IncidentioListOptions): Promise<IncidentioPage<IncidentioSchedule>>;
396
+ getSchedule(id: string): Promise<IncidentioSchedule>;
397
+ listPolicyFindings(options?: IncidentioListPolicyFindingsOptions): Promise<IncidentioPage<IncidentioPolicyFinding>>;
398
+ getPolicyFinding(id: string): Promise<IncidentioPolicyFinding>;
399
+ }
400
+ //# sourceMappingURL=api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/integrations/incidentio/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,192 @@
1
+ //#region src/integrations/incidentio/api.ts
2
+ var IncidentioApiError = class extends Error {
3
+ status;
4
+ constructor(message, status) {
5
+ super(message);
6
+ this.name = "IncidentioApiError";
7
+ this.status = status;
8
+ }
9
+ };
10
+ var IncidentioApiClient = class {
11
+ #baseUrl;
12
+ #accessToken;
13
+ #fetch;
14
+ constructor(config) {
15
+ const baseUrl = config.baseUrl.trim();
16
+ const accessToken = config.accessToken.trim();
17
+ if (!baseUrl || !accessToken) throw new Error("IncidentioApiClient requires a base URL and access token.");
18
+ this.#baseUrl = baseUrl.replace(/\/+$/, "");
19
+ this.#accessToken = accessToken;
20
+ this.#fetch = config.fetchImpl ?? globalThis.fetch;
21
+ }
22
+ async listIncidents(cursor) {
23
+ const result = await this.#request("GET", "/v2/incidents", { query: {
24
+ page_size: 100,
25
+ after: cursor,
26
+ sort_by: "created_at_newest_first"
27
+ } });
28
+ return this.#page(result.incidents, result.pagination_meta);
29
+ }
30
+ async getIncident(id) {
31
+ return (await this.#request("GET", `/v2/incidents/${encodeURIComponent(id)}`)).incident;
32
+ }
33
+ async listFollowUps(cursor) {
34
+ const result = await this.#request("GET", "/v3/follow_ups", { query: {
35
+ page_size: 100,
36
+ after: cursor
37
+ } });
38
+ return this.#page(result.follow_ups, result.pagination_meta);
39
+ }
40
+ async getFollowUp(id) {
41
+ return (await this.#request("GET", `/v3/follow_ups/${encodeURIComponent(id)}`)).follow_up;
42
+ }
43
+ async updateFollowUp(followUp, status) {
44
+ return (await this.#request("PUT", `/v3/follow_ups/${encodeURIComponent(followUp.id)}`, { body: {
45
+ title: followUp.title,
46
+ status
47
+ } })).follow_up;
48
+ }
49
+ async listActions(options = {}) {
50
+ const result = await this.#request("GET", "/v3/actions", { query: {
51
+ page_size: options.pageSize ?? 100,
52
+ after: options.cursor,
53
+ incident_id: options.incidentId,
54
+ incident_mode: options.incidentMode
55
+ } });
56
+ return this.#page(result.actions, result.pagination_meta);
57
+ }
58
+ async getAction(id) {
59
+ return (await this.#request("GET", `/v3/actions/${encodeURIComponent(id)}`)).action;
60
+ }
61
+ async listIncidentUpdates(options = {}) {
62
+ const result = await this.#request("GET", "/v2/incident_updates", { query: {
63
+ page_size: options.pageSize ?? 100,
64
+ after: options.cursor,
65
+ incident_id: options.incidentId
66
+ } });
67
+ return this.#page(result.incident_updates, result.pagination_meta);
68
+ }
69
+ async listAlerts(options = {}) {
70
+ const result = await this.#request("GET", "/v2/alerts", { query: {
71
+ page_size: options.pageSize ?? 50,
72
+ after: options.cursor
73
+ } });
74
+ return this.#page(result.alerts, result.pagination_meta);
75
+ }
76
+ async getAlert(id) {
77
+ return (await this.#request("GET", `/v2/alerts/${encodeURIComponent(id)}`)).alert;
78
+ }
79
+ async listEscalations(options = {}) {
80
+ const result = await this.#request("GET", "/v2/escalations", { query: {
81
+ page_size: options.pageSize ?? 50,
82
+ after: options.cursor
83
+ } });
84
+ return this.#page(result.escalations, result.pagination_meta);
85
+ }
86
+ async getEscalation(id) {
87
+ return (await this.#request("GET", `/v2/escalations/${encodeURIComponent(id)}`)).escalation;
88
+ }
89
+ async listCatalogEntries(catalogTypeId, options = {}) {
90
+ const result = await this.#request("GET", "/v3/catalog_entries", { query: {
91
+ catalog_type_id: catalogTypeId,
92
+ page_size: options.pageSize ?? 100,
93
+ after: options.cursor,
94
+ identifier: options.identifier
95
+ } });
96
+ return {
97
+ ...this.#page(result.catalog_entries, result.pagination_meta),
98
+ catalogType: result.catalog_type
99
+ };
100
+ }
101
+ async getCatalogEntry(id, options = {}) {
102
+ const result = await this.#request("GET", `/v3/catalog_entries/${encodeURIComponent(id)}`, { query: { expand: options.expand } });
103
+ return {
104
+ entry: result.catalog_entry,
105
+ catalogType: result.catalog_type
106
+ };
107
+ }
108
+ async listCatalogTypes() {
109
+ return (await this.#request("GET", "/v3/catalog_types")).catalog_types;
110
+ }
111
+ async getCatalogType(id) {
112
+ return (await this.#request("GET", `/v3/catalog_types/${encodeURIComponent(id)}`)).catalog_type;
113
+ }
114
+ async listCatalogResources() {
115
+ return (await this.#request("GET", "/v3/catalog_resources")).resources;
116
+ }
117
+ async listTeams(options = {}) {
118
+ const result = await this.#request("GET", "/v3/teams", { query: {
119
+ page_size: options.pageSize ?? 100,
120
+ after: options.cursor
121
+ } });
122
+ return this.#page(result.teams, result.pagination_meta);
123
+ }
124
+ async getTeam(id) {
125
+ return (await this.#request("GET", `/v3/teams/${encodeURIComponent(id)}`)).team;
126
+ }
127
+ async listSchedules(options = {}) {
128
+ const result = await this.#request("GET", "/v2/schedules", { query: {
129
+ page_size: options.pageSize ?? 25,
130
+ after: options.cursor
131
+ } });
132
+ return this.#page(result.schedules, result.pagination_meta);
133
+ }
134
+ async getSchedule(id) {
135
+ return (await this.#request("GET", `/v2/schedules/${encodeURIComponent(id)}`)).schedule;
136
+ }
137
+ async listPolicyFindings(options = {}) {
138
+ const result = await this.#request("GET", "/v2/policy_findings", { query: {
139
+ page_size: options.pageSize ?? 100,
140
+ after: options.cursor,
141
+ policy_id: options.policyId
142
+ } });
143
+ return this.#page(result.policy_findings, result.pagination_meta);
144
+ }
145
+ async getPolicyFinding(id) {
146
+ return (await this.#request("GET", `/v2/policy_findings/${encodeURIComponent(id)}`)).policy_finding;
147
+ }
148
+ #page(items, paginationMeta) {
149
+ return {
150
+ items,
151
+ nextCursor: paginationMeta?.after ?? null,
152
+ ...paginationMeta?.total_record_count === void 0 ? {} : { total: paginationMeta.total_record_count }
153
+ };
154
+ }
155
+ async #request(method, path, options = {}) {
156
+ const query = new URLSearchParams();
157
+ for (const [key, value] of Object.entries(options.query ?? {})) if (value !== void 0) query.set(key, String(value));
158
+ let response;
159
+ try {
160
+ response = await this.#fetch(`${this.#baseUrl}${path}${query.size > 0 ? `?${query.toString()}` : ""}`, {
161
+ method,
162
+ signal: AbortSignal.timeout(15e3),
163
+ headers: {
164
+ accept: "application/json",
165
+ authorization: `Bearer ${this.#accessToken}`,
166
+ ...options.body === void 0 ? {} : { "content-type": "application/json" }
167
+ },
168
+ ...options.body === void 0 ? {} : { body: JSON.stringify(options.body) }
169
+ });
170
+ } catch (error) {
171
+ if (error instanceof Error && error.message.includes(this.#accessToken)) {
172
+ const redacted = new Error(error.message.replaceAll(this.#accessToken, "[REDACTED]"));
173
+ redacted.name = error.name;
174
+ throw redacted;
175
+ }
176
+ throw error;
177
+ }
178
+ if (!response.ok) {
179
+ let detail = `incident.io API request failed (${response.status})`;
180
+ try {
181
+ const body = await response.clone().json();
182
+ detail = body.message ?? body.error ?? body.detail ?? detail;
183
+ } catch {}
184
+ throw new IncidentioApiError(detail.replaceAll(this.#accessToken, "[REDACTED]"), response.status);
185
+ }
186
+ return await response.json();
187
+ }
188
+ };
189
+ //#endregion
190
+ export { IncidentioApiClient, IncidentioApiError };
191
+
192
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","names":["#baseUrl","#accessToken","#fetch","#request","#page"],"sources":["../../../src/integrations/incidentio/api.ts"],"sourcesContent":["export interface IncidentioUser {\n id: string;\n name: string;\n email?: string;\n role?: string;\n slack_user_id?: string;\n}\n\nexport interface IncidentioActor {\n alert?: { id: string; title: string };\n api_key?: { id: string; name: string };\n user?: IncidentioUser;\n workflow?: { id: string; name: string };\n}\n\nexport interface IncidentioIncident {\n id: string;\n reference: string;\n name: string;\n summary?: string;\n permalink?: string;\n visibility: string;\n mode: string;\n creator: IncidentioActor;\n incident_status: { id: string; name: string; category: string };\n incident_type?: { id: string; name: string };\n severity?: { id: string; name: string; rank: number };\n slack_channel_url?: string;\n postmortem_document_url?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioFollowUp {\n id: string;\n incident_id: string;\n title: string;\n description?: string;\n status: 'outstanding' | 'completed' | 'deleted' | 'not_doing';\n creator: IncidentioActor;\n assignee?: IncidentioUser | null;\n assignee_team?: { id: string; name: string } | null;\n labels: string[];\n priority?: { id: string; name: string; rank: number } | null;\n category?: { id: string; name: string } | null;\n external_issue_reference?: { issue_name: string; issue_permalink: string; provider: string } | null;\n completed_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioAction {\n id: string;\n incident_id: string;\n description: string;\n status: 'outstanding' | 'completed' | 'deleted' | 'not_doing';\n creator: IncidentioActor;\n assignee?: IncidentioUser;\n completed_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioIncidentUpdate {\n id: string;\n incident_id: string;\n updater: IncidentioActor;\n new_incident_status: { id: string; name: string; category: string };\n message?: string;\n merged_into_incident_id?: string;\n new_severity?: { id: string; name: string; rank: number };\n created_at: string;\n}\n\nexport interface IncidentioAlertAttributeValue {\n catalog_entry?: { id: string; name: string; catalog_type_id?: string };\n label?: string;\n literal?: string;\n}\n\nexport interface IncidentioAlertAttributeEntry {\n attribute: {\n id: string;\n name: string;\n type: string;\n array: boolean;\n required: boolean;\n emoji?: string;\n };\n value?: IncidentioAlertAttributeValue;\n array_value?: IncidentioAlertAttributeValue[];\n}\n\nexport interface IncidentioAlert {\n id: string;\n alert_source_id: string;\n deduplication_key: string;\n status: 'firing' | 'resolved';\n title: string;\n attributes: IncidentioAlertAttributeEntry[];\n alert_group_ids?: string[];\n description?: string;\n resolved_at?: string;\n source_url?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioEscalation {\n id: string;\n status:\n | 'pending'\n | 'triggered'\n | 'acked'\n | 'resolved'\n | 'expired'\n | 'cancelled'\n | 'snoozed'\n | 'delayed'\n | 'pending_repeat';\n title: string;\n description: string;\n priority: { name: string };\n creator: IncidentioActor;\n escalation_path_id?: string;\n events: Array<{\n id: string;\n event:\n | 'entered_grace_period'\n | 'triggered'\n | 'notified_users'\n | 'notified_channels'\n | 'acked'\n | 'cancelled'\n | 'resolved'\n | 'expired';\n occurred_at: string;\n urgency?: 'high' | 'low';\n users?: IncidentioUser[];\n channels?: Array<{\n microsoft_teams_channel_id?: string;\n microsoft_teams_team_id?: string;\n slack_channel_id?: string;\n slack_team_id?: string;\n }>;\n }>;\n related_incidents: Array<{\n id: string;\n external_id: number;\n name: string;\n reference: string;\n visibility: 'public' | 'private';\n status_category: string;\n summary?: string;\n }>;\n related_alerts: Array<{\n id: string;\n alert_source_id: string;\n deduplication_key: string;\n status: 'firing' | 'resolved';\n title: string;\n alert_group_ids?: string[];\n description?: string;\n resolved_at?: string;\n source_url?: string;\n created_at: string;\n updated_at: string;\n }>;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioCatalogEntry {\n id: string;\n catalog_type_id: string;\n name: string;\n aliases: string[];\n rank: number;\n attribute_values: Record<\n string,\n {\n value?: { label: string; literal?: string };\n array_value?: Array<{ label: string; literal?: string }>;\n }\n >;\n external_id?: string;\n archived_at?: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioCatalogType {\n id: string;\n name: string;\n description: string;\n type_name: string;\n ranked: boolean;\n is_editable: boolean;\n use_name_as_identifier: boolean;\n categories: string[];\n annotations: Record<string, string>;\n color: string;\n icon: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioCatalogResource {\n type: string;\n engine_resource_type: string;\n label: string;\n description: string;\n value_docstring: string;\n category: string;\n}\n\nexport interface IncidentioTeam {\n id: string;\n name: string;\n catalog_entry: { id: string; name: string; external_id?: string };\n members: IncidentioUser[];\n}\n\nexport interface IncidentioSchedule {\n id: string;\n name: string;\n timezone: string;\n team_ids: string[];\n permalink: string;\n annotations: Record<string, string>;\n config?: {\n rotations: Array<{\n id: string;\n name: string;\n users: IncidentioUser[];\n handover_start_at: string;\n scheduling_mode?: 'fair' | 'sequential';\n }>;\n };\n current_shifts?: IncidentioScheduleEntry[];\n next_shifts?: IncidentioScheduleEntry[];\n holidays_public_config?: { country_codes: string[] };\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioScheduleEntry {\n start_at: string;\n end_at: string;\n entry_id?: string;\n fingerprint?: string;\n layer_id?: string;\n rotation_id?: string;\n user?: IncidentioUser;\n}\n\nexport interface IncidentioPolicyFinding {\n id: string;\n policy_id: string;\n policy_type: 'debrief' | 'follow_up' | 'on_call_readiness' | 'post_mortem' | 'schedule' | 'vacation_conflict';\n state: 'pending' | 'active' | 'resolved' | 'cancelled' | 'dismissed';\n responsible_users: IncidentioUser[];\n days?: number;\n due_at?: string;\n debrief?: { incident_id: string };\n dismissal?: { dismissed_at: string; dismissed_by: IncidentioActor; reason: string };\n follow_up?: { incident_id: string; follow_up_id: string };\n on_call_readiness?: {\n user_id: string;\n high_urgency: IncidentioReadinessRule[];\n low_urgency: IncidentioReadinessRule[];\n };\n post_mortem?: { incident_id: string };\n schedule?: {\n schedule_id: string;\n start_at: string;\n end_at: string;\n cause?: 'nobody_scheduled' | 'no_on_call_seat' | 'user_deactivated';\n has_unscheduled_time?: boolean;\n rotation_id?: string;\n };\n vacation_conflict?: {\n user_id: string;\n schedule_id: string;\n start_at: string;\n end_at: string;\n holiday_name?: string;\n rotation_id?: string;\n };\n last_checked_at: string;\n created_at: string;\n updated_at: string;\n}\n\nexport interface IncidentioReadinessRule {\n method_types: string[];\n met: boolean;\n max_delay_seconds?: number;\n}\n\nexport interface IncidentioPage<T> {\n items: T[];\n nextCursor: string | null;\n total?: number;\n}\n\nexport interface IncidentioCatalogEntryPage extends IncidentioPage<IncidentioCatalogEntry> {\n catalogType: IncidentioCatalogType;\n}\n\nexport interface IncidentioCatalogEntryResult {\n entry: IncidentioCatalogEntry;\n catalogType: IncidentioCatalogType;\n}\n\nexport interface IncidentioListOptions {\n cursor?: string;\n pageSize?: number;\n}\n\nexport interface IncidentioListActionsOptions extends IncidentioListOptions {\n incidentId?: string;\n incidentMode?: string;\n}\n\nexport interface IncidentioListIncidentUpdatesOptions extends IncidentioListOptions {\n incidentId?: string;\n}\n\nexport interface IncidentioListPolicyFindingsOptions extends IncidentioListOptions {\n policyId?: string;\n}\n\nexport class IncidentioApiError extends Error {\n readonly status: number | null;\n\n constructor(message: string, status: number | null) {\n super(message);\n this.name = 'IncidentioApiError';\n this.status = status;\n }\n}\n\nexport interface IncidentioApiClientConfig {\n baseUrl: string;\n accessToken: string;\n fetchImpl?: typeof fetch;\n}\n\ninterface IncidentioPaginationMeta {\n after?: string | null;\n total_record_count?: number;\n}\n\nexport class IncidentioApiClient {\n readonly #baseUrl: string;\n readonly #accessToken: string;\n readonly #fetch: typeof fetch;\n\n constructor(config: IncidentioApiClientConfig) {\n const baseUrl = config.baseUrl.trim();\n const accessToken = config.accessToken.trim();\n if (!baseUrl || !accessToken) {\n throw new Error('IncidentioApiClient requires a base URL and access token.');\n }\n this.#baseUrl = baseUrl.replace(/\\/+$/, '');\n this.#accessToken = accessToken;\n this.#fetch = config.fetchImpl ?? globalThis.fetch;\n }\n\n async listIncidents(cursor?: string): Promise<IncidentioPage<IncidentioIncident>> {\n const result = await this.#request<{\n incidents: IncidentioIncident[];\n pagination_meta?: IncidentioPaginationMeta;\n }>('GET', '/v2/incidents', {\n query: { page_size: 100, after: cursor, sort_by: 'created_at_newest_first' },\n });\n return this.#page(result.incidents, result.pagination_meta);\n }\n\n async getIncident(id: string): Promise<IncidentioIncident> {\n const result = await this.#request<{ incident: IncidentioIncident }>(\n 'GET',\n `/v2/incidents/${encodeURIComponent(id)}`,\n );\n return result.incident;\n }\n\n async listFollowUps(cursor?: string): Promise<IncidentioPage<IncidentioFollowUp>> {\n const result = await this.#request<{\n follow_ups: IncidentioFollowUp[];\n pagination_meta: IncidentioPaginationMeta;\n }>('GET', '/v3/follow_ups', { query: { page_size: 100, after: cursor } });\n return this.#page(result.follow_ups, result.pagination_meta);\n }\n\n async getFollowUp(id: string): Promise<IncidentioFollowUp> {\n const result = await this.#request<{ follow_up: IncidentioFollowUp }>(\n 'GET',\n `/v3/follow_ups/${encodeURIComponent(id)}`,\n );\n return result.follow_up;\n }\n\n async updateFollowUp(followUp: IncidentioFollowUp, status: IncidentioFollowUp['status']): Promise<IncidentioFollowUp> {\n const result = await this.#request<{ follow_up: IncidentioFollowUp }>(\n 'PUT',\n `/v3/follow_ups/${encodeURIComponent(followUp.id)}`,\n { body: { title: followUp.title, status } },\n );\n return result.follow_up;\n }\n\n async listActions(options: IncidentioListActionsOptions = {}): Promise<IncidentioPage<IncidentioAction>> {\n const result = await this.#request<{\n actions: IncidentioAction[];\n pagination_meta: IncidentioPaginationMeta;\n }>('GET', '/v3/actions', {\n query: {\n page_size: options.pageSize ?? 100,\n after: options.cursor,\n incident_id: options.incidentId,\n incident_mode: options.incidentMode,\n },\n });\n return this.#page(result.actions, result.pagination_meta);\n }\n\n async getAction(id: string): Promise<IncidentioAction> {\n const result = await this.#request<{ action: IncidentioAction }>('GET', `/v3/actions/${encodeURIComponent(id)}`);\n return result.action;\n }\n\n async listIncidentUpdates(\n options: IncidentioListIncidentUpdatesOptions = {},\n ): Promise<IncidentioPage<IncidentioIncidentUpdate>> {\n const result = await this.#request<{\n incident_updates: IncidentioIncidentUpdate[];\n pagination_meta?: IncidentioPaginationMeta;\n }>('GET', '/v2/incident_updates', {\n query: { page_size: options.pageSize ?? 100, after: options.cursor, incident_id: options.incidentId },\n });\n return this.#page(result.incident_updates, result.pagination_meta);\n }\n\n async listAlerts(options: IncidentioListOptions = {}): Promise<IncidentioPage<IncidentioAlert>> {\n const result = await this.#request<{ alerts: IncidentioAlert[]; pagination_meta: IncidentioPaginationMeta }>(\n 'GET',\n '/v2/alerts',\n { query: { page_size: options.pageSize ?? 50, after: options.cursor } },\n );\n return this.#page(result.alerts, result.pagination_meta);\n }\n\n async getAlert(id: string): Promise<IncidentioAlert> {\n const result = await this.#request<{ alert: IncidentioAlert }>('GET', `/v2/alerts/${encodeURIComponent(id)}`);\n return result.alert;\n }\n\n async listEscalations(options: IncidentioListOptions = {}): Promise<IncidentioPage<IncidentioEscalation>> {\n const result = await this.#request<{\n escalations: IncidentioEscalation[];\n pagination_meta: IncidentioPaginationMeta;\n }>('GET', '/v2/escalations', {\n query: { page_size: options.pageSize ?? 50, after: options.cursor },\n });\n return this.#page(result.escalations, result.pagination_meta);\n }\n\n async getEscalation(id: string): Promise<IncidentioEscalation> {\n const result = await this.#request<{ escalation: IncidentioEscalation }>(\n 'GET',\n `/v2/escalations/${encodeURIComponent(id)}`,\n );\n return result.escalation;\n }\n\n async listCatalogEntries(\n catalogTypeId: string,\n options: IncidentioListOptions & { identifier?: string } = {},\n ): Promise<IncidentioCatalogEntryPage> {\n const result = await this.#request<{\n catalog_entries: IncidentioCatalogEntry[];\n catalog_type: IncidentioCatalogType;\n pagination_meta: IncidentioPaginationMeta;\n }>('GET', '/v3/catalog_entries', {\n query: {\n catalog_type_id: catalogTypeId,\n page_size: options.pageSize ?? 100,\n after: options.cursor,\n identifier: options.identifier,\n },\n });\n return { ...this.#page(result.catalog_entries, result.pagination_meta), catalogType: result.catalog_type };\n }\n\n async getCatalogEntry(id: string, options: { expand?: boolean } = {}): Promise<IncidentioCatalogEntryResult> {\n const result = await this.#request<{\n catalog_entry: IncidentioCatalogEntry;\n catalog_type: IncidentioCatalogType;\n }>('GET', `/v3/catalog_entries/${encodeURIComponent(id)}`, { query: { expand: options.expand } });\n return { entry: result.catalog_entry, catalogType: result.catalog_type };\n }\n\n async listCatalogTypes(): Promise<IncidentioCatalogType[]> {\n const result = await this.#request<{ catalog_types: IncidentioCatalogType[] }>('GET', '/v3/catalog_types');\n return result.catalog_types;\n }\n\n async getCatalogType(id: string): Promise<IncidentioCatalogType> {\n const result = await this.#request<{ catalog_type: IncidentioCatalogType }>(\n 'GET',\n `/v3/catalog_types/${encodeURIComponent(id)}`,\n );\n return result.catalog_type;\n }\n\n async listCatalogResources(): Promise<IncidentioCatalogResource[]> {\n const result = await this.#request<{ resources: IncidentioCatalogResource[] }>('GET', '/v3/catalog_resources');\n return result.resources;\n }\n\n async listTeams(options: IncidentioListOptions = {}): Promise<IncidentioPage<IncidentioTeam>> {\n const result = await this.#request<{ teams: IncidentioTeam[]; pagination_meta: IncidentioPaginationMeta }>(\n 'GET',\n '/v3/teams',\n { query: { page_size: options.pageSize ?? 100, after: options.cursor } },\n );\n return this.#page(result.teams, result.pagination_meta);\n }\n\n async getTeam(id: string): Promise<IncidentioTeam> {\n const result = await this.#request<{ team: IncidentioTeam }>('GET', `/v3/teams/${encodeURIComponent(id)}`);\n return result.team;\n }\n\n async listSchedules(options: IncidentioListOptions = {}): Promise<IncidentioPage<IncidentioSchedule>> {\n const result = await this.#request<{\n schedules: IncidentioSchedule[];\n pagination_meta?: IncidentioPaginationMeta;\n }>('GET', '/v2/schedules', {\n query: { page_size: options.pageSize ?? 25, after: options.cursor },\n });\n return this.#page(result.schedules, result.pagination_meta);\n }\n\n async getSchedule(id: string): Promise<IncidentioSchedule> {\n const result = await this.#request<{ schedule: IncidentioSchedule }>(\n 'GET',\n `/v2/schedules/${encodeURIComponent(id)}`,\n );\n return result.schedule;\n }\n\n async listPolicyFindings(\n options: IncidentioListPolicyFindingsOptions = {},\n ): Promise<IncidentioPage<IncidentioPolicyFinding>> {\n const result = await this.#request<{\n policy_findings: IncidentioPolicyFinding[];\n pagination_meta: IncidentioPaginationMeta;\n }>('GET', '/v2/policy_findings', {\n query: { page_size: options.pageSize ?? 100, after: options.cursor, policy_id: options.policyId },\n });\n return this.#page(result.policy_findings, result.pagination_meta);\n }\n\n async getPolicyFinding(id: string): Promise<IncidentioPolicyFinding> {\n const result = await this.#request<{ policy_finding: IncidentioPolicyFinding }>(\n 'GET',\n `/v2/policy_findings/${encodeURIComponent(id)}`,\n );\n return result.policy_finding;\n }\n\n #page<T>(items: T[], paginationMeta?: IncidentioPaginationMeta): IncidentioPage<T> {\n return {\n items,\n nextCursor: paginationMeta?.after ?? null,\n ...(paginationMeta?.total_record_count === undefined ? {} : { total: paginationMeta.total_record_count }),\n };\n }\n\n async #request<T>(\n method: 'GET' | 'PUT',\n path: string,\n options: { query?: Record<string, string | number | boolean | undefined>; body?: unknown } = {},\n ): Promise<T> {\n const query = new URLSearchParams();\n for (const [key, value] of Object.entries(options.query ?? {})) {\n if (value !== undefined) query.set(key, String(value));\n }\n\n let response: Response;\n try {\n response = await this.#fetch(`${this.#baseUrl}${path}${query.size > 0 ? `?${query.toString()}` : ''}`, {\n method,\n signal: AbortSignal.timeout(15_000),\n headers: {\n accept: 'application/json',\n authorization: `Bearer ${this.#accessToken}`,\n ...(options.body === undefined ? {} : { 'content-type': 'application/json' }),\n },\n ...(options.body === undefined ? {} : { body: JSON.stringify(options.body) }),\n });\n } catch (error) {\n if (error instanceof Error && error.message.includes(this.#accessToken)) {\n const redacted = new Error(error.message.replaceAll(this.#accessToken, '[REDACTED]'));\n redacted.name = error.name;\n throw redacted;\n }\n throw error;\n }\n\n if (!response.ok) {\n let detail = `incident.io API request failed (${response.status})`;\n try {\n const body = (await response.clone().json()) as { message?: string; error?: string; detail?: string };\n detail = body.message ?? body.error ?? body.detail ?? detail;\n } catch {\n // Use the status-based message.\n }\n throw new IncidentioApiError(detail.replaceAll(this.#accessToken, '[REDACTED]'), response.status);\n }\n return (await response.json()) as T;\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { IntegrationConnection } from '../../capabilities/connection.js';
2
+ import type { Intake } from '../../capabilities/intake.js';
3
+ import { IncidentioApiClient } from './api.js';
4
+ export declare const INCIDENTIO_INCIDENTS_SOURCE_ID = "incidentio:incidents";
5
+ export declare const INCIDENTIO_FOLLOW_UPS_SOURCE_ID = "incidentio:follow-ups";
6
+ export declare function createIncidentioIntake(config: {
7
+ api: IncidentioApiClient;
8
+ connection: IntegrationConnection;
9
+ }): Intake;
10
+ //# sourceMappingURL=intake.d.ts.map