@aexhq/cli 0.25.1 → 0.26.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 (93) hide show
  1. package/README.md +12 -0
  2. package/dist/index.d.ts +2 -7
  3. package/dist/index.js +233 -7
  4. package/package.json +26 -29
  5. package/LICENSE +0 -201
  6. package/dist/cli.d.ts +0 -1
  7. package/dist/cli.js +0 -51
  8. package/dist/cli.js.map +0 -1
  9. package/dist/cli.mjs +0 -4657
  10. package/dist/cli.mjs.sha256 +0 -1
  11. package/dist/host/cancel.d.ts +0 -3
  12. package/dist/host/cancel.js +0 -30
  13. package/dist/host/cancel.js.map +0 -1
  14. package/dist/host/common.d.ts +0 -135
  15. package/dist/host/common.js +0 -281
  16. package/dist/host/common.js.map +0 -1
  17. package/dist/host/delete-asset.d.ts +0 -3
  18. package/dist/host/delete-asset.js +0 -34
  19. package/dist/host/delete-asset.js.map +0 -1
  20. package/dist/host/delete.d.ts +0 -3
  21. package/dist/host/delete.js +0 -30
  22. package/dist/host/delete.js.map +0 -1
  23. package/dist/host/download.d.ts +0 -3
  24. package/dist/host/download.js +0 -80
  25. package/dist/host/download.js.map +0 -1
  26. package/dist/host/events.d.ts +0 -3
  27. package/dist/host/events.js +0 -97
  28. package/dist/host/events.js.map +0 -1
  29. package/dist/host/index.d.ts +0 -17
  30. package/dist/host/index.js +0 -18
  31. package/dist/host/index.js.map +0 -1
  32. package/dist/host/outputs.d.ts +0 -3
  33. package/dist/host/outputs.js +0 -36
  34. package/dist/host/outputs.js.map +0 -1
  35. package/dist/host/run-cmd.d.ts +0 -3
  36. package/dist/host/run-cmd.js +0 -549
  37. package/dist/host/run-cmd.js.map +0 -1
  38. package/dist/host/skills-cmd.d.ts +0 -3
  39. package/dist/host/skills-cmd.js +0 -304
  40. package/dist/host/skills-cmd.js.map +0 -1
  41. package/dist/host/status.d.ts +0 -3
  42. package/dist/host/status.js +0 -31
  43. package/dist/host/status.js.map +0 -1
  44. package/dist/host/wait.d.ts +0 -3
  45. package/dist/host/wait.js +0 -88
  46. package/dist/host/wait.js.map +0 -1
  47. package/dist/host/whoami.d.ts +0 -3
  48. package/dist/host/whoami.js +0 -33
  49. package/dist/host/whoami.js.map +0 -1
  50. package/dist/index.js.map +0 -1
  51. package/dist/internal.d.ts +0 -53
  52. package/dist/internal.js +0 -10
  53. package/dist/internal.js.map +0 -1
  54. package/dist/outputs-sync.d.ts +0 -24
  55. package/dist/outputs-sync.js +0 -70
  56. package/dist/outputs-sync.js.map +0 -1
  57. package/dist/proxy.d.ts +0 -16
  58. package/dist/proxy.js +0 -316
  59. package/dist/proxy.js.map +0 -1
  60. package/dist/run.d.ts +0 -10
  61. package/dist/run.js +0 -166
  62. package/dist/run.js.map +0 -1
  63. package/dist/runtime.d.ts +0 -5
  64. package/dist/runtime.js +0 -4
  65. package/dist/runtime.js.map +0 -1
  66. package/scripts/finalize-bundle.mjs +0 -72
  67. package/src/cli.ts +0 -51
  68. package/src/host/cancel.ts +0 -39
  69. package/src/host/common.ts +0 -329
  70. package/src/host/delete-asset.ts +0 -43
  71. package/src/host/delete.ts +0 -39
  72. package/src/host/download.ts +0 -97
  73. package/src/host/events.ts +0 -113
  74. package/src/host/index.ts +0 -25
  75. package/src/host/outputs.ts +0 -45
  76. package/src/host/run-cmd.ts +0 -578
  77. package/src/host/skills-cmd.ts +0 -317
  78. package/src/host/status.ts +0 -40
  79. package/src/host/wait.ts +0 -110
  80. package/src/host/whoami.ts +0 -42
  81. package/src/index.ts +0 -7
  82. package/src/internal.ts +0 -63
  83. package/src/outputs-sync.ts +0 -76
  84. package/src/proxy.ts +0 -359
  85. package/src/run.ts +0 -187
  86. package/src/runtime.ts +0 -15
  87. package/test/cli.test.ts +0 -519
  88. package/test/host.test.ts +0 -1154
  89. package/test/no-env-vars.test.ts +0 -59
  90. package/test/outputs-sync.test.ts +0 -107
  91. package/tsconfig.build.json +0 -9
  92. package/tsconfig.json +0 -4
  93. package/vitest.config.ts +0 -14
