transloadit 4.7.1 → 4.7.3

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.
package/README.md CHANGED
@@ -57,6 +57,16 @@ export TRANSLOADIT_SECRET="YOUR_TRANSLOADIT_SECRET"
57
57
  npx transloadit --help
58
58
  ```
59
59
 
60
+ ### Minting Bearer Tokens (Hosted MCP)
61
+
62
+ If you want to connect an agent to the Transloadit-hosted MCP endpoint, mint a short-lived bearer
63
+ token via `POST /token`:
64
+
65
+ ```bash
66
+ # Prints JSON to stdout (stderr may include npx/npm noise)
67
+ npx -y transloadit auth token --aud mcp
68
+ ```
69
+
60
70
  ### Processing Media
61
71
 
62
72
  Create Assemblies to process files using Assembly Instructions (steps) or Templates:
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/BaseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,uBAAe,WAAY,SAAQ,OAAO;IACxC,cAAc,qBAEZ;IAEF,IAAI,UAEF;IAEF,QAAQ,qBAGN;IAEF,SAAS,CAAC,MAAM,EAAG,UAAU,CAAA;IAC7B,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAA;IAEpC,SAAS,CAAC,WAAW,IAAI,IAAI;IAQ7B,SAAS,CAAC,WAAW,IAAI,OAAO;aAed,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACzD;AAED,8BAAsB,oBAAqB,SAAQ,WAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQrD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACtD;AAED,8BAAsB,sBAAuB,SAAQ,WAAW;IAC/C,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKrD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACtD"}
1
+ {"version":3,"file":"BaseCommand.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/BaseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AAEtB,OAAO,EAAE,OAAO,EAAU,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AAEvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAGjD,uBAAe,WAAY,SAAQ,OAAO;IACxC,cAAc,qBAEZ;IAEF,IAAI,UAEF;IAEF,QAAQ,qBAGN;IAEF,SAAS,CAAC,MAAM,EAAG,UAAU,CAAA;IAC7B,SAAS,CAAC,MAAM,EAAG,iBAAiB,CAAA;IAEpC,SAAS,CAAC,WAAW,IAAI,IAAI;IAQ7B,SAAS,CAAC,WAAW,IAAI,OAAO;aAgBd,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACzD;AAED,8BAAsB,oBAAqB,SAAQ,WAAW;IAC7C,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAQrD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACtD;AAED,8BAAsB,sBAAuB,SAAQ,WAAW;IAC/C,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAKrD,SAAS,CAAC,QAAQ,CAAC,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CACtD"}
@@ -2,7 +2,7 @@ import 'dotenv/config';
2
2
  import process from 'node:process';
3
3
  import { Command, Option } from 'clipanion';
4
4
  import { Transloadit as TransloaditClient } from "../../Transloadit.js";
5
- import { getEnvCredentials } from "../helpers.js";
5
+ import { requireEnvCredentials } from "../helpers.js";
6
6
  import OutputCtl, { LOG_LEVEL_DEFAULT, LOG_LEVEL_NAMES, parseLogLevel } from "../OutputCtl.js";
7
7
  class BaseCommand extends Command {
8
8
  logLevelOption = Option.String('-l,--log-level', {
@@ -24,13 +24,16 @@ class BaseCommand extends Command {
24
24
  });
25
25
  }
26
26
  setupClient() {
27
- const creds = getEnvCredentials();
28
- if (!creds) {
29
- this.output.error('Please provide API authentication in the environment variables TRANSLOADIT_KEY and TRANSLOADIT_SECRET');
27
+ const credsResult = requireEnvCredentials();
28
+ if (!credsResult.ok) {
29
+ this.output.error(credsResult.error);
30
30
  return false;
31
31
  }
32
32
  const endpoint = this.endpoint || process.env.TRANSLOADIT_ENDPOINT;
33
- this.client = new TransloaditClient({ ...creds, ...(endpoint && { endpoint }) });
33
+ this.client = new TransloaditClient({
34
+ ...credsResult.credentials,
35
+ ...(endpoint && { endpoint }),
36
+ });
34
37
  return true;
35
38
  }
36
39
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BaseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAEjD,OAAO,SAAS,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE9F,MAAe,WAAY,SAAQ,OAAO;IACxC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QAC/C,WAAW,EAAE,cAAc,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;KACjF,CAAC,CAAA;IAEF,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE;QACxC,WAAW,EAAE,uBAAuB;KACrC,CAAC,CAAA;IAEF,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;QACrC,WAAW,EACT,2FAA2F;KAC9F,CAAC,CAAA;IAEQ,MAAM,CAAa;IACnB,MAAM,CAAoB;IAE1B,WAAW;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;QAC7F,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAES,WAAW;QACnB,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAA;QACjC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,MAAM,CAAC,KAAK,CACf,uGAAuG,CACxG,CAAA;YACD,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;QAElE,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC,EAAE,GAAG,KAAK,EAAE,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAA;QAChF,OAAO,IAAI,CAAA;IACb,CAAC;CAGF;AAED,MAAM,OAAgB,oBAAqB,SAAQ,WAAW;IACnD,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,CAAA;QACV,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;CAGF;AAED,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;IACrD,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;CAGF"}
1
+ {"version":3,"file":"BaseCommand.js","sourceRoot":"","sources":["../../../src/cli/commands/BaseCommand.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAA;AACtB,OAAO,OAAO,MAAM,cAAc,CAAA;AAClC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAC3C,OAAO,EAAE,WAAW,IAAI,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACvE,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,OAAO,SAAS,EAAE,EAAE,iBAAiB,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAA;AAE9F,MAAe,WAAY,SAAQ,OAAO;IACxC,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE;QAC/C,WAAW,EAAE,cAAc,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,2BAA2B;KACjF,CAAC,CAAA;IAEF,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,EAAE;QACxC,WAAW,EAAE,uBAAuB;KACrC,CAAC,CAAA;IAEF,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE;QACrC,WAAW,EACT,2FAA2F;KAC9F,CAAC,CAAA;IAEQ,MAAM,CAAa;IACnB,MAAM,CAAoB;IAE1B,WAAW;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAA;QAC7F,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC;YAC1B,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,IAAI;SACpB,CAAC,CAAA;IACJ,CAAC;IAES,WAAW;QACnB,MAAM,WAAW,GAAG,qBAAqB,EAAE,CAAA;QAC3C,IAAI,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;YACpC,OAAO,KAAK,CAAA;QACd,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAA;QAElE,IAAI,CAAC,MAAM,GAAG,IAAI,iBAAiB,CAAC;YAClC,GAAG,WAAW,CAAC,WAAW;YAC1B,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,CAAC;SAC9B,CAAC,CAAA;QACF,OAAO,IAAI,CAAA;IACb,CAAC;CAGF;AAED,MAAM,OAAgB,oBAAqB,SAAQ,WAAW;IACnD,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,OAAO,CAAC,CAAA;QACV,CAAC;QACD,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;CAGF;AAED,MAAM,OAAgB,sBAAuB,SAAQ,WAAW;IACrD,KAAK,CAAC,OAAO;QACpB,IAAI,CAAC,WAAW,EAAE,CAAA;QAClB,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,CAAA;IACzB,CAAC;CAGF"}
@@ -6,6 +6,10 @@ export interface RunSigOptions {
6
6
  export interface RunSmartSigOptions {
7
7
  providedInput?: string;
8
8
  }
9
+ export interface RequestTokenOptions {
10
+ endpoint?: string;
11
+ aud?: string;
12
+ }
9
13
  export declare function runSig(options?: RunSigOptions): Promise<void>;
10
14
  export declare function runSmartSig(options?: RunSmartSigOptions): Promise<void>;
11
15
  /**
@@ -25,4 +29,15 @@ export declare class SmartCdnSignatureCommand extends UnauthenticatedCommand {
25
29
  static usage: import("clipanion").Usage;
26
30
  protected run(): Promise<number | undefined>;
27
31
  }
32
+ /**
33
+ * Mint a short-lived bearer token via POST /token (HTTP Basic Auth).
34
+ *
35
+ * This is intentionally stdout-clean JSON so it can be used by agents and scripts.
36
+ */
37
+ export declare class TokenCommand extends UnauthenticatedCommand {
38
+ static paths: string[][];
39
+ static usage: import("clipanion").Usage;
40
+ aud: string | undefined;
41
+ protected run(): Promise<number | undefined>;
42
+ }
28
43
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAgLzD,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBvE;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBjF;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,OAAgB,KAAK,aAKpB;IAED,OAAgB,KAAK,4BAYnB;IAEF,SAAS,qBAEP;cAEc,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAqBnD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,OAAgB,KAAK,aAKpB;IAED,OAAgB,KAAK,4BAkBnB;cAEc,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAqBnD"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAgLzD,MAAM,WAAW,aAAa;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,GAAG,CAAC,EAAE,MAAM,CAAA;CACb;AAkJD,wBAAsB,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBvE;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsBjF;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,sBAAsB;IAC1D,OAAgB,KAAK,aAKpB;IAED,OAAgB,KAAK,4BAYnB;IAEF,SAAS,qBAEP;cAEc,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAoBnD;AAED;;GAEG;AACH,qBAAa,wBAAyB,SAAQ,sBAAsB;IAClE,OAAgB,KAAK,aAKpB;IAED,OAAgB,KAAK,4BAkBnB;cAEc,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAoBnD;AAED;;;;GAIG;AACH,qBAAa,YAAa,SAAQ,sBAAsB;IACtD,OAAgB,KAAK,aAAsB;IAE3C,OAAgB,KAAK,4BAWnB;IAEF,GAAG,qBAED;cAEuB,GAAG,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;CAoB5D"}
@@ -3,7 +3,7 @@ import { Command, Option } from 'clipanion';
3
3
  import { z } from 'zod';
4
4
  import { assemblyAuthInstructionsSchema, assemblyInstructionsSchema, } from "../../alphalib/types/template.js";
5
5
  import { Transloadit } from "../../Transloadit.js";
6
- import { getEnvCredentials, readCliInput } from "../helpers.js";
6
+ import { readCliInput, requireEnvCredentials } from "../helpers.js";
7
7
  import { UnauthenticatedCommand } from "./BaseCommand.js";
8
8
  const smartCdnParamsSchema = z
9
9
  .object({
@@ -52,7 +52,23 @@ function normalizeUrlParams(params) {
52
52
  }
53
53
  return normalized;
54
54
  }
55
- const getCredentials = getEnvCredentials;
55
+ function parseJsonObject(input, schema) {
56
+ let parsed;
57
+ try {
58
+ parsed = JSON.parse(input);
59
+ }
60
+ catch (error) {
61
+ return { ok: false, error: `Failed to parse JSON from stdin: ${error.message}` };
62
+ }
63
+ if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
64
+ return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' };
65
+ }
66
+ const parsedResult = schema.safeParse(parsed);
67
+ if (!parsedResult.success) {
68
+ return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` };
69
+ }
70
+ return { ok: true, value: parsedResult.data };
71
+ }
56
72
  // Core logic for signature generation
