@antasphere/chassis-cli 1.0.2 → 1.2.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.
@@ -0,0 +1,385 @@
1
+ import { PlatformApiError } from '@antasphere/chassis-sdk';
2
+ import { CliApiRefusal, CliUsageError, drainPages, printJson, table } from '../context.js';
3
+ /**
4
+ * The server's webhook refusals as sentences. Returns the line, or null when
5
+ * the error is not one of them (the runner's generic handling is then the
6
+ * honest answer).
7
+ */
8
+ export function explainWebhookRefusal(e, lookup, identity) {
9
+ switch (e.code) {
10
+ case 'forbidden':
11
+ return e.status === 403 ? 'Only an owner or an admin manages webhooks.' : null;
12
+ case 'guest_forbidden':
13
+ return 'You are a guest of this workspace, and guests do not manage its webhooks.';
14
+ case 'not_found':
15
+ if (lookup === 'catalog')
16
+ return null;
17
+ return lookup === 'delivery' ? 'No such delivery.' : 'No such webhook in this workspace.';
18
+ case 'url_refused':
19
+ case 'demo_session':
20
+ return e.message;
21
+ case 'unknown_event':
22
+ return `${e.message}. The exact types are in \`webhooks events\`; a family is its first word plus \`.*\`.`;
23
+ case 'unknown_subject':
24
+ return `${e.message}. The subject keys are in \`webhooks events\`.`;
25
+ case 'plan_required': {
26
+ const url = e.details?.upgradeUrl;
27
+ return typeof url === 'string' && url ? `${e.message} — upgrade the plan at ${url}` : e.message;
28
+ }
29
+ case 'insufficient_scope':
30
+ case 'endpoint_not_allowed':
31
+ // The catalog is a read: a key refused there lacks the READ scope, and
32
+ // the server's own sentence names it.
33
+ if (lookup === 'catalog')
34
+ return null;
35
+ return identity.webhooksScope
36
+ ? `This key cannot manage webhooks: create one with the ${identity.webhooksScope} scope on the API keys page.`
37
+ : `${identity.displayName} opens webhooks to no API key: manage them signed in, in the dashboard.`;
38
+ default:
39
+ return null;
40
+ }
41
+ }
42
+ /** Run a webhook call, turning the known refusals into sentences. */
43
+ async function explained(identity, lookup, run) {
44
+ try {
45
+ return await run();
46
+ }
47
+ catch (e) {
48
+ if (e instanceof PlatformApiError) {
49
+ const line = explainWebhookRefusal(e, lookup, identity);
50
+ if (line)
51
+ throw new CliApiRefusal(line, e.status);
52
+ }
53
+ throw e;
54
+ }
55
+ }
56
+ /** Every endpoint of the workspace, page after page. */
57
+ async function allWebhooks(client) {
58
+ const first = await client.webhooks();
59
+ return drainPages({ rows: first.webhooks, nextCursor: first.nextCursor }, async (cursor) => {
60
+ const page = await client.webhooks({ cursor });
61
+ return { rows: page.webhooks, nextCursor: page.nextCursor };
62
+ });
63
+ }
64
+ const collect = (value, previous) => [...previous, value];
65
+ /**
66
+ * `--filter subject=id`, repeatable: several on the same subject OR together
67
+ * (the ids accumulate under one key), different subjects AND.
68
+ */
69
+ export function parseWebhookFilters(values) {
70
+ const filters = {};
71
+ for (const value of values) {
72
+ const at = value.indexOf('=');
73
+ const subject = at > 0 ? value.slice(0, at).trim() : '';
74
+ const id = at > 0 ? value.slice(at + 1).trim() : '';
75
+ if (!subject || !id) {
76
+ throw new CliUsageError(`--filter takes <subject>=<id> (e.g. thing=<id>), not "${value}".`);
77
+ }
78
+ const ids = (filters[subject] ??= []);
79
+ if (!ids.includes(id))
80
+ ids.push(id);
81
+ }
82
+ return filters;
83
+ }
84
+ const DELIVERY_STATUSES = ['pending', 'delivered', 'failed', 'held'];
85
+ function parseLimit(value) {
86
+ const n = Number(value);
87
+ if (!Number.isInteger(n) || n < 1 || n > 100) {
88
+ throw new CliUsageError(`--limit takes a whole number from 1 to 100, not "${value}".`);
89
+ }
90
+ return n;
91
+ }
92
+ /** The date and minute of an ISO 8601 timestamp (`2026-10-23 14:05`). */
93
+ function fmtWhen(iso) {
94
+ return `${iso.slice(0, 10)} ${iso.slice(11, 16)}`;
95
+ }
96
+ function fmtFilters(filters) {
97
+ const keys = Object.keys(filters);
98
+ return keys.length === 0 ? 'none' : keys.map((k) => `${k}=${(filters[k] ?? []).join('|')}`).join(' ');
99
+ }
100
+ function lastDelivery(w) {
101
+ return w.lastDeliveryStatus && w.lastDeliveryAt
102
+ ? `${w.lastDeliveryStatus} ${fmtWhen(w.lastDeliveryAt)}`
103
+ : '-';
104
+ }
105
+ /** One endpoint, as the human sees it. */
106
+ function endpointLines(w) {
107
+ return (`${w.url}\n` +
108
+ ` id: ${w.id}\n` +
109
+ (w.description ? ` description: ${w.description}\n` : '') +
110
+ ` events: ${w.events.join(', ')}\n` +
111
+ ` filters: ${fmtFilters(w.filters)}\n` +
112
+ ` enabled: ${w.enabled ? 'yes' : 'no'}\n` +
113
+ (w.disabledAt
114
+ ? ` disabled: ${w.disabledAt}${w.disabledReason ? ` (${w.disabledReason})` : ''}\n`
115
+ : '') +
116
+ ` failures: ${w.consecutiveFailures} in a row\n` +
117
+ ` last: ${lastDelivery(w)}\n` +
118
+ (w.previousSecretExpiresAt ? ` old secret: signs until ${w.previousSecretExpiresAt}\n` : '') +
119
+ ` created: ${w.createdAt}\n`);
120
+ }
121
+ /** One delivery, as the human sees it. */
122
+ function deliveryLines(d) {
123
+ return (`Delivery ${d.id}\n` +
124
+ ` event: ${d.eventType} (${d.eventId})\n` +
125
+ ` status: ${d.status}\n` +
126
+ ` attempt: ${d.attempt}\n` +
127
+ ` HTTP code: ${d.lastStatusCode ?? '-'}\n` +
128
+ (d.lastError ? ` error: ${d.lastError}\n` : '') +
129
+ (d.nextAttemptAt ? ` next try: ${d.nextAttemptAt}\n` : '') +
130
+ (d.deliveredAt ? ` delivered: ${d.deliveredAt}\n` : '') +
131
+ ` created: ${d.createdAt}\n`);
132
+ }
133
+ function catalogLines(catalog) {
134
+ if (catalog.events.length === 0)
135
+ return 'No event types.\n';
136
+ let out = table([
137
+ ['TYPE', 'SUBJECTS', 'DESCRIPTION'],
138
+ ...catalog.events.map((e) => [e.type, e.subjects.join(',') || '-', e.description])
139
+ ]);
140
+ if (catalog.subjects.length > 0) {
141
+ out +=
142
+ '\nSubjects (what --filter <subject>=<id> matches on):\n' +
143
+ table(catalog.subjects.map((s) => [` ${s.key}`, `subjects.${s.field}`, s.description]));
144
+ }
145
+ return out;
146
+ }
147
+ export function registerWebhookCommands(kit, program, io) {
148
+ const { requireApiKey, resolveContext, identity } = kit;
149
+ const scopeLine = identity.webhooksScope
150
+ ? `A key needs the ${identity.webhooksScope} scope.`
151
+ : `${identity.displayName} opens webhooks to no API key.`;
152
+ const webhooks = program
153
+ .command('webhooks')
154
+ .description("The workspace's webhooks (signed POSTs to your URLs when an event happens)")
155
+ .addHelpText('after', '\nAn owner or an admin manages the webhooks; every member reads the event catalog\n' +
156
+ `(\`webhooks events\`). ${scopeLine}\n` +
157
+ 'The signing secret is printed once, at `create` and at `rotate-secret`: store it then.\n');
158
+ // ── webhooks list ─────────────────────────────────────────────────────────
159
+ webhooks
160
+ .command('list')
161
+ .description("List the workspace's webhook endpoints (every page)")
162
+ .action(async (_opts, cmd) => {
163
+ const ctx = resolveContext(cmd, io);
164
+ await requireApiKey(ctx);
165
+ const rows = await explained(identity, 'webhook', () => allWebhooks(ctx.client));
166
+ if (ctx.json)
167
+ return printJson(io, { webhooks: rows, nextCursor: null });
168
+ if (rows.length === 0) {
169
+ io.out.write('No webhooks.\n');
170
+ return;
171
+ }
172
+ io.out.write(table([
173
+ ['ID', 'URL', 'EVENTS', 'ENABLED', 'LAST DELIVERY', 'FAILURES'],
174
+ ...rows.map((w) => [
175
+ w.id,
176
+ w.url,
177
+ w.events.join(','),
178
+ w.enabled ? 'yes' : 'no',
179
+ lastDelivery(w),
180
+ String(w.consecutiveFailures)
181
+ ])
182
+ ]));
183
+ });
184
+ // ── webhooks events ───────────────────────────────────────────────────────
185
+ webhooks
186
+ .command('events')
187
+ .description('The event catalog: every event type, the subjects it carries, what it means')
188
+ .action(async (_opts, cmd) => {
189
+ const ctx = resolveContext(cmd, io);
190
+ await requireApiKey(ctx);
191
+ const catalog = await explained(identity, 'catalog', () => ctx.client.webhookEvents());
192
+ if (ctx.json)
193
+ return printJson(io, catalog);
194
+ io.out.write(catalogLines(catalog));
195
+ });
196
+ // ── webhooks create ───────────────────────────────────────────────────────
197
+ webhooks
198
+ .command('create <url>')
199
+ .description('Register an endpoint (owner or admin); its signing secret is printed once')
200
+ .option('--event <type>', 'an event type (thing.created), a family (thing.*) or everything (*); repeatable, at least one', collect, [])
201
+ .option('--description <text>', 'what the endpoint is for')
202
+ .option('--filter <subject>=<id>', 'only events about this subject id; repeatable (same subject: OR, different subjects: AND)', collect, [])
203
+ .option('--disabled', 'register it switched off', false)
204
+ .action(async (url, opts, cmd) => {
205
+ if (opts.event.length === 0) {
206
+ throw new CliUsageError('Name at least one event: --event <type> (e.g. --event thing.created), repeatable.');
207
+ }
208
+ const filters = parseWebhookFilters(opts.filter);
209
+ const req = {
210
+ url,
211
+ events: opts.event,
212
+ ...(opts.description !== undefined ? { description: opts.description } : {}),
213
+ ...(Object.keys(filters).length > 0 ? { filters } : {}),
214
+ ...(opts.disabled ? { enabled: false } : {})
215
+ };
216
+ const ctx = resolveContext(cmd, io);
217
+ await requireApiKey(ctx);
218
+ const created = await explained(identity, 'webhook', () => ctx.client.createWebhook(req));
219
+ if (ctx.json)
220
+ return printJson(io, created);
221
+ io.out.write(`Created webhook ${created.id}.\n` +
222
+ 'Its signing secret is shown this once, never again: store it now.\n' +
223
+ `${created.secret}\n`);
224
+ });
225
+ // ── webhooks get ──────────────────────────────────────────────────────────
226
+ webhooks
227
+ .command('get <id>')
228
+ .description('Show one endpoint')
229
+ .action(async (id, _opts, cmd) => {
230
+ const ctx = resolveContext(cmd, io);
231
+ await requireApiKey(ctx);
232
+ const endpoint = await explained(identity, 'webhook', () => ctx.client.webhook(id));
233
+ if (ctx.json)
234
+ return printJson(io, endpoint);
235
+ io.out.write(endpointLines(endpoint));
236
+ });
237
+ // ── webhooks update ───────────────────────────────────────────────────────
238
+ webhooks
239
+ .command('update <id>')
240
+ .description('Change an endpoint (owner or admin); only what is passed changes')
241
+ .option('--endpoint-url <url>', 'the new address the deliveries go to')
242
+ .option('--description <text>', 'the new description')
243
+ .option('--event <type>', 'replace the events with these; repeatable', collect, [])
244
+ .option('--filter <subject>=<id>', 'replace the filters with these; repeatable', collect, [])
245
+ .option('--clear-filters', 'remove every filter', false)
246
+ .option('--enable', 'switch the endpoint on', false)
247
+ .option('--disable', 'switch the endpoint off', false)
248
+ .action(async (id, opts, cmd) => {
249
+ if (opts.enable && opts.disable) {
250
+ throw new CliUsageError('Pass --enable or --disable, not both.');
251
+ }
252
+ if (opts.clearFilters && opts.filter.length > 0) {
253
+ throw new CliUsageError('Pass --filter or --clear-filters, not both.');
254
+ }
255
+ const req = {
256
+ ...(opts.endpointUrl !== undefined ? { url: opts.endpointUrl } : {}),
257
+ ...(opts.description !== undefined ? { description: opts.description } : {}),
258
+ ...(opts.event.length > 0 ? { events: opts.event } : {}),
259
+ ...(opts.filter.length > 0 ? { filters: parseWebhookFilters(opts.filter) } : {}),
260
+ ...(opts.clearFilters ? { filters: {} } : {}),
261
+ ...(opts.enable ? { enabled: true } : {}),
262
+ ...(opts.disable ? { enabled: false } : {})
263
+ };
264
+ if (Object.keys(req).length === 0) {
265
+ throw new CliUsageError('Nothing to change — pass --endpoint-url, --description, --event, --filter, --clear-filters, --enable or --disable.');
266
+ }
267
+ const ctx = resolveContext(cmd, io);
268
+ await requireApiKey(ctx);
269
+ const updated = await explained(identity, 'webhook', () => ctx.client.updateWebhook(id, req));
270
+ if (ctx.json)
271
+ return printJson(io, updated);
272
+ io.out.write(`Updated webhook ${updated.id}.\n${endpointLines(updated)}`);
273
+ });
274
+ // ── webhooks delete ───────────────────────────────────────────────────────
275
+ webhooks
276
+ .command('delete <id>')
277
+ .description('Delete an endpoint and its delivery history (owner or admin)')
278
+ .action(async (id, _opts, cmd) => {
279
+ const ctx = resolveContext(cmd, io);
280
+ await requireApiKey(ctx);
281
+ const deleted = await explained(identity, 'webhook', () => ctx.client.deleteWebhook(id));
282
+ if (ctx.json)
283
+ return printJson(io, deleted);
284
+ io.out.write(`Deleted webhook ${deleted.id} (${deleted.url}) and its delivery history.\n`);
285
+ });
286
+ // ── webhooks rotate-secret ────────────────────────────────────────────────
287
+ webhooks
288
+ .command('rotate-secret <id>')
289
+ .description("Replace an endpoint's signing secret (owner or admin); the new one is printed once")
290
+ .action(async (id, _opts, cmd) => {
291
+ const ctx = resolveContext(cmd, io);
292
+ await requireApiKey(ctx);
293
+ const rotated = await explained(identity, 'webhook', () => ctx.client.rotateWebhookSecret(id));
294
+ if (ctx.json)
295
+ return printJson(io, rotated);
296
+ io.out.write(`New signing secret for webhook ${rotated.id}, shown this once, never again: store it now.\n` +
297
+ `${rotated.secret}\n` +
298
+ `The previous secret keeps signing until ${rotated.previousSecretExpiresAt}.\n`);
299
+ });
300
+ // ── webhooks test ─────────────────────────────────────────────────────────
301
+ webhooks
302
+ .command('test <id>')
303
+ .description('Send a signed webhook.ping now and print its outcome (exit 1 when not delivered)')
304
+ .action(async (id, _opts, cmd) => {
305
+ const ctx = resolveContext(cmd, io);
306
+ await requireApiKey(ctx);
307
+ const { delivery } = await explained(identity, 'webhook', () => ctx.client.testWebhook(id));
308
+ if (ctx.json)
309
+ printJson(io, { delivery });
310
+ else
311
+ io.out.write(`Ping ${delivery.status}` +
312
+ (delivery.lastStatusCode !== null ? `, HTTP ${delivery.lastStatusCode}` : '') +
313
+ (delivery.lastError ? `: ${delivery.lastError}` : '') +
314
+ ` (delivery ${delivery.id}).\n`);
315
+ // The one way this kit ends a command non-zero: a usage error carries
316
+ // the exit code to the runner, which writes it on stderr.
317
+ if (delivery.status !== 'delivered') {
318
+ throw new CliUsageError(`The ping was not delivered (${delivery.status}).`);
319
+ }
320
+ });
321
+ // ── webhooks deliveries ───────────────────────────────────────────────────
322
+ webhooks
323
+ .command('deliveries <id>')
324
+ .description("List one page of an endpoint's deliveries, newest first")
325
+ .option('--status <status>', `only these: ${DELIVERY_STATUSES.join(', ')}`)
326
+ .option('--limit <n>', 'page size, 1 to 100 (server default 50)')
327
+ .option('--cursor <cursor>', 'the next page, as the previous one printed it')
328
+ .action(async (id, opts, cmd) => {
329
+ if (opts.status !== undefined && !DELIVERY_STATUSES.includes(opts.status)) {
330
+ throw new CliUsageError(`--status takes one of ${DELIVERY_STATUSES.join(', ')}, not "${opts.status}".`);
331
+ }
332
+ const params = {
333
+ ...(opts.status !== undefined ? { status: opts.status } : {}),
334
+ ...(opts.limit !== undefined ? { limit: parseLimit(opts.limit) } : {}),
335
+ ...(opts.cursor !== undefined ? { cursor: opts.cursor } : {})
336
+ };
337
+ const ctx = resolveContext(cmd, io);
338
+ await requireApiKey(ctx);
339
+ const page = await explained(identity, 'webhook', () => ctx.client.webhookDeliveries(id, params));
340
+ if (ctx.json)
341
+ return printJson(io, page);
342
+ if (page.deliveries.length === 0) {
343
+ io.out.write('No deliveries.\n');
344
+ return;
345
+ }
346
+ io.out.write(table([
347
+ ['ID', 'EVENT', 'STATUS', 'ATTEMPT', 'CODE', 'CREATED'],
348
+ ...page.deliveries.map((d) => [
349
+ d.id,
350
+ d.eventType,
351
+ d.status,
352
+ String(d.attempt),
353
+ d.lastStatusCode !== null ? String(d.lastStatusCode) : '-',
354
+ fmtWhen(d.createdAt)
355
+ ])
356
+ ]));
357
+ if (page.nextCursor)
358
+ io.out.write(`More: --cursor ${page.nextCursor}\n`);
359
+ });
360
+ // ── webhooks delivery ─────────────────────────────────────────────────────
361
+ webhooks
362
+ .command('delivery <id> <deliveryId>')
363
+ .description('Show one delivery: its status, its latest attempt (--json: the payload as sent)')
364
+ .action(async (id, deliveryId, _opts, cmd) => {
365
+ const ctx = resolveContext(cmd, io);
366
+ await requireApiKey(ctx);
367
+ const delivery = await explained(identity, 'delivery', () => ctx.client.webhookDelivery(id, deliveryId));
368
+ if (ctx.json)
369
+ return printJson(io, delivery);
370
+ io.out.write(deliveryLines(delivery));
371
+ });
372
+ // ── webhooks redeliver ────────────────────────────────────────────────────
373
+ webhooks
374
+ .command('redeliver <id> <deliveryId>')
375
+ .description('Queue the same event again as a new delivery (same event id, same payload)')
376
+ .action(async (id, deliveryId, _opts, cmd) => {
377
+ const ctx = resolveContext(cmd, io);
378
+ await requireApiKey(ctx);
379
+ const delivery = await explained(identity, 'delivery', () => ctx.client.redeliverWebhook(id, deliveryId));
380
+ if (ctx.json)
381
+ return printJson(io, delivery);
382
+ io.out.write(`Queued delivery ${delivery.id} of ${delivery.eventType} (event ${delivery.eventId}).\n`);
383
+ });
384
+ }
385
+ //# sourceMappingURL=webhooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhooks.js","sourceRoot":"","sources":["../../src/commands/webhooks.ts"],"names":[],"mappings":"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"}
package/dist/context.d.ts CHANGED
@@ -1,8 +1,8 @@
1
1
  import { type ChassisClient, type ClientOptions } from '@antasphere/chassis-sdk';
