@hypercli.com/cli 0.0.0-stage → 0.9.2

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 (98) hide show
  1. package/README.md +25 -2
  2. package/dist/commands/acp.d.ts +5 -0
  3. package/dist/commands/acp.js +51 -0
  4. package/dist/commands/acp.js.map +1 -0
  5. package/dist/commands/agent-login.d.ts +97 -0
  6. package/dist/commands/agent-login.js +547 -0
  7. package/dist/commands/agent-login.js.map +1 -0
  8. package/dist/commands/agents.d.ts +48 -0
  9. package/dist/commands/agents.js +2026 -0
  10. package/dist/commands/agents.js.map +1 -0
  11. package/dist/commands/configure.d.ts +11 -0
  12. package/dist/commands/configure.js +59 -0
  13. package/dist/commands/configure.js.map +1 -0
  14. package/dist/commands/files.d.ts +15 -0
  15. package/dist/commands/files.js +176 -0
  16. package/dist/commands/files.js.map +1 -0
  17. package/dist/commands/flow.d.ts +20 -0
  18. package/dist/commands/flow.js +360 -0
  19. package/dist/commands/flow.js.map +1 -0
  20. package/dist/commands/integrations.d.ts +32 -0
  21. package/dist/commands/integrations.js +460 -0
  22. package/dist/commands/integrations.js.map +1 -0
  23. package/dist/commands/jobs.d.ts +5 -0
  24. package/dist/commands/jobs.js +496 -0
  25. package/dist/commands/jobs.js.map +1 -0
  26. package/dist/commands/me.d.ts +23 -0
  27. package/dist/commands/me.js +258 -0
  28. package/dist/commands/me.js.map +1 -0
  29. package/dist/commands/memory.d.ts +5 -0
  30. package/dist/commands/memory.js +110 -0
  31. package/dist/commands/memory.js.map +1 -0
  32. package/dist/commands/routines.d.ts +27 -0
  33. package/dist/commands/routines.js +493 -0
  34. package/dist/commands/routines.js.map +1 -0
  35. package/dist/commands/skills.d.ts +36 -0
  36. package/dist/commands/skills.js +369 -0
  37. package/dist/commands/skills.js.map +1 -0
  38. package/dist/commands/voice.d.ts +15 -0
  39. package/dist/commands/voice.js +378 -0
  40. package/dist/commands/voice.js.map +1 -0
  41. package/dist/commands/websearch-core.d.ts +10 -0
  42. package/dist/commands/websearch-core.js +56 -0
  43. package/dist/commands/websearch-core.js.map +1 -0
  44. package/dist/commands/websearch.d.ts +13 -0
  45. package/dist/commands/websearch.js +20 -0
  46. package/dist/commands/websearch.js.map +1 -0
  47. package/dist/core/argv.d.ts +51 -0
  48. package/dist/core/argv.js +81 -0
  49. package/dist/core/argv.js.map +1 -0
  50. package/dist/core/captured-logs.d.ts +9 -0
  51. package/dist/core/captured-logs.js +52 -0
  52. package/dist/core/captured-logs.js.map +1 -0
  53. package/dist/core/client.d.ts +18 -0
  54. package/dist/core/client.js +31 -0
  55. package/dist/core/client.js.map +1 -0
  56. package/dist/core/config-file.d.ts +13 -0
  57. package/dist/core/config-file.js +79 -0
  58. package/dist/core/config-file.js.map +1 -0
  59. package/dist/core/errors.d.ts +22 -0
  60. package/dist/core/errors.js +37 -0
  61. package/dist/core/errors.js.map +1 -0
  62. package/dist/core/help.d.ts +13 -0
  63. package/dist/core/help.js +55 -0
  64. package/dist/core/help.js.map +1 -0
  65. package/dist/core/integrations-mcp.d.ts +2 -0
  66. package/dist/core/integrations-mcp.js +115 -0
  67. package/dist/core/integrations-mcp.js.map +1 -0
  68. package/dist/core/output.d.ts +29 -0
  69. package/dist/core/output.js +34 -0
  70. package/dist/core/output.js.map +1 -0
  71. package/dist/core/skills-runtime.d.ts +37 -0
  72. package/dist/core/skills-runtime.js +101 -0
  73. package/dist/core/skills-runtime.js.map +1 -0
  74. package/dist/core/table.d.ts +17 -0
  75. package/dist/core/table.js +34 -0
  76. package/dist/core/table.js.map +1 -0
  77. package/dist/core/types.d.ts +65 -0
  78. package/dist/core/types.js +40 -0
  79. package/dist/core/types.js.map +1 -0
  80. package/dist/index.d.ts +11 -0
  81. package/dist/index.js +73 -0
  82. package/dist/index.js.map +1 -0
  83. package/dist/registry.d.ts +10 -0
  84. package/dist/registry.js +39 -0
  85. package/dist/registry.js.map +1 -0
  86. package/dist/version.d.ts +1 -0
  87. package/dist/version.js +3 -0
  88. package/dist/version.js.map +1 -0
  89. package/package.json +33 -4
  90. package/skills/hypercli-account.json +17 -0
  91. package/skills/hypercli-agents.json +23 -0
  92. package/skills/hypercli-auth.json +11 -0
  93. package/skills/hypercli-compute.json +20 -0
  94. package/skills/hypercli-flows.json +11 -0
  95. package/skills/hypercli-knowledge.json +13 -0
  96. package/skills/hypercli-voice.json +10 -0
  97. package/skills/hypercli.json +23 -0
  98. package/skills/index.json +124 -0
