@inquir/compute-cli 0.3.0 → 0.4.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 (88) hide show
  1. package/README.md +223 -114
  2. package/dist/commands/admin-tenants.d.ts +11 -0
  3. package/dist/commands/admin-tenants.d.ts.map +1 -0
  4. package/dist/commands/admin-tenants.js +318 -0
  5. package/dist/commands/admin-tenants.js.map +1 -0
  6. package/dist/commands/admin.d.ts +2 -0
  7. package/dist/commands/admin.d.ts.map +1 -0
  8. package/dist/commands/admin.js +445 -0
  9. package/dist/commands/admin.js.map +1 -0
  10. package/dist/commands/apps-describe.d.ts +9 -0
  11. package/dist/commands/apps-describe.d.ts.map +1 -0
  12. package/dist/commands/apps-describe.js +118 -0
  13. package/dist/commands/apps-describe.js.map +1 -0
  14. package/dist/commands/apps-observability.d.ts +9 -0
  15. package/dist/commands/apps-observability.d.ts.map +1 -0
  16. package/dist/commands/apps-observability.js +281 -0
  17. package/dist/commands/apps-observability.js.map +1 -0
  18. package/dist/commands/apps-promote.d.ts +31 -0
  19. package/dist/commands/apps-promote.d.ts.map +1 -0
  20. package/dist/commands/apps-promote.js +115 -0
  21. package/dist/commands/apps-promote.js.map +1 -0
  22. package/dist/commands/apps-resources.d.ts +6 -0
  23. package/dist/commands/apps-resources.d.ts.map +1 -0
  24. package/dist/commands/apps-resources.js +107 -0
  25. package/dist/commands/apps-resources.js.map +1 -0
  26. package/dist/commands/apps.d.ts +25 -2
  27. package/dist/commands/apps.d.ts.map +1 -1
  28. package/dist/commands/apps.js +434 -66
  29. package/dist/commands/apps.js.map +1 -1
  30. package/dist/commands/config.d.ts.map +1 -1
  31. package/dist/commands/config.js +7 -3
  32. package/dist/commands/config.js.map +1 -1
  33. package/dist/commands/delete.d.ts.map +1 -1
  34. package/dist/commands/delete.js +10 -2
  35. package/dist/commands/delete.js.map +1 -1
  36. package/dist/commands/login.d.ts.map +1 -1
  37. package/dist/commands/login.js +78 -33
  38. package/dist/commands/login.js.map +1 -1
  39. package/dist/commands/logout.d.ts.map +1 -1
  40. package/dist/commands/logout.js +37 -5
  41. package/dist/commands/logout.js.map +1 -1
  42. package/dist/commands/mcp.d.ts +13 -0
  43. package/dist/commands/mcp.d.ts.map +1 -1
  44. package/dist/commands/mcp.js +184 -77
  45. package/dist/commands/mcp.js.map +1 -1
  46. package/dist/commands/projects.d.ts.map +1 -1
  47. package/dist/commands/projects.js +107 -11
  48. package/dist/commands/projects.js.map +1 -1
  49. package/dist/index.js +9 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/lib/finite-source-command-client.d.ts +3 -0
  52. package/dist/lib/finite-source-command-client.d.ts.map +1 -0
  53. package/dist/lib/finite-source-command-client.js +3 -0
  54. package/dist/lib/finite-source-command-client.js.map +1 -0
  55. package/dist/lib/mcp-io.d.ts +23 -0
  56. package/dist/lib/mcp-io.d.ts.map +1 -0
  57. package/dist/lib/mcp-io.js +185 -0
  58. package/dist/lib/mcp-io.js.map +1 -0
  59. package/dist/lib/mcp-source-commands.d.ts +17 -0
  60. package/dist/lib/mcp-source-commands.d.ts.map +1 -0
  61. package/dist/lib/mcp-source-commands.js +345 -0
  62. package/dist/lib/mcp-source-commands.js.map +1 -0
  63. package/dist/utils/api.d.ts +19 -10
  64. package/dist/utils/api.d.ts.map +1 -1
  65. package/dist/utils/api.js +22 -4
  66. package/dist/utils/api.js.map +1 -1
  67. package/dist/utils/apps-presentation.d.ts +1 -1
  68. package/dist/utils/apps-presentation.d.ts.map +1 -1
  69. package/dist/utils/apps-presentation.js +10 -0
  70. package/dist/utils/apps-presentation.js.map +1 -1
  71. package/dist/utils/auth.d.ts +21 -1
  72. package/dist/utils/auth.d.ts.map +1 -1
  73. package/dist/utils/auth.js +119 -22
  74. package/dist/utils/auth.js.map +1 -1
  75. package/dist/utils/browser.d.ts +12 -0
  76. package/dist/utils/browser.d.ts.map +1 -1
  77. package/dist/utils/browser.js +37 -16
  78. package/dist/utils/browser.js.map +1 -1
  79. package/dist/utils/package-metadata.js +1 -1
  80. package/dist/utils/project-context.d.ts.map +1 -1
  81. package/dist/utils/project-context.js +7 -5
  82. package/dist/utils/project-context.js.map +1 -1
  83. package/dist/utils/project-lookup.d.ts +10 -0
  84. package/dist/utils/project-lookup.d.ts.map +1 -0
  85. package/dist/utils/project-lookup.js +52 -0
  86. package/dist/utils/project-lookup.js.map +1 -0
  87. package/package.json +10 -10
  88. package/skill/SKILL.md +9 -3