2
2
  import type { Command } from 'commander';
3
- import { CliUsageError, type CliIo as CoreCliIo, type ConnectOnDemandOptions, type ProfileSource } from '@antasphere/cli-core';
3
+ import { CliUsageError, type CliIo as CoreCliIo, type ConnectOnDemandOptions, type ConnectOnDemandOutcome, type ProfileSource } from '@antasphere/cli-core';
4
4
  import type { CliConfig, CliConfigStore, CliProfile } from './config.js';
5
- import type { CliIdentity } from './identity.js';
5
+ import { type CliIdentity } from './identity.js';
6
6
  import { type CliWorkspace, type WorkspaceSelection, type WorkspaceSource } from './workspace.js';
7
7
  export { CliUsageError } from '@antasphere/cli-core';
8
8
  /**
@@ -121,6 +121,12 @@ export interface CliContextKit<TClient extends ChassisClient<string>> {
121
121
  profileUrl(profile: CliProfile | undefined): string;
122
122
  /** The `connectOnDemand` options of one context (the tool, the instance, the profile, the wire). */
123
123
  connectOptions(ctx: CliContext<TClient>): ConnectOnDemandOptions;
124
+ /**
125
+ * The hub exchange of one context: cli-core `connectOnDemand` with
126
+ * `connectOptions(ctx)` and `overrides`, and, after a fresh exchange, the
127
+ * hub profile healed with the address the hub answered when it has none.
128
+ */
129
+ connect(ctx: CliContext<TClient>, overrides?: Partial<ConnectOnDemandOptions>): Promise<ConnectOnDemandOutcome>;
124
130
  }
125
131
  /**
126
132
  * The context functions, bound to one tool: its identity (identity.ts), the
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}