@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.
Files changed (154) hide show
  1. package/dist/api.d.ts +296 -0
  2. package/dist/api.d.ts.map +1 -1
  3. package/dist/api.js +44 -2
  4. package/dist/api.js.map +1 -1
  5. package/dist/commands/alert-groups/add-email-group.d.ts +9 -0
  6. package/dist/commands/alert-groups/add-email-group.d.ts.map +1 -0
  7. package/dist/commands/alert-groups/add-email-group.js +33 -0
  8. package/dist/commands/alert-groups/add-email-group.js.map +1 -0
  9. package/dist/commands/alert-groups/add-webhook.d.ts +8 -0
  10. package/dist/commands/alert-groups/add-webhook.d.ts.map +1 -0
  11. package/dist/commands/alert-groups/add-webhook.js +64 -0
  12. package/dist/commands/alert-groups/add-webhook.js.map +1 -0
  13. package/dist/commands/alert-groups/create.d.ts +11 -0
  14. package/dist/commands/alert-groups/create.d.ts.map +1 -0
  15. package/dist/commands/alert-groups/create.js +31 -0
  16. package/dist/commands/alert-groups/create.js.map +1 -0
  17. package/dist/commands/alert-groups/delete.d.ts +5 -0
  18. package/dist/commands/alert-groups/delete.d.ts.map +1 -0
  19. package/dist/commands/alert-groups/delete.js +35 -0
  20. package/dist/commands/alert-groups/delete.js.map +1 -0
  21. package/dist/commands/alert-groups/list.d.ts +5 -0
  22. package/dist/commands/alert-groups/list.d.ts.map +1 -0
  23. package/dist/commands/alert-groups/list.js +35 -0
  24. package/dist/commands/alert-groups/list.js.map +1 -0
  25. package/dist/commands/alert-groups/recipients.d.ts +5 -0
  26. package/dist/commands/alert-groups/recipients.d.ts.map +1 -0
  27. package/dist/commands/alert-groups/recipients.js +62 -0
  28. package/dist/commands/alert-groups/recipients.js.map +1 -0
  29. package/dist/commands/alert-groups/remove-recipient.d.ts +8 -0
  30. package/dist/commands/alert-groups/remove-recipient.d.ts.map +1 -0
  31. package/dist/commands/alert-groups/remove-recipient.js +33 -0
  32. package/dist/commands/alert-groups/remove-recipient.js.map +1 -0
  33. package/dist/commands/alert-groups/resolve.d.ts +6 -0
  34. package/dist/commands/alert-groups/resolve.d.ts.map +1 -0
  35. package/dist/commands/alert-groups/resolve.js +27 -0
  36. package/dist/commands/alert-groups/resolve.js.map +1 -0
  37. package/dist/commands/alert-groups/test.d.ts +3 -0
  38. package/dist/commands/alert-groups/test.d.ts.map +1 -0
  39. package/dist/commands/alert-groups/test.js +24 -0
  40. package/dist/commands/alert-groups/test.js.map +1 -0
  41. package/dist/commands/alert-groups/update.d.ts +12 -0
  42. package/dist/commands/alert-groups/update.d.ts.map +1 -0
  43. package/dist/commands/alert-groups/update.js +46 -0
  44. package/dist/commands/alert-groups/update.js.map +1 -0
  45. package/dist/commands/checks/create.d.ts +25 -1
  46. package/dist/commands/checks/create.d.ts.map +1 -1
  47. package/dist/commands/checks/create.js +141 -88
  48. package/dist/commands/checks/create.js.map +1 -1
  49. package/dist/commands/checks/update.d.ts +8 -2
  50. package/dist/commands/checks/update.d.ts.map +1 -1
  51. package/dist/commands/checks/update.js +101 -19
  52. package/dist/commands/checks/update.js.map +1 -1
  53. package/dist/commands/connections/create.d.ts +14 -0
  54. package/dist/commands/connections/create.d.ts.map +1 -0
  55. package/dist/commands/connections/create.js +52 -0
  56. package/dist/commands/connections/create.js.map +1 -0
  57. package/dist/commands/connections/delete.d.ts +5 -0
  58. package/dist/commands/connections/delete.d.ts.map +1 -0
  59. package/dist/commands/connections/delete.js +35 -0
  60. package/dist/commands/connections/delete.js.map +1 -0
  61. package/dist/commands/connections/resolve.d.ts +9 -0
  62. package/dist/commands/connections/resolve.d.ts.map +1 -0
  63. package/dist/commands/connections/resolve.js +30 -0
  64. package/dist/commands/connections/resolve.js.map +1 -0
  65. package/dist/commands/connections/test.d.ts +3 -0
  66. package/dist/commands/connections/test.d.ts.map +1 -0
  67. package/dist/commands/connections/test.js +28 -0
  68. package/dist/commands/connections/test.js.map +1 -0
  69. package/dist/commands/email-groups/add.d.ts +3 -0
  70. package/dist/commands/email-groups/add.d.ts.map +1 -0
  71. package/dist/commands/email-groups/add.js +23 -0
  72. package/dist/commands/email-groups/add.js.map +1 -0
  73. package/dist/commands/email-groups/create.d.ts +8 -0
  74. package/dist/commands/email-groups/create.d.ts.map +1 -0
  75. package/dist/commands/email-groups/create.js +28 -0
  76. package/dist/commands/email-groups/create.js.map +1 -0
  77. package/dist/commands/email-groups/delete.d.ts +5 -0
  78. package/dist/commands/email-groups/delete.d.ts.map +1 -0
  79. package/dist/commands/email-groups/delete.js +35 -0
  80. package/dist/commands/email-groups/delete.js.map +1 -0
  81. package/dist/commands/email-groups/list.d.ts +5 -0
  82. package/dist/commands/email-groups/list.d.ts.map +1 -0
  83. package/dist/commands/email-groups/list.js +36 -0
  84. package/dist/commands/email-groups/list.js.map +1 -0
  85. package/dist/commands/email-groups/members.d.ts +5 -0
  86. package/dist/commands/email-groups/members.d.ts.map +1 -0
  87. package/dist/commands/email-groups/members.js +42 -0
  88. package/dist/commands/email-groups/members.js.map +1 -0
  89. package/dist/commands/email-groups/remove.d.ts +3 -0
  90. package/dist/commands/email-groups/remove.d.ts.map +1 -0
  91. package/dist/commands/email-groups/remove.js +19 -0
  92. package/dist/commands/email-groups/remove.js.map +1 -0
  93. package/dist/commands/email-groups/resolve.d.ts +6 -0
  94. package/dist/commands/email-groups/resolve.d.ts.map +1 -0
  95. package/dist/commands/email-groups/resolve.js +27 -0
  96. package/dist/commands/email-groups/resolve.js.map +1 -0
  97. package/dist/commands/inbox/ack.d.ts +5 -0
  98. package/dist/commands/inbox/ack.d.ts.map +1 -0
  99. package/dist/commands/inbox/ack.js +17 -0
  100. package/dist/commands/inbox/ack.js.map +1 -0
  101. package/dist/commands/inbox/digest.d.ts +5 -0
  102. package/dist/commands/inbox/digest.d.ts.map +1 -0
  103. package/dist/commands/inbox/digest.js +30 -0
  104. package/dist/commands/inbox/digest.js.map +1 -0
  105. package/dist/commands/inbox/get.d.ts +5 -0
  106. package/dist/commands/inbox/get.d.ts.map +1 -0
  107. package/dist/commands/inbox/get.js +45 -0
  108. package/dist/commands/inbox/get.js.map +1 -0
  109. package/dist/commands/inbox/list.d.ts +9 -0
  110. package/dist/commands/inbox/list.d.ts.map +1 -0
  111. package/dist/commands/inbox/list.js +47 -0
  112. package/dist/commands/inbox/list.js.map +1 -0
  113. package/dist/commands/inbox/resolve.d.ts +7 -0
  114. package/dist/commands/inbox/resolve.d.ts.map +1 -0
  115. package/dist/commands/inbox/resolve.js +17 -0
  116. package/dist/commands/inbox/resolve.js.map +1 -0
  117. package/dist/commands/org/create.d.ts +12 -0
  118. package/dist/commands/org/create.d.ts.map +1 -0
  119. package/dist/commands/org/create.js +33 -0
  120. package/dist/commands/org/create.js.map +1 -0
  121. package/dist/commands/org/list.d.ts +5 -0
  122. package/dist/commands/org/list.d.ts.map +1 -0
  123. package/dist/commands/org/list.js +35 -0
  124. package/dist/commands/org/list.js.map +1 -0
  125. package/dist/commands/receivers/create.d.ts +15 -0
  126. package/dist/commands/receivers/create.d.ts.map +1 -0
  127. package/dist/commands/receivers/create.js +45 -0
  128. package/dist/commands/receivers/create.js.map +1 -0
  129. package/dist/commands/receivers/delete.d.ts +5 -0
  130. package/dist/commands/receivers/delete.d.ts.map +1 -0
  131. package/dist/commands/receivers/delete.js +35 -0
  132. package/dist/commands/receivers/delete.js.map +1 -0
  133. package/dist/commands/receivers/list.d.ts +5 -0
  134. package/dist/commands/receivers/list.d.ts.map +1 -0
  135. package/dist/commands/receivers/list.js +36 -0
  136. package/dist/commands/receivers/list.js.map +1 -0
  137. package/dist/commands/receivers/resolve.d.ts +6 -0
  138. package/dist/commands/receivers/resolve.d.ts.map +1 -0
  139. package/dist/commands/receivers/resolve.js +27 -0
  140. package/dist/commands/receivers/resolve.js.map +1 -0
  141. package/dist/index.js +235 -3
  142. package/dist/index.js.map +1 -1
  143. package/dist/mcp.d.ts.map +1 -1
  144. package/dist/mcp.js +567 -5
  145. package/dist/mcp.js.map +1 -1
  146. package/dist/prompts.d.ts +15 -0
  147. package/dist/prompts.d.ts.map +1 -0
  148. package/dist/prompts.js +25 -0
  149. package/dist/prompts.js.map +1 -0
  150. package/dist/uuid.d.ts +13 -0
  151. package/dist/uuid.d.ts.map +1 -0
  152. package/dist/uuid.js +13 -0
  153. package/dist/uuid.js.map +1 -0
  154. 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,7 @@
1
+ export interface ResolveInboxOptions {
2
+ note?: string;
3
+ outcome?: string;
4
+ }
5
+ /** Resolve an inbox item (incident) by ID. */
6
+ export declare function resolveInboxItem(id: string, opts?: ResolveInboxOptions): Promise<void>;
7
+ //# sourceMappingURL=resolve.d.ts.map
@@ -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,5 @@
1
+ /** List the organizations you belong to; the linked one is marked with `*`. */
2
+ export declare function listOrgs(opts?: {
3
+ format?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=list.d.ts.map
@@ -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,5 @@
1
+ /** Delete a webhook receiver (by name or ID). Prompts for confirmation unless --yes. */
2
+ export declare function deleteReceiver(nameOrId: string, opts?: {
3
+ yes?: boolean;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=delete.d.ts.map
@@ -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,5 @@
1
+ /** List inbound webhook receivers in the linked organization. */
2
+ export declare function listReceivers(opts?: {
3
+ format?: string;
4
+ }): Promise<void>;
5
+ //# sourceMappingURL=list.d.ts.map
@@ -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"}