57
73
  function generateSignature(input, credentials, algorithm) {
58
74
  const { authKey, authSecret } = credentials;
@@ -61,21 +77,11 @@ function generateSignature(input, credentials, algorithm) {
61
77
  params = { auth: { key: authKey } };
62
78
  }
63
79
  else {
64
- let parsed;
65
- try {
66
- parsed = JSON.parse(input);
67
- }
68
- catch (error) {
69
- return { ok: false, error: `Failed to parse JSON from stdin: ${error.message}` };
80
+ const parsedResult = parseJsonObject(input, cliSignatureParamsSchema);
81
+ if (!parsedResult.ok) {
82
+ return { ok: false, error: parsedResult.error };
70
83
  }
71
- if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
72
- return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' };
73
- }
74
- const parsedResult = cliSignatureParamsSchema.safeParse(parsed);
75
- if (!parsedResult.success) {
76
- return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` };
77
- }
78
- const parsedParams = parsedResult.data;
84
+ const parsedParams = parsedResult.value;
79
85
  const existingAuth = parsedParams.auth ?? {};
80
86
  params = {
81
87
  ...parsedParams,
@@ -103,21 +109,11 @@ function generateSmartCdnUrl(input, credentials) {
103
109
  error: 'Missing params provided via stdin. Expected a JSON object with workspace, template, input, and optional Smart CDN parameters.',
104
110
  };
105
111
  }
106
- let parsed;
107
- try {
108
- parsed = JSON.parse(input);
109
- }
110
- catch (error) {
111
- return { ok: false, error: `Failed to parse JSON from stdin: ${error.message}` };
112
+ const parsedResult = parseJsonObject(input, smartCdnParamsSchema);
113
+ if (!parsedResult.ok) {
114
+ return { ok: false, error: parsedResult.error };
112
115
  }
113
- if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
114
- return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' };
115
- }
116
- const parsedResult = smartCdnParamsSchema.safeParse(parsed);
117
- if (!parsedResult.success) {
118
- return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` };
119
- }
120
- const { workspace, template, input: inputFieldRaw, url_params, expire_at_ms } = parsedResult.data;
116
+ const { workspace, template, input: inputFieldRaw, url_params, expire_at_ms } = parsedResult.value;
121
117
  const urlParams = normalizeUrlParams(url_params);
122
118
  let expiresAt;
123
119
  if (typeof expire_at_ms === 'string') {
@@ -146,13 +142,135 @@ function generateSmartCdnUrl(input, credentials) {
146
142
  return { ok: false, error: `Failed to generate Smart CDN URL: ${error.message}` };
147
143
  }
148
144
  }
145
+ const tokenErrorSchema = z
146
+ .object({
147
+ error: z.string(),
148
+ message: z.string().optional(),
149
+ })
150
+ .passthrough();
151
+ const tokenSuccessSchema = z
152
+ .object({
153
+ access_token: z.string().min(1),
154
+ })
155
+ .passthrough();
156
+ const buildBasicAuthHeaderValue = (credentials) => `Basic ${Buffer.from(`${credentials.authKey}:${credentials.authSecret}`, 'utf8').toString('base64')}`;
157
+ const isLoopbackHost = (hostname) => hostname === 'localhost' || hostname === '::1' || hostname.startsWith('127.');
158
+ const normalizeTokenBaseEndpoint = (raw) => {
159
+ const baseRaw = (raw || process.env.TRANSLOADIT_ENDPOINT || 'https://api2.transloadit.com').trim();
160
+ let url;
161
+ try {
162
+ url = new URL(baseRaw);
163
+ }
164
+ catch {
165
+ return {
166
+ ok: false,
167
+ error: 'Invalid endpoint URL. Use --endpoint https://api2.transloadit.com (or set TRANSLOADIT_ENDPOINT).',
168
+ };
169
+ }
170
+ if (url.username || url.password) {
171
+ return { ok: false, error: 'Endpoint must not include username/password.' };
172
+ }
173
+ if (url.search || url.hash) {
174
+ return { ok: false, error: 'Endpoint must not include query string or hash.' };
175
+ }
176
+ if (url.protocol !== 'https:') {
177
+ if (url.protocol === 'http:' && isLoopbackHost(url.hostname)) {
178
+ // Allowed for local development only.
179
+ }
180
+ else {
181
+ return {
182
+ ok: false,
183
+ error: 'Refusing to send credentials to a non-HTTPS endpoint. Use https://... (or http://localhost for local development).',
184
+ };
185
+ }
186
+ }
187
+ // If someone pasted the token URL, normalize it back to the API base to avoid /token/token.
188
+ const pathLower = url.pathname.toLowerCase();
189
+ if (pathLower === '/token' || pathLower === '/token/') {
190
+ url.pathname = '/';
191
+ }
192
+ if (!url.pathname.endsWith('/')) {
193
+ url.pathname = `${url.pathname}/`;
194
+ }
195
+ return { ok: true, baseUrl: url };
196
+ };
197
+ async function requestTokenWithCredentials(credentials, options = {}) {
198
+ const endpointResult = normalizeTokenBaseEndpoint(options.endpoint);
199
+ if (!endpointResult.ok) {
200
+ return { ok: false, error: endpointResult.error };
201
+ }
202
+ const url = new URL('token', endpointResult.baseUrl).toString();
203
+ const aud = (options.aud ?? 'mcp').trim() || 'mcp';
204
+ const body = new URLSearchParams({ grant_type: 'client_credentials', aud }).toString();
205
+ let res;
206
+ const controller = new AbortController();
207
+ const timeout = setTimeout(() => controller.abort(), 15_000);
208
+ try {
209
+ res = await fetch(url, {
210
+ method: 'POST',
211
+ // Never follow redirects with Basic Auth credentials.
212
+ redirect: 'error',
213
+ signal: controller.signal,
214
+ headers: {
215
+ Authorization: buildBasicAuthHeaderValue(credentials),
216
+ Accept: 'application/json',
217
+ 'Content-Type': 'application/x-www-form-urlencoded',
218
+ },
219
+ body,
220
+ });
221
+ }
222
+ catch (err) {
223
+ clearTimeout(timeout);
224
+ if (err instanceof Error && err.name === 'AbortError') {
225
+ return { ok: false, error: 'Failed to mint bearer token: request timed out after 15s.' };
226
+ }
227
+ const message = err instanceof Error ? err.message : String(err);
228
+ return { ok: false, error: `Failed to mint bearer token: ${message}` };
229
+ }
230
+ finally {
231
+ clearTimeout(timeout);
232
+ }
233
+ const text = await res.text();
234
+ const trimmed = text.trim();
235
+ let parsedJson = null;
236
+ try {
237
+ parsedJson = trimmed ? JSON.parse(trimmed) : null;
238
+ }
239
+ catch {
240
+ parsedJson = null;
241
+ }
242
+ if (res.ok) {
243
+ if (parsedJson == null) {
244
+ return { ok: false, error: 'Token response was not valid JSON.' };
245
+ }
246
+ const parsed = tokenSuccessSchema.safeParse(parsedJson);
247
+ if (!parsed.success) {
248
+ return { ok: false, error: 'Token response did not include an access_token.' };
249
+ }
250
+ return { ok: true, output: trimmed };
251
+ }
252
+ const parsedError = tokenErrorSchema.safeParse(parsedJson);
253
+ if (parsedError.success) {
254
+ return {
255
+ ok: false,
256
+ error: parsedError.data.message
257
+ ? `${parsedError.data.error}: ${parsedError.data.message}`
258
+ : parsedError.data.error,
259
+ };
260
+ }
261
+ return {
262
+ ok: false,
263
+ error: `Token request failed (${res.status}): ${trimmed || res.statusText}`,
264
+ };
265
+ }
149
266
  export async function runSig(options = {}) {
150
- const credentials = getCredentials();
151
- if (credentials == null) {
152
- console.error('Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.');
267
+ const credentialsResult = requireEnvCredentials();
268
+ if (!credentialsResult.ok) {
269
+ console.error(credentialsResult.error);
153
270
  process.exitCode = 1;
154
271
  return;
155
272
  }
273
+ const credentials = credentialsResult.credentials;
156
274
  const { content } = await readCliInput({
157
275
  providedInput: options.providedInput,
158
276
  allowStdinWhenNoPath: true,
@@ -168,12 +286,13 @@ export async function runSig(options = {}) {
168
286
  }
169
287
  }
170
288
  export async function runSmartSig(options = {}) {
171
- const credentials = getCredentials();
172
- if (credentials == null) {
173
- console.error('Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.');
289
+ const credentialsResult = requireEnvCredentials();
290
+ if (!credentialsResult.ok) {
291
+ console.error(credentialsResult.error);
174
292
  process.exitCode = 1;
175
293
  return;
176
294
  }
295
+ const credentials = credentialsResult.credentials;
177
296
  const { content } = await readCliInput({
178
297
  providedInput: options.providedInput,
179
298
  allowStdinWhenNoPath: true,
@@ -215,11 +334,12 @@ export class SignatureCommand extends UnauthenticatedCommand {
215
334
  description: 'Signature algorithm to use (sha1, sha256, sha384, sha512)',
216
335
  });
217
336
  async run() {
218
- const credentials = getCredentials();
219
- if (credentials == null) {
220
- this.output.error('Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.');
337
+ const credentialsResult = requireEnvCredentials();
338
+ if (!credentialsResult.ok) {
339
+ this.output.error(credentialsResult.error);
221
340
  return 1;
222
341
  }
342
+ const credentials = credentialsResult.credentials;
223
343
  const { content } = await readCliInput({ allowStdinWhenNoPath: true });
224
344
  const rawInput = (content ?? '').trim();
225
345
  const result = generateSignature(rawInput, credentials, this.algorithm);
@@ -261,11 +381,12 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
261
381
  ],
262
382
  });
263
383
  async run() {
264
- const credentials = getCredentials();
265
- if (credentials == null) {
266
- this.output.error('Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.');
384
+ const credentialsResult = requireEnvCredentials();
385
+ if (!credentialsResult.ok) {
386
+ this.output.error(credentialsResult.error);
267
387
  return 1;
268
388
  }
389
+ const credentials = credentialsResult.credentials;
269
390
  const { content } = await readCliInput({ allowStdinWhenNoPath: true });
270
391
  const rawInput = (content ?? '').trim();
271
392
  const result = generateSmartCdnUrl(rawInput, credentials);
@@ -277,4 +398,44 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
277
398
  return 1;
278
399
  }
279
400
  }
401
+ /**
402
+ * Mint a short-lived bearer token via POST /token (HTTP Basic Auth).
403
+ *
404
+ * This is intentionally stdout-clean JSON so it can be used by agents and scripts.
405
+ */
406
+ export class TokenCommand extends UnauthenticatedCommand {
407
+ static paths = [['auth', 'token']];
408
+ static usage = Command.Usage({
409
+ category: 'Auth',
410
+ description: 'Mint a short-lived bearer token',
411
+ details: `
412
+ Calls POST /token using HTTP Basic Auth (TRANSLOADIT_KEY + TRANSLOADIT_SECRET) and prints the
413
+ JSON response to stdout.
414
+ `,
415
+ examples: [
416
+ ['Mint an MCP token (default aud)', 'transloadit auth token'],
417
+ ['Override audience', 'transloadit auth token --aud api2'],
418
+ ],
419
+ });
420
+ aud = Option.String('--aud', {
421
+ description: 'Token audience (default: mcp).',
422
+ });
423
+ async run() {
424
+ const credentialsResult = requireEnvCredentials();
425
+ if (!credentialsResult.ok) {
426
+ this.output.error(credentialsResult.error);
427
+ return 1;
428
+ }
429
+ const result = await requestTokenWithCredentials(credentialsResult.credentials, {
430
+ endpoint: this.endpoint,
431
+ aud: this.aud,
432
+ });
433
+ if (result.ok) {
434
+ process.stdout.write(`${result.output}\n`);
435
+ return undefined;
436
+ }
437
+ this.output.error(result.error);
438
+ return 1;
439
+ }
440
+ }
280
441
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/cli/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAE,MAAM,WAAW,CAAA;AA4BzC,wBAAgB,SAAS,IAAI,GAAG,CA6C/B"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,GAAG,EAAE,MAAM,WAAW,CAAA;AA4BzC,wBAAgB,SAAS,IAAI,GAAG,CA8C/B"}
@@ -1,7 +1,7 @@
1
1
  import { Builtins, Cli } from 'clipanion';
2
2
  import packageJson from '../../../package.json' with { type: 'json' };
3
3
  import { AssembliesCreateCommand, AssembliesDeleteCommand, AssembliesGetCommand, AssembliesLintCommand, AssembliesListCommand, AssembliesReplayCommand, } from "./assemblies.js";
4
- import { SignatureCommand, SmartCdnSignatureCommand } from "./auth.js";
4
+ import { SignatureCommand, SmartCdnSignatureCommand, TokenCommand } from "./auth.js";
5
5
  import { BillsGetCommand } from "./bills.js";
6
6
  import { DocsRobotsGetCommand, DocsRobotsListCommand } from "./docs.js";
7
7
  import { NotificationsReplayCommand } from "./notifications.js";
@@ -19,6 +19,7 @@ export function createCli() {
19
19
  // Auth commands (signature generation)
20
20
  cli.register(SignatureCommand);
21
21
  cli.register(SmartCdnSignatureCommand);
22
+ cli.register(TokenCommand);
22
23
  // Assemblies commands
23
24
  cli.register(AssembliesCreateCommand);
24
25
  cli.register(AssembliesListCommand);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,WAAW,CAAA;AAEtE,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,WAAW,CAAC,OAAO;KACnC,CAAC,CAAA;IAEF,oBAAoB;IACpB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAErC,uCAAuC;IACvC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAC9B,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;IAEtC,sBAAsB;IACtB,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IACnC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IAEnC,qBAAqB;IACrB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IACjC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAElC,iBAAiB;IACjB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE7B,yBAAyB;IACzB,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAA;IAExC,mBAAmB;IACnB,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE3B,4CAA4C;IAC5C,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IACnC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAElC,OAAO,GAAG,CAAA;AACZ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/commands/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAEzC,OAAO,WAAW,MAAM,uBAAuB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAA;AAErE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,GACxB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,YAAY,EAAE,MAAM,WAAW,CAAA;AAEpF,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAA;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAA;AAC/D,OAAO,EACL,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,gBAAgB,CAAA;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAE3C,MAAM,UAAU,SAAS;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC;QAClB,WAAW,EAAE,iBAAiB;QAC9B,UAAU,EAAE,aAAa;QACzB,aAAa,EAAE,WAAW,CAAC,OAAO;KACnC,CAAC,CAAA;IAEF,oBAAoB;IACpB,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAA;IAErC,uCAAuC;IACvC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAA;IAC9B,GAAG,CAAC,QAAQ,CAAC,wBAAwB,CAAC,CAAA;IACtC,GAAG,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAA;IAE1B,sBAAsB;IACtB,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IACnC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAA;IACrC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IAEnC,qBAAqB;IACrB,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAA;IACjC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAA;IACpC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAClC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAElC,iBAAiB;IACjB,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAA;IAE7B,yBAAyB;IACzB,GAAG,CAAC,QAAQ,CAAC,0BAA0B,CAAC,CAAA;IAExC,mBAAmB;IACnB,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAA;IAE3B,4CAA4C;IAC5C,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAA;IACnC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAA;IAElC,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -1,8 +1,16 @@
1
1
  import type { Readable } from 'node:stream';
2
- export declare function getEnvCredentials(): {
2
+ type EnvCredentials = {
3
3
  authKey: string;
4
4
  authSecret: string;
5
- } | null;
5
+ };
6
+ type RequireEnvCredentialsResult = {
7
+ ok: true;
8
+ credentials: EnvCredentials;
9
+ } | {
10
+ ok: false;
11
+ error: string;
12
+ };
13
+ export declare function requireEnvCredentials(): RequireEnvCredentialsResult;
6
14
  export declare function createReadStream(file: string): Readable;
7
15
  export declare function streamToBuffer(stream: Readable): Promise<Buffer>;
8
16
  export interface CliInputResult {
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAG3C,wBAAgB,iBAAiB,IAAI;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOlF;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAGvD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtE;AAeD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBxF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQnD;AAGD,cAAc;AACd,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AAC3D,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAM3C,KAAK,cAAc,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,CAAA;AAW7D,KAAK,2BAA2B,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,WAAW,EAAE,cAAc,CAAA;CAAE,GACzC;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAA;AAEhC,wBAAgB,qBAAqB,IAAI,2BAA2B,CAInE;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,CAGvD;AAED,wBAAsB,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtE;AAeD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,wBAAsB,YAAY,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAsBxF;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAQnD;AAGD,cAAc;AACd,YAAY,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C,wBAAgB,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AAC3D,wBAAgB,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,GAAG,CAAC,EAAE,EAAE,CAAA"}
@@ -1,13 +1,20 @@
1
1
  import fs from 'node:fs';
2
2
  import fsp from 'node:fs/promises';
3
3
  import { isAPIError } from "./types.js";
4
- export function getEnvCredentials() {
4
+ const MISSING_CREDENTIALS_MESSAGE = 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.';
5
+ function getEnvCredentials() {
5
6
  const authKey = process.env.TRANSLOADIT_KEY ?? process.env.TRANSLOADIT_AUTH_KEY;
6
7
  const authSecret = process.env.TRANSLOADIT_SECRET ?? process.env.TRANSLOADIT_AUTH_SECRET;
7
8
  if (!authKey || !authSecret)
8
9
  return null;
9
10
  return { authKey, authSecret };
10
11
  }
12
+ export function requireEnvCredentials() {
13
+ const credentials = getEnvCredentials();
14
+ if (credentials == null)
15
+ return { ok: false, error: MISSING_CREDENTIALS_MESSAGE };
16
+ return { ok: true, credentials };
17
+ }
11
18
  export function createReadStream(file) {
12
19
  if (file === '-')
13
20
  return process.stdin;
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/cli/helpers.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,15 +1,30 @@
1
1
  {
2
2
  "name": "transloadit",
3
- "version": "4.7.1",
3
+ "version": "4.7.3",
4
4
  "description": "Node.js SDK for Transloadit",
5
+ "homepage": "https://github.com/transloadit/node-sdk/tree/main/packages/node",
6
+ "bugs": {
7
+ "url": "https://github.com/transloadit/node-sdk/issues"
8
+ },
5
9
  "type": "module",
6
10
  "keywords": [
7
11
  "transloadit",
12
+ "tus",
13
+ "resumable-upload",
14
+ "upload",
15
+ "file-processing",
16
+ "assembly",
17
+ "assemblies",
18
+ "template",
19
+ "templates",
8
20
  "encoding",
9
21
  "transcoding",
10
22
  "video",
23
+ "image",
11
24
  "audio",
12
- "mp3"
25
+ "mp3",
26
+ "cli",
27
+ "typescript"
13
28
  ],
14
29
  "author": "Tim Koschuetzki <tim@transloadit.com>",
15
30
  "packageManager": "yarn@4.12.0",
@@ -2,7 +2,7 @@ import 'dotenv/config'
2
2
  import process from 'node:process'
3
3
  import { Command, Option } from 'clipanion'
4
4
  import { Transloadit as TransloaditClient } from '../../Transloadit.ts'
5
- import { getEnvCredentials } from '../helpers.ts'
5
+ import { requireEnvCredentials } from '../helpers.ts'
6
6
  import type { IOutputCtl } from '../OutputCtl.ts'
7
7
  import OutputCtl, { LOG_LEVEL_DEFAULT, LOG_LEVEL_NAMES, parseLogLevel } from '../OutputCtl.ts'
8
8
 
@@ -32,17 +32,18 @@ abstract class BaseCommand extends Command {
32
32
  }
33
33
 
34
34
  protected setupClient(): boolean {
35
- const creds = getEnvCredentials()
36
- if (!creds) {
37
- this.output.error(
38
- 'Please provide API authentication in the environment variables TRANSLOADIT_KEY and TRANSLOADIT_SECRET',
39
- )
35
+ const credsResult = requireEnvCredentials()
36
+ if (!credsResult.ok) {
37
+ this.output.error(credsResult.error)
40
38
  return false
41
39
  }
42
40
 
43
41
  const endpoint = this.endpoint || process.env.TRANSLOADIT_ENDPOINT
44
42
 
45
- this.client = new TransloaditClient({ ...creds, ...(endpoint && { endpoint }) })
43
+ this.client = new TransloaditClient({
44
+ ...credsResult.credentials,
45
+ ...(endpoint && { endpoint }),
46
+ })
46
47
  return true
47
48
  }
48
49
 
@@ -8,7 +8,7 @@ import {
8
8
  } from '../../alphalib/types/template.ts'
9
9
  import type { OptionalAuthParams } from '../../apiTypes.ts'
10
10
  import { Transloadit } from '../../Transloadit.ts'
11
- import { getEnvCredentials, readCliInput } from '../helpers.ts'
11
+ import { readCliInput, requireEnvCredentials } from '../helpers.ts'
12
12
  import { UnauthenticatedCommand } from './BaseCommand.ts'
13
13
 
14
14
  type UrlParamPrimitive = string | number | boolean
@@ -68,40 +68,51 @@ function normalizeUrlParams(params?: Record<string, unknown>): NormalizedUrlPara
68
68
  return normalized
69
69
  }
70
70
 
71
- const getCredentials = getEnvCredentials
71
+ type OutputResult = { ok: true; output: string } | { ok: false; error: string }
72
72
 
73
- // Result type for signature operations
74
- type SigResult = { ok: true; output: string } | { ok: false; error: string }
73
+ type Result<T> = { ok: true; value: T } | { ok: false; error: string }
74
+
75
+ function parseJsonObject<TSchema extends z.ZodTypeAny>(
76
+ input: string,
77
+ schema: TSchema,
78
+ ): Result<z.infer<TSchema>> {
79
+ let parsed: unknown
80
+ try {
81
+ parsed = JSON.parse(input)
82
+ } catch (error) {
83
+ return { ok: false, error: `Failed to parse JSON from stdin: ${(error as Error).message}` }
84
+ }
85
+
86
+ if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
87
+ return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' }
88
+ }
89
+
90
+ const parsedResult = schema.safeParse(parsed)
91
+ if (!parsedResult.success) {
92
+ return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` }
93
+ }
94
+
95
+ return { ok: true, value: parsedResult.data }
96
+ }
75
97
 
76
98
  // Core logic for signature generation
77
99
  function generateSignature(
78
100
  input: string,
79
101
  credentials: { authKey: string; authSecret: string },
80
102
  algorithm?: string,
81
- ): SigResult {
103
+ ): OutputResult {
82
104
  const { authKey, authSecret } = credentials
83
105
  let params: CliSignatureParams
84
106
 
85
107
  if (input === '') {
86
108
  params = { auth: { key: authKey } }
87
109
  } else {
88
- let parsed: unknown
89
- try {
90
- parsed = JSON.parse(input)
91
- } catch (error) {
92
- return { ok: false, error: `Failed to parse JSON from stdin: ${(error as Error).message}` }
93
- }
94
-
95
- if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
96
- return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' }
110
+ const parsedResult = parseJsonObject(input, cliSignatureParamsSchema)
111
+ if (!parsedResult.ok) {
112
+ return { ok: false, error: parsedResult.error }
97
113
  }
98
114
 
99
- const parsedResult = cliSignatureParamsSchema.safeParse(parsed)
100
- if (!parsedResult.success) {
101
- return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` }
102
- }
103
-
104
- const parsedParams = parsedResult.data
115
+ const parsedParams = parsedResult.value
105
116
  const existingAuth = parsedParams.auth ?? {}
106
117
 
107
118
  params = {
@@ -126,7 +137,7 @@ function generateSignature(
126
137
  function generateSmartCdnUrl(
127
138
  input: string,
128
139
  credentials: { authKey: string; authSecret: string },
129
- ): SigResult {
140
+ ): OutputResult {
130
141
  const { authKey, authSecret } = credentials
131
142
 
132
143
  if (input === '') {
@@ -137,23 +148,12 @@ function generateSmartCdnUrl(
137
148
  }
138
149
  }
139
150
 
140
- let parsed: unknown
141
- try {
142
- parsed = JSON.parse(input)
143
- } catch (error) {
144
- return { ok: false, error: `Failed to parse JSON from stdin: ${(error as Error).message}` }
145
- }
146
-
147
- if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed)) {
148
- return { ok: false, error: 'Invalid params provided via stdin. Expected a JSON object.' }
149
- }
150
-
151
- const parsedResult = smartCdnParamsSchema.safeParse(parsed)
152
- if (!parsedResult.success) {
153
- return { ok: false, error: `Invalid params: ${formatIssues(parsedResult.error.issues)}` }
151
+ const parsedResult = parseJsonObject(input, smartCdnParamsSchema)
152
+ if (!parsedResult.ok) {
153
+ return { ok: false, error: parsedResult.error }
154
154
  }
155
155
 
156
- const { workspace, template, input: inputFieldRaw, url_params, expire_at_ms } = parsedResult.data
156
+ const { workspace, template, input: inputFieldRaw, url_params, expire_at_ms } = parsedResult.value
157
157
  const urlParams = normalizeUrlParams(url_params)
158
158
 
159
159
  let expiresAt: number | undefined
@@ -194,15 +194,163 @@ export interface RunSmartSigOptions {
194
194
  providedInput?: string
195
195
  }
196
196
 
197
+ export interface RequestTokenOptions {
198
+ endpoint?: string
199
+ aud?: string
200
+ }
201
+
202
+ const tokenErrorSchema = z
203
+ .object({
204
+ error: z.string(),
205
+ message: z.string().optional(),
206
+ })
207
+ .passthrough()
208
+
209
+ const tokenSuccessSchema = z
210
+ .object({
211
+ access_token: z.string().min(1),
212
+ })
213
+ .passthrough()
214
+
215
+ const buildBasicAuthHeaderValue = (credentials: { authKey: string; authSecret: string }): string =>
216
+ `Basic ${Buffer.from(`${credentials.authKey}:${credentials.authSecret}`, 'utf8').toString('base64')}`
217
+
218
+ const isLoopbackHost = (hostname: string): boolean =>
219
+ hostname === 'localhost' || hostname === '::1' || hostname.startsWith('127.')
220
+
221
+ type TokenBaseResult = { ok: true; baseUrl: URL } | { ok: false; error: string }
222
+
223
+ const normalizeTokenBaseEndpoint = (raw?: string): TokenBaseResult => {
224
+ const baseRaw = (raw || process.env.TRANSLOADIT_ENDPOINT || 'https://api2.transloadit.com').trim()
225
+
226
+ let url: URL
227
+ try {
228
+ url = new URL(baseRaw)
229
+ } catch {
230
+ return {
231
+ ok: false,
232
+ error:
233
+ 'Invalid endpoint URL. Use --endpoint https://api2.transloadit.com (or set TRANSLOADIT_ENDPOINT).',
234
+ }
235
+ }
236
+
237
+ if (url.username || url.password) {
238
+ return { ok: false, error: 'Endpoint must not include username/password.' }
239
+ }
240
+ if (url.search || url.hash) {
241
+ return { ok: false, error: 'Endpoint must not include query string or hash.' }
242
+ }
243
+
244
+ if (url.protocol !== 'https:') {
245
+ if (url.protocol === 'http:' && isLoopbackHost(url.hostname)) {
246
+ // Allowed for local development only.
247
+ } else {
248
+ return {
249
+ ok: false,
250
+ error:
251
+ 'Refusing to send credentials to a non-HTTPS endpoint. Use https://... (or http://localhost for local development).',
252
+ }
253
+ }
254
+ }
255
+
256
+ // If someone pasted the token URL, normalize it back to the API base to avoid /token/token.
257
+ const pathLower = url.pathname.toLowerCase()
258
+ if (pathLower === '/token' || pathLower === '/token/') {
259
+ url.pathname = '/'
260
+ }
261
+
262
+ if (!url.pathname.endsWith('/')) {
263
+ url.pathname = `${url.pathname}/`
264
+ }
265
+
266
+ return { ok: true, baseUrl: url }
267
+ }
268
+
269
+ async function requestTokenWithCredentials(
270
+ credentials: { authKey: string; authSecret: string },
271
+ options: RequestTokenOptions = {},
272
+ ): Promise<OutputResult> {
273
+ const endpointResult = normalizeTokenBaseEndpoint(options.endpoint)
274
+ if (!endpointResult.ok) {
275
+ return { ok: false, error: endpointResult.error }
276
+ }
277
+
278
+ const url = new URL('token', endpointResult.baseUrl).toString()
279
+ const aud = (options.aud ?? 'mcp').trim() || 'mcp'
280
+
281
+ const body = new URLSearchParams({ grant_type: 'client_credentials', aud }).toString()
282
+
283
+ let res: Response
284
+ const controller = new AbortController()
285
+ const timeout = setTimeout(() => controller.abort(), 15_000)
286
+ try {
287
+ res = await fetch(url, {
288
+ method: 'POST',
289
+ // Never follow redirects with Basic Auth credentials.
290
+ redirect: 'error',
291
+ signal: controller.signal,
292
+ headers: {
293
+ Authorization: buildBasicAuthHeaderValue(credentials),
294
+ Accept: 'application/json',
295
+ 'Content-Type': 'application/x-www-form-urlencoded',
296
+ },
297
+ body,
298
+ })
299
+ } catch (err) {
300
+ clearTimeout(timeout)
301
+ if (err instanceof Error && err.name === 'AbortError') {
302
+ return { ok: false, error: 'Failed to mint bearer token: request timed out after 15s.' }
303
+ }
304
+ const message = err instanceof Error ? err.message : String(err)
305
+ return { ok: false, error: `Failed to mint bearer token: ${message}` }
306
+ } finally {
307
+ clearTimeout(timeout)
308
+ }
309
+
310
+ const text = await res.text()
311
+ const trimmed = text.trim()
312
+ let parsedJson: unknown = null
313
+ try {
314
+ parsedJson = trimmed ? JSON.parse(trimmed) : null
315
+ } catch {
316
+ parsedJson = null
317
+ }
318
+
319
+ if (res.ok) {
320
+ if (parsedJson == null) {
321
+ return { ok: false, error: 'Token response was not valid JSON.' }
322
+ }
323
+ const parsed = tokenSuccessSchema.safeParse(parsedJson)
324
+ if (!parsed.success) {
325
+ return { ok: false, error: 'Token response did not include an access_token.' }
326
+ }
327
+ return { ok: true, output: trimmed }
328
+ }
329
+
330
+ const parsedError = tokenErrorSchema.safeParse(parsedJson)
331
+ if (parsedError.success) {
332
+ return {
333
+ ok: false,
334
+ error: parsedError.data.message
335
+ ? `${parsedError.data.error}: ${parsedError.data.message}`
336
+ : parsedError.data.error,
337
+ }
338
+ }
339
+
340
+ return {
341
+ ok: false,
342
+ error: `Token request failed (${res.status}): ${trimmed || res.statusText}`,
343
+ }
344
+ }
345
+
197
346
  export async function runSig(options: RunSigOptions = {}): Promise<void> {
198
- const credentials = getCredentials()
199
- if (credentials == null) {
200
- console.error(
201
- 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.',
202
- )
347
+ const credentialsResult = requireEnvCredentials()
348
+ if (!credentialsResult.ok) {
349
+ console.error(credentialsResult.error)
203
350
  process.exitCode = 1
204
351
  return
205
352
  }
353
+ const credentials = credentialsResult.credentials
206
354
 
207
355
  const { content } = await readCliInput({
208
356
  providedInput: options.providedInput,
@@ -220,14 +368,13 @@ export async function runSig(options: RunSigOptions = {}): Promise<void> {
220
368
  }
221
369
 
222
370
  export async function runSmartSig(options: RunSmartSigOptions = {}): Promise<void> {
223
- const credentials = getCredentials()
224
- if (credentials == null) {
225
- console.error(
226
- 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.',
227
- )
371
+ const credentialsResult = requireEnvCredentials()
372
+ if (!credentialsResult.ok) {
373
+ console.error(credentialsResult.error)
228
374
  process.exitCode = 1
229
375
  return
230
376
  }
377
+ const credentials = credentialsResult.credentials
231
378
 
232
379
  const { content } = await readCliInput({
233
380
  providedInput: options.providedInput,
@@ -274,13 +421,12 @@ export class SignatureCommand extends UnauthenticatedCommand {
274
421
  })
275
422
 
276
423
  protected async run(): Promise<number | undefined> {
277
- const credentials = getCredentials()
278
- if (credentials == null) {
279
- this.output.error(
280
- 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.',
281
- )
424
+ const credentialsResult = requireEnvCredentials()
425
+ if (!credentialsResult.ok) {
426
+ this.output.error(credentialsResult.error)
282
427
  return 1
283
428
  }
429
+ const credentials = credentialsResult.credentials
284
430
 
285
431
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
286
432
  const rawInput = (content ?? '').trim()
@@ -328,13 +474,12 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
328
474
  })
329
475
 
330
476
  protected async run(): Promise<number | undefined> {
331
- const credentials = getCredentials()
332
- if (credentials == null) {
333
- this.output.error(
334
- 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.',
335
- )
477
+ const credentialsResult = requireEnvCredentials()
478
+ if (!credentialsResult.ok) {
479
+ this.output.error(credentialsResult.error)
336
480
  return 1
337
481
  }
482
+ const credentials = credentialsResult.credentials
338
483
 
339
484
  const { content } = await readCliInput({ allowStdinWhenNoPath: true })
340
485
  const rawInput = (content ?? '').trim()
@@ -349,3 +494,50 @@ export class SmartCdnSignatureCommand extends UnauthenticatedCommand {
349
494
  return 1
350
495
  }
351
496
  }
497
+
498
+ /**
499
+ * Mint a short-lived bearer token via POST /token (HTTP Basic Auth).
500
+ *
501
+ * This is intentionally stdout-clean JSON so it can be used by agents and scripts.
502
+ */
503
+ export class TokenCommand extends UnauthenticatedCommand {
504
+ static override paths = [['auth', 'token']]
505
+
506
+ static override usage = Command.Usage({
507
+ category: 'Auth',
508
+ description: 'Mint a short-lived bearer token',
509
+ details: `
510
+ Calls POST /token using HTTP Basic Auth (TRANSLOADIT_KEY + TRANSLOADIT_SECRET) and prints the
511
+ JSON response to stdout.
512
+ `,
513
+ examples: [
514
+ ['Mint an MCP token (default aud)', 'transloadit auth token'],
515
+ ['Override audience', 'transloadit auth token --aud api2'],
516
+ ],
517
+ })
518
+
519
+ aud = Option.String('--aud', {
520
+ description: 'Token audience (default: mcp).',
521
+ })
522
+
523
+ protected override async run(): Promise<number | undefined> {
524
+ const credentialsResult = requireEnvCredentials()
525
+ if (!credentialsResult.ok) {
526
+ this.output.error(credentialsResult.error)
527
+ return 1
528
+ }
529
+
530
+ const result = await requestTokenWithCredentials(credentialsResult.credentials, {
531
+ endpoint: this.endpoint,
532
+ aud: this.aud,
533
+ })
534
+
535
+ if (result.ok) {
536
+ process.stdout.write(`${result.output}\n`)
537
+ return undefined
538
+ }
539
+
540
+ this.output.error(result.error)
541
+ return 1
542
+ }
543
+ }
@@ -11,7 +11,7 @@ import {
11
11
  AssembliesReplayCommand,
12
12
  } from './assemblies.ts'
13
13
 
14
- import { SignatureCommand, SmartCdnSignatureCommand } from './auth.ts'
14
+ import { SignatureCommand, SmartCdnSignatureCommand, TokenCommand } from './auth.ts'
15
15
 
16
16
  import { BillsGetCommand } from './bills.ts'
17
17
  import { DocsRobotsGetCommand, DocsRobotsListCommand } from './docs.ts'
@@ -40,6 +40,7 @@ export function createCli(): Cli {
40
40
  // Auth commands (signature generation)
41
41
  cli.register(SignatureCommand)
42
42
  cli.register(SmartCdnSignatureCommand)
43
+ cli.register(TokenCommand)
43
44
 
44
45
  // Assemblies commands
45
46
  cli.register(AssembliesCreateCommand)
@@ -3,7 +3,12 @@ import fsp from 'node:fs/promises'
3
3
  import type { Readable } from 'node:stream'
4
4
  import { isAPIError } from './types.ts'
5
5
 
6
- export function getEnvCredentials(): { authKey: string; authSecret: string } | null {
6
+ const MISSING_CREDENTIALS_MESSAGE =
7
+ 'Missing credentials. Please set TRANSLOADIT_KEY and TRANSLOADIT_SECRET environment variables.'
8
+
9
+ type EnvCredentials = { authKey: string; authSecret: string }
10
+
11
+ function getEnvCredentials(): { authKey: string; authSecret: string } | null {
7
12
  const authKey = process.env.TRANSLOADIT_KEY ?? process.env.TRANSLOADIT_AUTH_KEY
8
13
  const authSecret = process.env.TRANSLOADIT_SECRET ?? process.env.TRANSLOADIT_AUTH_SECRET
9
14
 
@@ -12,6 +17,16 @@ export function getEnvCredentials(): { authKey: string; authSecret: string } | n
12
17
  return { authKey, authSecret }
13
18
  }
14
19
 
20
+ type RequireEnvCredentialsResult =
21
+ | { ok: true; credentials: EnvCredentials }
22
+ | { ok: false; error: string }
23
+
24
+ export function requireEnvCredentials(): RequireEnvCredentialsResult {
25
+ const credentials = getEnvCredentials()
26
+ if (credentials == null) return { ok: false, error: MISSING_CREDENTIALS_MESSAGE }
27
+ return { ok: true, credentials }
28
+ }
29
+
15
30
  export function createReadStream(file: string): Readable {
16
31
  if (file === '-') return process.stdin
17
32
  return fs.createReadStream(file)