@alertee/cli 0.3.1 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/api.d.ts +296 -0
- package/dist/api.d.ts.map +1 -1
- package/dist/api.js +44 -2
- package/dist/api.js.map +1 -1
- package/dist/commands/alert-groups/add-email-group.d.ts +9 -0
- package/dist/commands/alert-groups/add-email-group.d.ts.map +1 -0
- package/dist/commands/alert-groups/add-email-group.js +33 -0
- package/dist/commands/alert-groups/add-email-group.js.map +1 -0
- package/dist/commands/alert-groups/add-webhook.d.ts +8 -0
- package/dist/commands/alert-groups/add-webhook.d.ts.map +1 -0
- package/dist/commands/alert-groups/add-webhook.js +64 -0
- package/dist/commands/alert-groups/add-webhook.js.map +1 -0
- package/dist/commands/alert-groups/create.d.ts +11 -0
- package/dist/commands/alert-groups/create.d.ts.map +1 -0
- package/dist/commands/alert-groups/create.js +31 -0
- package/dist/commands/alert-groups/create.js.map +1 -0
- package/dist/commands/alert-groups/delete.d.ts +5 -0
- package/dist/commands/alert-groups/delete.d.ts.map +1 -0
- package/dist/commands/alert-groups/delete.js +35 -0
- package/dist/commands/alert-groups/delete.js.map +1 -0
- package/dist/commands/alert-groups/list.d.ts +5 -0
- package/dist/commands/alert-groups/list.d.ts.map +1 -0
- package/dist/commands/alert-groups/list.js +35 -0
- package/dist/commands/alert-groups/list.js.map +1 -0
- package/dist/commands/alert-groups/recipients.d.ts +5 -0
- package/dist/commands/alert-groups/recipients.d.ts.map +1 -0
- package/dist/commands/alert-groups/recipients.js +62 -0
- package/dist/commands/alert-groups/recipients.js.map +1 -0
- package/dist/commands/alert-groups/remove-recipient.d.ts +8 -0
- package/dist/commands/alert-groups/remove-recipient.d.ts.map +1 -0
- package/dist/commands/alert-groups/remove-recipient.js +33 -0
- package/dist/commands/alert-groups/remove-recipient.js.map +1 -0
- package/dist/commands/alert-groups/resolve.d.ts +6 -0
- package/dist/commands/alert-groups/resolve.d.ts.map +1 -0
- package/dist/commands/alert-groups/resolve.js +27 -0
- package/dist/commands/alert-groups/resolve.js.map +1 -0
- package/dist/commands/alert-groups/test.d.ts +3 -0
- package/dist/commands/alert-groups/test.d.ts.map +1 -0
- package/dist/commands/alert-groups/test.js +24 -0
- package/dist/commands/alert-groups/test.js.map +1 -0
- package/dist/commands/alert-groups/update.d.ts +12 -0
- package/dist/commands/alert-groups/update.d.ts.map +1 -0
- package/dist/commands/alert-groups/update.js +46 -0
- package/dist/commands/alert-groups/update.js.map +1 -0
- package/dist/commands/checks/create.d.ts +25 -1
- package/dist/commands/checks/create.d.ts.map +1 -1
- package/dist/commands/checks/create.js +141 -88
- package/dist/commands/checks/create.js.map +1 -1
- package/dist/commands/checks/update.d.ts +8 -2
- package/dist/commands/checks/update.d.ts.map +1 -1
- package/dist/commands/checks/update.js +101 -19
- package/dist/commands/checks/update.js.map +1 -1
- package/dist/commands/connections/create.d.ts +14 -0
- package/dist/commands/connections/create.d.ts.map +1 -0
- package/dist/commands/connections/create.js +52 -0
- package/dist/commands/connections/create.js.map +1 -0
- package/dist/commands/connections/delete.d.ts +5 -0
- package/dist/commands/connections/delete.d.ts.map +1 -0
- package/dist/commands/connections/delete.js +35 -0
- package/dist/commands/connections/delete.js.map +1 -0
- package/dist/commands/connections/resolve.d.ts +9 -0
- package/dist/commands/connections/resolve.d.ts.map +1 -0
- package/dist/commands/connections/resolve.js +30 -0
- package/dist/commands/connections/resolve.js.map +1 -0
- package/dist/commands/connections/test.d.ts +3 -0
- package/dist/commands/connections/test.d.ts.map +1 -0
- package/dist/commands/connections/test.js +28 -0
- package/dist/commands/connections/test.js.map +1 -0
- package/dist/commands/email-groups/add.d.ts +3 -0
- package/dist/commands/email-groups/add.d.ts.map +1 -0
- package/dist/commands/email-groups/add.js +23 -0
- package/dist/commands/email-groups/add.js.map +1 -0
- package/dist/commands/email-groups/create.d.ts +8 -0
- package/dist/commands/email-groups/create.d.ts.map +1 -0
- package/dist/commands/email-groups/create.js +28 -0
- package/dist/commands/email-groups/create.js.map +1 -0
- package/dist/commands/email-groups/delete.d.ts +5 -0
- package/dist/commands/email-groups/delete.d.ts.map +1 -0
- package/dist/commands/email-groups/delete.js +35 -0
- package/dist/commands/email-groups/delete.js.map +1 -0
- package/dist/commands/email-groups/list.d.ts +5 -0
- package/dist/commands/email-groups/list.d.ts.map +1 -0
- package/dist/commands/email-groups/list.js +36 -0
- package/dist/commands/email-groups/list.js.map +1 -0
- package/dist/commands/email-groups/members.d.ts +5 -0
- package/dist/commands/email-groups/members.d.ts.map +1 -0
- package/dist/commands/email-groups/members.js +42 -0
- package/dist/commands/email-groups/members.js.map +1 -0
- package/dist/commands/email-groups/remove.d.ts +3 -0
- package/dist/commands/email-groups/remove.d.ts.map +1 -0
- package/dist/commands/email-groups/remove.js +19 -0
- package/dist/commands/email-groups/remove.js.map +1 -0
- package/dist/commands/email-groups/resolve.d.ts +6 -0
- package/dist/commands/email-groups/resolve.d.ts.map +1 -0
- package/dist/commands/email-groups/resolve.js +27 -0
- package/dist/commands/email-groups/resolve.js.map +1 -0
- package/dist/commands/inbox/ack.d.ts +5 -0
- package/dist/commands/inbox/ack.d.ts.map +1 -0
- package/dist/commands/inbox/ack.js +17 -0
- package/dist/commands/inbox/ack.js.map +1 -0
- package/dist/commands/inbox/digest.d.ts +5 -0
- package/dist/commands/inbox/digest.d.ts.map +1 -0
- package/dist/commands/inbox/digest.js +30 -0
- package/dist/commands/inbox/digest.js.map +1 -0
- package/dist/commands/inbox/get.d.ts +5 -0
- package/dist/commands/inbox/get.d.ts.map +1 -0
- package/dist/commands/inbox/get.js +45 -0
- package/dist/commands/inbox/get.js.map +1 -0
- package/dist/commands/inbox/list.d.ts +9 -0
- package/dist/commands/inbox/list.d.ts.map +1 -0
- package/dist/commands/inbox/list.js +47 -0
- package/dist/commands/inbox/list.js.map +1 -0
- package/dist/commands/inbox/resolve.d.ts +7 -0
- package/dist/commands/inbox/resolve.d.ts.map +1 -0
- package/dist/commands/inbox/resolve.js +17 -0
- package/dist/commands/inbox/resolve.js.map +1 -0
- package/dist/commands/org/create.d.ts +12 -0
- package/dist/commands/org/create.d.ts.map +1 -0
- package/dist/commands/org/create.js +33 -0
- package/dist/commands/org/create.js.map +1 -0
- package/dist/commands/org/list.d.ts +5 -0
- package/dist/commands/org/list.d.ts.map +1 -0
- package/dist/commands/org/list.js +35 -0
- package/dist/commands/org/list.js.map +1 -0
- package/dist/commands/receivers/create.d.ts +15 -0
- package/dist/commands/receivers/create.d.ts.map +1 -0
- package/dist/commands/receivers/create.js +45 -0
- package/dist/commands/receivers/create.js.map +1 -0
- package/dist/commands/receivers/delete.d.ts +5 -0
- package/dist/commands/receivers/delete.d.ts.map +1 -0
- package/dist/commands/receivers/delete.js +35 -0
- package/dist/commands/receivers/delete.js.map +1 -0
- package/dist/commands/receivers/list.d.ts +5 -0
- package/dist/commands/receivers/list.d.ts.map +1 -0
- package/dist/commands/receivers/list.js +36 -0
- package/dist/commands/receivers/list.js.map +1 -0
- package/dist/commands/receivers/resolve.d.ts +6 -0
- package/dist/commands/receivers/resolve.d.ts.map +1 -0
- package/dist/commands/receivers/resolve.js +27 -0
- package/dist/commands/receivers/resolve.js.map +1 -0
- package/dist/index.js +235 -3
- package/dist/index.js.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +567 -5
- package/dist/mcp.js.map +1 -1
- package/dist/prompts.d.ts +15 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +25 -0
- package/dist/prompts.js.map +1 -0
- package/dist/uuid.d.ts +13 -0
- package/dist/uuid.d.ts.map +1 -0
- package/dist/uuid.js +13 -0
- package/dist/uuid.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface InboxListOptions {
|
|
2
|
+
status?: string[];
|
|
3
|
+
severity?: string[];
|
|
4
|
+
limit?: string;
|
|
5
|
+
format?: string;
|
|
6
|
+
}
|
|
7
|
+
/** List inbox items (incidents) in the linked organization. */
|
|
8
|
+
export declare function listInbox(opts?: InboxListOptions): Promise<void>;
|
|
9
|
+
//# sourceMappingURL=list.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/inbox/list.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,MAAM,EAAE,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,+DAA+D;AAC/D,wBAAsB,SAAS,CAAC,IAAI,GAAE,gBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD1E"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { createClient } from '../../api.js';
|
|
2
|
+
import { requireConfig, requireOrg, resolveOrgId } from '../../config.js';
|
|
3
|
+
import { printJson, resolveFormat } from '../../output.js';
|
|
4
|
+
/** List inbox items (incidents) in the linked organization. */
|
|
5
|
+
export async function listInbox(opts = {}) {
|
|
6
|
+
const format = resolveFormat(opts.format);
|
|
7
|
+
const config = requireConfig();
|
|
8
|
+
requireOrg(config);
|
|
9
|
+
const orgId = resolveOrgId(config);
|
|
10
|
+
if (!orgId) {
|
|
11
|
+
console.error('No organization linked. Run: alertee link (or set ALERTEE_ORG)');
|
|
12
|
+
process.exit(1);
|
|
13
|
+
}
|
|
14
|
+
const client = createClient(config);
|
|
15
|
+
const limit = opts.limit ? parseInt(opts.limit, 10) : 50;
|
|
16
|
+
let issues;
|
|
17
|
+
try {
|
|
18
|
+
issues = (await client.listIssues({
|
|
19
|
+
organizationId: orgId,
|
|
20
|
+
status: opts.status,
|
|
21
|
+
severity: opts.severity,
|
|
22
|
+
limit,
|
|
23
|
+
offset: 0,
|
|
24
|
+
})).issues;
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
console.error('Failed to list inbox:', err.message);
|
|
28
|
+
process.exit(1);
|
|
29
|
+
}
|
|
30
|
+
if (format === 'json') {
|
|
31
|
+
printJson(issues);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
if (issues.length === 0) {
|
|
35
|
+
console.log('Inbox is empty (no items match).');
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
const titleWidth = Math.min(50, Math.max(5, ...issues.map((i) => i.title.length)));
|
|
39
|
+
const header = `${'SEVERITY'.padEnd(9)} ${'STATUS'.padEnd(12)} ${'TITLE'.padEnd(titleWidth)} ID`;
|
|
40
|
+
console.log(header);
|
|
41
|
+
console.log('─'.repeat(header.length));
|
|
42
|
+
for (const i of issues) {
|
|
43
|
+
const title = i.title.length > titleWidth ? i.title.slice(0, titleWidth - 1) + '…' : i.title;
|
|
44
|
+
console.log(`${i.severity.padEnd(9)} ${i.status.padEnd(12)} ${title.padEnd(titleWidth)} ${i.id}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/inbox/list.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/inbox/resolve.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,8CAA8C;AAC9C,wBAAsB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,GAAE,mBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAYhG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { createClient } from '../../api.js';
|
|
2
|
+
import { requireConfig, requireOrg } from '../../config.js';
|
|
3
|
+
/** Resolve an inbox item (incident) by ID. */
|
|
4
|
+
export async function resolveInboxItem(id, opts = {}) {
|
|
5
|
+
const config = requireConfig();
|
|
6
|
+
requireOrg(config);
|
|
7
|
+
const client = createClient(config);
|
|
8
|
+
try {
|
|
9
|
+
await client.resolveIssue(id, { note: opts.note, outcome: opts.outcome });
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
console.error('Failed to resolve:', err.message);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
console.log(`Resolved ${id}.`);
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/inbox/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAO3D,8CAA8C;AAC9C,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,EAAU,EAAE,OAA4B,EAAE;IAC/E,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,UAAU,CAAC,MAAM,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;IAC3E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,CAAA;AAChC,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export interface CreateOrgOptions {
|
|
2
|
+
slug?: string;
|
|
3
|
+
/** Auto-link to the new org afterwards (default true). */
|
|
4
|
+
link?: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Create a new organization and (by default) link to it, so the next
|
|
8
|
+
* `connections create` / `checks create` target it. The creating user becomes
|
|
9
|
+
* the org owner. Name can be passed as an argument or prompted for.
|
|
10
|
+
*/
|
|
11
|
+
export declare function createOrg(name: string | undefined, opts?: CreateOrgOptions): Promise<void>;
|
|
12
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/org/create.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,0DAA0D;IAC1D,IAAI,CAAC,EAAE,OAAO,CAAA;CACf;AAED;;;;GAIG;AACH,wBAAsB,SAAS,CAC7B,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,IAAI,GAAE,gBAAqB,GAC1B,OAAO,CAAC,IAAI,CAAC,CA8Bf"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { input } from '@inquirer/prompts';
|
|
2
|
+
import { createClient } from '../../api.js';
|
|
3
|
+
import { loadConfig, requireConfig, saveConfig } from '../../config.js';
|
|
4
|
+
import { requireValue } from '../../prompts.js';
|
|
5
|
+
/**
|
|
6
|
+
* Create a new organization and (by default) link to it, so the next
|
|
7
|
+
* `connections create` / `checks create` target it. The creating user becomes
|
|
8
|
+
* the org owner. Name can be passed as an argument or prompted for.
|
|
9
|
+
*/
|
|
10
|
+
export async function createOrg(name, opts = {}) {
|
|
11
|
+
const config = requireConfig();
|
|
12
|
+
const client = createClient(config);
|
|
13
|
+
const resolvedName = await requireValue(name, () => input({
|
|
14
|
+
message: 'Organization name:',
|
|
15
|
+
validate: (v) => v.trim().length > 0 || 'Required',
|
|
16
|
+
}), 'Organization name required. Pass it as an argument: alertee org create "<name>"');
|
|
17
|
+
let org;
|
|
18
|
+
try {
|
|
19
|
+
const resp = await client.createOrganization({ name: resolvedName, slug: opts.slug });
|
|
20
|
+
org = resp.organization;
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
console.error('Failed to create organization:', err.message);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
console.log(`Created organization "${org.name}" (slug: ${org.slug}).`);
|
|
27
|
+
if (opts.link !== false) {
|
|
28
|
+
const existing = loadConfig();
|
|
29
|
+
saveConfig({ ...config, ...existing, organizationId: org.id, organizationName: org.name });
|
|
30
|
+
console.log(`Linked to "${org.name}". Next: alertee connections create`);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/org/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AACvE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAQ/C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAwB,EACxB,OAAyB,EAAE;IAE3B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnC,MAAM,YAAY,GAAG,MAAM,YAAY,CACrC,IAAI,EACJ,GAAG,EAAE,CACH,KAAK,CAAC;QACJ,OAAO,EAAE,oBAAoB;QAC7B,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU;KAC3D,CAAC,EACJ,iFAAiF,CAClF,CAAA;IAED,IAAI,GAA0E,CAAA;IAC9E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACrF,GAAG,GAAG,IAAI,CAAC,YAAY,CAAA;IACzB,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QACvE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,CAAC,IAAI,YAAY,GAAG,CAAC,IAAI,IAAI,CAAC,CAAA;IAEtE,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,QAAQ,GAAG,UAAU,EAAE,CAAA;QAC7B,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,QAAQ,EAAE,cAAc,EAAE,GAAG,CAAC,EAAE,EAAE,gBAAgB,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;QAC1F,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,CAAC,IAAI,qCAAqC,CAAC,CAAA;IAC1E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":"AAIA,+EAA+E;AAC/E,wBAAsB,QAAQ,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC5E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { createClient } from '../../api.js';
|
|
2
|
+
import { requireConfig } from '../../config.js';
|
|
3
|
+
import { printJson, resolveFormat } from '../../output.js';
|
|
4
|
+
/** List the organizations you belong to; the linked one is marked with `*`. */
|
|
5
|
+
export async function listOrgs(opts = {}) {
|
|
6
|
+
const format = resolveFormat(opts.format);
|
|
7
|
+
const config = requireConfig();
|
|
8
|
+
const client = createClient(config);
|
|
9
|
+
let orgs;
|
|
10
|
+
try {
|
|
11
|
+
orgs = (await client.listOrganizations()).organizations;
|
|
12
|
+
}
|
|
13
|
+
catch (err) {
|
|
14
|
+
console.error('Failed to list organizations:', err.message);
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
if (format === 'json') {
|
|
18
|
+
printJson(orgs);
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
if (orgs.length === 0) {
|
|
22
|
+
console.log('No organizations found. Create one: alertee org create "<name>"');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const linkedId = config.organizationId;
|
|
26
|
+
const nameWidth = Math.max(4, ...orgs.map((o) => o.organization.name.length));
|
|
27
|
+
const header = ` ${'NAME'.padEnd(nameWidth)} ROLE ID`;
|
|
28
|
+
console.log(header);
|
|
29
|
+
console.log('─'.repeat(header.length));
|
|
30
|
+
for (const o of orgs) {
|
|
31
|
+
const marker = o.organization.id === linkedId ? '*' : ' ';
|
|
32
|
+
console.log(`${marker} ${o.organization.name.padEnd(nameWidth)} ${(o.role ?? '—').padEnd(7)} ${o.organization.id}`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/org/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAC/C,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE1D,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAC,OAA4B,EAAE;IAC3D,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnC,IAAI,IAA2E,CAAA;IAC/E,IAAI,CAAC;QACH,IAAI,GAAG,CAAC,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC,CAAC,aAAa,CAAA;IACzD,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,IAAI,CAAC,CAAA;QACf,OAAM;IACR,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAA;QAC9E,OAAM;IACR,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAA;IACtC,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IAC7E,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,eAAe,CAAA;IAC3D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACtC,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,CAAC,CAAC,YAAY,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACzD,OAAO,CAAC,GAAG,CACT,GAAG,MAAM,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,EAAE,EAAE,CACzG,CAAA;IACH,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface CreateReceiverOptions {
|
|
2
|
+
name?: string;
|
|
3
|
+
severity?: string;
|
|
4
|
+
titleTemplate?: string;
|
|
5
|
+
descriptionTemplate?: string;
|
|
6
|
+
/** Alert groups (name or ID) to notify when this receiver fires. */
|
|
7
|
+
alertGroup?: string[];
|
|
8
|
+
autoResolve?: boolean;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Create an inbound webhook receiver. External tools POST to the returned URL to
|
|
12
|
+
* open an inbox incident. Prints the webhook URL — copy it into the other tool.
|
|
13
|
+
*/
|
|
14
|
+
export declare function createReceiver(opts?: CreateReceiverOptions): Promise<void>;
|
|
15
|
+
//# sourceMappingURL=create.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/commands/receivers/create.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,qBAAqB;IACpC,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,mBAAmB,CAAC,EAAE,MAAM,CAAA;IAC5B,oEAAoE;IACpE,UAAU,CAAC,EAAE,MAAM,EAAE,CAAA;IACrB,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED;;;GAGG;AACH,wBAAsB,cAAc,CAAC,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,IAAI,CAAC,CAyCpF"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { input } from '@inquirer/prompts';
|
|
2
|
+
import { createClient } from '../../api.js';
|
|
3
|
+
import { requireConfig, requireOrg } from '../../config.js';
|
|
4
|
+
import { requireValue } from '../../prompts.js';
|
|
5
|
+
import { resolveAlertGroupId } from '../alert-groups/resolve.js';
|
|
6
|
+
const VALID_SEVERITIES = ['info', 'warning', 'error', 'critical'];
|
|
7
|
+
/**
|
|
8
|
+
* Create an inbound webhook receiver. External tools POST to the returned URL to
|
|
9
|
+
* open an inbox incident. Prints the webhook URL — copy it into the other tool.
|
|
10
|
+
*/
|
|
11
|
+
export async function createReceiver(opts = {}) {
|
|
12
|
+
const config = requireConfig();
|
|
13
|
+
requireOrg(config);
|
|
14
|
+
const client = createClient(config);
|
|
15
|
+
const name = await requireValue(opts.name, () => input({ message: 'Receiver name:', validate: (v) => v.trim().length > 0 || 'Required' }), 'Receiver name required. Pass --name.');
|
|
16
|
+
const severity = (opts.severity ?? 'warning').toLowerCase();
|
|
17
|
+
if (!VALID_SEVERITIES.includes(severity)) {
|
|
18
|
+
console.error(`Invalid --severity "${severity}". One of: ${VALID_SEVERITIES.join(', ')}.`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
const alertGroupIds = [];
|
|
22
|
+
for (const g of opts.alertGroup ?? []) {
|
|
23
|
+
alertGroupIds.push(await resolveAlertGroupId(client, g));
|
|
24
|
+
}
|
|
25
|
+
let result;
|
|
26
|
+
try {
|
|
27
|
+
result = await client.createWebhookReceiver({
|
|
28
|
+
name,
|
|
29
|
+
severity,
|
|
30
|
+
titleTemplate: opts.titleTemplate ?? '',
|
|
31
|
+
descriptionTemplate: opts.descriptionTemplate ?? '',
|
|
32
|
+
autoResolveOnRecovery: opts.autoResolve ?? false,
|
|
33
|
+
alertGroupIds: alertGroupIds.length > 0 ? alertGroupIds : undefined,
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error('Failed to create receiver:', err.message);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
console.log(`Created webhook receiver "${result.receiver.name}" (${result.receiver.id}).`);
|
|
41
|
+
console.log(`\nPOST incidents to this URL:\n ${result.webhookUrl}\n`);
|
|
42
|
+
console.log('Example: curl -X POST <url> -H "Content-Type: application/json" \\');
|
|
43
|
+
console.log(' -d \'{"title":"Disk almost full","severity":"critical","dedup_key":"disk-1"}\'');
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/receivers/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AACzC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAEhE,MAAM,gBAAgB,GAAG,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,CAAC,CAAA;AAYjE;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAA8B,EAAE;IACnE,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,UAAU,CAAC,MAAM,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnC,MAAM,IAAI,GAAG,MAAM,YAAY,CAC7B,IAAI,CAAC,IAAI,EACT,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,EAAE,CAAC,EACtG,sCAAsC,CACvC,CAAA;IAED,MAAM,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,SAAS,CAAC,CAAC,WAAW,EAAE,CAAA;IAC3D,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzC,OAAO,CAAC,KAAK,CAAC,uBAAuB,QAAQ,cAAc,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC1F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,aAAa,GAAa,EAAE,CAAA;IAClC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,EAAE,EAAE,CAAC;QACtC,aAAa,CAAC,IAAI,CAAC,MAAM,mBAAmB,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAA;IAC1D,CAAC;IAED,IAAI,MAAgE,CAAA;IACpE,IAAI,CAAC;QACH,MAAM,GAAG,MAAM,MAAM,CAAC,qBAAqB,CAAC;YAC1C,IAAI;YACJ,QAAQ;YACR,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,EAAE;YACvC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB,IAAI,EAAE;YACnD,qBAAqB,EAAE,IAAI,CAAC,WAAW,IAAI,KAAK;YAChD,aAAa,EAAE,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;SACpE,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,6BAA6B,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,MAAM,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAC1F,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,UAAU,IAAI,CAAC,CAAA;IACtE,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAA;IACjF,OAAO,CAAC,GAAG,CAAC,kFAAkF,CAAC,CAAA;AACjG,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.d.ts","sourceRoot":"","sources":["../../../src/commands/receivers/delete.ts"],"names":[],"mappings":"AAMA,wFAAwF;AACxF,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE;IAAE,GAAG,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3B,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { confirm } from '@inquirer/prompts';
|
|
2
|
+
import { createClient } from '../../api.js';
|
|
3
|
+
import { requireConfig, requireOrg } from '../../config.js';
|
|
4
|
+
import { isInteractive } from '../../prompts.js';
|
|
5
|
+
import { resolveReceiverId } from './resolve.js';
|
|
6
|
+
/** Delete a webhook receiver (by name or ID). Prompts for confirmation unless --yes. */
|
|
7
|
+
export async function deleteReceiver(nameOrId, opts = {}) {
|
|
8
|
+
const config = requireConfig();
|
|
9
|
+
requireOrg(config);
|
|
10
|
+
const client = createClient(config);
|
|
11
|
+
const id = await resolveReceiverId(client, nameOrId);
|
|
12
|
+
if (!opts.yes) {
|
|
13
|
+
if (!isInteractive()) {
|
|
14
|
+
console.error('Refusing to delete without confirmation. Pass --yes.');
|
|
15
|
+
process.exit(1);
|
|
16
|
+
}
|
|
17
|
+
const ok = await confirm({
|
|
18
|
+
message: `Delete receiver "${nameOrId}"? Its inbound URL stops working.`,
|
|
19
|
+
default: false,
|
|
20
|
+
});
|
|
21
|
+
if (!ok) {
|
|
22
|
+
console.log('Aborted.');
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
try {
|
|
27
|
+
await client.deleteWebhookReceiver(id);
|
|
28
|
+
}
|
|
29
|
+
catch (err) {
|
|
30
|
+
console.error('Failed to delete receiver:', err.message);
|
|
31
|
+
process.exit(1);
|
|
32
|
+
}
|
|
33
|
+
console.log(`Deleted receiver ${id}.`);
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=delete.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delete.js","sourceRoot":"","sources":["../../../src/commands/receivers/delete.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAA;AAEhD,wFAAwF;AACxF,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,QAAgB,EAChB,OAA0B,EAAE;IAE5B,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,UAAU,CAAC,MAAM,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IACnC,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAA;IAEpD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;QACd,IAAI,CAAC,aAAa,EAAE,EAAE,CAAC;YACrB,OAAO,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAA;YACrE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACjB,CAAC;QACD,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC;YACvB,OAAO,EAAE,oBAAoB,QAAQ,mCAAmC;YACxE,OAAO,EAAE,KAAK;SACf,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;YACvB,OAAM;QACR,CAAC;IACH,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAA;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,4BAA4B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QACnE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/commands/receivers/list.ts"],"names":[],"mappings":"AAIA,iEAAiE;AACjE,wBAAsB,aAAa,CAAC,IAAI,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAiCjF"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { createClient } from '../../api.js';
|
|
2
|
+
import { requireConfig, requireOrg } from '../../config.js';
|
|
3
|
+
import { printJson, resolveFormat } from '../../output.js';
|
|
4
|
+
/** List inbound webhook receivers in the linked organization. */
|
|
5
|
+
export async function listReceivers(opts = {}) {
|
|
6
|
+
const format = resolveFormat(opts.format);
|
|
7
|
+
const config = requireConfig();
|
|
8
|
+
requireOrg(config);
|
|
9
|
+
const client = createClient(config);
|
|
10
|
+
let receivers;
|
|
11
|
+
try {
|
|
12
|
+
receivers = (await client.listWebhookReceivers()).receivers;
|
|
13
|
+
}
|
|
14
|
+
catch (err) {
|
|
15
|
+
console.error('Failed to list receivers:', err.message);
|
|
16
|
+
process.exit(1);
|
|
17
|
+
}
|
|
18
|
+
if (format === 'json') {
|
|
19
|
+
printJson(receivers);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
if (receivers.length === 0) {
|
|
23
|
+
console.log('No webhook receivers. Create one: alertee receivers create --name "<name>"');
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
const nameWidth = Math.max(4, ...receivers.map((r) => r.name.length));
|
|
27
|
+
const header = ` ${'NAME'.padEnd(nameWidth)} SEVERITY ID`;
|
|
28
|
+
console.log(header);
|
|
29
|
+
console.log('─'.repeat(header.length));
|
|
30
|
+
for (const r of receivers) {
|
|
31
|
+
const marker = r.enabled ? ' ' : '✗';
|
|
32
|
+
console.log(`${marker} ${r.name.padEnd(nameWidth)} ${r.severity.padEnd(9)} ${r.id}`);
|
|
33
|
+
}
|
|
34
|
+
console.log('\n✗ = disabled. The inbound URL is shown when you create a receiver.');
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/receivers/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC3D,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE1D,iEAAiE;AACjE,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAA4B,EAAE;IAChE,MAAM,MAAM,GAAG,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,aAAa,EAAE,CAAA;IAC9B,UAAU,CAAC,MAAM,CAAC,CAAA;IAClB,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAA;IAEnC,IAAI,SAA+E,CAAA;IACnF,IAAI,CAAC;QACH,SAAS,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAA;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,SAAS,CAAC,SAAS,CAAC,CAAA;QACpB,OAAM;IACR,CAAC;IAED,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAA;QACzF,OAAM;IACR,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACrE,MAAM,MAAM,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,iBAAiB,CAAA;IAC7D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IACnB,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAA;IACtC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;QACpC,OAAO,CAAC,GAAG,CAAC,GAAG,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;IACxF,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAA;AACrF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { createClient } from '../../api.js';
|
|
2
|
+
type Client = ReturnType<typeof createClient>;
|
|
3
|
+
/** Resolve a webhook receiver argument (UUID or case-insensitive name) to its ID. */
|
|
4
|
+
export declare function resolveReceiverId(client: Client, nameOrId: string): Promise<string>;
|
|
5
|
+
export {};
|
|
6
|
+
//# sourceMappingURL=resolve.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.d.ts","sourceRoot":"","sources":["../../../src/commands/receivers/resolve.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAEhD,KAAK,MAAM,GAAG,UAAU,CAAC,OAAO,YAAY,CAAC,CAAA;AAK7C,qFAAqF;AACrF,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAyBzF"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
const UUID_RE = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
2
|
+
/** Resolve a webhook receiver argument (UUID or case-insensitive name) to its ID. */
|
|
3
|
+
export async function resolveReceiverId(client, nameOrId) {
|
|
4
|
+
if (UUID_RE.test(nameOrId.trim())) {
|
|
5
|
+
return nameOrId.trim();
|
|
6
|
+
}
|
|
7
|
+
let receivers;
|
|
8
|
+
try {
|
|
9
|
+
receivers = (await client.listWebhookReceivers()).receivers;
|
|
10
|
+
}
|
|
11
|
+
catch (err) {
|
|
12
|
+
console.error('Failed to list receivers:', err.message);
|
|
13
|
+
process.exit(1);
|
|
14
|
+
}
|
|
15
|
+
const needle = nameOrId.trim().toLowerCase();
|
|
16
|
+
const matches = receivers.filter((r) => r.name.toLowerCase() === needle);
|
|
17
|
+
if (matches.length === 0) {
|
|
18
|
+
console.error(`No webhook receiver named "${nameOrId}". Run \`alertee receivers list\`.`);
|
|
19
|
+
process.exit(1);
|
|
20
|
+
}
|
|
21
|
+
if (matches.length > 1) {
|
|
22
|
+
console.error(`"${nameOrId}" matches ${matches.length} receivers; pass the ID instead.`);
|
|
23
|
+
process.exit(1);
|
|
24
|
+
}
|
|
25
|
+
return matches[0].id;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=resolve.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"resolve.js","sourceRoot":"","sources":["../../../src/commands/receivers/resolve.ts"],"names":[],"mappings":"AAIA,MAAM,OAAO,GACX,iEAAiE,CAAA;AAEnE,qFAAqF;AACrF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc,EAAE,QAAgB;IACtE,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAClC,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAA;IACxB,CAAC;IAED,IAAI,SAA+E,CAAA;IACnF,IAAI,CAAC;QACH,SAAS,GAAG,CAAC,MAAM,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,SAAS,CAAA;IAC7D,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAG,GAAa,CAAC,OAAO,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;IAExE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,8BAA8B,QAAQ,oCAAoC,CAAC,CAAA;QACzF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,IAAI,QAAQ,aAAa,OAAO,CAAC,MAAM,kCAAkC,CAAC,CAAA;QACxF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;IACjB,CAAC;IACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;AACtB,CAAC"}
|