Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@beepsdev/sdk

Package Overview
Dependencies
Maintainers
1
Versions
26
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@beepsdev/sdk - npm Package Compare versions

Comparing version
0.0.8
to
0.0.9
+44
-21
dist/index.cjs

@@ -51,15 +51,10 @@ "use strict";

var BeepsError = class extends Error {
code;
status;
requestId;
retryable;
cause;
constructor(message, options) {
super(message);
this.name = "BeepsError";
this.code = options?.code;
this.status = options?.status;
this.requestId = options?.requestId;
this.retryable = options?.retryable ?? false;
this.cause = options?.cause;
if (options?.code !== void 0) this.code = options.code;
if (options?.status !== void 0) this.status = options.status;
if (options?.requestId !== void 0) this.requestId = options.requestId;
if (options?.retryable) this.retryable = true;
if (options?.cause !== void 0) this.cause = options.cause;
}

@@ -84,7 +79,6 @@ toString() {

var ValidationError = class extends BeepsError {
details;
constructor(message = "Validation error", opts) {
super(message, { ...opts, status: opts?.status ?? 400 });
this.name = "ValidationError";
this.details = opts?.details;
if (opts?.details !== void 0) this.details = opts.details;
}

@@ -122,11 +116,36 @@ };

};
function mapHttpError(status, message, requestId) {
function formatIssuePath(path) {
return path && path.length > 0 ? `\`${path.join(".")}\`` : void 0;
}
function formatValidationMessage(message, details) {
const issues = details?.issues;
if (!issues || issues.length === 0) {
return message;
}
const lines = [message, ""];
for (const issue of issues) {
const path = formatIssuePath(issue.path);
const suggestion = issue.suggestion ? ` Did you mean \`${issue.suggestion}\`?` : "";
lines.push(`- ${path ? `${path} ` : ""}${issue.message}${suggestion}`);
}
return lines.join("\n");
}
function mapHttpError(status, message, requestId, opts) {
if (status === 401 || status === 403)
return new AuthError(message, { status, requestId });
return new AuthError(message, { status, requestId, code: opts?.code });
if (status === 400)
return new ValidationError(message, { status, requestId });
if (status === 404) return new NotFoundError(message, { status, requestId });
if (status === 429) return new RateLimitError(message, { status, requestId });
if (status >= 500) return new ServerError(message, { status, requestId });
return new HttpError(message, { status, requestId });
return new ValidationError(
formatValidationMessage(message, opts?.details),
{ status, requestId, code: opts?.code, details: opts?.details }
);
if (status === 404) {
return new NotFoundError(message, { status, requestId, code: opts?.code });
}
if (status === 429) {
return new RateLimitError(message, { status, requestId, code: opts?.code });
}
if (status >= 500) {
return new ServerError(message, { status, requestId, code: opts?.code });
}
return new HttpError(message, { status, requestId, code: opts?.code });
}

@@ -186,4 +205,8 @@

}
const msg = typeof payload.error === "string" ? payload.error : typeof payload.message === "string" ? payload.message : "Request failed";
const err = mapHttpError(res.status, msg, requestId);
const apiError = payload.error && typeof payload.error === "object" ? payload.error : payload;
const msg = typeof apiError.message === "string" ? apiError.message : typeof payload.error === "string" ? payload.error : typeof payload.message === "string" ? payload.message : "Request failed";
const err = mapHttpError(res.status, msg, requestId, {
code: typeof apiError.code === "string" ? apiError.code : void 0,
details: Array.isArray(apiError.issues) ? { issues: apiError.issues } : void 0
});
if (this.shouldRetry(res.status) && attempt < this.cfg.retries.attempts) {

@@ -190,0 +213,0 @@ attempt++;

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/index.ts","../src/version.ts","../src/errors.ts","../src/http.ts","../src/resources/relay-rules.ts","../src/resources/relay.ts","../src/utils/date.ts","../src/resources/schedule.ts","../src/resources/contact-method.ts","../src/resources/alert.ts","../src/resources/integration.ts","../src/resources/member.ts","../src/resources/webhook.ts","../src/resources/agent-job.ts","../src/client.ts"],"sourcesContent":["export { BeepsClient } from \"./client\";\nexport * from \"./types\";\nexport * from \"./errors\";\nexport { ScheduleResource } from \"./resources/schedule\";\nexport { RelayRulesResource } from \"./resources/relay-rules\";\nexport { ContactMethodResource } from \"./resources/contact-method\";\nexport { AlertResource } from \"./resources/alert\";\nexport { AgentJobResource } from \"./resources/agent-job\";\nexport { MemberResource } from \"./resources/member\";\nexport { WebhookResource } from \"./resources/webhook\";\nexport { formatUTCDate, isIsoZ, normalizeDateParam } from \"./utils/date\";\n","export const SDK_VERSION = \"0.0.1\";\n","export class BeepsError extends Error {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"BeepsError\";\n this.code = options?.code;\n this.status = options?.status;\n this.requestId = options?.requestId;\n this.retryable = options?.retryable ?? false;\n this.cause = options?.cause;\n }\n\n toString() {\n const parts = [\n `BeepsError`,\n this.code ? `Code=${this.code}` : null,\n this.status ? `status=${this.status}` : null,\n this.requestId ? `requestId=${this.requestId}` : null,\n this.retryable ? `retryable=true` : null,\n ].filter(Boolean);\n return `${parts.join(\" \")}: ${this.message}`;\n }\n}\n\nexport class AuthError extends BeepsError {\n constructor(\n message = \"Unauthorized\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 401 });\n this.name = \"AuthError\";\n }\n}\n\nexport class ValidationError extends BeepsError {\n details?: unknown;\n constructor(\n message = \"Validation error\",\n opts?: ConstructorParameters<typeof BeepsError>[1] & { details?: unknown },\n ) {\n super(message, { ...opts, status: opts?.status ?? 400 });\n this.name = \"ValidationError\";\n this.details = opts?.details;\n }\n}\n\nexport class NotFoundError extends BeepsError {\n constructor(\n message = \"Not found\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 404 });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends BeepsError {\n constructor(\n message = \"Rate limited\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 429, retryable: true });\n this.name = \"RateLimitError\";\n }\n}\n\nexport class ServerError extends BeepsError {\n constructor(\n message = \"Server error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 500, retryable: true });\n this.name = \"ServerError\";\n }\n}\n\nexport class NetworkError extends BeepsError {\n constructor(\n message = \"Network error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"NetworkError\";\n }\n}\n\nexport class HttpError extends BeepsError {\n constructor(\n message = \"HTTP error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"HttpError\";\n }\n}\n\nexport function mapHttpError(\n status: number,\n message: string,\n requestId?: string,\n) {\n if (status === 401 || status === 403)\n return new AuthError(message, { status, requestId });\n if (status === 400)\n return new ValidationError(message, { status, requestId });\n if (status === 404) return new NotFoundError(message, { status, requestId });\n if (status === 429) return new RateLimitError(message, { status, requestId });\n if (status >= 500) return new ServerError(message, { status, requestId });\n return new HttpError(message, { status, requestId });\n}\n","import { SDK_VERSION } from \"./version\";\nimport { BeepsError, NetworkError, mapHttpError } from \"./errors\";\nimport type { BeepsClientConfig } from \"./types\";\n\ntype FetcherConfig = Required<Pick<BeepsClientConfig, \"apiKey\">> &\n Omit<BeepsClientConfig, \"apiKey\"> & {\n baseURL: string;\n timeoutMs: number;\n retries: { attempts: number; backoffMs: number };\n };\n\nexport class HttpClient {\n private cfg: FetcherConfig;\n private _fetch: typeof fetch;\n\n constructor(config: BeepsClientConfig) {\n const baseURL = config.baseURL ?? \"https://api.beeps.dev/v0\";\n const timeoutMs = config.timeoutMs ?? 10_000;\n const retries = config.retries ?? { attempts: 2, backoffMs: 300 };\n this.cfg = { ...config, baseURL, timeoutMs, retries } as FetcherConfig;\n this._fetch = config.fetch ?? fetch;\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"POST\", path, body);\n }\n async get<T>(path: string): Promise<T> {\n return this.request<T>(\"GET\", path);\n }\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PUT\", path, body);\n }\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PATCH\", path, body);\n }\n async delete<T>(path: string): Promise<T> {\n return this.request<T>(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url =\n this.cfg.baseURL.replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), this.cfg.timeoutMs);\n try {\n let attempt = 0;\n while (true) {\n try {\n const res = await this._fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.cfg.apiKey,\n \"User-Agent\": `beepsdev-sdk/${SDK_VERSION}`,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const isJson = (res.headers.get(\"content-type\") || \"\").includes(\n \"application/json\",\n );\n const payload = (isJson\n ? await res.json().catch(() => ({}))\n : {}) as Record<string, unknown>;\n\n if (res.ok) {\n return payload as T;\n }\n\n const msg =\n typeof payload.error === \"string\"\n ? payload.error\n : typeof payload.message === \"string\"\n ? payload.message\n : \"Request failed\";\n\n const err = mapHttpError(res.status, msg, requestId);\n if (\n this.shouldRetry(res.status) &&\n attempt < this.cfg.retries.attempts\n ) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw err;\n } catch (e) {\n if (e instanceof BeepsError) {\n throw e;\n }\n if (e instanceof Error && e.name === \"AbortError\") {\n throw new NetworkError(\"Request timed out\", { cause: e });\n }\n if (e instanceof TypeError) {\n if (attempt < this.cfg.retries.attempts) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw new NetworkError(\"Network error\", { cause: e });\n }\n throw e;\n }\n }\n } finally {\n clearTimeout(id);\n }\n }\n\n private shouldRetry(status: number) {\n if (status === 429) return true;\n if (status >= 500 && status !== 501 && status !== 505) return true;\n return false;\n }\n\n private jitterBackoff(attempt: number) {\n const base = this.cfg.retries.backoffMs * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 100;\n return base + jitter;\n }\n\n private sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n }\n}\n","import type {\n CreateRelayRuleInput,\n UpdateRelayRuleInput,\n RelayRule,\n ListRelayRulesParams,\n ReorderRelayRulesInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class RelayRulesResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]> {\n const qs = new URLSearchParams();\n if (params?.enabled !== undefined) {\n qs.set(\"enabled\", params.enabled.toString());\n }\n if (params?.ruleType) {\n qs.set(\"ruleType\", params.ruleType);\n }\n const path = qs.toString()\n ? `/relay/${relayId}/rules?${qs.toString()}`\n : `/relay/${relayId}/rules`;\n const res = await this.http.get<{ rules: RelayRule[] }>(path);\n return res.rules;\n }\n\n async create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.post<{ rule: RelayRule }>(`/relay/${relayId}/rules`, input);\n return res.rule;\n }\n\n async get(relayId: string, ruleId: string): Promise<RelayRule> {\n const res = await this.http.get<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`);\n return res.rule;\n }\n\n async update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.put<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`, input);\n return res.rule;\n }\n\n async delete(relayId: string, ruleId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/relay/${relayId}/rules/${ruleId}`);\n return res;\n }\n\n async reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]> {\n const res = await this.http.put<{ rules: RelayRule[] }>(`/relay/${relayId}/rules/reorder`, input);\n return res.rules;\n }\n\n // Safe versions that return Result<T> instead of throwing\n async listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.list(relayId, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.create(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>> {\n try {\n const data = await this.get(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.update(relayId, ruleId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(relayId: string, ruleId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.reorder(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}","import type {\n CreateRelayInput,\n Relay,\n RelayLintInput,\n RelayLintResult,\n RelaySimulationInput,\n RelaySimulationResult,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { RelayRulesResource } from \"./relay-rules\";\n\nexport class RelayResource {\n private http: HttpClient;\n rules: RelayRulesResource;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.rules = new RelayRulesResource(http);\n }\n\n async create(input: CreateRelayInput): Promise<Relay> {\n const res = await this.http.post<{ relay: Relay }>(\"/relay\", input);\n return res.relay;\n }\n\n async list(): Promise<Relay[]> {\n const res = await this.http.get<{ relays: Relay[] }>(\"/relay\");\n return res.relays;\n }\n\n async lint(relayId: string, input: RelayLintInput = {}): Promise<RelayLintResult> {\n const res = await this.http.post<RelayLintResult>(\n `/relay/${relayId}/lint`,\n input,\n );\n return res;\n }\n\n async simulate(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<RelaySimulationResult> {\n const res = await this.http.post<RelaySimulationResult>(\n `/relay/${relayId}/simulate`,\n input,\n );\n return res;\n }\n\n async createSafe(input: CreateRelayInput): Promise<Result<Relay>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async lintSafe(\n relayId: string,\n input: RelayLintInput = {},\n ): Promise<Result<RelayLintResult>> {\n try {\n const data = await this.lint(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async simulateSafe(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<Result<RelaySimulationResult>> {\n try {\n const data = await this.simulate(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","/**\n * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).\n * Example: \"2024-01-29T00:00:00.000Z\"\n */\nexport function formatUTCDate(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Validates that a string is a valid ISO 8601 timestamp with Z suffix.\n * Returns true if the string ends with \"Z\" and can be parsed as a valid date.\n */\nexport function isIsoZ(value: string): boolean {\n return value.endsWith(\"Z\") && !isNaN(Date.parse(value));\n}\n\n/**\n * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.\n * Accepts either a Date object or a Z-suffixed ISO string.\n * Throws an error if the input is invalid.\n */\nexport function normalizeDateParam(date: Date | string): string {\n if (date instanceof Date) {\n return formatUTCDate(date);\n }\n \n if (typeof date === \"string\") {\n if (!isIsoZ(date)) {\n throw new Error(\n `Invalid date format. Date must be a valid ISO 8601 timestamp with Z suffix (e.g., \"2024-01-29T00:00:00.000Z\"). Received: \"${date}\"`\n );\n }\n return date;\n }\n \n throw new Error(\n `Invalid date type. Expected Date object or ISO 8601 string with Z suffix, received: ${typeof date}`\n );\n}\n","import type {\n CreateScheduleInput,\n Schedule,\n AddScheduleMemberInput,\n ScheduleMember,\n ScheduleAssignment,\n GetAssignmentsParams,\n BeepsUser,\n Result,\n CreateScheduleOverrideInput,\n UpdateScheduleOverrideInput,\n ListScheduleOverridesParams,\n ScheduleOverride,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { normalizeDateParam } from \"../utils/date\";\n\nexport class ScheduleResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(input: CreateScheduleInput): Promise<Schedule> {\n const res = await this.http.post<{ schedule: Schedule }>(\"/schedule\", input);\n return res.schedule;\n }\n\n async list(): Promise<Schedule[]> {\n const res = await this.http.get<{ schedules: Schedule[] }>(\"/schedule\");\n return res.schedules;\n }\n\n async addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember> {\n const res = await this.http.post<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members`,\n input,\n );\n return res.member;\n }\n\n async listMembers(scheduleId: string): Promise<ScheduleMember[]> {\n const res = await this.http.get<{ members: ScheduleMember[] }>(\n `/schedule/${scheduleId}/members`,\n );\n return res.members;\n }\n\n async listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>> {\n try {\n const data = await this.listMembers(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async removeMember(scheduleId: string, userId: string): Promise<ScheduleMember> {\n const res = await this.http.delete<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members/${userId}`,\n );\n return res.member;\n }\n\n async getAssignments(\n scheduleId: string,\n params?: GetAssignmentsParams,\n ): Promise<ScheduleAssignment[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.type === \"until\") {\n qs.set(\"type\", \"until\");\n const normalizedDate = normalizeDateParam(params.date);\n qs.set(\"date\", normalizedDate);\n } else if (params.type === \"days\") {\n qs.set(\"type\", \"days\");\n qs.set(\"count\", String(params.count));\n } else {\n if (params.type) {\n qs.set(\"type\", params.type);\n }\n if (params.count !== undefined) {\n qs.set(\"count\", String(params.count));\n }\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/assignments?${qs.toString()}`\n : `/schedule/${scheduleId}/assignments`;\n const res = await this.http.get<{ assignments: ScheduleAssignment[] }>(path);\n return res.assignments;\n }\n\n async getOnCall(scheduleId: string): Promise<BeepsUser> {\n const res = await this.http.get<{ onCall: BeepsUser }>(\n `/schedule/${scheduleId}/on-call`\n );\n return res.onCall;\n }\n\n async getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>> {\n try {\n const data = await this.getOnCall(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createOverride(\n scheduleId: string,\n input: CreateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body = {\n userId: input.userId,\n startAt: normalizeDateParam(input.startAt),\n endAt: normalizeDateParam(input.endAt),\n reason: input.reason,\n };\n const res = await this.http.post<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides`,\n body,\n );\n return res.override;\n }\n\n async listOverrides(\n scheduleId: string,\n params?: ListScheduleOverridesParams,\n ): Promise<ScheduleOverride[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.startAt) {\n qs.set(\"startAt\", normalizeDateParam(params.startAt));\n }\n if (params.endAt) {\n qs.set(\"endAt\", normalizeDateParam(params.endAt));\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/overrides?${qs.toString()}`\n : `/schedule/${scheduleId}/overrides`;\n const res = await this.http.get<{ overrides: ScheduleOverride[] }>(path);\n return res.overrides;\n }\n\n async cancelOverride(\n scheduleId: string,\n overrideId: string,\n ): Promise<ScheduleOverride> {\n const res = await this.http.delete<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n );\n return res.override;\n }\n\n async updateOverride(\n scheduleId: string,\n overrideId: string,\n input: UpdateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body: Record<string, string | undefined> = {};\n \n if (input.startAt !== undefined) {\n body.startAt = normalizeDateParam(input.startAt);\n }\n if (input.endAt !== undefined) {\n body.endAt = normalizeDateParam(input.endAt);\n }\n if (input.reason !== undefined) {\n body.reason = input.reason;\n }\n \n const res = await this.http.patch<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n body,\n );\n return res.override;\n }\n}\n","import type {\n ContactMethod,\n ListContactMethodsParams,\n DeleteContactMethodParams,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class ContactMethodResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(params: ListContactMethodsParams): Promise<ContactMethod[]> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.get<{ contactMethods: ContactMethod[] }>(\n `/contact-methods?${qs.toString()}`\n );\n return res.contactMethods;\n }\n\n async delete(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<{ success: boolean }> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.delete<{ success: boolean }>(\n `/contact-methods/${id}?${qs.toString()}`\n );\n return res;\n }\n\n async listSafe(\n params: ListContactMethodsParams\n ): Promise<Result<ContactMethod[]>> {\n try {\n const data = await this.list(params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(id, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n Alert,\n AlertResponder,\n AgentJob,\n AlertFixContext,\n AcknowledgeAlertInput,\n OnItInput,\n UpdateResponderStatusInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AlertResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts\");\n return res.alerts;\n }\n\n async listActive(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/active\");\n return res.alerts;\n }\n\n async listResolved(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/resolved\");\n return res.alerts;\n }\n\n async get(alertId: string): Promise<Alert> {\n const res = await this.http.get<{ alert: Alert }>(`/alerts/${alertId}`);\n return res.alert;\n }\n\n async listResponders(alertId: string): Promise<AlertResponder[]> {\n const res = await this.http.get<{ responders: AlertResponder[] }>(\n `/alerts/${alertId}/responders`\n );\n return res.responders;\n }\n\n async listAgents(alertId: string): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\n `/alerts/${alertId}/agents`\n );\n return res.jobs;\n }\n\n async getFixContext(alertId: string): Promise<AlertFixContext> {\n const res = await this.http.get<{ fixContext: AlertFixContext }>(\n `/alerts/${alertId}/fix-context`\n );\n return res.fixContext;\n }\n\n async onIt(alertId: string, input?: OnItInput): Promise<AlertResponder> {\n const res = await this.http.post<{ responder: AlertResponder }>(\n `/alerts/${alertId}/on-it`,\n input || {}\n );\n return res.responder;\n }\n\n async updateResponderStatus(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<AlertResponder> {\n const res = await this.http.patch<{ responder: AlertResponder }>(\n `/alerts/${alertId}/responders/${responderId}`,\n input\n );\n return res.responder;\n }\n\n /** @deprecated Use onIt() instead */\n async acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/acknowledge`,\n input || {}\n );\n return res.alert;\n }\n\n async resolve(alertId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/resolve`,\n {}\n );\n return res.alert;\n }\n\n async assign(alertId: string, userId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/assign`,\n { userId }\n );\n return res.alert;\n }\n\n async listSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listActiveSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listActive();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listResolvedSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listResolved();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.get(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listRespondersSafe(alertId: string): Promise<Result<AlertResponder[]>> {\n try {\n const data = await this.listResponders(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listAgentsSafe(alertId: string): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.listAgents(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getFixContextSafe(alertId: string): Promise<Result<AlertFixContext>> {\n try {\n const data = await this.getFixContext(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async onItSafe(alertId: string, input?: OnItInput): Promise<Result<AlertResponder>> {\n try {\n const data = await this.onIt(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateResponderStatusSafe(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<Result<AlertResponder>> {\n try {\n const data = await this.updateResponderStatus(alertId, responderId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n /** @deprecated Use onItSafe() instead */\n async acknowledgeSafe(\n alertId: string,\n input?: AcknowledgeAlertInput\n ): Promise<Result<Alert>> {\n try {\n const data = await this.acknowledge(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async resolveSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.resolve(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async assignSafe(alertId: string, userId: string): Promise<Result<Alert>> {\n try {\n const data = await this.assign(alertId, userId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n CreateIntegrationInput,\n UpdateIntegrationInput,\n Integration,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class IntegrationResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Integration[]> {\n const res = await this.http.get<{ integrations: Integration[] }>(\"/integrations\");\n return res.integrations;\n }\n\n async create(input: CreateIntegrationInput): Promise<Integration> {\n const res = await this.http.post<{ integration: Integration }>(\"/integrations\", input);\n return res.integration;\n }\n\n async get(integrationId: string): Promise<Integration> {\n const res = await this.http.get<{ integration: Integration }>(`/integrations/${integrationId}`);\n return res.integration;\n }\n\n async update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration> {\n const res = await this.http.put<{ integration: Integration }>(`/integrations/${integrationId}`, input);\n return res.integration;\n }\n\n async delete(integrationId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/integrations/${integrationId}`);\n return res;\n }\n\n async listSafe(): Promise<Result<Integration[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(input: CreateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(integrationId: string): Promise<Result<Integration>> {\n try {\n const data = await this.get(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.update(integrationId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(integrationId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { OrganizationMember, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class MemberResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<OrganizationMember[]> {\n const res = await this.http.get<{ members: OrganizationMember[] }>(\"/members\");\n return res.members;\n }\n\n async listSafe(): Promise<Result<OrganizationMember[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { AgentJob, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AgentJobResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\"/agents/jobs\");\n return res.jobs;\n }\n\n async get(jobId: string): Promise<AgentJob> {\n const res = await this.http.get<{ job: AgentJob }>(`/agents/jobs/${jobId}`);\n return res.job;\n }\n\n async getStatus(jobId: string): Promise<Record<string, unknown>> {\n const res = await this.http.get<{ status: Record<string, unknown> }>(\n `/agents/jobs/${jobId}/status`\n );\n return res.status;\n }\n\n async listSafe(): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(jobId: string): Promise<Result<AgentJob>> {\n try {\n const data = await this.get(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getStatusSafe(jobId: string): Promise<Result<Record<string, unknown>>> {\n try {\n const data = await this.getStatus(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { BeepsClientConfig } from \"./types\";\nimport { HttpClient } from \"./http\";\nimport { RelayResource } from \"./resources/relay\";\nimport { ScheduleResource } from \"./resources/schedule\";\nimport { ContactMethodResource } from \"./resources/contact-method\";\nimport { AlertResource } from \"./resources/alert\";\nimport { IntegrationResource } from \"./resources/integration\";\nimport { MemberResource } from \"./resources/member\";\nimport { WebhookResource } from \"./resources/webhook\";\nimport { AgentJobResource } from \"./resources/agent-job\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\n agentJob: AgentJobResource;\n\n constructor(config: BeepsClientConfig) {\n if (!config.apiKey) {\n throw new Error(\"apiKey is required\");\n }\n const http = new HttpClient(config);\n this.relay = new RelayResource(http);\n this.schedule = new ScheduleResource(http);\n this.contactMethod = new ContactMethodResource(http);\n this.alert = new AlertResource(http);\n this.integration = new IntegrationResource(http);\n this.member = new MemberResource(http);\n this.webhook = new WebhookResource(http);\n this.agentJob = new AgentJobResource(http);\n }\n}\n"],"mappings":"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","names":[]}
{"version":3,"sources":["../src/index.ts","../src/version.ts","../src/errors.ts","../src/http.ts","../src/resources/relay-rules.ts","../src/resources/relay.ts","../src/utils/date.ts","../src/resources/schedule.ts","../src/resources/contact-method.ts","../src/resources/alert.ts","../src/resources/integration.ts","../src/resources/member.ts","../src/resources/webhook.ts","../src/resources/agent-job.ts","../src/client.ts"],"sourcesContent":["export { BeepsClient } from \"./client\";\nexport * from \"./types\";\nexport * from \"./errors\";\nexport { ScheduleResource } from \"./resources/schedule\";\nexport { RelayRulesResource } from \"./resources/relay-rules\";\nexport { ContactMethodResource } from \"./resources/contact-method\";\nexport { AlertResource } from \"./resources/alert\";\nexport { AgentJobResource } from \"./resources/agent-job\";\nexport { MemberResource } from \"./resources/member\";\nexport { WebhookResource } from \"./resources/webhook\";\nexport { formatUTCDate, isIsoZ, normalizeDateParam } from \"./utils/date\";\n","export const SDK_VERSION = \"0.0.1\";\n","export class BeepsError extends Error {\n declare code?: string;\n declare status?: number;\n declare requestId?: string;\n declare retryable?: boolean;\n declare cause?: unknown;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"BeepsError\";\n if (options?.code !== undefined) this.code = options.code;\n if (options?.status !== undefined) this.status = options.status;\n if (options?.requestId !== undefined) this.requestId = options.requestId;\n if (options?.retryable) this.retryable = true;\n if (options?.cause !== undefined) this.cause = options.cause;\n }\n\n toString() {\n const parts = [\n `BeepsError`,\n this.code ? `Code=${this.code}` : null,\n this.status ? `status=${this.status}` : null,\n this.requestId ? `requestId=${this.requestId}` : null,\n this.retryable ? `retryable=true` : null,\n ].filter(Boolean);\n return `${parts.join(\" \")}: ${this.message}`;\n }\n}\n\nexport class AuthError extends BeepsError {\n constructor(\n message = \"Unauthorized\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 401 });\n this.name = \"AuthError\";\n }\n}\n\nexport class ValidationError extends BeepsError {\n declare details?: unknown;\n constructor(\n message = \"Validation error\",\n opts?: ConstructorParameters<typeof BeepsError>[1] & { details?: unknown },\n ) {\n super(message, { ...opts, status: opts?.status ?? 400 });\n this.name = \"ValidationError\";\n if (opts?.details !== undefined) this.details = opts.details;\n }\n}\n\nexport class NotFoundError extends BeepsError {\n constructor(\n message = \"Not found\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 404 });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends BeepsError {\n constructor(\n message = \"Rate limited\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 429, retryable: true });\n this.name = \"RateLimitError\";\n }\n}\n\nexport class ServerError extends BeepsError {\n constructor(\n message = \"Server error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 500, retryable: true });\n this.name = \"ServerError\";\n }\n}\n\nexport class NetworkError extends BeepsError {\n constructor(\n message = \"Network error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"NetworkError\";\n }\n}\n\nexport class HttpError extends BeepsError {\n constructor(\n message = \"HTTP error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"HttpError\";\n }\n}\n\nexport type ValidationIssue = {\n path?: Array<string | number>;\n code?: string;\n message: string;\n suggestion?: string;\n};\n\ntype ValidationDetails = {\n issues?: ValidationIssue[];\n};\n\nfunction formatIssuePath(path?: Array<string | number>) {\n return path && path.length > 0 ? `\\`${path.join(\".\")}\\`` : undefined;\n}\n\nfunction formatValidationMessage(message: string, details?: ValidationDetails) {\n const issues = details?.issues;\n if (!issues || issues.length === 0) {\n return message;\n }\n\n const lines = [message, \"\"];\n for (const issue of issues) {\n const path = formatIssuePath(issue.path);\n const suggestion = issue.suggestion ? ` Did you mean \\`${issue.suggestion}\\`?` : \"\";\n lines.push(`- ${path ? `${path} ` : \"\"}${issue.message}${suggestion}`);\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function mapHttpError(\n status: number,\n message: string,\n requestId?: string,\n opts?: {\n code?: string;\n details?: unknown;\n },\n) {\n if (status === 401 || status === 403)\n return new AuthError(message, { status, requestId, code: opts?.code });\n if (status === 400)\n return new ValidationError(\n formatValidationMessage(message, opts?.details as ValidationDetails | undefined),\n { status, requestId, code: opts?.code, details: opts?.details },\n );\n if (status === 404) {\n return new NotFoundError(message, { status, requestId, code: opts?.code });\n }\n if (status === 429) {\n return new RateLimitError(message, { status, requestId, code: opts?.code });\n }\n if (status >= 500) {\n return new ServerError(message, { status, requestId, code: opts?.code });\n }\n return new HttpError(message, { status, requestId, code: opts?.code });\n}\n","import { SDK_VERSION } from \"./version\";\nimport { BeepsError, NetworkError, mapHttpError } from \"./errors\";\nimport type { BeepsClientConfig } from \"./types\";\n\ntype FetcherConfig = Required<Pick<BeepsClientConfig, \"apiKey\">> &\n Omit<BeepsClientConfig, \"apiKey\"> & {\n baseURL: string;\n timeoutMs: number;\n retries: { attempts: number; backoffMs: number };\n };\n\nexport class HttpClient {\n private cfg: FetcherConfig;\n private _fetch: typeof fetch;\n\n constructor(config: BeepsClientConfig) {\n const baseURL = config.baseURL ?? \"https://api.beeps.dev/v0\";\n const timeoutMs = config.timeoutMs ?? 10_000;\n const retries = config.retries ?? { attempts: 2, backoffMs: 300 };\n this.cfg = { ...config, baseURL, timeoutMs, retries } as FetcherConfig;\n this._fetch = config.fetch ?? fetch;\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"POST\", path, body);\n }\n async get<T>(path: string): Promise<T> {\n return this.request<T>(\"GET\", path);\n }\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PUT\", path, body);\n }\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PATCH\", path, body);\n }\n async delete<T>(path: string): Promise<T> {\n return this.request<T>(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url =\n this.cfg.baseURL.replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), this.cfg.timeoutMs);\n try {\n let attempt = 0;\n while (true) {\n try {\n const res = await this._fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.cfg.apiKey,\n \"User-Agent\": `beepsdev-sdk/${SDK_VERSION}`,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const isJson = (res.headers.get(\"content-type\") || \"\").includes(\n \"application/json\",\n );\n const payload = (isJson\n ? await res.json().catch(() => ({}))\n : {}) as Record<string, unknown>;\n\n if (res.ok) {\n return payload as T;\n }\n\n const apiError =\n payload.error && typeof payload.error === \"object\"\n ? (payload.error as Record<string, unknown>)\n : payload;\n\n const msg =\n typeof apiError.message === \"string\"\n ? apiError.message\n : typeof payload.error === \"string\"\n ? payload.error\n : typeof payload.message === \"string\"\n ? payload.message\n : \"Request failed\";\n\n const err = mapHttpError(res.status, msg, requestId, {\n code:\n typeof apiError.code === \"string\"\n ? apiError.code\n : undefined,\n details:\n Array.isArray(apiError.issues)\n ? { issues: apiError.issues }\n : undefined,\n });\n if (\n this.shouldRetry(res.status) &&\n attempt < this.cfg.retries.attempts\n ) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw err;\n } catch (e) {\n if (e instanceof BeepsError) {\n throw e;\n }\n if (e instanceof Error && e.name === \"AbortError\") {\n throw new NetworkError(\"Request timed out\", { cause: e });\n }\n if (e instanceof TypeError) {\n if (attempt < this.cfg.retries.attempts) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw new NetworkError(\"Network error\", { cause: e });\n }\n throw e;\n }\n }\n } finally {\n clearTimeout(id);\n }\n }\n\n private shouldRetry(status: number) {\n if (status === 429) return true;\n if (status >= 500 && status !== 501 && status !== 505) return true;\n return false;\n }\n\n private jitterBackoff(attempt: number) {\n const base = this.cfg.retries.backoffMs * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 100;\n return base + jitter;\n }\n\n private sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n }\n}\n","import type {\n CreateRelayRuleInput,\n UpdateRelayRuleInput,\n RelayRule,\n ListRelayRulesParams,\n ReorderRelayRulesInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class RelayRulesResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]> {\n const qs = new URLSearchParams();\n if (params?.enabled !== undefined) {\n qs.set(\"enabled\", params.enabled.toString());\n }\n if (params?.ruleType) {\n qs.set(\"ruleType\", params.ruleType);\n }\n const path = qs.toString()\n ? `/relay/${relayId}/rules?${qs.toString()}`\n : `/relay/${relayId}/rules`;\n const res = await this.http.get<{ rules: RelayRule[] }>(path);\n return res.rules;\n }\n\n async create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.post<{ rule: RelayRule }>(`/relay/${relayId}/rules`, input);\n return res.rule;\n }\n\n async get(relayId: string, ruleId: string): Promise<RelayRule> {\n const res = await this.http.get<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`);\n return res.rule;\n }\n\n async update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.put<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`, input);\n return res.rule;\n }\n\n async delete(relayId: string, ruleId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/relay/${relayId}/rules/${ruleId}`);\n return res;\n }\n\n async reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]> {\n const res = await this.http.put<{ rules: RelayRule[] }>(`/relay/${relayId}/rules/reorder`, input);\n return res.rules;\n }\n\n // Safe versions that return Result<T> instead of throwing\n async listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.list(relayId, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.create(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>> {\n try {\n const data = await this.get(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.update(relayId, ruleId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(relayId: string, ruleId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.reorder(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}","import type {\n CreateRelayInput,\n Relay,\n RelayLintInput,\n RelayLintResult,\n RelaySimulationInput,\n RelaySimulationResult,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { RelayRulesResource } from \"./relay-rules\";\n\nexport class RelayResource {\n private http: HttpClient;\n rules: RelayRulesResource;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.rules = new RelayRulesResource(http);\n }\n\n async create(input: CreateRelayInput): Promise<Relay> {\n const res = await this.http.post<{ relay: Relay }>(\"/relay\", input);\n return res.relay;\n }\n\n async list(): Promise<Relay[]> {\n const res = await this.http.get<{ relays: Relay[] }>(\"/relay\");\n return res.relays;\n }\n\n async lint(relayId: string, input: RelayLintInput = {}): Promise<RelayLintResult> {\n const res = await this.http.post<RelayLintResult>(\n `/relay/${relayId}/lint`,\n input,\n );\n return res;\n }\n\n async simulate(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<RelaySimulationResult> {\n const res = await this.http.post<RelaySimulationResult>(\n `/relay/${relayId}/simulate`,\n input,\n );\n return res;\n }\n\n async createSafe(input: CreateRelayInput): Promise<Result<Relay>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async lintSafe(\n relayId: string,\n input: RelayLintInput = {},\n ): Promise<Result<RelayLintResult>> {\n try {\n const data = await this.lint(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async simulateSafe(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<Result<RelaySimulationResult>> {\n try {\n const data = await this.simulate(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","/**\n * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).\n * Example: \"2024-01-29T00:00:00.000Z\"\n */\nexport function formatUTCDate(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Validates that a string is a valid ISO 8601 timestamp with Z suffix.\n * Returns true if the string ends with \"Z\" and can be parsed as a valid date.\n */\nexport function isIsoZ(value: string): boolean {\n return value.endsWith(\"Z\") && !isNaN(Date.parse(value));\n}\n\n/**\n * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.\n * Accepts either a Date object or a Z-suffixed ISO string.\n * Throws an error if the input is invalid.\n */\nexport function normalizeDateParam(date: Date | string): string {\n if (date instanceof Date) {\n return formatUTCDate(date);\n }\n \n if (typeof date === \"string\") {\n if (!isIsoZ(date)) {\n throw new Error(\n `Invalid date format. Date must be a valid ISO 8601 timestamp with Z suffix (e.g., \"2024-01-29T00:00:00.000Z\"). Received: \"${date}\"`\n );\n }\n return date;\n }\n \n throw new Error(\n `Invalid date type. Expected Date object or ISO 8601 string with Z suffix, received: ${typeof date}`\n );\n}\n","import type {\n CreateScheduleInput,\n Schedule,\n AddScheduleMemberInput,\n ScheduleMember,\n ScheduleAssignment,\n GetAssignmentsParams,\n BeepsUser,\n Result,\n CreateScheduleOverrideInput,\n UpdateScheduleOverrideInput,\n ListScheduleOverridesParams,\n ScheduleOverride,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { normalizeDateParam } from \"../utils/date\";\n\nexport class ScheduleResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(input: CreateScheduleInput): Promise<Schedule> {\n const res = await this.http.post<{ schedule: Schedule }>(\"/schedule\", input);\n return res.schedule;\n }\n\n async list(): Promise<Schedule[]> {\n const res = await this.http.get<{ schedules: Schedule[] }>(\"/schedule\");\n return res.schedules;\n }\n\n async addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember> {\n const res = await this.http.post<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members`,\n input,\n );\n return res.member;\n }\n\n async listMembers(scheduleId: string): Promise<ScheduleMember[]> {\n const res = await this.http.get<{ members: ScheduleMember[] }>(\n `/schedule/${scheduleId}/members`,\n );\n return res.members;\n }\n\n async listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>> {\n try {\n const data = await this.listMembers(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async removeMember(scheduleId: string, userId: string): Promise<ScheduleMember> {\n const res = await this.http.delete<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members/${userId}`,\n );\n return res.member;\n }\n\n async getAssignments(\n scheduleId: string,\n params?: GetAssignmentsParams,\n ): Promise<ScheduleAssignment[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.type === \"until\") {\n qs.set(\"type\", \"until\");\n const normalizedDate = normalizeDateParam(params.date);\n qs.set(\"date\", normalizedDate);\n } else if (params.type === \"days\") {\n qs.set(\"type\", \"days\");\n qs.set(\"count\", String(params.count));\n } else {\n if (params.type) {\n qs.set(\"type\", params.type);\n }\n if (params.count !== undefined) {\n qs.set(\"count\", String(params.count));\n }\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/assignments?${qs.toString()}`\n : `/schedule/${scheduleId}/assignments`;\n const res = await this.http.get<{ assignments: ScheduleAssignment[] }>(path);\n return res.assignments;\n }\n\n async getOnCall(scheduleId: string): Promise<BeepsUser> {\n const res = await this.http.get<{ onCall: BeepsUser }>(\n `/schedule/${scheduleId}/on-call`\n );\n return res.onCall;\n }\n\n async getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>> {\n try {\n const data = await this.getOnCall(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createOverride(\n scheduleId: string,\n input: CreateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body = {\n userId: input.userId,\n startAt: normalizeDateParam(input.startAt),\n endAt: normalizeDateParam(input.endAt),\n reason: input.reason,\n };\n const res = await this.http.post<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides`,\n body,\n );\n return res.override;\n }\n\n async listOverrides(\n scheduleId: string,\n params?: ListScheduleOverridesParams,\n ): Promise<ScheduleOverride[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.startAt) {\n qs.set(\"startAt\", normalizeDateParam(params.startAt));\n }\n if (params.endAt) {\n qs.set(\"endAt\", normalizeDateParam(params.endAt));\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/overrides?${qs.toString()}`\n : `/schedule/${scheduleId}/overrides`;\n const res = await this.http.get<{ overrides: ScheduleOverride[] }>(path);\n return res.overrides;\n }\n\n async cancelOverride(\n scheduleId: string,\n overrideId: string,\n ): Promise<ScheduleOverride> {\n const res = await this.http.delete<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n );\n return res.override;\n }\n\n async updateOverride(\n scheduleId: string,\n overrideId: string,\n input: UpdateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body: Record<string, string | undefined> = {};\n \n if (input.startAt !== undefined) {\n body.startAt = normalizeDateParam(input.startAt);\n }\n if (input.endAt !== undefined) {\n body.endAt = normalizeDateParam(input.endAt);\n }\n if (input.reason !== undefined) {\n body.reason = input.reason;\n }\n \n const res = await this.http.patch<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n body,\n );\n return res.override;\n }\n}\n","import type {\n ContactMethod,\n ListContactMethodsParams,\n DeleteContactMethodParams,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class ContactMethodResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(params: ListContactMethodsParams): Promise<ContactMethod[]> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.get<{ contactMethods: ContactMethod[] }>(\n `/contact-methods?${qs.toString()}`\n );\n return res.contactMethods;\n }\n\n async delete(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<{ success: boolean }> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.delete<{ success: boolean }>(\n `/contact-methods/${id}?${qs.toString()}`\n );\n return res;\n }\n\n async listSafe(\n params: ListContactMethodsParams\n ): Promise<Result<ContactMethod[]>> {\n try {\n const data = await this.list(params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(id, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n Alert,\n AlertResponder,\n AgentJob,\n AlertFixContext,\n AcknowledgeAlertInput,\n OnItInput,\n UpdateResponderStatusInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AlertResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts\");\n return res.alerts;\n }\n\n async listActive(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/active\");\n return res.alerts;\n }\n\n async listResolved(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/resolved\");\n return res.alerts;\n }\n\n async get(alertId: string): Promise<Alert> {\n const res = await this.http.get<{ alert: Alert }>(`/alerts/${alertId}`);\n return res.alert;\n }\n\n async listResponders(alertId: string): Promise<AlertResponder[]> {\n const res = await this.http.get<{ responders: AlertResponder[] }>(\n `/alerts/${alertId}/responders`\n );\n return res.responders;\n }\n\n async listAgents(alertId: string): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\n `/alerts/${alertId}/agents`\n );\n return res.jobs;\n }\n\n async getFixContext(alertId: string): Promise<AlertFixContext> {\n const res = await this.http.get<{ fixContext: AlertFixContext }>(\n `/alerts/${alertId}/fix-context`\n );\n return res.fixContext;\n }\n\n async onIt(alertId: string, input?: OnItInput): Promise<AlertResponder> {\n const res = await this.http.post<{ responder: AlertResponder }>(\n `/alerts/${alertId}/on-it`,\n input || {}\n );\n return res.responder;\n }\n\n async updateResponderStatus(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<AlertResponder> {\n const res = await this.http.patch<{ responder: AlertResponder }>(\n `/alerts/${alertId}/responders/${responderId}`,\n input\n );\n return res.responder;\n }\n\n /** @deprecated Use onIt() instead */\n async acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/acknowledge`,\n input || {}\n );\n return res.alert;\n }\n\n async resolve(alertId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/resolve`,\n {}\n );\n return res.alert;\n }\n\n async assign(alertId: string, userId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/assign`,\n { userId }\n );\n return res.alert;\n }\n\n async listSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listActiveSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listActive();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listResolvedSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listResolved();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.get(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listRespondersSafe(alertId: string): Promise<Result<AlertResponder[]>> {\n try {\n const data = await this.listResponders(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listAgentsSafe(alertId: string): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.listAgents(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getFixContextSafe(alertId: string): Promise<Result<AlertFixContext>> {\n try {\n const data = await this.getFixContext(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async onItSafe(alertId: string, input?: OnItInput): Promise<Result<AlertResponder>> {\n try {\n const data = await this.onIt(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateResponderStatusSafe(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<Result<AlertResponder>> {\n try {\n const data = await this.updateResponderStatus(alertId, responderId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n /** @deprecated Use onItSafe() instead */\n async acknowledgeSafe(\n alertId: string,\n input?: AcknowledgeAlertInput\n ): Promise<Result<Alert>> {\n try {\n const data = await this.acknowledge(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async resolveSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.resolve(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async assignSafe(alertId: string, userId: string): Promise<Result<Alert>> {\n try {\n const data = await this.assign(alertId, userId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n CreateIntegrationInput,\n UpdateIntegrationInput,\n Integration,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class IntegrationResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Integration[]> {\n const res = await this.http.get<{ integrations: Integration[] }>(\"/integrations\");\n return res.integrations;\n }\n\n async create(input: CreateIntegrationInput): Promise<Integration> {\n const res = await this.http.post<{ integration: Integration }>(\"/integrations\", input);\n return res.integration;\n }\n\n async get(integrationId: string): Promise<Integration> {\n const res = await this.http.get<{ integration: Integration }>(`/integrations/${integrationId}`);\n return res.integration;\n }\n\n async update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration> {\n const res = await this.http.put<{ integration: Integration }>(`/integrations/${integrationId}`, input);\n return res.integration;\n }\n\n async delete(integrationId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/integrations/${integrationId}`);\n return res;\n }\n\n async listSafe(): Promise<Result<Integration[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(input: CreateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(integrationId: string): Promise<Result<Integration>> {\n try {\n const data = await this.get(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.update(integrationId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(integrationId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { OrganizationMember, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class MemberResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<OrganizationMember[]> {\n const res = await this.http.get<{ members: OrganizationMember[] }>(\"/members\");\n return res.members;\n }\n\n async listSafe(): Promise<Result<OrganizationMember[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { AgentJob, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AgentJobResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\"/agents/jobs\");\n return res.jobs;\n }\n\n async get(jobId: string): Promise<AgentJob> {\n const res = await this.http.get<{ job: AgentJob }>(`/agents/jobs/${jobId}`);\n return res.job;\n }\n\n async getStatus(jobId: string): Promise<Record<string, unknown>> {\n const res = await this.http.get<{ status: Record<string, unknown> }>(\n `/agents/jobs/${jobId}/status`\n );\n return res.status;\n }\n\n async listSafe(): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(jobId: string): Promise<Result<AgentJob>> {\n try {\n const data = await this.get(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getStatusSafe(jobId: string): Promise<Result<Record<string, unknown>>> {\n try {\n const data = await this.getStatus(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { BeepsClientConfig } from \"./types\";\nimport { HttpClient } from \"./http\";\nimport { RelayResource } from \"./resources/relay\";\nimport { ScheduleResource } from \"./resources/schedule\";\nimport { ContactMethodResource } from \"./resources/contact-method\";\nimport { AlertResource } from \"./resources/alert\";\nimport { IntegrationResource } from \"./resources/integration\";\nimport { MemberResource } from \"./resources/member\";\nimport { WebhookResource } from \"./resources/webhook\";\nimport { AgentJobResource } from \"./resources/agent-job\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\n agentJob: AgentJobResource;\n\n constructor(config: BeepsClientConfig) {\n if (!config.apiKey) {\n throw new Error(\"apiKey is required\");\n }\n const http = new HttpClient(config);\n this.relay = new RelayResource(http);\n this.schedule = new ScheduleResource(http);\n this.contactMethod = new ContactMethodResource(http);\n this.alert = new AlertResource(http);\n this.integration = new IntegrationResource(http);\n this.member = new MemberResource(http);\n this.webhook = new WebhookResource(http);\n this.agentJob = new AgentJobResource(http);\n }\n}\n"],"mappings":"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","names":[]}

