@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,460 @@
1
+ /**
2
+ * `hyper integrations` — third-party provider connections (OAuth via the
3
+ * /integrations facade; Nango-backed or Slack relay).
4
+ *
5
+ * hyper integrations providers
6
+ * hyper integrations connections
7
+ * hyper integrations status <agent>
8
+ * hyper integrations connect <provider> [--wait] [--timeout SECONDS]
9
+ * hyper integrations disconnect <provider>
10
+ * hyper integrations enable <provider> [--agent <name|id>]
11
+ * hyper integrations disable <provider> [--agent <name|id>]
12
+ * hyper integrations unset <provider> --agent <name|id>
13
+ * hyper integrations token <provider>
14
+ * hyper integrations call <provider> <METHOD> <path> [body]
15
+ *
16
+ * `token` prints ONLY the raw access token on stdout in table mode so it is
17
+ * pipe-safe (`GH_TOKEN=$(hyper integrations token github)`); metadata goes to
18
+ * stderr. Relay-managed Slack supports connect/disconnect, but not
19
+ * token/credentials/proxy or global enable/disable.
20
+ *
21
+ * enable/disable without --agent flip the facade connection (PATCH
22
+ * /connections/{provider}); with --agent they write the per-agent meta
23
+ * override (meta.integrations[provider].enabled). `unset` removes that
24
+ * override, reverting the provider to default-enabled for the agent.
25
+ * `status` shows the effective per-provider state for one agent:
26
+ * effective = connected AND facade hyper_enabled AND (agent override ?? true).
27
+ */
28
+ import { APIError } from '@hypercli.com/sdk';
29
+ import { parseCommandArgs, parseUniversal } from '../core/argv.js';
30
+ import { CliError, UsageError } from '../core/errors.js';
31
+ import { renderGroupHelp } from '../core/help.js';
32
+ import { runIntegrationsMcp } from '../core/integrations-mcp.js';
33
+ import { readFile } from 'node:fs/promises';
34
+ export const name = 'integrations';
35
+ export const summary = 'Manage third-party provider connections (GitHub, Slack, ...).';
36
+ export const usage = [
37
+ 'hyper integrations --mcp [--json]',
38
+ 'hyper integrations --mcp <tool> --help [--json]',
39
+ 'hyper integrations --mcp <tool> [--args JSON] [--json]',
40
+ 'hyper integrations providers [--json]',
41
+ 'hyper integrations connections [--json]',
42
+ 'hyper integrations status <agent> [--json]',
43
+ 'hyper integrations connect <provider> [--new | --connection ID] [--wait] [--timeout SECONDS]',
44
+ 'hyper integrations disconnect <provider> [--connection ID]',
45
+ 'hyper integrations enable <provider> [--agent <name|id> | --connection ID]',
46
+ 'hyper integrations disable <provider> [--agent <name|id> | --connection ID]',
47
+ 'hyper integrations unset <provider> --agent <name|id>',
48
+ 'hyper integrations token <provider> [--connection ID] [--json]',
49
+ 'hyper integrations credentials <provider> [--connection ID] [--field FIELD] [--json]',
50
+ 'hyper integrations import <provider> --file <path|-> [--connection ID]',
51
+ 'hyper integrations call <provider> <METHOD> <path> [body] [--connection ID] [--headers JSON] [--json]',
52
+ ];
53
+ const DEFAULT_WAIT_TIMEOUT_S = 600;
54
+ const WAIT_POLL_INTERVAL_MS = 2000;
55
+ function stringOption(value) {
56
+ return typeof value === 'string' ? value : undefined;
57
+ }
58
+ /** APIError -> CliError with the server detail verbatim (incl. relay 400s). */
59
+ function toCliError(err, action) {
60
+ if (err instanceof APIError)
61
+ return new CliError(`${action}: ${err.detail}`);
62
+ return err instanceof CliError ? err : new CliError(`${action}: ${err instanceof Error ? err.message : String(err)}`);
63
+ }
64
+ /** Credential and provider-call errors must not echo arbitrary response/request bodies. */
65
+ function privateRequestError(err, action) {
66
+ return new CliError(`${action}${err instanceof APIError ? ` (HTTP ${err.statusCode})` : ''}; check provider configuration, permissions and connection selection`);
67
+ }
68
+ function provider(parsed, usageLine) {
69
+ const name = parsed.positionals[0];
70
+ if (!name)
71
+ throw new UsageError(`usage: ${usageLine}`);
72
+ const extra = parsed.positionals[1];
73
+ if (extra !== undefined)
74
+ throw new UsageError(`unexpected argument '${extra}' (${usageLine})`);
75
+ return name;
76
+ }
77
+ async function cmdProviders(ctx, args) {
78
+ const parsed = parseCommandArgs(args);
79
+ if (parsed.positionals.length > 0) {
80
+ throw new UsageError(`unexpected argument '${parsed.positionals[0]}' (hyper integrations providers)`);
81
+ }
82
+ const client = await ctx.client();
83
+ let providers;
84
+ try {
85
+ providers = await client.integrations.listProviders();
86
+ }
87
+ catch (err) {
88
+ throw toCliError(err, 'failed to list providers');
89
+ }
90
+ ctx.output.result(providers, {
91
+ columns: ['NAME', 'DISPLAY_NAME', 'AUTH', 'MODES'],
92
+ rows: providers.map((p) => [p.name, p.displayName, p.auth, p.modes.join(', ')]),
93
+ });
94
+ }
95
+ async function cmdConnections(ctx, args) {
96
+ const parsed = parseCommandArgs(args);
97
+ if (parsed.positionals.length > 0) {
98
+ throw new UsageError(`unexpected argument '${parsed.positionals[0]}' (hyper integrations connections)`);
99
+ }
100
+ const client = await ctx.client();
101
+ let connections;
102
+ try {
103
+ connections = await client.integrations.listConnections();
104
+ }
105
+ catch (err) {
106
+ throw toCliError(err, 'failed to list connections');
107
+ }
108
+ ctx.output.result(connections, {
109
+ columns: ['NAME', 'CONNECTED', 'ENABLED', 'BACKEND', 'CONNECTION_IDS'],
110
+ rows: connections.map((entry) => [
111
+ entry.name,
112
+ entry.connected ? 'yes' : 'no',
113
+ entry.connection?.hyperEnabled === null || entry.connection?.hyperEnabled === undefined
114
+ ? ''
115
+ : entry.connection.hyperEnabled
116
+ ? 'yes'
117
+ : 'no',
118
+ entry.backendAvailable ? entry.backend : `${entry.backend} (unavailable)`,
119
+ (entry.connections ?? (entry.connection ? [entry.connection] : [])).map((c) => c.id).join(', '),
120
+ ]),
121
+ });
122
+ }
123
+ async function cmdConnect(ctx, args) {
124
+ const parsed = parseCommandArgs(args, {
125
+ wait: { type: 'boolean', default: false },
126
+ timeout: { type: 'string' },
127
+ connection: { type: 'string' },
128
+ new: { type: 'boolean', default: false },
129
+ });
130
+ const name = provider(parsed, 'hyper integrations connect <provider> [--wait] [--timeout SECONDS]');
131
+ if (parsed.values.new && parsed.values.connection)
132
+ throw new UsageError('Choose --new or --connection, not both');
133
+ if (parsed.values.connection && parsed.values.wait)
134
+ throw new UsageError('Reconnect returns an authorization URL; --wait cannot prove a refresh of an existing connection');
135
+ let timeoutS = DEFAULT_WAIT_TIMEOUT_S;
136
+ if (parsed.values.timeout !== undefined) {
137
+ timeoutS = Number(parsed.values.timeout);
138
+ if (!Number.isFinite(timeoutS) || timeoutS <= 0) {
139
+ throw new UsageError('--timeout expects a positive number of seconds');
140
+ }
141
+ }
142
+ const client = await ctx.client();
143
+ const previousIds = new Set();
144
+ if (parsed.values.new && parsed.values.wait) {
145
+ try {
146
+ const entry = (await client.integrations.listConnections()).find((p) => p.name === name);
147
+ if (!entry?.backendAvailable)
148
+ throw new CliError('Integration backend unavailable');
149
+ for (const c of entry.connections ?? (entry.connection ? [entry.connection] : []))
150
+ previousIds.add(c.id);
151
+ }
152
+ catch (err) {
153
+ throw toCliError(err, 'failed to inspect existing connections');
154
+ }
155
+ }
156
+ let session;
157
+ try {
158
+ session = await client.integrations.startConnection(name, stringOption(parsed.values.connection), Boolean(parsed.values.new));
159
+ }
160
+ catch (err) {
161
+ throw toCliError(err, `failed to start ${name} connection`);
162
+ }
163
+ const payload = { ...session, connected: false };
164
+ const lines = [`authorize ${session.authorizeUrl}`];
165
+ if (session.expiresAt)
166
+ lines.push(`expires ${session.expiresAt}`);
167
+ if (!parsed.values.wait) {
168
+ ctx.output.result(payload, lines.join('\n'));
169
+ return;
170
+ }
171
+ ctx.output.info(`authorize ${session.authorizeUrl}`);
172
+ ctx.output.info(`waiting up to ${timeoutS}s for the ${name} OAuth flow to finish...`);
173
+ const deadline = Date.now() + timeoutS * 1000;
174
+ for (;;) {
175
+ try {
176
+ let connectionId;
177
+ if (parsed.values.new) {
178
+ const entry = (await client.integrations.listConnections()).find((p) => p.name === name);
179
+ if (!entry?.backendAvailable)
180
+ throw new CliError('Integration backend unavailable');
181
+ const added = (entry.connections ?? (entry.connection ? [entry.connection] : [])).filter((c) => !previousIds.has(c.id));
182
+ if (added.length === 0)
183
+ throw new APIError(409, 'Connection is not complete');
184
+ if (added.length > 1)
185
+ throw new CliError('Multiple new connections found; inspect connections and select an ID');
186
+ connectionId = added[0].id;
187
+ }
188
+ const completed = await client.integrations.completeConnection(name, connectionId);
189
+ payload.connected = true;
190
+ payload.connection = completed.connection;
191
+ ctx.output.result(payload, [...lines, `connected ${name}`].join('\n'));
192
+ return;
193
+ }
194
+ catch (err) {
195
+ if (!(err instanceof APIError && err.statusCode === 409 && err.detail === 'Connection is not complete')) {
196
+ throw toCliError(err, `failed to complete ${name} connection`);
197
+ }
198
+ if (Date.now() >= deadline) {
199
+ throw new CliError(`${name} connection not completed within ${timeoutS}s — finish the OAuth flow, then inspect 'hyper integrations connections'`);
200
+ }
201
+ await new Promise((resolve) => setTimeout(resolve, WAIT_POLL_INTERVAL_MS));
202
+ }
203
+ }
204
+ }
205
+ async function cmdDisconnect(ctx, args) {
206
+ const parsed = parseCommandArgs(args, { connection: { type: 'string' } });
207
+ const name = provider(parsed, 'hyper integrations disconnect <provider>');
208
+ const client = await ctx.client();
209
+ try {
210
+ await client.integrations.disconnect(name, stringOption(parsed.values.connection));
211
+ }
212
+ catch (err) {
213
+ throw toCliError(err, `failed to disconnect ${name}`);
214
+ }
215
+ ctx.output.result({ provider: name, deleted: true }, `disconnected ${name}`);
216
+ }
217
+ function agentOverrideEnabled(agentMeta, providerName) {
218
+ if (!agentMeta || typeof agentMeta !== 'object')
219
+ return null;
220
+ const integrations = agentMeta.integrations;
221
+ if (!integrations || typeof integrations !== 'object')
222
+ return null;
223
+ const entry = integrations[providerName];
224
+ if (!entry || typeof entry !== 'object')
225
+ return null;
226
+ const enabled = entry.enabled;
227
+ return typeof enabled === 'boolean' ? enabled : null;
228
+ }
229
+ async function cmdStatus(ctx, args) {
230
+ const parsed = parseCommandArgs(args);
231
+ const agentRef = provider(parsed, 'hyper integrations status <agent>');
232
+ const client = await ctx.client();
233
+ let connections;
234
+ let agent;
235
+ try {
236
+ [connections, agent] = await Promise.all([
237
+ client.integrations.listConnections(),
238
+ client.deployments.get(agentRef),
239
+ ]);
240
+ }
241
+ catch (err) {
242
+ throw toCliError(err, `failed to load integrations status for ${agentRef}`);
243
+ }
244
+ const rows = connections.map((entry) => {
245
+ const connectedRows = entry.connections ?? (entry.connection ? [entry.connection] : []);
246
+ const facadeEnabled = connectedRows.length ? connectedRows.some((c) => c.hyperEnabled === true) : null;
247
+ const agentEnabled = agentOverrideEnabled(agent.meta, entry.name);
248
+ return {
249
+ provider: entry.name,
250
+ connected: entry.connected,
251
+ facadeEnabled,
252
+ agentEnabled,
253
+ effective: entry.connected && facadeEnabled === true && agentEnabled !== false,
254
+ };
255
+ });
256
+ ctx.output.result({ agent: { id: agent.id, name: agent.name }, providers: rows }, {
257
+ columns: ['PROVIDER', 'CONNECTED', 'FACADE', 'AGENT', 'EFFECTIVE'],
258
+ rows: rows.map((row) => [
259
+ row.provider,
260
+ row.connected ? 'yes' : 'no',
261
+ row.facadeEnabled === null ? '–' : row.facadeEnabled ? 'on' : 'off',
262
+ row.agentEnabled === null ? 'unset' : row.agentEnabled ? 'enabled' : 'disabled',
263
+ row.effective ? 'yes' : 'no',
264
+ ]),
265
+ });
266
+ }
267
+ async function setEnabled(ctx, args, enabled) {
268
+ const parsed = parseCommandArgs(args, { agent: { type: 'string' }, connection: { type: 'string' } });
269
+ const word = enabled ? 'enable' : 'disable';
270
+ const name = provider(parsed, `hyper integrations ${word} <provider> [--agent <name|id>]`);
271
+ const agentRef = typeof parsed.values.agent === 'string' ? parsed.values.agent : undefined;
272
+ const client = await ctx.client();
273
+ if (agentRef) {
274
+ if (parsed.values.connection)
275
+ throw new UsageError('--connection cannot be combined with --agent (policy is per provider)');
276
+ try {
277
+ await client.deployments.update(agentRef, { integrations: { [name]: { enabled } } });
278
+ }
279
+ catch (err) {
280
+ throw toCliError(err, `failed to ${word} ${name} for ${agentRef}`);
281
+ }
282
+ ctx.output.result({ agent: agentRef, provider: name, enabled }, `${enabled ? 'enabled' : 'disabled'} ${name} for ${agentRef}`);
283
+ return;
284
+ }
285
+ try {
286
+ await client.integrations.setConnectionEnabled(name, enabled, stringOption(parsed.values.connection));
287
+ }
288
+ catch (err) {
289
+ throw toCliError(err, `failed to ${word} ${name}`);
290
+ }
291
+ ctx.output.result({ provider: name, enabled }, `${enabled ? 'enabled' : 'disabled'} ${name}`);
292
+ }
293
+ async function cmdUnset(ctx, args) {
294
+ const parsed = parseCommandArgs(args, { agent: { type: 'string' } });
295
+ const name = provider(parsed, 'hyper integrations unset <provider> --agent <name|id>');
296
+ const agentRef = typeof parsed.values.agent === 'string' ? parsed.values.agent : undefined;
297
+ if (!agentRef) {
298
+ throw new UsageError('unset requires --agent <name|id> (only the per-agent override can be unset)');
299
+ }
300
+ const client = await ctx.client();
301
+ try {
302
+ await client.deployments.update(agentRef, { integrations: { [name]: { enabled: null } } });
303
+ }
304
+ catch (err) {
305
+ throw toCliError(err, `failed to unset ${name} for ${agentRef}`);
306
+ }
307
+ ctx.output.result({ agent: agentRef, provider: name, enabled: null }, `unset ${name} for ${agentRef}`);
308
+ }
309
+ async function cmdToken(ctx, args) {
310
+ const parsed = parseCommandArgs(args, { connection: { type: 'string' } });
311
+ const name = provider(parsed, 'hyper integrations token <provider>');
312
+ const client = await ctx.client();
313
+ let token;
314
+ try {
315
+ token = await client.integrations.mintToken(name, stringOption(parsed.values.connection));
316
+ }
317
+ catch (err) {
318
+ throw privateRequestError(err, 'failed to retrieve token');
319
+ }
320
+ // Pipe-safe: table mode prints ONLY the token on stdout; metadata to stderr.
321
+ const meta = [`provider ${token.provider}`];
322
+ if (token.expiresAt)
323
+ meta.push(`expires ${token.expiresAt}`);
324
+ ctx.output.info(meta.join('\n'));
325
+ ctx.output.result(token, token.accessToken);
326
+ }
327
+ async function cmdCredentials(ctx, args) {
328
+ const parsed = parseCommandArgs(args, { connection: { type: 'string' }, field: { type: 'string' } });
329
+ const name = provider(parsed, 'hyper integrations credentials <provider> [--connection ID] [--field FIELD]');
330
+ const client = await ctx.client();
331
+ let result;
332
+ try {
333
+ result = await client.integrations.credentials(name, stringOption(parsed.values.connection));
334
+ }
335
+ catch (err) {
336
+ throw privateRequestError(err, 'failed to retrieve credentials');
337
+ }
338
+ const field = stringOption(parsed.values.field);
339
+ if (field) {
340
+ const value = result.credentials[field];
341
+ if (typeof value !== 'string')
342
+ throw new CliError('Requested credential field is not a string');
343
+ ctx.output.result(value, value);
344
+ }
345
+ else {
346
+ ctx.output.result(result, JSON.stringify(result, null, 2));
347
+ }
348
+ }
349
+ async function cmdImport(ctx, args) {
350
+ const parsed = parseCommandArgs(args, { connection: { type: 'string' }, file: { type: 'string' } });
351
+ const name = provider(parsed, 'hyper integrations import <provider> --file <path|-> [--connection ID]');
352
+ const file = stringOption(parsed.values.file);
353
+ if (!file)
354
+ throw new UsageError('--file is required; use - for stdin');
355
+ let payload;
356
+ try {
357
+ let text;
358
+ if (file === '-') {
359
+ const chunks = [];
360
+ for await (const chunk of process.stdin)
361
+ chunks.push(Buffer.from(chunk));
362
+ text = Buffer.concat(chunks).toString('utf8');
363
+ }
364
+ else
365
+ text = await readFile(file, 'utf8');
366
+ const value = JSON.parse(text);
367
+ if (!value || typeof value !== 'object' || Array.isArray(value) || !value.credentials || typeof value.credentials !== 'object' || Array.isArray(value.credentials)
368
+ || Object.keys(value).some((k) => !['credentials', 'connection_config'].includes(k))
369
+ || (value.connection_config !== undefined && (!value.connection_config || typeof value.connection_config !== 'object' || Array.isArray(value.connection_config))))
370
+ throw new Error();
371
+ payload = value;
372
+ }
373
+ catch {
374
+ throw new UsageError('Could not read native Nango credentials JSON (expected credentials and optional connection_config objects)');
375
+ }
376
+ const client = await ctx.client();
377
+ let connection;
378
+ try {
379
+ connection = await client.integrations.importConnection(name, payload.credentials, { connectionId: stringOption(parsed.values.connection), connectionConfig: payload.connection_config });
380
+ }
381
+ catch (err) {
382
+ throw privateRequestError(err, 'failed to import connection');
383
+ }
384
+ ctx.output.result(connection, `connected ${name} ${connection.id}`);
385
+ }
386
+ const PROXY_METHODS = new Set(['GET', 'POST', 'PUT', 'PATCH', 'DELETE', 'HEAD', 'OPTIONS']);
387
+ async function cmdCall(ctx, args) {
388
+ const parsed = parseCommandArgs(args, { connection: { type: 'string' }, headers: { type: 'string' } });
389
+ const [name, rawMethod, path, bodyText, ...rest] = parsed.positionals;
390
+ if (!name || !rawMethod || !path || rest.length > 0) {
391
+ throw new UsageError('usage: hyper integrations call <provider> <METHOD> <path> [body]');
392
+ }
393
+ const method = rawMethod.toUpperCase();
394
+ if (!PROXY_METHODS.has(method)) {
395
+ throw new UsageError(`unknown method '${rawMethod}' (expected: ${[...PROXY_METHODS].join(', ')})`);
396
+ }
397
+ let body;
398
+ if (bodyText !== undefined) {
399
+ try {
400
+ body = JSON.parse(bodyText);
401
+ }
402
+ catch {
403
+ throw new UsageError('call body must be JSON');
404
+ }
405
+ }
406
+ let headers;
407
+ if (typeof parsed.values.headers === 'string') {
408
+ try {
409
+ const value = JSON.parse(parsed.values.headers);
410
+ if (!value || typeof value !== 'object' || Array.isArray(value) || !Object.values(value).every((v) => typeof v === 'string'))
411
+ throw new Error();
412
+ headers = value;
413
+ }
414
+ catch {
415
+ throw new UsageError('--headers must be a JSON string map');
416
+ }
417
+ }
418
+ const client = await ctx.client();
419
+ let result;
420
+ try {
421
+ result = await client.integrations.proxy(name, path, { method, body, connectionId: stringOption(parsed.values.connection), headers });
422
+ }
423
+ catch (err) {
424
+ throw privateRequestError(err, 'provider request failed');
425
+ }
426
+ ctx.output.result(result, JSON.stringify(result, null, 2));
427
+ }
428
+ const COMMANDS = {
429
+ providers: cmdProviders,
430
+ connections: cmdConnections,
431
+ status: cmdStatus,
432
+ connect: cmdConnect,
433
+ disconnect: cmdDisconnect,
434
+ enable: (ctx, args) => setEnabled(ctx, args, true),
435
+ disable: (ctx, args) => setEnabled(ctx, args, false),
436
+ unset: cmdUnset,
437
+ token: cmdToken,
438
+ credentials: cmdCredentials,
439
+ import: cmdImport,
440
+ call: cmdCall,
441
+ };
442
+ export async function run(ctx, args) {
443
+ const scan = parseUniversal(args);
444
+ if (scan.values.mcp !== undefined) {
445
+ return runIntegrationsMcp(ctx, args);
446
+ }
447
+ const [sub] = scan.positionals;
448
+ if (scan.help || !sub) {
449
+ process.stdout.write(`${renderGroupHelp({ name, summary, usage, run })}\n`);
450
+ return;
451
+ }
452
+ const handler = COMMANDS[sub];
453
+ if (!handler) {
454
+ throw new UsageError(`unknown integrations command '${sub}' (expected: ${Object.keys(COMMANDS).join(', ')})`);
455
+ }
456
+ const subArgs = [...args];
457
+ subArgs.splice(scan.firstPositionalIndex, 1);
458
+ await handler(ctx, subArgs);
459
+ }
460
+ //# sourceMappingURL=integrations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integrations.js","sourceRoot":"","sources":["../../src/commands/integrations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import type { CommandContext } from '../core/types.js';
2
+ export declare const name = "jobs";
3
+ export declare const summary = "Run and manage GPU jobs.";
4
+ export declare const usage: string[];
5
+ export declare function run(ctx: CommandContext, args: string[]): Promise<number | void>;