@@ -0,0 +1,496 @@
1
+ import { createInterface } from 'node:readline/promises';
2
+ import { APIError, isUuid, } from '@hypercli.com/sdk';
3
+ import { parseCommandArgs, parseUniversal } from '../core/argv.js';
4
+ import { CliError, UsageError } from '../core/errors.js';
5
+ import { closestMatch, renderGroupHelp } from '../core/help.js';
6
+ export const name = 'jobs';
7
+ export const summary = 'Run and manage GPU jobs.';
8
+ export const usage = [
9
+ 'hyper jobs gpus [--json]',
10
+ 'hyper jobs create --image IMG [--runtime SEC] [--gpu T] [--region R] [--count N] [--name N] [--env K=V ...] [--constraint K=V ...] [--cpu-vendor V] [--dry-run] -- CMD...',
11
+ 'hyper jobs list [--state S] [--json]',
12
+ 'hyper jobs get <id> [--json]',
13
+ 'hyper jobs logs <id> [-f|--follow] [--tail N]',
14
+ 'hyper jobs cancel <id> [--yes] [--json]',
15
+ ];
16
+ const HIDDEN_COMMANDS = ['extend', 'exec'];
17
+ const COMMANDS = ['gpus', 'create', 'list', 'get', 'logs', 'cancel', ...HIDDEN_COMMANDS];
18
+ function printHelp() {
19
+ process.stdout.write(`${renderGroupHelp({ name, summary, usage, run })}\n`);
20
+ }
21
+ function describeError(err) {
22
+ if (err instanceof APIError)
23
+ return `${err.statusCode}: ${err.detail}`;
24
+ return err instanceof Error ? err.message : String(err);
25
+ }
26
+ function str(value) {
27
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
28
+ }
29
+ function positiveInt(value, flag) {
30
+ const n = Number(value);
31
+ if (typeof value !== 'string' || !Number.isInteger(n) || n < 1) {
32
+ throw new UsageError(`--${flag} expects a positive integer, got '${String(value)}'`);
33
+ }
34
+ return n;
35
+ }
36
+ function iso(epochSeconds) {
37
+ if (epochSeconds === null || !Number.isFinite(epochSeconds))
38
+ return '';
39
+ return new Date(epochSeconds * 1000).toISOString();
40
+ }
41
+ function jobName(job) {
42
+ for (const tag of job.tags ?? []) {
43
+ if (tag.startsWith('name='))
44
+ return tag.slice('name='.length);
45
+ }
46
+ return '';
47
+ }
48
+ async function resolveJobId(jobs, prefix) {
49
+ if (isUuid(prefix))
50
+ return prefix;
51
+ const listed = await jobs.list();
52
+ const matches = listed.map((j) => j.jobId).filter((id) => id.startsWith(prefix));
53
+ if (matches.length === 1)
54
+ return matches[0];
55
+ if (matches.length === 0) {
56
+ throw new CliError(`no job in 'hyper jobs list' has an id starting with '${prefix}' — try the full id`);
57
+ }
58
+ throw new CliError(`ambiguous id prefix '${prefix}' — ${matches.length} matches:\n ${matches.slice(0, 8).join('\n ')}`);
59
+ }
60
+ function splitCommand(args) {
61
+ const idx = args.indexOf('--');
62
+ if (idx === -1)
63
+ return { flags: args, command: null };
64
+ return { flags: args.slice(0, idx), command: args.slice(idx + 1) };
65
+ }
66
+ function parseEnv(entries) {
67
+ if (!Array.isArray(entries) || entries.length === 0)
68
+ return undefined;
69
+ const env = {};
70
+ for (const entry of entries) {
71
+ const eq = String(entry).indexOf('=');
72
+ if (eq <= 0)
73
+ throw new UsageError(`invalid --env '${String(entry)}' (expected KEY=VALUE)`);
74
+ env[String(entry).slice(0, eq)] = String(entry).slice(eq + 1);
75
+ }
76
+ return env;
77
+ }
78
+ function parseConstraints(entries, cpuVendor) {
79
+ const constraints = {};
80
+ if (Array.isArray(entries)) {
81
+ for (const entry of entries) {
82
+ const eq = String(entry).indexOf('=');
83
+ const key = eq > 0 ? String(entry).slice(0, eq).trim() : '';
84
+ const value = eq > 0 ? String(entry).slice(eq + 1).trim() : '';
85
+ if (!key || !value)
86
+ throw new UsageError(`invalid --constraint '${String(entry)}' (expected KEY=VALUE)`);
87
+ constraints[key] = value;
88
+ }
89
+ }
90
+ const vendor = str(cpuVendor);
91
+ if (vendor && constraints.cpu_vendor === undefined)
92
+ constraints.cpu_vendor = vendor;
93
+ return Object.keys(constraints).length > 0 ? constraints : undefined;
94
+ }
95
+ function rowsBlock(rows) {
96
+ const width = Math.max(0, ...rows.map(([key]) => key.length));
97
+ return rows.map(([key, value]) => ` ${key.padEnd(width)} ${value}`.trimEnd()).join('\n');
98
+ }
99
+ function detailBlock(job) {
100
+ return rowsBlock([
101
+ ['id', job.jobId],
102
+ ['name', jobName(job)],
103
+ ['state', job.state],
104
+ ['image', job.dockerImage],
105
+ ['gpu', `${job.gpuType} x${job.gpuCount}`],
106
+ ['region', job.region],
107
+ ['interruptible', job.interruptible ? 'yes' : 'no'],
108
+ ['price_per_hour', job.pricePerHour ? `$${job.pricePerHour.toFixed(2)}` : ''],
109
+ ['runtime_s', String(job.runtime)],
110
+ ['elapsed_s', String(job.elapsed)],
111
+ ['time_left_s', String(job.timeLeft)],
112
+ ['hostname', job.hostname ?? ''],
113
+ ['created_at', iso(job.createdAt)],
114
+ ['started_at', iso(job.startedAt)],
115
+ ['completed_at', iso(job.completedAt)],
116
+ ['tags', (job.tags ?? []).join(', ')],
117
+ ]);
118
+ }
119
+ async function gpus(ctx, args) {
120
+ const parsed = parseCommandArgs(args, {
121
+ gpu: { type: 'string', short: 'g' },
122
+ region: { type: 'string', short: 'r' },
123
+ });
124
+ if (parsed.help)
125
+ return printHelp();
126
+ if (parsed.positionals.length > 0)
127
+ throw new UsageError('usage: hyper jobs gpus [--json]');
128
+ const gpu = str(parsed.values.gpu);
129
+ const region = str(parsed.values.region);
130
+ const client = await ctx.client();
131
+ let available;
132
+ try {
133
+ available = await client.instances.listAvailable(gpu, region);
134
+ }
135
+ catch (err) {
136
+ throw new CliError(`failed to list GPU catalog: ${describeError(err)}`);
137
+ }
138
+ let idle = {};
139
+ try {
140
+ const capacity = await client.instances.capacity(gpu);
141
+ if (capacity && typeof capacity === 'object') {
142
+ const raw = capacity.idle;
143
+ if (raw && typeof raw === 'object')
144
+ idle = raw;
145
+ }
146
+ }
147
+ catch {
148
+ idle = {};
149
+ }
150
+ const rows = [...available].sort((a, b) => a.gpuType.localeCompare(b.gpuType) || a.gpuCount - b.gpuCount || a.region.localeCompare(b.region));
151
+ ctx.output.info(`${rows.length} GPU configuration${rows.length === 1 ? '' : 's'}`);
152
+ ctx.output.result(available, {
153
+ columns: ['GPU_TYPE', 'REGION', 'MEM_GB', 'PRICE/HR', 'AVAILABLE'],
154
+ rows: rows.map((g) => {
155
+ const price = g.priceSpot ?? g.priceOnDemand;
156
+ return [
157
+ g.gpuCount > 1 ? `${g.gpuType} x${g.gpuCount}` : g.gpuType,
158
+ g.region,
159
+ g.memoryGb,
160
+ price === null ? '' : `$${price.toFixed(2)}`,
161
+ idle[g.gpuType]?.[g.region] ?? '',
162
+ ];
163
+ }),
164
+ });
165
+ }
166
+ async function create(ctx, args) {
167
+ const { flags, command } = splitCommand(args);
168
+ const parsed = parseCommandArgs(flags, {
169
+ image: { type: 'string' },
170
+ runtime: { type: 'string' },
171
+ gpu: { type: 'string', short: 'g' },
172
+ region: { type: 'string', short: 'r' },
173
+ count: { type: 'string', short: 'n' },
174
+ name: { type: 'string' },
175
+ env: { type: 'string', short: 'e', multiple: true },
176
+ constraint: { type: 'string', multiple: true },
177
+ 'cpu-vendor': { type: 'string' },
178
+ 'dry-run': { type: 'boolean', default: false },
179
+ });
180
+ if (parsed.help)
181
+ return printHelp();
182
+ if (parsed.positionals.length > 0) {
183
+ throw new UsageError(`unexpected argument '${parsed.positionals[0]}' — put the command after '--'`);
184
+ }
185
+ if (command === null) {
186
+ throw new UsageError("missing '-- CMD...'\nexample: hyper jobs create --image nvidia/cuda:12.6.3-base-ubuntu22.04 -- nvidia-smi");
187
+ }
188
+ const image = str(parsed.values.image);
189
+ if (!image)
190
+ throw new UsageError('create requires --image IMG');
191
+ const options = { image };
192
+ if (command.length > 0)
193
+ options.command = command.join(' ');
194
+ const gpu = str(parsed.values.gpu);
195
+ if (gpu)
196
+ options.gpuType = gpu;
197
+ if (parsed.values.count !== undefined)
198
+ options.gpuCount = positiveInt(parsed.values.count, 'count');
199
+ const region = str(parsed.values.region);
200
+ if (region)
201
+ options.region = region;
202
+ if (parsed.values.runtime !== undefined)
203
+ options.runtime = positiveInt(parsed.values.runtime, 'runtime');
204
+ const env = parseEnv(parsed.values.env);
205
+ if (env)
206
+ options.env = env;
207
+ const constraints = parseConstraints(parsed.values.constraint, parsed.values['cpu-vendor']);
208
+ if (constraints)
209
+ options.constraints = constraints;
210
+ const jobTag = str(parsed.values.name);
211
+ if (jobTag)
212
+ options.tags = { name: jobTag };
213
+ if (parsed.values['dry-run'] === true) {
214
+ ctx.output.result(options, JSON.stringify(options, null, 2));
215
+ return;
216
+ }
217
+ const client = await ctx.client();
218
+ let job;
219
+ try {
220
+ job = await client.jobs.create(options);
221
+ }
222
+ catch (err) {
223
+ throw new CliError(`failed to create job: ${describeError(err)}`);
224
+ }
225
+ ctx.output.info(`created ${job.jobId} (${job.state})`);
226
+ ctx.output.result(job, detailBlock(job));
227
+ }
228
+ async function list(ctx, args) {
229
+ const parsed = parseCommandArgs(args, {
230
+ state: { type: 'string', short: 's' },
231
+ });
232
+ if (parsed.help)
233
+ return printHelp();
234
+ if (parsed.positionals.length > 0)
235
+ throw new UsageError('usage: hyper jobs list [--state S] [--json]');
236
+ const state = str(parsed.values.state);
237
+ const client = await ctx.client();
238
+ let jobs;
239
+ try {
240
+ jobs = await client.jobs.list(state ? { state } : {});
241
+ }
242
+ catch (err) {
243
+ throw new CliError(`failed to list jobs: ${describeError(err)}`);
244
+ }
245
+ const counts = new Map();
246
+ for (const job of jobs)
247
+ counts.set(job.state, (counts.get(job.state) ?? 0) + 1);
248
+ const summary = jobs.length === 0
249
+ ? 'no jobs found'
250
+ : `${jobs.length} job${jobs.length === 1 ? '' : 's'}: ${[...counts.entries()]
251
+ .map(([s, n]) => `${s}=${n}`)
252
+ .join(' ')}`;
253
+ ctx.output.info(summary);
254
+ ctx.output.result(jobs, {
255
+ columns: ['ID', 'NAME', 'IMAGE', 'GPU', 'STATE', 'CREATED'],
256
+ rows: jobs.map((job) => [
257
+ job.jobId,
258
+ jobName(job),
259
+ job.dockerImage,
260
+ `${job.gpuType} x${job.gpuCount}`,
261
+ job.state,
262
+ iso(job.createdAt),
263
+ ]),
264
+ });
265
+ }
266
+ async function get(ctx, args) {
267
+ const parsed = parseCommandArgs(args);
268
+ if (parsed.help)
269
+ return printHelp();
270
+ const [id, ...rest] = parsed.positionals;
271
+ if (!id || rest.length > 0)
272
+ throw new UsageError('usage: hyper jobs get <id> [--json]');
273
+ const client = await ctx.client();
274
+ const jobId = await resolveJobId(client.jobs, id);
275
+ let job;
276
+ try {
277
+ job = await client.jobs.get(jobId);
278
+ }
279
+ catch (err) {
280
+ throw new CliError(`failed to get job ${jobId}: ${describeError(err)}`);
281
+ }
282
+ ctx.output.result(job, detailBlock(job));
283
+ }
284
+ function lastLines(text, n) {
285
+ const lines = text.replace(/\r\n/g, '\n').replace(/\n$/, '').split('\n');
286
+ return lines.slice(-n).join('\n');
287
+ }
288
+ function trimFinalNewline(text) {
289
+ return text.endsWith('\n') ? text.slice(0, -1) : text;
290
+ }
291
+ function sleep(ms) {
292
+ return new Promise((resolve) => setTimeout(resolve, ms));
293
+ }
294
+ const POLL_BASE_MS = 2000;
295
+ const POLL_CAP_MS = 5000;
296
+ async function followLogs(ctx, jobs, jobId, tail) {
297
+ let seen = await jobs.logs(jobId);
298
+ const initial = tail !== undefined ? lastLines(seen, tail) : trimFinalNewline(seen);
299
+ if (initial)
300
+ ctx.output.result(initial, initial);
301
+ let byteOffset = Buffer.byteLength(seen);
302
+ let delay = POLL_BASE_MS;
303
+ let interrupted = false;
304
+ const onSigint = () => {
305
+ interrupted = true;
306
+ };
307
+ process.on('SIGINT', onSigint);
308
+ try {
309
+ while (!interrupted) {
310
+ await sleep(delay);
311
+ if (interrupted)
312
+ break;
313
+ const text = await jobs.logs(jobId);
314
+ const delta = text.length > seen.length ? (text.startsWith(seen) ? text.slice(seen.length) : text) : '';
315
+ if (delta.length === 0) {
316
+ seen = text;
317
+ delay = Math.min(delay * 2, POLL_CAP_MS);
318
+ continue;
319
+ }
320
+ byteOffset += Buffer.byteLength(delta);
321
+ seen = text;
322
+ delay = POLL_BASE_MS;
323
+ ctx.output.result(delta, delta);
324
+ }
325
+ }
326
+ finally {
327
+ process.removeListener('SIGINT', onSigint);
328
+ }
329
+ if (interrupted) {
330
+ ctx.output.info(`stopped following ${jobId} (${byteOffset} bytes printed)`);
331
+ return 130;
332
+ }
333
+ return undefined;
334
+ }
335
+ async function logs(ctx, args) {
336
+ const parsed = parseCommandArgs(args, {
337
+ follow: { type: 'boolean', short: 'f', default: false },
338
+ tail: { type: 'string', short: 'n' },
339
+ });
340
+ if (parsed.help)
341
+ return printHelp();
342
+ const [id, ...rest] = parsed.positionals;
343
+ if (!id || rest.length > 0) {
344
+ throw new UsageError('usage: hyper jobs logs <id> [-f|--follow] [--tail N]');
345
+ }
346
+ const tail = parsed.values.tail !== undefined ? positiveInt(parsed.values.tail, 'tail') : undefined;
347
+ const client = await ctx.client();
348
+ const jobId = await resolveJobId(client.jobs, id);
349
+ if (parsed.values.follow === true) {
350
+ return followLogs(ctx, client.jobs, jobId, tail);
351
+ }
352
+ let text;
353
+ try {
354
+ text = await client.jobs.logs(jobId);
355
+ }
356
+ catch (err) {
357
+ throw new CliError(`failed to fetch logs for ${jobId}: ${describeError(err)}`);
358
+ }
359
+ const out = tail !== undefined ? lastLines(text, tail) : trimFinalNewline(text);
360
+ if (!out)
361
+ ctx.output.info('(no logs)');
362
+ ctx.output.result(out, out);
363
+ return undefined;
364
+ }
365
+ async function confirm(question) {
366
+ const rl = createInterface({ input: process.stdin, output: process.stderr });
367
+ try {
368
+ const answer = (await rl.question(question)).trim().toLowerCase();
369
+ return answer === 'y' || answer === 'yes';
370
+ }
371
+ finally {
372
+ rl.close();
373
+ }
374
+ }
375
+ async function cancel(ctx, args) {
376
+ const parsed = parseCommandArgs(args, {
377
+ yes: { type: 'boolean', short: 'y', default: false },
378
+ });
379
+ if (parsed.help)
380
+ return printHelp();
381
+ const [id, ...rest] = parsed.positionals;
382
+ if (!id || rest.length > 0)
383
+ throw new UsageError('usage: hyper jobs cancel <id> [--yes] [--json]');
384
+ const skipPrompt = parsed.values.yes === true || parsed.format === 'json';
385
+ if (!skipPrompt) {
386
+ if (!process.stdin.isTTY) {
387
+ throw new CliError(`refusing to cancel ${id} without confirmation: pass --yes (or --json)`);
388
+ }
389
+ if (!(await confirm(`Cancel job ${id}? [y/N] `))) {
390
+ ctx.output.info(`aborted; job ${id} not canceled`);
391
+ return;
392
+ }
393
+ }
394
+ const client = await ctx.client();
395
+ const jobId = await resolveJobId(client.jobs, id);
396
+ try {
397
+ await client.jobs.cancel(jobId);
398
+ }
399
+ catch (err) {
400
+ throw new CliError(`failed to cancel job ${jobId}: ${describeError(err)}`);
401
+ }
402
+ ctx.output.info(`canceled ${jobId}`);
403
+ ctx.output.result({ id: jobId, canceled: true }, `Canceled ${jobId}`);
404
+ }
405
+ async function extend(ctx, args) {
406
+ const parsed = parseCommandArgs(args, {
407
+ seconds: { type: 'string' },
408
+ });
409
+ if (parsed.help)
410
+ return printHelp();
411
+ const [id, ...rest] = parsed.positionals;
412
+ if (!id || rest.length > 0)
413
+ throw new UsageError('usage: hyper jobs extend <id> --seconds N');
414
+ if (parsed.values.seconds === undefined)
415
+ throw new UsageError('extend requires --seconds N');
416
+ const seconds = positiveInt(parsed.values.seconds, 'seconds');
417
+ const client = await ctx.client();
418
+ const jobId = await resolveJobId(client.jobs, id);
419
+ let job;
420
+ try {
421
+ job = await client.jobs.extend(jobId, seconds);
422
+ }
423
+ catch (err) {
424
+ throw new CliError(`failed to extend job ${jobId}: ${describeError(err)}`);
425
+ }
426
+ ctx.output.info(`extended ${jobId}: runtime ${job.runtime}s`);
427
+ ctx.output.result(job, detailBlock(job));
428
+ }
429
+ async function exec(ctx, args) {
430
+ const { flags, command } = splitCommand(args);
431
+ const parsed = parseCommandArgs(flags, {
432
+ timeout: { type: 'string', short: 't' },
433
+ });
434
+ if (parsed.help)
435
+ return printHelp();
436
+ const [id, ...rest] = parsed.positionals;
437
+ if (!id || rest.length > 0 || !command || command.length === 0) {
438
+ throw new UsageError('usage: hyper jobs exec <id> [--timeout SEC] -- CMD...\nexample: hyper jobs exec abc123 -- nvidia-smi');
439
+ }
440
+ let timeout = 30;
441
+ if (parsed.values.timeout !== undefined) {
442
+ timeout = positiveInt(parsed.values.timeout, 'timeout');
443
+ if (timeout > 300)
444
+ throw new UsageError('--timeout must be between 1 and 300 seconds');
445
+ }
446
+ const client = await ctx.client();
447
+ const jobId = await resolveJobId(client.jobs, id);
448
+ let result;
449
+ try {
450
+ result = await client.jobs.exec(jobId, command, timeout);
451
+ }
452
+ catch (err) {
453
+ throw new CliError(`exec on ${jobId} failed: ${describeError(err)}`);
454
+ }
455
+ if (result.stderr)
456
+ ctx.output.info(result.stderr);
457
+ ctx.output.result({ jobId: result.jobId, stdout: result.stdout, stderr: result.stderr, exitCode: result.exitCode }, result.stdout || `(exit ${result.exitCode})`);
458
+ if (result.exitCode !== 0) {
459
+ return result.exitCode >= 1 && result.exitCode <= 255 ? result.exitCode : 1;
460
+ }
461
+ return undefined;
462
+ }
463
+ export async function run(ctx, args) {
464
+ const pre = parseUniversal(args);
465
+ if (pre.help || pre.positionals.length === 0) {
466
+ printHelp();
467
+ return;
468
+ }
469
+ const [sub] = pre.positionals;
470
+ const subArgs = [...args];
471
+ subArgs.splice(args.indexOf(sub), 1);
472
+ switch (sub) {
473
+ case 'gpus':
474
+ return gpus(ctx, subArgs);
475
+ case 'create':
476
+ return create(ctx, subArgs);
477
+ case 'list':
478
+ case 'ls':
479
+ return list(ctx, subArgs);
480
+ case 'get':
481
+ return get(ctx, subArgs);
482
+ case 'logs':
483
+ return logs(ctx, subArgs);
484
+ case 'cancel':
485
+ return cancel(ctx, subArgs);
486
+ case 'extend':
487
+ return extend(ctx, subArgs);
488
+ case 'exec':
489
+ return exec(ctx, subArgs);
490
+ default: {
491
+ const hint = closestMatch(sub, COMMANDS);
492
+ throw new UsageError(`unknown jobs command '${sub}'${hint ? ` — did you mean '${hint}'?` : ''}\nusage: ${usage.join('\n ')}`);
493
+ }
494
+ }
495
+ }
496
+ //# sourceMappingURL=jobs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jobs.js","sourceRoot":"","sources":["../../src/commands/jobs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * `hyper me` — composite identity check (golden sample of an authenticated
3
+ * read command).
4
+ *
5
+ * Three authorities, reported independently:
6
+ * 1. Product identity — client.user.authMe() (GET /api/auth/me)
7
+ * 2. Agent entitlement — client.agent.subscriptionSummary() (agents section;
8
+ * a 401/403 here reports "unavailable" and must NOT erase section 1)
9
+ * 3. Runtime identity — client.deployments.accessIdentity() (cheap probe;
10
+ * only an agent runtime key can name its Agent — skip silently otherwise)
11
+ *
12
+ * When section 3 says the key IS an agent runtime key, a fourth step resolves
13
+ * the Agent record itself (client.deployments.get('self') — name, handle,
14
+ * runtime); its failure must leave the output exactly as it was.
15
+ *
16
+ * The API key itself is never printed (keyId/keyName are identifiers, not the
17
+ * secret).
18
+ */
19
+ import type { CommandContext } from '../core/types.js';
20
+ export declare const name = "me";
21
+ export declare const summary = "Resolve the current auth context and show key capabilities.";
22
+ export declare const usage: string[];
23
+ export declare function run(ctx: CommandContext, args: string[]): Promise<void>;