@@ -1,549 +0,0 @@
1
- /**
2
- * `aex run` — submit a flat run via the dashboard BFF using the
3
- * same operations module the SDK uses.
4
- *
5
- * Two input modes (mutually exclusive):
6
- *
7
- * 1. `--config <path>` — plain run-request JSON:
8
- * `{ model, system?, prompt, skills?, mcpServers?, environment?,
9
- * runtimeSize?, timeout?, postHook?, proxyEndpoints?, metadata? }`. Skill
10
- * entries use storage-neutral asset refs (`{ kind: "asset", ... }`).
11
- * MCP entries may include `headers` — the CLI splits them into the
12
- * `secrets.mcpServers` bag before posting.
13
- *
14
- * 2. Flat flags — for ad-hoc / scriptable invocations:
15
- * --model <id> REQUIRED in flag mode
16
- * --system @file | --system "literal" optional system message
17
- * --prompt @file | --prompt "literal" REQUIRED in flag mode (repeatable)
18
- * --mcp name=url MCP server (repeatable)
19
- * --mcp-auth name=Header:Value adds a header on the matching --mcp (repeatable)
20
- * --metadata key=value string metadata entry (repeatable)
21
- *
22
- * Always required (both modes):
23
- * --anthropic-api-key <key> provider key (never stored)
24
- * --api-token <token> see `parseCommonHostFlags`
25
- *
26
- * Optional (both modes):
27
- * --runtime-size <size> managed runtime preset (e.g. shared-2x-2gb); default shared-1x-512mb
28
- * --run-timeout <dur> server-side run deadline (e.g. 1h); bounded [1m, 6h], default 1h
29
- * --idempotency-key <key> defaults to a fresh UUID
30
- * --proxy-endpoint '<json>' PlatformProxyEndpoint JSON (repeatable)
31
- * --proxy-auth name=<spec> bearer:tok | basic:u:p | header:v | query:v (repeatable)
32
- * --follow poll events to stdout until terminal status
33
- * --timeout <dur> with --follow: give up after this long (e.g. 8m); exit code 3
34
- */
35
- import { AEX_DEFAULT_BASE_URL, DEFAULT_RUN_PROVIDER, operations, parseRunRequestConfig, RUN_MODELS, RUNTIME_SIZES, RUN_PROVIDERS, RUNTIME_KINDS, TERMINAL_RUN_STATUSES, validateProxyAuth } from "@aexhq/contracts";
36
- import { resolve as resolvePath } from "node:path";
37
- import { RUNTIME_ERR, SUCCESS, TIMEOUT_ERR, USAGE_ERR, collectRepeated, collectRepeatedKv, collectRepeatedKvList, emitJsonError, makeHttpClient, parseCommonHostFlags, parseDuration, refuseInsideManagedRun, takeBooleanFlag, takeFlagValue, takeOptionFlag } from "./common.js";
38
- // Membership-tested against the loose `string` run status from the BFF, so we
39
- // back it with the canonical terminal set rather than a drift-prone local list.
40
- const TERMINAL_STATUSES = new Set(TERMINAL_RUN_STATUSES);
41
- /* eslint-disable @typescript-eslint/no-unused-vars */ // AEX_DEFAULT_BASE_URL is re-exported only for assertion clarity.
42
- void AEX_DEFAULT_BASE_URL;
43
- export async function runRunCmd(io, argv) {
44
- if (await refuseInsideManagedRun(io, "run"))
45
- return USAGE_ERR;
46
- const common = parseCommonHostFlags(argv);
47
- if (!common.ok) {
48
- io.stderr(`${common.reason}\n`);
49
- return USAGE_ERR;
50
- }
51
- let rest = common.rest;
52
- const providerFlag = takeFlagValue(rest, "--provider");
53
- if (providerFlag.error) {
54
- io.stderr(`${providerFlag.error}\n`);
55
- return USAGE_ERR;
56
- }
57
- rest = providerFlag.remaining;
58
- let provider = DEFAULT_RUN_PROVIDER;
59
- if (providerFlag.value !== null) {
60
- if (!RUN_PROVIDERS.includes(providerFlag.value)) {
61
- io.stderr(`--provider must be one of: ${RUN_PROVIDERS.join(", ")} (got: ${providerFlag.value})\n`);
62
- return USAGE_ERR;
63
- }
64
- provider = providerFlag.value;
65
- }
66
- // Provider key flag handling: each provider in RUN_PROVIDERS has its
67
- // own `--<provider>-api-key` flag. Exactly the flag matching the
68
- // selected provider must be supplied; every other provider's flag
69
- // must be absent (mirrors the secrets-coupling rule the parser
70
- // re-enforces server-side).
71
- const providerKeyValues = {};
72
- for (const p of RUN_PROVIDERS) {
73
- const flag = takeFlagValue(rest, `--${p}-api-key`);
74
- if (flag.error) {
75
- io.stderr(`${flag.error}\n`);
76
- return USAGE_ERR;
77
- }
78
- rest = flag.remaining;
79
- if (flag.value !== null)
80
- providerKeyValues[p] = flag.value;
81
- }
82
- if (!providerKeyValues[provider]) {
83
- io.stderr(`--${provider}-api-key is required when --provider is ${provider} (the platform does not store provider keys on your behalf)\n`);
84
- return USAGE_ERR;
85
- }
86
- for (const p of RUN_PROVIDERS) {
87
- if (p === provider)
88
- continue;
89
- if (providerKeyValues[p] !== undefined) {
90
- io.stderr(`--${p}-api-key is not allowed when --provider is ${provider}\n`);
91
- return USAGE_ERR;
92
- }
93
- }
94
- // Optional runtime selector. Validate the value against the wire enum
95
- // here so the user gets an early error from the CLI; the shared parser
96
- // re-runs the check when the request lands at the API plane.
97
- const runtimeFlag = takeFlagValue(rest, "--runtime");
98
- if (runtimeFlag.error) {
99
- io.stderr(`${runtimeFlag.error}\n`);
100
- return USAGE_ERR;
101
- }
102
- rest = runtimeFlag.remaining;
103
- let runtime;
104
- if (runtimeFlag.value !== null) {
105
- if (!RUNTIME_KINDS.includes(runtimeFlag.value)) {
106
- io.stderr(`--runtime must be one of: ${RUNTIME_KINDS.join(", ")} (got: ${runtimeFlag.value})\n`);
107
- return USAGE_ERR;
108
- }
109
- runtime = runtimeFlag.value;
110
- }
111
- const idempotency = takeFlagValue(rest, "--idempotency-key");
112
- if (idempotency.error) {
113
- io.stderr(`${idempotency.error}\n`);
114
- return USAGE_ERR;
115
- }
116
- rest = idempotency.remaining;
117
- // `--runtime-size` selects a managed runtime size from the closed preset set.
118
- const runtimeSizeFlag = takeFlagValue(rest, "--runtime-size");
119
- if (runtimeSizeFlag.error) {
120
- io.stderr(`${runtimeSizeFlag.error}\n`);
121
- return USAGE_ERR;
122
- }
123
- rest = runtimeSizeFlag.remaining;
124
- if (runtimeSizeFlag.value && !RUNTIME_SIZES.includes(runtimeSizeFlag.value)) {
125
- io.stderr(`--runtime-size must be one of: ${RUNTIME_SIZES.join(", ")}\n`);
126
- return USAGE_ERR;
127
- }
128
- // `--run-timeout` is the SERVER-side run deadline (distinct from `--timeout`,
129
- // which bounds the client-side --follow loop). Format-checked locally for
130
- // fast feedback; the server applies the [1m, 6h] bounds + default.
131
- const runTimeoutFlag = takeFlagValue(rest, "--run-timeout");
132
- if (runTimeoutFlag.error) {
133
- io.stderr(`${runTimeoutFlag.error}\n`);
134
- return USAGE_ERR;
135
- }
136
- rest = runTimeoutFlag.remaining;
137
- if (runTimeoutFlag.value) {
138
- const parsed = parseDuration(runTimeoutFlag.value);
139
- if (parsed.error) {
140
- io.stderr(`--run-timeout: ${parsed.error}\n`);
141
- return USAGE_ERR;
142
- }
143
- }
144
- const follow = takeBooleanFlag(rest, "--follow");
145
- rest = follow.remaining;
146
- const timeoutFlag = takeOptionFlag(rest, "--timeout");
147
- rest = timeoutFlag.remaining;
148
- let followTimeoutMs = null;
149
- if (timeoutFlag.value !== undefined) {
150
- const parsed = parseDuration(timeoutFlag.value);
151
- if (parsed.error) {
152
- io.stderr(`--timeout: ${parsed.error}\n`);
153
- return USAGE_ERR;
154
- }
155
- followTimeoutMs = parsed.ms;
156
- }
157
- const config = takeFlagValue(rest, "--config");
158
- if (config.error) {
159
- io.stderr(`${config.error}\n`);
160
- return USAGE_ERR;
161
- }
162
- rest = config.remaining;
163
- // Flat flags
164
- const modelFlag = takeFlagValue(rest, "--model");
165
- if (modelFlag.error) {
166
- io.stderr(`${modelFlag.error}\n`);
167
- return USAGE_ERR;
168
- }
169
- rest = modelFlag.remaining;
170
- const systemFlag = takeFlagValue(rest, "--system");
171
- if (systemFlag.error) {
172
- io.stderr(`${systemFlag.error}\n`);
173
- return USAGE_ERR;
174
- }
175
- rest = systemFlag.remaining;
176
- const promptFlags = collectRepeated(rest, "--prompt");
177
- if (promptFlags.error) {
178
- io.stderr(`${promptFlags.error}\n`);
179
- return USAGE_ERR;
180
- }
181
- rest = promptFlags.remaining;
182
- const mcpFlags = collectRepeatedKv(rest, "--mcp");
183
- if (mcpFlags.error) {
184
- io.stderr(`${mcpFlags.error}\n`);
185
- return USAGE_ERR;
186
- }
187
- rest = mcpFlags.remaining;
188
- const mcpAuthFlags = collectRepeatedKvList(rest, "--mcp-auth");
189
- if (mcpAuthFlags.error) {
190
- io.stderr(`${mcpAuthFlags.error}\n`);
191
- return USAGE_ERR;
192
- }
193
- rest = mcpAuthFlags.remaining;
194
- const metadataFlags = collectRepeatedKv(rest, "--metadata");
195
- if (metadataFlags.error) {
196
- io.stderr(`${metadataFlags.error}\n`);
197
- return USAGE_ERR;
198
- }
199
- rest = metadataFlags.remaining;
200
- const proxyEndpointFlags = collectRepeated(rest, "--proxy-endpoint");
201
- if (proxyEndpointFlags.error) {
202
- io.stderr(`${proxyEndpointFlags.error}\n`);
203
- return USAGE_ERR;
204
- }
205
- rest = proxyEndpointFlags.remaining;
206
- const proxyAuthFlags = collectRepeatedKv(rest, "--proxy-auth");
207
- if (proxyAuthFlags.error) {
208
- io.stderr(`${proxyAuthFlags.error}\n`);
209
- return USAGE_ERR;
210
- }
211
- rest = proxyAuthFlags.remaining;
212
- const positional = rest.filter((a) => !a.startsWith("--"));
213
- const unknownFlags = rest.filter((a) => a.startsWith("--"));
214
- if (unknownFlags.length > 0) {
215
- io.stderr(`unknown flag: ${unknownFlags[0]}\n`);
216
- return USAGE_ERR;
217
- }
218
- if (positional.length > 0) {
219
- io.stderr(`aex run takes no positional arguments (got: ${positional.join(" ")})\n`);
220
- return USAGE_ERR;
221
- }
222
- // ---------------- Resolve run config (config XOR flat flags) ----------------
223
- let runConfig;
224
- let mcpHeadersFromConfig = new Map();
225
- if (config.value) {
226
- if (modelFlag.value || systemFlag.value || promptFlags.values.length || Object.keys(mcpFlags.entries).length || Object.keys(metadataFlags.entries).length) {
227
- io.stderr("--config cannot be combined with --model/--system/--prompt/--mcp/--metadata\n");
228
- return USAGE_ERR;
229
- }
230
- try {
231
- const absPath = resolvePath(io.cwd(), config.value);
232
- const text = await io.readFile(absPath);
233
- const raw = JSON.parse(text);
234
- const { mcpHeaders, normalised } = stripMcpHeadersForParsing(raw);
235
- mcpHeadersFromConfig = mcpHeaders;
236
- runConfig = parseRunRequestConfig(normalised);
237
- }
238
- catch (err) {
239
- io.stderr(`failed to load --config: ${err.message}\n`);
240
- return USAGE_ERR;
241
- }
242
- }
243
- else {
244
- if (!modelFlag.value) {
245
- io.stderr("--model is required when --config is not provided\n");
246
- return USAGE_ERR;
247
- }
248
- if (!RUN_MODELS.includes(modelFlag.value)) {
249
- io.stderr(`--model must be one of: ${RUN_MODELS.join(", ")} (got: ${modelFlag.value})\n`);
250
- return USAGE_ERR;
251
- }
252
- if (promptFlags.values.length === 0) {
253
- io.stderr("--prompt is required (repeatable)\n");
254
- return USAGE_ERR;
255
- }
256
- let resolvedPrompt;
257
- try {
258
- resolvedPrompt = await Promise.all(promptFlags.values.map((v) => readMaybeFile(io, v)));
259
- }
260
- catch (err) {
261
- io.stderr(`failed to read --prompt file: ${err.message}\n`);
262
- return USAGE_ERR;
263
- }
264
- let resolvedSystem;
265
- if (systemFlag.value !== null) {
266
- try {
267
- resolvedSystem = await readMaybeFile(io, systemFlag.value);
268
- }
269
- catch (err) {
270
- io.stderr(`failed to read --system file: ${err.message}\n`);
271
- return USAGE_ERR;
272
- }
273
- }
274
- const mcpRefs = [];
275
- for (const [name, url] of Object.entries(mcpFlags.entries)) {
276
- mcpRefs.push({ name, url });
277
- }
278
- runConfig = {
279
- model: modelFlag.value,
280
- ...(resolvedSystem ? { system: resolvedSystem } : {}),
281
- prompt: resolvedPrompt,
282
- ...(mcpRefs.length > 0 ? { mcpServers: mcpRefs } : {}),
283
- ...(Object.keys(metadataFlags.entries).length > 0
284
- ? { metadata: { ...metadataFlags.entries } }
285
- : {})
286
- };
287
- }
288
- // ---------------- Resolve MCP secrets (--mcp-auth + config headers) ----------------
289
- const mcpServersForSubmission = [...(runConfig.mcpServers ?? [])];
290
- const mcpServerSecrets = [];
291
- const mcpHeaderBag = new Map(mcpHeadersFromConfig);
292
- for (const [name, headerSpec] of mcpAuthFlags.entries) {
293
- const colon = headerSpec.indexOf(":");
294
- if (colon <= 0 || colon >= headerSpec.length - 1) {
295
- io.stderr(`--mcp-auth ${name}: expected 'HeaderName:Value' (got: ${headerSpec})\n`);
296
- return USAGE_ERR;
297
- }
298
- const headerName = headerSpec.slice(0, colon).trim();
299
- const headerValue = headerSpec.slice(colon + 1).trim();
300
- if (!headerName || !headerValue) {
301
- io.stderr(`--mcp-auth ${name}: header name and value must be non-empty\n`);
302
- return USAGE_ERR;
303
- }
304
- const existing = mcpHeaderBag.get(name) ?? {};
305
- if (Object.prototype.hasOwnProperty.call(existing, headerName)) {
306
- io.stderr(`--mcp-auth ${name}: duplicate header "${headerName}" — ` +
307
- `each header may be set only once per server\n`);
308
- return USAGE_ERR;
309
- }
310
- existing[headerName] = headerValue;
311
- mcpHeaderBag.set(name, existing);
312
- }
313
- for (const ref of mcpServersForSubmission) {
314
- const headers = mcpHeaderBag.get(ref.name);
315
- if (headers && Object.keys(headers).length > 0) {
316
- mcpServerSecrets.push({ name: ref.name, url: ref.url, headers });
317
- }
318
- }
319
- // Reject auth flags that reference an unknown MCP server.
320
- for (const name of mcpHeaderBag.keys()) {
321
- if (!mcpServersForSubmission.some((m) => m.name === name)) {
322
- io.stderr(`--mcp-auth ${name}: no matching --mcp / mcpServers entry declared\n`);
323
- return USAGE_ERR;
324
- }
325
- }
326
- // ---------------- Proxy endpoints + auth ----------------
327
- let proxyEndpoints = runConfig.proxyEndpoints ?? [];
328
- if (proxyEndpointFlags.values.length > 0) {
329
- try {
330
- proxyEndpoints = proxyEndpointFlags.values.map((raw, i) => parseJsonOrThrow(raw, `--proxy-endpoint[${i}]`));
331
- }
332
- catch (err) {
333
- io.stderr(`${err.message}\n`);
334
- return USAGE_ERR;
335
- }
336
- }
337
- const proxyAuth = [];
338
- for (const [name, spec] of Object.entries(proxyAuthFlags.entries)) {
339
- const parsed = parseProxyAuth(spec);
340
- if (!parsed.ok) {
341
- io.stderr(`--proxy-auth ${name}: ${parsed.reason}\n`);
342
- return USAGE_ERR;
343
- }
344
- proxyAuth.push({ name, value: parsed.value });
345
- }
346
- if (proxyEndpoints.length > 0) {
347
- try {
348
- validateProxyAuth(proxyEndpoints, proxyAuth);
349
- }
350
- catch (err) {
351
- io.stderr(`proxy auth validation failed: ${err.message}\n`);
352
- return USAGE_ERR;
353
- }
354
- }
355
- // ---------------- Build submission ----------------
356
- const promptArray = Array.isArray(runConfig.prompt) ? [...runConfig.prompt] : [runConfig.prompt];
357
- const skills = runConfig.skills ? [...runConfig.skills] : [];
358
- const submission = {
359
- model: runConfig.model,
360
- ...(runConfig.system ? { system: runConfig.system } : {}),
361
- prompt: promptArray,
362
- skills,
363
- agentsMd: [],
364
- files: [],
365
- mcpServers: mcpServersForSubmission,
366
- tools: [],
367
- ...(runConfig.environment ? { environment: runConfig.environment } : {}),
368
- ...(runConfig.metadata ? { metadata: runConfig.metadata } : {})
369
- };
370
- const secrets = {
371
- apiKey: providerKeyValues[provider],
372
- ...(mcpServerSecrets.length > 0 ? { mcpServers: mcpServerSecrets } : {}),
373
- ...(proxyAuth.length > 0 ? { proxyEndpointAuth: proxyAuth } : {})
374
- };
375
- const request = {
376
- idempotencyKey: idempotency.value ?? generateIdempotencyKey(),
377
- provider,
378
- ...(runtime ? { runtime } : {}),
379
- submission,
380
- secrets,
381
- ...(runtimeSizeFlag.value
382
- ? { runtimeSize: runtimeSizeFlag.value }
383
- : runConfig.runtimeSize
384
- ? { runtimeSize: runConfig.runtimeSize }
385
- : {}),
386
- ...(runTimeoutFlag.value
387
- ? { timeout: runTimeoutFlag.value }
388
- : runConfig.timeout
389
- ? { timeout: runConfig.timeout }
390
- : {}),
391
- ...(runConfig.postHook ? { postHook: runConfig.postHook } : {}),
392
- ...(proxyEndpoints.length > 0 ? { proxyEndpoints } : {})
393
- };
394
- const http = makeHttpClient(io, common.flags);
395
- let run;
396
- try {
397
- run = await operations.submitRun(http, request);
398
- }
399
- catch (err) {
400
- return emitJsonError(io, "submit_failed", err.message ?? "submission failed");
401
- }
402
- io.stdout(JSON.stringify(run) + "\n");
403
- if (!follow.present)
404
- return SUCCESS;
405
- let emittedEventCount = 0;
406
- let currentStatus = run.status;
407
- const deadline = followTimeoutMs === null ? Number.POSITIVE_INFINITY : Date.now() + followTimeoutMs;
408
- while (!TERMINAL_STATUSES.has(currentStatus)) {
409
- await sleep(2000);
410
- try {
411
- const events = await operations.listRunEvents(http, run.id);
412
- for (let i = emittedEventCount; i < events.length; i++) {
413
- io.stdout(JSON.stringify(events[i]) + "\n");
414
- }
415
- emittedEventCount = events.length;
416
- }
417
- catch (err) {
418
- io.stderr(`(transient) event poll failed: ${err.message}\n`);
419
- }
420
- try {
421
- const updated = await operations.getRun(http, run.id);
422
- currentStatus = updated.status;
423
- }
424
- catch (err) {
425
- io.stderr(`(transient) status poll failed: ${err.message}\n`);
426
- }
427
- if (!TERMINAL_STATUSES.has(currentStatus) && Date.now() >= deadline) {
428
- emitJsonError(io, "run_follow_timeout", `timed out after ${followTimeoutMs}ms following run`, { runId: run.id });
429
- return TIMEOUT_ERR;
430
- }
431
- }
432
- try {
433
- const final = await operations.getRun(http, run.id);
434
- io.stdout(JSON.stringify(final) + "\n");
435
- return final.status === "succeeded" ? SUCCESS : RUNTIME_ERR;
436
- }
437
- catch (err) {
438
- io.stderr(`final status fetch failed: ${err.message}\n`);
439
- return RUNTIME_ERR;
440
- }
441
- }
442
- function parseProxyAuth(spec) {
443
- const idx = spec.indexOf(":");
444
- if (idx <= 0) {
445
- return { ok: false, reason: `expected '<type>:<value>' (got: ${spec})` };
446
- }
447
- const type = spec.slice(0, idx);
448
- const restValue = spec.slice(idx + 1);
449
- switch (type) {
450
- case "bearer":
451
- if (!restValue)
452
- return { ok: false, reason: "bearer requires a token value" };
453
- return { ok: true, value: { type: "bearer", token: restValue } };
454
- case "header":
455
- if (!restValue)
456
- return { ok: false, reason: "header requires a value" };
457
- return { ok: true, value: { type: "header", value: restValue } };
458
- case "query":
459
- if (!restValue)
460
- return { ok: false, reason: "query requires a value" };
461
- return { ok: true, value: { type: "query", value: restValue } };
462
- case "basic": {
463
- const sep = restValue.indexOf(":");
464
- if (sep <= 0 || sep >= restValue.length - 1) {
465
- return { ok: false, reason: "basic requires <username>:<password>" };
466
- }
467
- return {
468
- ok: true,
469
- value: { type: "basic", username: restValue.slice(0, sep), password: restValue.slice(sep + 1) }
470
- };
471
- }
472
- default:
473
- return { ok: false, reason: `unknown auth type '${type}' (expected bearer|basic|header|query)` };
474
- }
475
- }
476
- function parseJsonOrThrow(raw, label) {
477
- try {
478
- return JSON.parse(raw);
479
- }
480
- catch (err) {
481
- throw new Error(`${label} is not valid JSON: ${err.message}`);
482
- }
483
- }
484
- /**
485
- * Strip `headers` from each `mcpServers[i]` so the value can pass
486
- * `parseRunRequestConfig` (which forbids headers on the non-secret submission
487
- * shape). Returns the stripped object plus a name->headers map the
488
- * caller can fold into `secrets.mcpServers`.
489
- */
490
- function stripMcpHeadersForParsing(input) {
491
- const mcpHeaders = new Map();
492
- if (input === null || typeof input !== "object" || Array.isArray(input)) {
493
- return { normalised: input, mcpHeaders };
494
- }
495
- const record = input;
496
- if (!Array.isArray(record.mcpServers)) {
497
- return { normalised: input, mcpHeaders };
498
- }
499
- const stripped = record.mcpServers.map((entry, i) => {
500
- if (!entry || typeof entry !== "object")
501
- return entry;
502
- const r = entry;
503
- if (r.headers && typeof r.headers === "object" && !Array.isArray(r.headers)) {
504
- const name = typeof r.name === "string" ? r.name : `__index_${i}__`;
505
- const headerObj = {};
506
- for (const [k, v] of Object.entries(r.headers)) {
507
- if (typeof v !== "string") {
508
- throw new Error(`mcpServers[${i}].headers["${k}"] must be a string`);
509
- }
510
- headerObj[k] = v;
511
- }
512
- mcpHeaders.set(name, headerObj);
513
- const { headers: _omit, ...rest } = r;
514
- void _omit;
515
- return rest;
516
- }
517
- return r;
518
- });
519
- return { normalised: { ...record, mcpServers: stripped }, mcpHeaders };
520
- }
521
- /**
522
- * Resolve a `--system` / `--prompt` argument that may be either a
523
- * literal string or a file reference. Conventions:
524
- *
525
- * plain text -> the text itself
526
- * "@path/to/file" -> contents of the file (relative to cwd)
527
- * "@@literal" -> the literal "@literal" (escape for content
528
- * that genuinely starts with `@`)
529
- */
530
- async function readMaybeFile(io, value) {
531
- if (value.startsWith("@@")) {
532
- return value.slice(1);
533
- }
534
- if (value.startsWith("@")) {
535
- const path = resolvePath(io.cwd(), value.slice(1));
536
- return io.readFile(path);
537
- }
538
- return value;
539
- }
540
- function generateIdempotencyKey() {
541
- const c = globalThis.crypto;
542
- if (c?.randomUUID)
543
- return c.randomUUID();
544
- return `idem-${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;
545
- }
546
- function sleep(ms) {
547
- return new Promise((resolve) => setTimeout(resolve, ms));
548
- }
549
- //# sourceMappingURL=run-cmd.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"run-cmd.js","sourceRoot":"","sources":["../../src/host/run-cmd.ts"],"names":[],"mappings":"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"}
@@ -1,3 +0,0 @@
1
- import type { CliIO } from "../internal.js";
2
- import { type CliExitCode } from "./common.js";
3
- export declare function runSkillsCmd(io: CliIO, argv: readonly string[]): Promise<CliExitCode>;