@@ -690,3 +690,12 @@ type Result<T> = {

}
declare function mapHttpError(status: number, message: string, requestId?: string): AuthError | ValidationError | NotFoundError | RateLimitError | ServerError | HttpError;
type ValidationIssue = {
path?: Array<string | number>;
code?: string;
message: string;
suggestion?: string;
};
declare function mapHttpError(status: number, message: string, requestId?: string, opts?: {
code?: string;
details?: unknown;
}): AuthError | ValidationError | NotFoundError | RateLimitError | ServerError | HttpError;

@@ -710,2 +719,2 @@ /**

export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type AgentJob, AgentJobResource, type AgentJobStatus, type AgentJobType, type Alert, type AlertFixContext, type AlertFixContextSummary, AlertResource, type AlertResponder, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OnItInput, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type ResolutionSource, type ResponderStatus, type ResponderType, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateResponderStatusInput, type UpdateScheduleOverrideInput, ValidationError, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type AgentJob, AgentJobResource, type AgentJobStatus, type AgentJobType, type Alert, type AlertFixContext, type AlertFixContextSummary, AlertResource, type AlertResponder, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OnItInput, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type ResolutionSource, type ResponderStatus, type ResponderType, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateResponderStatusInput, type UpdateScheduleOverrideInput, ValidationError, type ValidationIssue, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };

@@ -690,3 +690,12 @@ type Result<T> = {

}
declare function mapHttpError(status: number, message: string, requestId?: string): AuthError | ValidationError | NotFoundError | RateLimitError | ServerError | HttpError;
type ValidationIssue = {
path?: Array<string | number>;
code?: string;
message: string;
suggestion?: string;
};
declare function mapHttpError(status: number, message: string, requestId?: string, opts?: {
code?: string;
details?: unknown;
}): AuthError | ValidationError | NotFoundError | RateLimitError | ServerError | HttpError;

@@ -710,2 +719,2 @@ /**

export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type AgentJob, AgentJobResource, type AgentJobStatus, type AgentJobType, type Alert, type AlertFixContext, type AlertFixContextSummary, AlertResource, type AlertResponder, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OnItInput, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type ResolutionSource, type ResponderStatus, type ResponderType, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateResponderStatusInput, type UpdateScheduleOverrideInput, ValidationError, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };
export { type AcknowledgeAlertInput, type AddScheduleMemberInput, type AgentConfig, type AgentJob, AgentJobResource, type AgentJobStatus, type AgentJobType, type Alert, type AlertFixContext, type AlertFixContextSummary, AlertResource, type AlertResponder, type AlertSeverity, AuthError, type BeepsAgentRuleConfig, BeepsClient, type BeepsClientConfig, type BeepsConfig, BeepsError, type BeepsIntegrationConfig, type BeepsRelayConfig, type BeepsRelayRuleConfig, type BeepsScheduleConfig, type BeepsScheduleMemberConfig, type BeepsScheduleNotifyRuleConfig, type BeepsUser, type BeepsWebhookRuleConfig, type ContactMethod, ContactMethodResource, type ContactMethodTransport, type CreateIntegrationInput, type CreateRelayInput, type CreateRelayRuleInput, type CreateScheduleInput, type CreateScheduleOverrideInput, type DeleteContactMethodParams, type GetAssignmentsParams, HttpError, type Integration, type IntegrationProvider, type ListContactMethodsParams, type ListRelayRulesParams, type ListScheduleOverridesParams, MemberResource, NetworkError, NotFoundError, type OnItInput, type OrganizationMember, RateLimitError, type Relay, type RelayLintInput, type RelayLintIssue, type RelayLintResult, type RelayLintSeverity, type RelayRule, type RelayRuleConfig, type RelayRuleType, RelayRulesResource, type RelaySimulationAgentStep, type RelaySimulationAlertInput, type RelaySimulationAlertPreview, type RelaySimulationContactMethod, type RelaySimulationGroup, type RelaySimulationInput, type RelaySimulationOnCallUser, type RelaySimulationResult, type RelaySimulationScheduleStep, type RelaySimulationStep, type RelaySimulationUnknownStep, type RelaySimulationWebhookStep, type ReorderRelayRulesInput, type ResolutionSource, type ResponderStatus, type ResponderType, type Result, type Schedule, type ScheduleAssignment, type ScheduleMember, type ScheduleNotifyConfig, type ScheduleOverride, ScheduleResource, ServerError, type UpdateIntegrationInput, type UpdateRelayRuleInput, type UpdateResponderStatusInput, type UpdateScheduleOverrideInput, ValidationError, type ValidationIssue, type Webhook, type WebhookConfig, WebhookResource, formatUTCDate, isIsoZ, mapHttpError, normalizeDateParam };

@@ -6,15 +6,10 @@ // src/version.ts

var BeepsError = class extends Error {
code;
status;
requestId;
retryable;
cause;
constructor(message, options) {
super(message);
this.name = "BeepsError";
this.code = options?.code;
this.status = options?.status;
this.requestId = options?.requestId;
this.retryable = options?.retryable ?? false;
this.cause = options?.cause;
if (options?.code !== void 0) this.code = options.code;
if (options?.status !== void 0) this.status = options.status;
if (options?.requestId !== void 0) this.requestId = options.requestId;
if (options?.retryable) this.retryable = true;
if (options?.cause !== void 0) this.cause = options.cause;
}

@@ -39,7 +34,6 @@ toString() {

var ValidationError = class extends BeepsError {
details;
constructor(message = "Validation error", opts) {
super(message, { ...opts, status: opts?.status ?? 400 });
this.name = "ValidationError";
this.details = opts?.details;
if (opts?.details !== void 0) this.details = opts.details;
}

@@ -77,11 +71,36 @@ };

};
function mapHttpError(status, message, requestId) {
function formatIssuePath(path) {
return path && path.length > 0 ? `\`${path.join(".")}\`` : void 0;
}
function formatValidationMessage(message, details) {
const issues = details?.issues;
if (!issues || issues.length === 0) {
return message;
}
const lines = [message, ""];
for (const issue of issues) {
const path = formatIssuePath(issue.path);
const suggestion = issue.suggestion ? ` Did you mean \`${issue.suggestion}\`?` : "";
lines.push(`- ${path ? `${path} ` : ""}${issue.message}${suggestion}`);
}
return lines.join("\n");
}
function mapHttpError(status, message, requestId, opts) {
if (status === 401 || status === 403)
return new AuthError(message, { status, requestId });
return new AuthError(message, { status, requestId, code: opts?.code });
if (status === 400)
return new ValidationError(message, { status, requestId });
if (status === 404) return new NotFoundError(message, { status, requestId });
if (status === 429) return new RateLimitError(message, { status, requestId });
if (status >= 500) return new ServerError(message, { status, requestId });
return new HttpError(message, { status, requestId });
return new ValidationError(
formatValidationMessage(message, opts?.details),
{ status, requestId, code: opts?.code, details: opts?.details }
);
if (status === 404) {
return new NotFoundError(message, { status, requestId, code: opts?.code });
}
if (status === 429) {
return new RateLimitError(message, { status, requestId, code: opts?.code });
}
if (status >= 500) {
return new ServerError(message, { status, requestId, code: opts?.code });
}
return new HttpError(message, { status, requestId, code: opts?.code });
}

@@ -141,4 +160,8 @@

}
const msg = typeof payload.error === "string" ? payload.error : typeof payload.message === "string" ? payload.message : "Request failed";
const err = mapHttpError(res.status, msg, requestId);
const apiError = payload.error && typeof payload.error === "object" ? payload.error : payload;
const msg = typeof apiError.message === "string" ? apiError.message : typeof payload.error === "string" ? payload.error : typeof payload.message === "string" ? payload.message : "Request failed";
const err = mapHttpError(res.status, msg, requestId, {
code: typeof apiError.code === "string" ? apiError.code : void 0,
details: Array.isArray(apiError.issues) ? { issues: apiError.issues } : void 0
});
if (this.shouldRetry(res.status) && attempt < this.cfg.retries.attempts) {

@@ -145,0 +168,0 @@ attempt++;

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/version.ts","../src/errors.ts","../src/http.ts","../src/resources/relay-rules.ts","../src/resources/relay.ts","../src/utils/date.ts","../src/resources/schedule.ts","../src/resources/contact-method.ts","../src/resources/alert.ts","../src/resources/integration.ts","../src/resources/member.ts","../src/resources/webhook.ts","../src/resources/agent-job.ts","../src/client.ts"],"sourcesContent":["export const SDK_VERSION = \"0.0.1\";\n","export class BeepsError extends Error {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"BeepsError\";\n this.code = options?.code;\n this.status = options?.status;\n this.requestId = options?.requestId;\n this.retryable = options?.retryable ?? false;\n this.cause = options?.cause;\n }\n\n toString() {\n const parts = [\n `BeepsError`,\n this.code ? `Code=${this.code}` : null,\n this.status ? `status=${this.status}` : null,\n this.requestId ? `requestId=${this.requestId}` : null,\n this.retryable ? `retryable=true` : null,\n ].filter(Boolean);\n return `${parts.join(\" \")}: ${this.message}`;\n }\n}\n\nexport class AuthError extends BeepsError {\n constructor(\n message = \"Unauthorized\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 401 });\n this.name = \"AuthError\";\n }\n}\n\nexport class ValidationError extends BeepsError {\n details?: unknown;\n constructor(\n message = \"Validation error\",\n opts?: ConstructorParameters<typeof BeepsError>[1] & { details?: unknown },\n ) {\n super(message, { ...opts, status: opts?.status ?? 400 });\n this.name = \"ValidationError\";\n this.details = opts?.details;\n }\n}\n\nexport class NotFoundError extends BeepsError {\n constructor(\n message = \"Not found\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 404 });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends BeepsError {\n constructor(\n message = \"Rate limited\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 429, retryable: true });\n this.name = \"RateLimitError\";\n }\n}\n\nexport class ServerError extends BeepsError {\n constructor(\n message = \"Server error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 500, retryable: true });\n this.name = \"ServerError\";\n }\n}\n\nexport class NetworkError extends BeepsError {\n constructor(\n message = \"Network error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"NetworkError\";\n }\n}\n\nexport class HttpError extends BeepsError {\n constructor(\n message = \"HTTP error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"HttpError\";\n }\n}\n\nexport function mapHttpError(\n status: number,\n message: string,\n requestId?: string,\n) {\n if (status === 401 || status === 403)\n return new AuthError(message, { status, requestId });\n if (status === 400)\n return new ValidationError(message, { status, requestId });\n if (status === 404) return new NotFoundError(message, { status, requestId });\n if (status === 429) return new RateLimitError(message, { status, requestId });\n if (status >= 500) return new ServerError(message, { status, requestId });\n return new HttpError(message, { status, requestId });\n}\n","import { SDK_VERSION } from \"./version\";\nimport { BeepsError, NetworkError, mapHttpError } from \"./errors\";\nimport type { BeepsClientConfig } from \"./types\";\n\ntype FetcherConfig = Required<Pick<BeepsClientConfig, \"apiKey\">> &\n Omit<BeepsClientConfig, \"apiKey\"> & {\n baseURL: string;\n timeoutMs: number;\n retries: { attempts: number; backoffMs: number };\n };\n\nexport class HttpClient {\n private cfg: FetcherConfig;\n private _fetch: typeof fetch;\n\n constructor(config: BeepsClientConfig) {\n const baseURL = config.baseURL ?? \"https://api.beeps.dev/v0\";\n const timeoutMs = config.timeoutMs ?? 10_000;\n const retries = config.retries ?? { attempts: 2, backoffMs: 300 };\n this.cfg = { ...config, baseURL, timeoutMs, retries } as FetcherConfig;\n this._fetch = config.fetch ?? fetch;\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"POST\", path, body);\n }\n async get<T>(path: string): Promise<T> {\n return this.request<T>(\"GET\", path);\n }\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PUT\", path, body);\n }\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PATCH\", path, body);\n }\n async delete<T>(path: string): Promise<T> {\n return this.request<T>(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url =\n this.cfg.baseURL.replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), this.cfg.timeoutMs);\n try {\n let attempt = 0;\n while (true) {\n try {\n const res = await this._fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.cfg.apiKey,\n \"User-Agent\": `beepsdev-sdk/${SDK_VERSION}`,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const isJson = (res.headers.get(\"content-type\") || \"\").includes(\n \"application/json\",\n );\n const payload = (isJson\n ? await res.json().catch(() => ({}))\n : {}) as Record<string, unknown>;\n\n if (res.ok) {\n return payload as T;\n }\n\n const msg =\n typeof payload.error === \"string\"\n ? payload.error\n : typeof payload.message === \"string\"\n ? payload.message\n : \"Request failed\";\n\n const err = mapHttpError(res.status, msg, requestId);\n if (\n this.shouldRetry(res.status) &&\n attempt < this.cfg.retries.attempts\n ) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw err;\n } catch (e) {\n if (e instanceof BeepsError) {\n throw e;\n }\n if (e instanceof Error && e.name === \"AbortError\") {\n throw new NetworkError(\"Request timed out\", { cause: e });\n }\n if (e instanceof TypeError) {\n if (attempt < this.cfg.retries.attempts) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw new NetworkError(\"Network error\", { cause: e });\n }\n throw e;\n }\n }\n } finally {\n clearTimeout(id);\n }\n }\n\n private shouldRetry(status: number) {\n if (status === 429) return true;\n if (status >= 500 && status !== 501 && status !== 505) return true;\n return false;\n }\n\n private jitterBackoff(attempt: number) {\n const base = this.cfg.retries.backoffMs * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 100;\n return base + jitter;\n }\n\n private sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n }\n}\n","import type {\n CreateRelayRuleInput,\n UpdateRelayRuleInput,\n RelayRule,\n ListRelayRulesParams,\n ReorderRelayRulesInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class RelayRulesResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]> {\n const qs = new URLSearchParams();\n if (params?.enabled !== undefined) {\n qs.set(\"enabled\", params.enabled.toString());\n }\n if (params?.ruleType) {\n qs.set(\"ruleType\", params.ruleType);\n }\n const path = qs.toString()\n ? `/relay/${relayId}/rules?${qs.toString()}`\n : `/relay/${relayId}/rules`;\n const res = await this.http.get<{ rules: RelayRule[] }>(path);\n return res.rules;\n }\n\n async create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.post<{ rule: RelayRule }>(`/relay/${relayId}/rules`, input);\n return res.rule;\n }\n\n async get(relayId: string, ruleId: string): Promise<RelayRule> {\n const res = await this.http.get<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`);\n return res.rule;\n }\n\n async update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.put<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`, input);\n return res.rule;\n }\n\n async delete(relayId: string, ruleId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/relay/${relayId}/rules/${ruleId}`);\n return res;\n }\n\n async reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]> {\n const res = await this.http.put<{ rules: RelayRule[] }>(`/relay/${relayId}/rules/reorder`, input);\n return res.rules;\n }\n\n // Safe versions that return Result<T> instead of throwing\n async listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.list(relayId, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.create(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>> {\n try {\n const data = await this.get(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.update(relayId, ruleId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(relayId: string, ruleId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.reorder(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}","import type {\n CreateRelayInput,\n Relay,\n RelayLintInput,\n RelayLintResult,\n RelaySimulationInput,\n RelaySimulationResult,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { RelayRulesResource } from \"./relay-rules\";\n\nexport class RelayResource {\n private http: HttpClient;\n rules: RelayRulesResource;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.rules = new RelayRulesResource(http);\n }\n\n async create(input: CreateRelayInput): Promise<Relay> {\n const res = await this.http.post<{ relay: Relay }>(\"/relay\", input);\n return res.relay;\n }\n\n async list(): Promise<Relay[]> {\n const res = await this.http.get<{ relays: Relay[] }>(\"/relay\");\n return res.relays;\n }\n\n async lint(relayId: string, input: RelayLintInput = {}): Promise<RelayLintResult> {\n const res = await this.http.post<RelayLintResult>(\n `/relay/${relayId}/lint`,\n input,\n );\n return res;\n }\n\n async simulate(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<RelaySimulationResult> {\n const res = await this.http.post<RelaySimulationResult>(\n `/relay/${relayId}/simulate`,\n input,\n );\n return res;\n }\n\n async createSafe(input: CreateRelayInput): Promise<Result<Relay>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async lintSafe(\n relayId: string,\n input: RelayLintInput = {},\n ): Promise<Result<RelayLintResult>> {\n try {\n const data = await this.lint(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async simulateSafe(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<Result<RelaySimulationResult>> {\n try {\n const data = await this.simulate(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","/**\n * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).\n * Example: \"2024-01-29T00:00:00.000Z\"\n */\nexport function formatUTCDate(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Validates that a string is a valid ISO 8601 timestamp with Z suffix.\n * Returns true if the string ends with \"Z\" and can be parsed as a valid date.\n */\nexport function isIsoZ(value: string): boolean {\n return value.endsWith(\"Z\") && !isNaN(Date.parse(value));\n}\n\n/**\n * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.\n * Accepts either a Date object or a Z-suffixed ISO string.\n * Throws an error if the input is invalid.\n */\nexport function normalizeDateParam(date: Date | string): string {\n if (date instanceof Date) {\n return formatUTCDate(date);\n }\n \n if (typeof date === \"string\") {\n if (!isIsoZ(date)) {\n throw new Error(\n `Invalid date format. Date must be a valid ISO 8601 timestamp with Z suffix (e.g., \"2024-01-29T00:00:00.000Z\"). Received: \"${date}\"`\n );\n }\n return date;\n }\n \n throw new Error(\n `Invalid date type. Expected Date object or ISO 8601 string with Z suffix, received: ${typeof date}`\n );\n}\n","import type {\n CreateScheduleInput,\n Schedule,\n AddScheduleMemberInput,\n ScheduleMember,\n ScheduleAssignment,\n GetAssignmentsParams,\n BeepsUser,\n Result,\n CreateScheduleOverrideInput,\n UpdateScheduleOverrideInput,\n ListScheduleOverridesParams,\n ScheduleOverride,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { normalizeDateParam } from \"../utils/date\";\n\nexport class ScheduleResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(input: CreateScheduleInput): Promise<Schedule> {\n const res = await this.http.post<{ schedule: Schedule }>(\"/schedule\", input);\n return res.schedule;\n }\n\n async list(): Promise<Schedule[]> {\n const res = await this.http.get<{ schedules: Schedule[] }>(\"/schedule\");\n return res.schedules;\n }\n\n async addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember> {\n const res = await this.http.post<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members`,\n input,\n );\n return res.member;\n }\n\n async listMembers(scheduleId: string): Promise<ScheduleMember[]> {\n const res = await this.http.get<{ members: ScheduleMember[] }>(\n `/schedule/${scheduleId}/members`,\n );\n return res.members;\n }\n\n async listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>> {\n try {\n const data = await this.listMembers(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async removeMember(scheduleId: string, userId: string): Promise<ScheduleMember> {\n const res = await this.http.delete<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members/${userId}`,\n );\n return res.member;\n }\n\n async getAssignments(\n scheduleId: string,\n params?: GetAssignmentsParams,\n ): Promise<ScheduleAssignment[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.type === \"until\") {\n qs.set(\"type\", \"until\");\n const normalizedDate = normalizeDateParam(params.date);\n qs.set(\"date\", normalizedDate);\n } else if (params.type === \"days\") {\n qs.set(\"type\", \"days\");\n qs.set(\"count\", String(params.count));\n } else {\n if (params.type) {\n qs.set(\"type\", params.type);\n }\n if (params.count !== undefined) {\n qs.set(\"count\", String(params.count));\n }\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/assignments?${qs.toString()}`\n : `/schedule/${scheduleId}/assignments`;\n const res = await this.http.get<{ assignments: ScheduleAssignment[] }>(path);\n return res.assignments;\n }\n\n async getOnCall(scheduleId: string): Promise<BeepsUser> {\n const res = await this.http.get<{ onCall: BeepsUser }>(\n `/schedule/${scheduleId}/on-call`\n );\n return res.onCall;\n }\n\n async getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>> {\n try {\n const data = await this.getOnCall(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createOverride(\n scheduleId: string,\n input: CreateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body = {\n userId: input.userId,\n startAt: normalizeDateParam(input.startAt),\n endAt: normalizeDateParam(input.endAt),\n reason: input.reason,\n };\n const res = await this.http.post<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides`,\n body,\n );\n return res.override;\n }\n\n async listOverrides(\n scheduleId: string,\n params?: ListScheduleOverridesParams,\n ): Promise<ScheduleOverride[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.startAt) {\n qs.set(\"startAt\", normalizeDateParam(params.startAt));\n }\n if (params.endAt) {\n qs.set(\"endAt\", normalizeDateParam(params.endAt));\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/overrides?${qs.toString()}`\n : `/schedule/${scheduleId}/overrides`;\n const res = await this.http.get<{ overrides: ScheduleOverride[] }>(path);\n return res.overrides;\n }\n\n async cancelOverride(\n scheduleId: string,\n overrideId: string,\n ): Promise<ScheduleOverride> {\n const res = await this.http.delete<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n );\n return res.override;\n }\n\n async updateOverride(\n scheduleId: string,\n overrideId: string,\n input: UpdateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body: Record<string, string | undefined> = {};\n \n if (input.startAt !== undefined) {\n body.startAt = normalizeDateParam(input.startAt);\n }\n if (input.endAt !== undefined) {\n body.endAt = normalizeDateParam(input.endAt);\n }\n if (input.reason !== undefined) {\n body.reason = input.reason;\n }\n \n const res = await this.http.patch<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n body,\n );\n return res.override;\n }\n}\n","import type {\n ContactMethod,\n ListContactMethodsParams,\n DeleteContactMethodParams,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class ContactMethodResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(params: ListContactMethodsParams): Promise<ContactMethod[]> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.get<{ contactMethods: ContactMethod[] }>(\n `/contact-methods?${qs.toString()}`\n );\n return res.contactMethods;\n }\n\n async delete(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<{ success: boolean }> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.delete<{ success: boolean }>(\n `/contact-methods/${id}?${qs.toString()}`\n );\n return res;\n }\n\n async listSafe(\n params: ListContactMethodsParams\n ): Promise<Result<ContactMethod[]>> {\n try {\n const data = await this.list(params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(id, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n Alert,\n AlertResponder,\n AgentJob,\n AlertFixContext,\n AcknowledgeAlertInput,\n OnItInput,\n UpdateResponderStatusInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AlertResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts\");\n return res.alerts;\n }\n\n async listActive(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/active\");\n return res.alerts;\n }\n\n async listResolved(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/resolved\");\n return res.alerts;\n }\n\n async get(alertId: string): Promise<Alert> {\n const res = await this.http.get<{ alert: Alert }>(`/alerts/${alertId}`);\n return res.alert;\n }\n\n async listResponders(alertId: string): Promise<AlertResponder[]> {\n const res = await this.http.get<{ responders: AlertResponder[] }>(\n `/alerts/${alertId}/responders`\n );\n return res.responders;\n }\n\n async listAgents(alertId: string): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\n `/alerts/${alertId}/agents`\n );\n return res.jobs;\n }\n\n async getFixContext(alertId: string): Promise<AlertFixContext> {\n const res = await this.http.get<{ fixContext: AlertFixContext }>(\n `/alerts/${alertId}/fix-context`\n );\n return res.fixContext;\n }\n\n async onIt(alertId: string, input?: OnItInput): Promise<AlertResponder> {\n const res = await this.http.post<{ responder: AlertResponder }>(\n `/alerts/${alertId}/on-it`,\n input || {}\n );\n return res.responder;\n }\n\n async updateResponderStatus(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<AlertResponder> {\n const res = await this.http.patch<{ responder: AlertResponder }>(\n `/alerts/${alertId}/responders/${responderId}`,\n input\n );\n return res.responder;\n }\n\n /** @deprecated Use onIt() instead */\n async acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/acknowledge`,\n input || {}\n );\n return res.alert;\n }\n\n async resolve(alertId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/resolve`,\n {}\n );\n return res.alert;\n }\n\n async assign(alertId: string, userId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/assign`,\n { userId }\n );\n return res.alert;\n }\n\n async listSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listActiveSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listActive();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listResolvedSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listResolved();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.get(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listRespondersSafe(alertId: string): Promise<Result<AlertResponder[]>> {\n try {\n const data = await this.listResponders(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listAgentsSafe(alertId: string): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.listAgents(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getFixContextSafe(alertId: string): Promise<Result<AlertFixContext>> {\n try {\n const data = await this.getFixContext(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async onItSafe(alertId: string, input?: OnItInput): Promise<Result<AlertResponder>> {\n try {\n const data = await this.onIt(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateResponderStatusSafe(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<Result<AlertResponder>> {\n try {\n const data = await this.updateResponderStatus(alertId, responderId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n /** @deprecated Use onItSafe() instead */\n async acknowledgeSafe(\n alertId: string,\n input?: AcknowledgeAlertInput\n ): Promise<Result<Alert>> {\n try {\n const data = await this.acknowledge(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async resolveSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.resolve(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async assignSafe(alertId: string, userId: string): Promise<Result<Alert>> {\n try {\n const data = await this.assign(alertId, userId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n CreateIntegrationInput,\n UpdateIntegrationInput,\n Integration,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class IntegrationResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Integration[]> {\n const res = await this.http.get<{ integrations: Integration[] }>(\"/integrations\");\n return res.integrations;\n }\n\n async create(input: CreateIntegrationInput): Promise<Integration> {\n const res = await this.http.post<{ integration: Integration }>(\"/integrations\", input);\n return res.integration;\n }\n\n async get(integrationId: string): Promise<Integration> {\n const res = await this.http.get<{ integration: Integration }>(`/integrations/${integrationId}`);\n return res.integration;\n }\n\n async update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration> {\n const res = await this.http.put<{ integration: Integration }>(`/integrations/${integrationId}`, input);\n return res.integration;\n }\n\n async delete(integrationId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/integrations/${integrationId}`);\n return res;\n }\n\n async listSafe(): Promise<Result<Integration[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(input: CreateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(integrationId: string): Promise<Result<Integration>> {\n try {\n const data = await this.get(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.update(integrationId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(integrationId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { OrganizationMember, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class MemberResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<OrganizationMember[]> {\n const res = await this.http.get<{ members: OrganizationMember[] }>(\"/members\");\n return res.members;\n }\n\n async listSafe(): Promise<Result<OrganizationMember[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { AgentJob, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AgentJobResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\"/agents/jobs\");\n return res.jobs;\n }\n\n async get(jobId: string): Promise<AgentJob> {\n const res = await this.http.get<{ job: AgentJob }>(`/agents/jobs/${jobId}`);\n return res.job;\n }\n\n async getStatus(jobId: string): Promise<Record<string, unknown>> {\n const res = await this.http.get<{ status: Record<string, unknown> }>(\n `/agents/jobs/${jobId}/status`\n );\n return res.status;\n }\n\n async listSafe(): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(jobId: string): Promise<Result<AgentJob>> {\n try {\n const data = await this.get(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getStatusSafe(jobId: string): Promise<Result<Record<string, unknown>>> {\n try {\n const data = await this.getStatus(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { BeepsClientConfig } from \"./types\";\nimport { HttpClient } from \"./http\";\nimport { RelayResource } from \"./resources/relay\";\nimport { ScheduleResource } from \"./resources/schedule\";\nimport { ContactMethodResource } from \"./resources/contact-method\";\nimport { AlertResource } from \"./resources/alert\";\nimport { IntegrationResource } from \"./resources/integration\";\nimport { MemberResource } from \"./resources/member\";\nimport { WebhookResource } from \"./resources/webhook\";\nimport { AgentJobResource } from \"./resources/agent-job\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\n agentJob: AgentJobResource;\n\n constructor(config: BeepsClientConfig) {\n if (!config.apiKey) {\n throw new Error(\"apiKey is required\");\n }\n const http = new HttpClient(config);\n this.relay = new RelayResource(http);\n this.schedule = new ScheduleResource(http);\n this.contactMethod = new ContactMethodResource(http);\n this.alert = new AlertResource(http);\n this.integration = new IntegrationResource(http);\n this.member = new MemberResource(http);\n this.webhook = new WebhookResource(http);\n this.agentJob = new AgentJobResource(http);\n }\n}\n"],"mappings":"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","names":[]}
{"version":3,"sources":["../src/version.ts","../src/errors.ts","../src/http.ts","../src/resources/relay-rules.ts","../src/resources/relay.ts","../src/utils/date.ts","../src/resources/schedule.ts","../src/resources/contact-method.ts","../src/resources/alert.ts","../src/resources/integration.ts","../src/resources/member.ts","../src/resources/webhook.ts","../src/resources/agent-job.ts","../src/client.ts"],"sourcesContent":["export const SDK_VERSION = \"0.0.1\";\n","export class BeepsError extends Error {\n declare code?: string;\n declare status?: number;\n declare requestId?: string;\n declare retryable?: boolean;\n declare cause?: unknown;\n\n constructor(\n message: string,\n options?: {\n code?: string;\n status?: number;\n requestId?: string;\n retryable?: boolean;\n cause?: unknown;\n },\n ) {\n super(message);\n this.name = \"BeepsError\";\n if (options?.code !== undefined) this.code = options.code;\n if (options?.status !== undefined) this.status = options.status;\n if (options?.requestId !== undefined) this.requestId = options.requestId;\n if (options?.retryable) this.retryable = true;\n if (options?.cause !== undefined) this.cause = options.cause;\n }\n\n toString() {\n const parts = [\n `BeepsError`,\n this.code ? `Code=${this.code}` : null,\n this.status ? `status=${this.status}` : null,\n this.requestId ? `requestId=${this.requestId}` : null,\n this.retryable ? `retryable=true` : null,\n ].filter(Boolean);\n return `${parts.join(\" \")}: ${this.message}`;\n }\n}\n\nexport class AuthError extends BeepsError {\n constructor(\n message = \"Unauthorized\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 401 });\n this.name = \"AuthError\";\n }\n}\n\nexport class ValidationError extends BeepsError {\n declare details?: unknown;\n constructor(\n message = \"Validation error\",\n opts?: ConstructorParameters<typeof BeepsError>[1] & { details?: unknown },\n ) {\n super(message, { ...opts, status: opts?.status ?? 400 });\n this.name = \"ValidationError\";\n if (opts?.details !== undefined) this.details = opts.details;\n }\n}\n\nexport class NotFoundError extends BeepsError {\n constructor(\n message = \"Not found\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 404 });\n this.name = \"NotFoundError\";\n }\n}\n\nexport class RateLimitError extends BeepsError {\n constructor(\n message = \"Rate limited\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 429, retryable: true });\n this.name = \"RateLimitError\";\n }\n}\n\nexport class ServerError extends BeepsError {\n constructor(\n message = \"Server error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts, status: opts?.status ?? 500, retryable: true });\n this.name = \"ServerError\";\n }\n}\n\nexport class NetworkError extends BeepsError {\n constructor(\n message = \"Network error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"NetworkError\";\n }\n}\n\nexport class HttpError extends BeepsError {\n constructor(\n message = \"HTTP error\",\n opts?: ConstructorParameters<typeof BeepsError>[1],\n ) {\n super(message, { ...opts });\n this.name = \"HttpError\";\n }\n}\n\nexport type ValidationIssue = {\n path?: Array<string | number>;\n code?: string;\n message: string;\n suggestion?: string;\n};\n\ntype ValidationDetails = {\n issues?: ValidationIssue[];\n};\n\nfunction formatIssuePath(path?: Array<string | number>) {\n return path && path.length > 0 ? `\\`${path.join(\".\")}\\`` : undefined;\n}\n\nfunction formatValidationMessage(message: string, details?: ValidationDetails) {\n const issues = details?.issues;\n if (!issues || issues.length === 0) {\n return message;\n }\n\n const lines = [message, \"\"];\n for (const issue of issues) {\n const path = formatIssuePath(issue.path);\n const suggestion = issue.suggestion ? ` Did you mean \\`${issue.suggestion}\\`?` : \"\";\n lines.push(`- ${path ? `${path} ` : \"\"}${issue.message}${suggestion}`);\n }\n\n return lines.join(\"\\n\");\n}\n\nexport function mapHttpError(\n status: number,\n message: string,\n requestId?: string,\n opts?: {\n code?: string;\n details?: unknown;\n },\n) {\n if (status === 401 || status === 403)\n return new AuthError(message, { status, requestId, code: opts?.code });\n if (status === 400)\n return new ValidationError(\n formatValidationMessage(message, opts?.details as ValidationDetails | undefined),\n { status, requestId, code: opts?.code, details: opts?.details },\n );\n if (status === 404) {\n return new NotFoundError(message, { status, requestId, code: opts?.code });\n }\n if (status === 429) {\n return new RateLimitError(message, { status, requestId, code: opts?.code });\n }\n if (status >= 500) {\n return new ServerError(message, { status, requestId, code: opts?.code });\n }\n return new HttpError(message, { status, requestId, code: opts?.code });\n}\n","import { SDK_VERSION } from \"./version\";\nimport { BeepsError, NetworkError, mapHttpError } from \"./errors\";\nimport type { BeepsClientConfig } from \"./types\";\n\ntype FetcherConfig = Required<Pick<BeepsClientConfig, \"apiKey\">> &\n Omit<BeepsClientConfig, \"apiKey\"> & {\n baseURL: string;\n timeoutMs: number;\n retries: { attempts: number; backoffMs: number };\n };\n\nexport class HttpClient {\n private cfg: FetcherConfig;\n private _fetch: typeof fetch;\n\n constructor(config: BeepsClientConfig) {\n const baseURL = config.baseURL ?? \"https://api.beeps.dev/v0\";\n const timeoutMs = config.timeoutMs ?? 10_000;\n const retries = config.retries ?? { attempts: 2, backoffMs: 300 };\n this.cfg = { ...config, baseURL, timeoutMs, retries } as FetcherConfig;\n this._fetch = config.fetch ?? fetch;\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"POST\", path, body);\n }\n async get<T>(path: string): Promise<T> {\n return this.request<T>(\"GET\", path);\n }\n async put<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PUT\", path, body);\n }\n async patch<T>(path: string, body: unknown): Promise<T> {\n return this.request<T>(\"PATCH\", path, body);\n }\n async delete<T>(path: string): Promise<T> {\n return this.request<T>(\"DELETE\", path);\n }\n\n private async request<T>(\n method: string,\n path: string,\n body?: unknown,\n ): Promise<T> {\n const url =\n this.cfg.baseURL.replace(/\\/+$/, \"\") + \"/\" + path.replace(/^\\/+/, \"\");\n const controller = new AbortController();\n const id = setTimeout(() => controller.abort(), this.cfg.timeoutMs);\n try {\n let attempt = 0;\n while (true) {\n try {\n const res = await this._fetch(url, {\n method,\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-API-Key\": this.cfg.apiKey,\n \"User-Agent\": `beepsdev-sdk/${SDK_VERSION}`,\n },\n body: body !== undefined ? JSON.stringify(body) : undefined,\n signal: controller.signal,\n });\n\n const requestId = res.headers.get(\"x-request-id\") ?? undefined;\n const isJson = (res.headers.get(\"content-type\") || \"\").includes(\n \"application/json\",\n );\n const payload = (isJson\n ? await res.json().catch(() => ({}))\n : {}) as Record<string, unknown>;\n\n if (res.ok) {\n return payload as T;\n }\n\n const apiError =\n payload.error && typeof payload.error === \"object\"\n ? (payload.error as Record<string, unknown>)\n : payload;\n\n const msg =\n typeof apiError.message === \"string\"\n ? apiError.message\n : typeof payload.error === \"string\"\n ? payload.error\n : typeof payload.message === \"string\"\n ? payload.message\n : \"Request failed\";\n\n const err = mapHttpError(res.status, msg, requestId, {\n code:\n typeof apiError.code === \"string\"\n ? apiError.code\n : undefined,\n details:\n Array.isArray(apiError.issues)\n ? { issues: apiError.issues }\n : undefined,\n });\n if (\n this.shouldRetry(res.status) &&\n attempt < this.cfg.retries.attempts\n ) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw err;\n } catch (e) {\n if (e instanceof BeepsError) {\n throw e;\n }\n if (e instanceof Error && e.name === \"AbortError\") {\n throw new NetworkError(\"Request timed out\", { cause: e });\n }\n if (e instanceof TypeError) {\n if (attempt < this.cfg.retries.attempts) {\n attempt++;\n await this.sleep(this.jitterBackoff(attempt));\n continue;\n }\n throw new NetworkError(\"Network error\", { cause: e });\n }\n throw e;\n }\n }\n } finally {\n clearTimeout(id);\n }\n }\n\n private shouldRetry(status: number) {\n if (status === 429) return true;\n if (status >= 500 && status !== 501 && status !== 505) return true;\n return false;\n }\n\n private jitterBackoff(attempt: number) {\n const base = this.cfg.retries.backoffMs * Math.pow(2, attempt - 1);\n const jitter = Math.random() * 100;\n return base + jitter;\n }\n\n private sleep(ms: number) {\n return new Promise((r) => setTimeout(r, ms));\n }\n}\n","import type {\n CreateRelayRuleInput,\n UpdateRelayRuleInput,\n RelayRule,\n ListRelayRulesParams,\n ReorderRelayRulesInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class RelayRulesResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(relayId: string, params?: ListRelayRulesParams): Promise<RelayRule[]> {\n const qs = new URLSearchParams();\n if (params?.enabled !== undefined) {\n qs.set(\"enabled\", params.enabled.toString());\n }\n if (params?.ruleType) {\n qs.set(\"ruleType\", params.ruleType);\n }\n const path = qs.toString()\n ? `/relay/${relayId}/rules?${qs.toString()}`\n : `/relay/${relayId}/rules`;\n const res = await this.http.get<{ rules: RelayRule[] }>(path);\n return res.rules;\n }\n\n async create(relayId: string, input: CreateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.post<{ rule: RelayRule }>(`/relay/${relayId}/rules`, input);\n return res.rule;\n }\n\n async get(relayId: string, ruleId: string): Promise<RelayRule> {\n const res = await this.http.get<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`);\n return res.rule;\n }\n\n async update(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<RelayRule> {\n const res = await this.http.put<{ rule: RelayRule }>(`/relay/${relayId}/rules/${ruleId}`, input);\n return res.rule;\n }\n\n async delete(relayId: string, ruleId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/relay/${relayId}/rules/${ruleId}`);\n return res;\n }\n\n async reorder(relayId: string, input: ReorderRelayRulesInput): Promise<RelayRule[]> {\n const res = await this.http.put<{ rules: RelayRule[] }>(`/relay/${relayId}/rules/reorder`, input);\n return res.rules;\n }\n\n // Safe versions that return Result<T> instead of throwing\n async listSafe(relayId: string, params?: ListRelayRulesParams): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.list(relayId, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(relayId: string, input: CreateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.create(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(relayId: string, ruleId: string): Promise<Result<RelayRule>> {\n try {\n const data = await this.get(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(relayId: string, ruleId: string, input: UpdateRelayRuleInput): Promise<Result<RelayRule>> {\n try {\n const data = await this.update(relayId, ruleId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(relayId: string, ruleId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(relayId, ruleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async reorderSafe(relayId: string, input: ReorderRelayRulesInput): Promise<Result<RelayRule[]>> {\n try {\n const data = await this.reorder(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}","import type {\n CreateRelayInput,\n Relay,\n RelayLintInput,\n RelayLintResult,\n RelaySimulationInput,\n RelaySimulationResult,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { RelayRulesResource } from \"./relay-rules\";\n\nexport class RelayResource {\n private http: HttpClient;\n rules: RelayRulesResource;\n\n constructor(http: HttpClient) {\n this.http = http;\n this.rules = new RelayRulesResource(http);\n }\n\n async create(input: CreateRelayInput): Promise<Relay> {\n const res = await this.http.post<{ relay: Relay }>(\"/relay\", input);\n return res.relay;\n }\n\n async list(): Promise<Relay[]> {\n const res = await this.http.get<{ relays: Relay[] }>(\"/relay\");\n return res.relays;\n }\n\n async lint(relayId: string, input: RelayLintInput = {}): Promise<RelayLintResult> {\n const res = await this.http.post<RelayLintResult>(\n `/relay/${relayId}/lint`,\n input,\n );\n return res;\n }\n\n async simulate(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<RelaySimulationResult> {\n const res = await this.http.post<RelaySimulationResult>(\n `/relay/${relayId}/simulate`,\n input,\n );\n return res;\n }\n\n async createSafe(input: CreateRelayInput): Promise<Result<Relay>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async lintSafe(\n relayId: string,\n input: RelayLintInput = {},\n ): Promise<Result<RelayLintResult>> {\n try {\n const data = await this.lint(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async simulateSafe(\n relayId: string,\n input: RelaySimulationInput,\n ): Promise<Result<RelaySimulationResult>> {\n try {\n const data = await this.simulate(relayId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","/**\n * Formats a Date object as an ISO 8601 timestamp with Z suffix (UTC).\n * Example: \"2024-01-29T00:00:00.000Z\"\n */\nexport function formatUTCDate(date: Date): string {\n return date.toISOString();\n}\n\n/**\n * Validates that a string is a valid ISO 8601 timestamp with Z suffix.\n * Returns true if the string ends with \"Z\" and can be parsed as a valid date.\n */\nexport function isIsoZ(value: string): boolean {\n return value.endsWith(\"Z\") && !isNaN(Date.parse(value));\n}\n\n/**\n * Validates and normalizes a date parameter to an ISO 8601 string with Z suffix.\n * Accepts either a Date object or a Z-suffixed ISO string.\n * Throws an error if the input is invalid.\n */\nexport function normalizeDateParam(date: Date | string): string {\n if (date instanceof Date) {\n return formatUTCDate(date);\n }\n \n if (typeof date === \"string\") {\n if (!isIsoZ(date)) {\n throw new Error(\n `Invalid date format. Date must be a valid ISO 8601 timestamp with Z suffix (e.g., \"2024-01-29T00:00:00.000Z\"). Received: \"${date}\"`\n );\n }\n return date;\n }\n \n throw new Error(\n `Invalid date type. Expected Date object or ISO 8601 string with Z suffix, received: ${typeof date}`\n );\n}\n","import type {\n CreateScheduleInput,\n Schedule,\n AddScheduleMemberInput,\n ScheduleMember,\n ScheduleAssignment,\n GetAssignmentsParams,\n BeepsUser,\n Result,\n CreateScheduleOverrideInput,\n UpdateScheduleOverrideInput,\n ListScheduleOverridesParams,\n ScheduleOverride,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\nimport { normalizeDateParam } from \"../utils/date\";\n\nexport class ScheduleResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async create(input: CreateScheduleInput): Promise<Schedule> {\n const res = await this.http.post<{ schedule: Schedule }>(\"/schedule\", input);\n return res.schedule;\n }\n\n async list(): Promise<Schedule[]> {\n const res = await this.http.get<{ schedules: Schedule[] }>(\"/schedule\");\n return res.schedules;\n }\n\n async addMember(scheduleId: string, input: AddScheduleMemberInput): Promise<ScheduleMember> {\n const res = await this.http.post<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members`,\n input,\n );\n return res.member;\n }\n\n async listMembers(scheduleId: string): Promise<ScheduleMember[]> {\n const res = await this.http.get<{ members: ScheduleMember[] }>(\n `/schedule/${scheduleId}/members`,\n );\n return res.members;\n }\n\n async listMembersSafe(scheduleId: string): Promise<Result<ScheduleMember[]>> {\n try {\n const data = await this.listMembers(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async removeMember(scheduleId: string, userId: string): Promise<ScheduleMember> {\n const res = await this.http.delete<{ member: ScheduleMember }>(\n `/schedule/${scheduleId}/members/${userId}`,\n );\n return res.member;\n }\n\n async getAssignments(\n scheduleId: string,\n params?: GetAssignmentsParams,\n ): Promise<ScheduleAssignment[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.type === \"until\") {\n qs.set(\"type\", \"until\");\n const normalizedDate = normalizeDateParam(params.date);\n qs.set(\"date\", normalizedDate);\n } else if (params.type === \"days\") {\n qs.set(\"type\", \"days\");\n qs.set(\"count\", String(params.count));\n } else {\n if (params.type) {\n qs.set(\"type\", params.type);\n }\n if (params.count !== undefined) {\n qs.set(\"count\", String(params.count));\n }\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/assignments?${qs.toString()}`\n : `/schedule/${scheduleId}/assignments`;\n const res = await this.http.get<{ assignments: ScheduleAssignment[] }>(path);\n return res.assignments;\n }\n\n async getOnCall(scheduleId: string): Promise<BeepsUser> {\n const res = await this.http.get<{ onCall: BeepsUser }>(\n `/schedule/${scheduleId}/on-call`\n );\n return res.onCall;\n }\n\n async getOnCallSafe(scheduleId: string): Promise<Result<BeepsUser>> {\n try {\n const data = await this.getOnCall(scheduleId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createOverride(\n scheduleId: string,\n input: CreateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body = {\n userId: input.userId,\n startAt: normalizeDateParam(input.startAt),\n endAt: normalizeDateParam(input.endAt),\n reason: input.reason,\n };\n const res = await this.http.post<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides`,\n body,\n );\n return res.override;\n }\n\n async listOverrides(\n scheduleId: string,\n params?: ListScheduleOverridesParams,\n ): Promise<ScheduleOverride[]> {\n const qs = new URLSearchParams();\n \n if (params) {\n if (params.startAt) {\n qs.set(\"startAt\", normalizeDateParam(params.startAt));\n }\n if (params.endAt) {\n qs.set(\"endAt\", normalizeDateParam(params.endAt));\n }\n }\n \n const path = qs.toString()\n ? `/schedule/${scheduleId}/overrides?${qs.toString()}`\n : `/schedule/${scheduleId}/overrides`;\n const res = await this.http.get<{ overrides: ScheduleOverride[] }>(path);\n return res.overrides;\n }\n\n async cancelOverride(\n scheduleId: string,\n overrideId: string,\n ): Promise<ScheduleOverride> {\n const res = await this.http.delete<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n );\n return res.override;\n }\n\n async updateOverride(\n scheduleId: string,\n overrideId: string,\n input: UpdateScheduleOverrideInput,\n ): Promise<ScheduleOverride> {\n const body: Record<string, string | undefined> = {};\n \n if (input.startAt !== undefined) {\n body.startAt = normalizeDateParam(input.startAt);\n }\n if (input.endAt !== undefined) {\n body.endAt = normalizeDateParam(input.endAt);\n }\n if (input.reason !== undefined) {\n body.reason = input.reason;\n }\n \n const res = await this.http.patch<{ override: ScheduleOverride }>(\n `/schedule/${scheduleId}/overrides/${overrideId}`,\n body,\n );\n return res.override;\n }\n}\n","import type {\n ContactMethod,\n ListContactMethodsParams,\n DeleteContactMethodParams,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class ContactMethodResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(params: ListContactMethodsParams): Promise<ContactMethod[]> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.get<{ contactMethods: ContactMethod[] }>(\n `/contact-methods?${qs.toString()}`\n );\n return res.contactMethods;\n }\n\n async delete(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<{ success: boolean }> {\n const qs = new URLSearchParams();\n qs.set(\"userId\", params.userId);\n const res = await this.http.delete<{ success: boolean }>(\n `/contact-methods/${id}?${qs.toString()}`\n );\n return res;\n }\n\n async listSafe(\n params: ListContactMethodsParams\n ): Promise<Result<ContactMethod[]>> {\n try {\n const data = await this.list(params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(\n id: string,\n params: DeleteContactMethodParams\n ): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(id, params);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n Alert,\n AlertResponder,\n AgentJob,\n AlertFixContext,\n AcknowledgeAlertInput,\n OnItInput,\n UpdateResponderStatusInput,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AlertResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts\");\n return res.alerts;\n }\n\n async listActive(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/active\");\n return res.alerts;\n }\n\n async listResolved(): Promise<Alert[]> {\n const res = await this.http.get<{ alerts: Alert[] }>(\"/alerts/resolved\");\n return res.alerts;\n }\n\n async get(alertId: string): Promise<Alert> {\n const res = await this.http.get<{ alert: Alert }>(`/alerts/${alertId}`);\n return res.alert;\n }\n\n async listResponders(alertId: string): Promise<AlertResponder[]> {\n const res = await this.http.get<{ responders: AlertResponder[] }>(\n `/alerts/${alertId}/responders`\n );\n return res.responders;\n }\n\n async listAgents(alertId: string): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\n `/alerts/${alertId}/agents`\n );\n return res.jobs;\n }\n\n async getFixContext(alertId: string): Promise<AlertFixContext> {\n const res = await this.http.get<{ fixContext: AlertFixContext }>(\n `/alerts/${alertId}/fix-context`\n );\n return res.fixContext;\n }\n\n async onIt(alertId: string, input?: OnItInput): Promise<AlertResponder> {\n const res = await this.http.post<{ responder: AlertResponder }>(\n `/alerts/${alertId}/on-it`,\n input || {}\n );\n return res.responder;\n }\n\n async updateResponderStatus(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<AlertResponder> {\n const res = await this.http.patch<{ responder: AlertResponder }>(\n `/alerts/${alertId}/responders/${responderId}`,\n input\n );\n return res.responder;\n }\n\n /** @deprecated Use onIt() instead */\n async acknowledge(alertId: string, input?: AcknowledgeAlertInput): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/acknowledge`,\n input || {}\n );\n return res.alert;\n }\n\n async resolve(alertId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/resolve`,\n {}\n );\n return res.alert;\n }\n\n async assign(alertId: string, userId: string): Promise<Alert> {\n const res = await this.http.post<{ alert: Alert }>(\n `/alerts/${alertId}/assign`,\n { userId }\n );\n return res.alert;\n }\n\n async listSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listActiveSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listActive();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listResolvedSafe(): Promise<Result<Alert[]>> {\n try {\n const data = await this.listResolved();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.get(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listRespondersSafe(alertId: string): Promise<Result<AlertResponder[]>> {\n try {\n const data = await this.listResponders(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async listAgentsSafe(alertId: string): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.listAgents(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getFixContextSafe(alertId: string): Promise<Result<AlertFixContext>> {\n try {\n const data = await this.getFixContext(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async onItSafe(alertId: string, input?: OnItInput): Promise<Result<AlertResponder>> {\n try {\n const data = await this.onIt(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateResponderStatusSafe(\n alertId: string,\n responderId: string,\n input: UpdateResponderStatusInput\n ): Promise<Result<AlertResponder>> {\n try {\n const data = await this.updateResponderStatus(alertId, responderId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n /** @deprecated Use onItSafe() instead */\n async acknowledgeSafe(\n alertId: string,\n input?: AcknowledgeAlertInput\n ): Promise<Result<Alert>> {\n try {\n const data = await this.acknowledge(alertId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async resolveSafe(alertId: string): Promise<Result<Alert>> {\n try {\n const data = await this.resolve(alertId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async assignSafe(alertId: string, userId: string): Promise<Result<Alert>> {\n try {\n const data = await this.assign(alertId, userId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type {\n CreateIntegrationInput,\n UpdateIntegrationInput,\n Integration,\n Result,\n} from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class IntegrationResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<Integration[]> {\n const res = await this.http.get<{ integrations: Integration[] }>(\"/integrations\");\n return res.integrations;\n }\n\n async create(input: CreateIntegrationInput): Promise<Integration> {\n const res = await this.http.post<{ integration: Integration }>(\"/integrations\", input);\n return res.integration;\n }\n\n async get(integrationId: string): Promise<Integration> {\n const res = await this.http.get<{ integration: Integration }>(`/integrations/${integrationId}`);\n return res.integration;\n }\n\n async update(integrationId: string, input: UpdateIntegrationInput): Promise<Integration> {\n const res = await this.http.put<{ integration: Integration }>(`/integrations/${integrationId}`, input);\n return res.integration;\n }\n\n async delete(integrationId: string): Promise<{ success: boolean }> {\n const res = await this.http.delete<{ success: boolean }>(`/integrations/${integrationId}`);\n return res;\n }\n\n async listSafe(): Promise<Result<Integration[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async createSafe(input: CreateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.create(input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(integrationId: string): Promise<Result<Integration>> {\n try {\n const data = await this.get(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async updateSafe(integrationId: string, input: UpdateIntegrationInput): Promise<Result<Integration>> {\n try {\n const data = await this.update(integrationId, input);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async deleteSafe(integrationId: string): Promise<Result<{ success: boolean }>> {\n try {\n const data = await this.delete(integrationId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { OrganizationMember, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class MemberResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<OrganizationMember[]> {\n const res = await this.http.get<{ members: OrganizationMember[] }>(\"/members\");\n return res.members;\n }\n\n async listSafe(): Promise<Result<OrganizationMember[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { Webhook, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class WebhookResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async listByRelay(relayId: string): Promise<Webhook[]> {\n const res = await this.http.get<{ webhooks: Webhook[] }>(\n `/relay/${relayId}/webhooks`,\n );\n return res.webhooks;\n }\n\n async listByRelaySafe(relayId: string): Promise<Result<Webhook[]>> {\n try {\n const data = await this.listByRelay(relayId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async create(\n relayId: string,\n description?: string,\n ): Promise<Webhook> {\n const res = await this.http.post<{ webhook: Webhook }>(\n `/relay/${relayId}/webhooks`,\n { description },\n );\n return res.webhook;\n }\n\n async createSafe(\n relayId: string,\n description?: string,\n ): Promise<Result<Webhook>> {\n try {\n const data = await this.create(relayId, description);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async delete(relayId: string, webhookId: string): Promise<void> {\n await this.http.delete(`/relay/${relayId}/webhooks/${webhookId}`);\n }\n\n async deleteSafe(relayId: string, webhookId: string): Promise<Result<void>> {\n try {\n await this.delete(relayId, webhookId);\n return { data: undefined };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { AgentJob, Result } from \"../types\";\nimport { HttpClient } from \"../http\";\n\nexport class AgentJobResource {\n private http: HttpClient;\n\n constructor(http: HttpClient) {\n this.http = http;\n }\n\n async list(): Promise<AgentJob[]> {\n const res = await this.http.get<{ jobs: AgentJob[] }>(\"/agents/jobs\");\n return res.jobs;\n }\n\n async get(jobId: string): Promise<AgentJob> {\n const res = await this.http.get<{ job: AgentJob }>(`/agents/jobs/${jobId}`);\n return res.job;\n }\n\n async getStatus(jobId: string): Promise<Record<string, unknown>> {\n const res = await this.http.get<{ status: Record<string, unknown> }>(\n `/agents/jobs/${jobId}/status`\n );\n return res.status;\n }\n\n async listSafe(): Promise<Result<AgentJob[]>> {\n try {\n const data = await this.list();\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getSafe(jobId: string): Promise<Result<AgentJob>> {\n try {\n const data = await this.get(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n\n async getStatusSafe(jobId: string): Promise<Result<Record<string, unknown>>> {\n try {\n const data = await this.getStatus(jobId);\n return { data };\n } catch (error) {\n return { error: error as Error };\n }\n }\n}\n","import type { BeepsClientConfig } from \"./types\";\nimport { HttpClient } from \"./http\";\nimport { RelayResource } from \"./resources/relay\";\nimport { ScheduleResource } from \"./resources/schedule\";\nimport { ContactMethodResource } from \"./resources/contact-method\";\nimport { AlertResource } from \"./resources/alert\";\nimport { IntegrationResource } from \"./resources/integration\";\nimport { MemberResource } from \"./resources/member\";\nimport { WebhookResource } from \"./resources/webhook\";\nimport { AgentJobResource } from \"./resources/agent-job\";\n\nexport class BeepsClient {\n relay: RelayResource;\n schedule: ScheduleResource;\n contactMethod: ContactMethodResource;\n alert: AlertResource;\n integration: IntegrationResource;\n member: MemberResource;\n webhook: WebhookResource;\n agentJob: AgentJobResource;\n\n constructor(config: BeepsClientConfig) {\n if (!config.apiKey) {\n throw new Error(\"apiKey is required\");\n }\n const http = new HttpClient(config);\n this.relay = new RelayResource(http);\n this.schedule = new ScheduleResource(http);\n this.contactMethod = new ContactMethodResource(http);\n this.alert = new AlertResource(http);\n this.integration = new IntegrationResource(http);\n this.member = new MemberResource(http);\n this.webhook = new WebhookResource(http);\n this.agentJob = new AgentJobResource(http);\n }\n}\n"],"mappings":"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","names":[]}
{
"name": "@beepsdev/sdk",
"version": "0.0.8",
"version": "0.0.9",
"private": false,

@@ -5,0 +5,0 @@ "type": "module",

@@ -43,1 +43,23 @@ # @beepsdev/sdk

const { data, error } = await beeps.relay.createSafe({...});
`ValidationError` includes a human-readable message and may include structured field-level issues on `error.details`:
```ts
import { ValidationError } from "@beepsdev/sdk";
try {
await beeps.relay.rules.create("rly_123", {
name: "Notify on-call engineer",
ruleType: "schedule_notify",
config: {
schduleId: "sch_primary",
},
});
} catch (error) {
if (error instanceof ValidationError) {
console.error(error.message);
console.error(error.details?.issues);
console.error(error.requestId);
}
}
```