@@ -0,0 +1,318 @@
1
+ /**
2
+ * `inquir admin tenants ...` and `inquir admin containerd-tenants ...`: the
3
+ * automated tenant fabric migration (docs/TENANT_FABRIC_RUNBOOK.md §12) and
4
+ * the containerd tenant allowlist, over /admin/tenant-fabric/migrations and
5
+ * /admin/compute/containerd-tenants with the platform admin token
6
+ * (INQUIR_ADMIN_TOKEN). A migration is a dry run unless --execute is given.
7
+ */
8
+ import { hasFlag, readFlagValue } from '../utils/args.js';
9
+ import { usageError } from '../utils/errors.js';
10
+ import { bold, dim, formatTable, printLine, printSuccess, printWarning } from '../utils/output.js';
11
+ export const TENANT_VALUE_FLAGS = [
12
+ '--kind', '--window-start', '--window-end', '--first-app', '--request-id', '--limit', '--tenants', '--batch-id',
13
+ '--tenant', '--timeouts',
14
+ ];
15
+ export const TENANT_USAGE = [
16
+ 'admin tenants migrate-fabric <tenantId> [--execute] [--allow-restarts] [--window-start <iso>] [--window-end <iso>] [--containerd [--relocate] [--engine-move]] [--kind FULL|DORMANT] [--first-app <appId>] [--timeouts <json>] [--request-id <uuid>] --reason <text>',
17
+ 'admin tenants migrate-fabric --batch [--dry-run|--execute] [--include-empty] [--limit <n>] [--tenants <id,id>] [--batch-id <uuid>] [--reason <text>]',
18
+ 'admin tenants migrations [--tenant <id>] [--batch-id <uuid>] [--active] [--json]',
19
+ 'admin tenants migration <operationId> [abort --reason <text> | resume [--allow-restarts] [--window-start <iso>] [--window-end <iso>] | abandon --reason <text>] [--json]',
20
+ 'admin containerd-tenants [list] | add <tenantId> --reason <text> | remove <tenantId> [--reason <text>]',
21
+ ];
22
+ export const TENANT_HELP = [
23
+ 'tenants migrate-fabric <tenantId>',
24
+ ' Move a workspace onto the tenant fabric: PROVISIONED, DUAL, the redeploy of every',
25
+ ' app, CUTOVER, FABRIC, every gate checked, rolled back on a failed one. A dry run',
26
+ ' (the plan and why it would refuse) unless --execute. --containerd then lists it for',
27
+ ' containerd; --relocate moves stateless replicas there, --engine-move volume apps',
28
+ '--allow-restarts Apps that restart when redeployed (volumes, databases, legacy) may be redeployed',
29
+ '--window-start/-end The restart window (ISO times): restart apps wait for it, and it closing pauses',
30
+ 'tenants migrate-fabric --batch',
31
+ ' Every workspace classified; with --execute each dormant one (no live container,',
32
+ ' no Swarm endpoint) is flipped to FABRIC without redeploys',
33
+ 'tenants migrations The migrations (--active: unfinished ones)',
34
+ 'tenants migration <id> One migration, its step and its last events; abort, resume or abandon it',
35
+ 'containerd-tenants The containerd allowlist: COMPUTE_CONTAINERD_TENANTS plus the database list',
36
+ ];
37
+ function reasonOf(args) {
38
+ return readFlagValue(args, '--reason')?.trim() || undefined;
39
+ }
40
+ function restartWindow(args) {
41
+ const notBefore = readFlagValue(args, '--window-start');
42
+ const notAfter = readFlagValue(args, '--window-end');
43
+ if (!notBefore && !notAfter)
44
+ return undefined;
45
+ return { ...(notBefore ? { notBefore } : {}), ...(notAfter ? { notAfter } : {}) };
46
+ }
47
+ function timeoutsOf(args) {
48
+ const raw = readFlagValue(args, '--timeouts');
49
+ if (!raw)
50
+ return undefined;
51
+ try {
52
+ const parsed = JSON.parse(raw);
53
+ if (!parsed || typeof parsed !== 'object' || Array.isArray(parsed))
54
+ throw new Error('not an object');
55
+ return parsed;
56
+ }
57
+ catch {
58
+ throw usageError('--timeouts must be a JSON object of milliseconds, e.g. {"drainMs":600000}', `inquir ${TENANT_USAGE[0]}`);
59
+ }
60
+ }
61
+ function printPreflight(preflight) {
62
+ printLine(`${bold('Mode:')} ${preflight.mode} ${bold('Preflight:')} ${preflight.ok ? 'passes' : 'REFUSED'}`);
63
+ if (preflight.plan.apps.length > 0) {
64
+ const order = new Map(preflight.plan.redeployOrder.map((id, index) => [id, index + 1]));
65
+ printLine(formatTable(preflight.plan.apps.map((app) => ({
66
+ '#': order.get(app.applicationId) ?? '',
67
+ APP: app.name,
68
+ REDEPLOY: app.strategy === 'none' ? 'no (on the fabric or idle)' : app.strategy === 'restart' ? `restart: ${(app.restartReasons ?? []).join(', ')}` : 'make-before-break',
69
+ CONTAINERS: app.liveContainers,
70
+ LEGACY: app.legacy ? 'yes' : '',
71
+ })), ['#', 'APP', 'REDEPLOY', 'CONTAINERS', 'LEGACY']));
72
+ }
73
+ for (const refusal of preflight.refusals)
74
+ printWarning(`${refusal.code}: ${refusal.message}`);
75
+ for (const warning of preflight.plan.warnings)
76
+ printLine(dim(`note: ${warning}`));
77
+ }
78
+ function describeMigration(operation, events = 8) {
79
+ printLine(`${bold('Migration')} ${operation.id} of ${operation.tenantId} (${operation.kind} -> ${operation.target})`);
80
+ printLine(`${bold('Status:')} ${operation.status} at ${operation.step}` +
81
+ (operation.startMode ? dim(` started in ${operation.startMode}${operation.rollbackTo ? `, rolls back to ${operation.rollbackTo}` : ''}`) : '') +
82
+ (operation.stepDeadlineAt ? dim(` step deadline ${operation.stepDeadlineAt}`) : ''));
83
+ if (operation.state.pausedReason)
84
+ printWarning(`paused: ${operation.state.pausedReason}`);
85
+ if (operation.lastError)
86
+ printWarning(operation.lastError);
87
+ for (const warning of operation.state.warnings ?? [])
88
+ printLine(dim(`note: ${warning}`));
89
+ for (const event of operation.events.slice(-events))
90
+ printLine(` ${dim(event.at)} ${event.step.padEnd(22)} ${event.message}`);
91
+ }
92
+ async function migrateFabric(args, rest, json, call) {
93
+ const execute = hasFlag(args, '--execute');
94
+ if (hasFlag(args, '--batch')) {
95
+ if (execute && hasFlag(args, '--dry-run'))
96
+ throw usageError('Choose --dry-run or --execute', `inquir ${TENANT_USAGE[1]}`);
97
+ const reason = reasonOf(args);
98
+ if (execute && !reason)
99
+ throw usageError('An executed batch needs --reason', `inquir ${TENANT_USAGE[1]}`);
100
+ const limit = readFlagValue(args, '--limit');
101
+ const tenants = readFlagValue(args, '--tenants');
102
+ const batchId = readFlagValue(args, '--batch-id');
103
+ const timeouts = timeoutsOf(args);
104
+ const body = await call(args, {
105
+ method: 'POST',
106
+ path: 'admin/tenant-fabric/migrations/batch',
107
+ body: {
108
+ dryRun: !execute,
109
+ ...(reason ? { reason } : {}),
110
+ ...(hasFlag(args, '--include-empty') ? { includeEmpty: true } : {}),
111
+ ...(limit ? { limit: Number.parseInt(limit, 10) } : {}),
112
+ ...(tenants ? { tenantIds: tenants.split(',').map((id) => id.trim()).filter(Boolean) } : {}),
113
+ ...(batchId ? { batchId } : {}),
114
+ ...(timeouts ? { timeouts } : {}),
115
+ },
116
+ });
117
+ if (json) {
118
+ printLine(JSON.stringify(body, null, 2));
119
+ return;
120
+ }
121
+ const entries = (body.entries ?? []);
122
+ printLine(formatTable(entries.map((entry) => ({
123
+ TENANT: String(entry.tenantId),
124
+ NAME: String(entry.name ?? ''),
125
+ MODE: String(entry.mode),
126
+ CLASS: String(entry.class),
127
+ FLIP: entry.eligible ? 'yes' : 'no',
128
+ APPS: Number(entry.apps),
129
+ LIVE: Number(entry.liveContainers),
130
+ OPERATION: entry.operationId ? `${String(entry.operationId).slice(0, 8)} ${String(entry.operationStatus ?? '')}` : '',
131
+ REASON: String(entry.reason ?? ''),
132
+ })), ['TENANT', 'NAME', 'MODE', 'CLASS', 'FLIP', 'APPS', 'LIVE', 'OPERATION', 'REASON']));
133
+ const summary = Object.entries((body.summary ?? {})).map(([name, count]) => `${name} ${count}`).join(', ');
134
+ if (body.dryRun)
135
+ printLine(dim(`Dry run (${summary}): nothing was changed. Run it with --execute --reason <text> to flip the dormant ones.`));
136
+ else
137
+ printSuccess(`Batch ${String(body.batchId)}: ${Number(body.created)} dormant flip(s) queued (${summary}). Follow it: inquir admin tenants migrations --batch-id ${String(body.batchId)}`);
138
+ return;
139
+ }
140
+ const [tenantId] = rest;
141
+ if (!tenantId)
142
+ throw usageError('migrate-fabric needs <tenantId> (or --batch)', `inquir ${TENANT_USAGE[0]}`);
143
+ const reason = reasonOf(args);
144
+ if (execute && !reason)
145
+ throw usageError('A migration needs --reason', `inquir ${TENANT_USAGE[0]}`);
146
+ const containerd = hasFlag(args, '--containerd');
147
+ const kind = readFlagValue(args, '--kind');
148
+ const firstApp = readFlagValue(args, '--first-app');
149
+ const requestId = readFlagValue(args, '--request-id');
150
+ const window = restartWindow(args);
151
+ const timeouts = timeoutsOf(args);
152
+ if (!containerd && (hasFlag(args, '--relocate') || hasFlag(args, '--engine-move'))) {
153
+ throw usageError('--relocate and --engine-move need --containerd', `inquir ${TENANT_USAGE[0]}`);
154
+ }
155
+ const body = await call(args, {
156
+ method: 'POST',
157
+ path: 'admin/tenant-fabric/migrations',
158
+ body: {
159
+ tenantId,
160
+ reason: reason ?? 'dry run',
161
+ dryRun: !execute,
162
+ ...(kind ? { kind: kind.toUpperCase() } : {}),
163
+ ...(containerd ? { target: 'CONTAINERD' } : {}),
164
+ ...(hasFlag(args, '--allow-restarts') ? { allowRestarts: true } : {}),
165
+ ...(window ? { restartWindow: window } : {}),
166
+ ...(firstApp ? { firstApplicationId: firstApp } : {}),
167
+ ...(containerd && (hasFlag(args, '--relocate') || hasFlag(args, '--engine-move'))
168
+ ? { containerd: { relocateStateless: hasFlag(args, '--relocate'), engineMoveVolumes: hasFlag(args, '--engine-move') } }
169
+ : {}),
170
+ ...(timeouts ? { timeouts } : {}),
171
+ ...(requestId ? { requestId } : {}),
172
+ },
173
+ });
174
+ if (json) {
175
+ printLine(JSON.stringify(body, null, 2));
176
+ return;
177
+ }
178
+ if (body.preflight)
179
+ printPreflight(body.preflight);
180
+ if (body.dryRun) {
181
+ printLine(dim('Dry run: nothing was changed. Add --execute --reason <text> to start it.'));
182
+ return;
183
+ }
184
+ const operation = body.operation;
185
+ printSuccess(`Migration ${operation.id} of ${operation.tenantId} is ${operation.status}. Follow it: inquir admin tenants migration ${operation.id}`);
186
+ }
187
+ async function migration(args, rest, json, call) {
188
+ const [operationId, verb] = rest;
189
+ if (!operationId)
190
+ throw usageError('Missing <operationId>', `inquir ${TENANT_USAGE[3]}`);
191
+ const path = `admin/tenant-fabric/migrations/${encodeURIComponent(operationId)}`;
192
+ let body;
193
+ switch (verb) {
194
+ case undefined:
195
+ body = await call(args, { method: 'GET', path });
196
+ break;
197
+ case 'abort':
198
+ case 'abandon': {
199
+ const reason = reasonOf(args);
200
+ if (!reason)
201
+ throw usageError(`${verb} needs --reason`, `inquir ${TENANT_USAGE[3]}`);
202
+ body = await call(args, { method: 'POST', path: `${path}/${verb}`, body: { reason } });
203
+ break;
204
+ }
205
+ case 'resume': {
206
+ const window = restartWindow(args);
207
+ body = await call(args, {
208
+ method: 'POST',
209
+ path: `${path}/resume`,
210
+ body: { ...(hasFlag(args, '--allow-restarts') ? { allowRestarts: true } : {}), ...(window ? { restartWindow: window } : {}) },
211
+ });
212
+ break;
213
+ }
214
+ default:
215
+ throw usageError(`Unknown migration action: ${verb}`, `inquir ${TENANT_USAGE[3]}`);
216
+ }
217
+ if (json)
218
+ printLine(JSON.stringify(body, null, 2));
219
+ else
220
+ describeMigration(body.operation, verb ? 3 : 12);
221
+ }
222
+ export async function tenantsCommand(args, action, rest, json, call) {
223
+ switch (action) {
224
+ case 'migrate-fabric':
225
+ return migrateFabric(args, rest, json, call);
226
+ case 'migration':
227
+ return migration(args, rest, json, call);
228
+ case 'migrations': {
229
+ const tenant = readFlagValue(args, '--tenant');
230
+ const batchId = readFlagValue(args, '--batch-id');
231
+ const query = new URLSearchParams({
232
+ ...(tenant ? { tenantId: tenant } : {}),
233
+ ...(batchId ? { batchId } : {}),
234
+ ...(hasFlag(args, '--active') ? { active: 'true' } : {}),
235
+ }).toString();
236
+ const body = await call(args, { method: 'GET', path: `admin/tenant-fabric/migrations${query ? `?${query}` : ''}` });
237
+ if (json) {
238
+ printLine(JSON.stringify(body, null, 2));
239
+ return;
240
+ }
241
+ const operations = (body.operations ?? []);
242
+ if (operations.length === 0) {
243
+ printLine(dim('No migrations.'));
244
+ return;
245
+ }
246
+ printLine(formatTable(operations.map((operation) => ({
247
+ ID: operation.id,
248
+ TENANT: operation.tenantId,
249
+ KIND: `${operation.kind}->${operation.target}`,
250
+ STATUS: operation.status,
251
+ STEP: operation.step,
252
+ FROM: operation.startMode ?? '',
253
+ CREATED: operation.createdAt,
254
+ ERROR: (operation.lastError ?? '').slice(0, 80),
255
+ })), ['ID', 'TENANT', 'KIND', 'STATUS', 'STEP', 'FROM', 'CREATED', 'ERROR']));
256
+ return;
257
+ }
258
+ default:
259
+ throw usageError(`Unknown tenants subcommand: ${action ?? ''}`.trim(), 'inquir admin --help');
260
+ }
261
+ }
262
+ export async function containerdTenantsCommand(args, action, rest, json, call) {
263
+ const [tenantId] = rest;
264
+ let body;
265
+ switch (action ?? 'list') {
266
+ case 'list':
267
+ body = await call(args, { method: 'GET', path: 'admin/compute/containerd-tenants' });
268
+ if (json) {
269
+ printLine(JSON.stringify(body, null, 2));
270
+ return;
271
+ }
272
+ printLine(`${bold('COMPUTE_CONTAINERD_TENANTS:')} ${body.environment === null ? dim('unset') : Array.isArray(body.environment) ? body.environment.join(', ') || dim('(empty)') : String(body.environment)}`);
273
+ printLine(`${bold('Containerd runners accepted:')} ${body.acceptsRunners ? 'yes' : 'no'}`);
274
+ {
275
+ const entries = (body.database ?? []);
276
+ if (entries.length === 0)
277
+ printLine(dim('No tenant in the database list.'));
278
+ else
279
+ printLine(formatTable(entries.map((entry) => ({
280
+ TENANT: String(entry.tenantId),
281
+ 'ADDED BY': String(entry.addedBy ?? ''),
282
+ MIGRATION: String(entry.migrationId ?? ''),
283
+ REASON: String(entry.reason ?? ''),
284
+ })), ['TENANT', 'ADDED BY', 'MIGRATION', 'REASON']));
285
+ }
286
+ return;
287
+ case 'add': {
288
+ const reason = reasonOf(args);
289
+ if (!tenantId || !reason)
290
+ throw usageError('add needs <tenantId> and --reason', `inquir ${TENANT_USAGE[4]}`);
291
+ body = await call(args, { method: 'PUT', path: `admin/compute/containerd-tenants/${encodeURIComponent(tenantId)}`, body: { reason } });
292
+ if (json)
293
+ printLine(JSON.stringify(body, null, 2));
294
+ else
295
+ printSuccess(`${tenantId} ${body.added ? 'added to' : 'was already on'} the containerd allowlist; its new placements may use containerd runners within seconds`);
296
+ return;
297
+ }
298
+ case 'remove': {
299
+ if (!tenantId)
300
+ throw usageError('remove needs <tenantId>', `inquir ${TENANT_USAGE[4]}`);
301
+ const reason = reasonOf(args);
302
+ body = await call(args, { method: 'DELETE', path: `admin/compute/containerd-tenants/${encodeURIComponent(tenantId)}`, body: reason ? { reason } : {} });
303
+ if (json)
304
+ printLine(JSON.stringify(body, null, 2));
305
+ else {
306
+ printSuccess(`${tenantId} ${body.removed ? 'removed from' : 'was not on'} the database allowlist`);
307
+ if (body.allows)
308
+ printWarning('COMPUTE_CONTAINERD_TENANTS still names it');
309
+ if (body.note)
310
+ printLine(dim(String(body.note)));
311
+ }
312
+ return;
313
+ }
314
+ default:
315
+ throw usageError(`Unknown containerd-tenants subcommand: ${action}`, `inquir ${TENANT_USAGE[4]}`);
316
+ }
317
+ }
318
+ //# sourceMappingURL=admin-tenants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin-tenants.js","sourceRoot":"","sources":["../../src/commands/admin-tenants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function adminCommand(args: string[]): Promise<void>;
2
+ //# sourceMappingURL=admin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"admin.d.ts","sourceRoot":"","sources":["../../src/commands/admin.ts"],"names":[],"mappings":"AAsYA,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAmFhE"}