@zapier/zapier-sdk-cli 0.48.0 → 0.48.1

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/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @zapier/zapier-sdk-cli
2
2
 
3
+ ## 0.48.1
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [7984fae]
8
+ - @zapier/zapier-sdk@0.52.0
9
+ - @zapier/zapier-sdk-mcp@0.13.3
10
+
3
11
  ## 0.48.0
4
12
 
5
13
  ### Minor Changes
package/README.md CHANGED
@@ -146,6 +146,7 @@ These options are available for all commands:
146
146
  | `--tracking-base-url <url>` | | Base URL for Zapier tracking endpoints. |
147
147
  | `--max-network-retries <count>` | | Max retries for rate-limited requests (default: 3). |
148
148
  | `--max-network-retry-delay-ms <ms>` | | Max delay in ms to wait for retry (default: 60000). |
149
+ | `--max-concurrent-requests <count>` | | Max concurrent in-flight HTTP requests (default: 200, max: 10000). |
149
150
  | `--approval-timeout-ms <ms>` | | Timeout in ms for approval polling. Default: 600000 (10 min). |
150
151
  | `--max-approval-retries` | | Maximum number of sequential approval rounds per request (one per gating policy) before giving up. Default: 2. |
151
152
  | `--approval-mode` | | Approval flow behavior. "disabled" (default) throws a ZapierApprovalError on approval-required responses without creating an approval. "poll" creates the approval, opens it in a browser, polls until resolved, and retries the original request. "throw" creates the approval and throws a ZapierApprovalError with the approval URL so the caller can surface it. Defaults to the ZAPIER_APPROVAL_MODE env var, then "disabled". |
package/dist/cli.cjs CHANGED
@@ -1190,7 +1190,7 @@ var SHARED_COMMAND_CLI_OPTIONS = [
1190
1190
 
1191
1191
  // package.json
1192
1192
  var package_default = {
1193
- version: "0.48.0"};
1193
+ version: "0.48.1"};
1194
1194
 
1195
1195
  // src/telemetry/builders.ts
1196
1196
  function createCliBaseEvent(context = {}) {
@@ -3722,6 +3722,7 @@ var mcpPlugin = zapierSdk.definePlugin(
3722
3722
  await zapierSdkMcp.startMcpServer({
3723
3723
  ...options,
3724
3724
  debug: sdk2.context.options?.debug,
3725
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
3725
3726
  extensions: sdk2.context.extensions,
3726
3727
  experimental: sdk2.context.experimental
3727
3728
  });
@@ -6220,7 +6221,7 @@ var watchTriggerInboxCliPlugin = zapierSdk.definePlugin(
6220
6221
  // package.json with { type: 'json' }
6221
6222
  var package_default2 = {
6222
6223
  name: "@zapier/zapier-sdk-cli",
6223
- version: "0.48.0"};
6224
+ version: "0.48.1"};
6224
6225
 
6225
6226
  // src/sdk.ts
6226
6227
  zapierSdk.injectCliLogin(login_exports);
@@ -6482,6 +6483,9 @@ program.name("zapier-sdk").description("CLI for Zapier SDK").version(
6482
6483
  ).option(
6483
6484
  "--max-network-retry-delay-ms <ms>",
6484
6485
  "Max delay in ms to wait for rate limit retry (default: 60000)"
6486
+ ).option(
6487
+ "--max-concurrent-requests <count>",
6488
+ "Max concurrent in-flight HTTP requests (default: 200). Pass 'Infinity' to disable."
6485
6489
  ).option("--experimental", "Use the experimental SDK / CLI surface");
6486
6490
  var booleanFlags = [];
6487
6491
  for (const [key, fieldSchema] of Object.entries(
@@ -6505,8 +6509,13 @@ program.helpOption(
6505
6509
  );
6506
6510
  var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
6507
6511
  function getFlagValue(flagName) {
6508
- const index = process.argv.indexOf(flagName);
6509
- return index !== -1 ? process.argv[index + 1] : void 0;
6512
+ const prefix = `${flagName}=`;
6513
+ for (let i = 0; i < process.argv.length; i++) {
6514
+ const arg = process.argv[i];
6515
+ if (arg === flagName) return process.argv[i + 1];
6516
+ if (arg.startsWith(prefix)) return arg.slice(prefix.length);
6517
+ }
6518
+ return void 0;
6510
6519
  }
6511
6520
  var baseUrl = getFlagValue("--base-url");
6512
6521
  var credentialsToken = getFlagValue("--credentials");
@@ -6518,6 +6527,16 @@ var maxNetworkRetriesStr = getFlagValue("--max-network-retries");
6518
6527
  var maxNetworkRetries = maxNetworkRetriesStr ? parseInt(maxNetworkRetriesStr, 10) : void 0;
6519
6528
  var maxNetworkRetryDelayMsStr = getFlagValue("--max-network-retry-delay-ms");
6520
6529
  var maxNetworkRetryDelayMs = maxNetworkRetryDelayMsStr ? parseInt(maxNetworkRetryDelayMsStr, 10) : void 0;
6530
+ var maxConcurrentRequestsStr = getFlagValue("--max-concurrent-requests");
6531
+ var maxConcurrentRequests;
6532
+ if (maxConcurrentRequestsStr === void 0) {
6533
+ maxConcurrentRequests = void 0;
6534
+ } else if (maxConcurrentRequestsStr === "Infinity") {
6535
+ maxConcurrentRequests = Infinity;
6536
+ } else {
6537
+ const parsed = parseInt(maxConcurrentRequestsStr, 10);
6538
+ maxConcurrentRequests = Number.isFinite(parsed) ? parsed : NaN;
6539
+ }
6521
6540
  function buildCredentialsFromFlags() {
6522
6541
  if (credentialsToken) {
6523
6542
  return credentialsToken;
@@ -6560,6 +6579,7 @@ program.exitOverride();
6560
6579
  trackingBaseUrl,
6561
6580
  maxNetworkRetries,
6562
6581
  maxNetworkRetryDelayMs,
6582
+ maxConcurrentRequests,
6563
6583
  ...flagOverrides,
6564
6584
  extensions
6565
6585
  });
package/dist/cli.mjs CHANGED
@@ -1149,7 +1149,7 @@ var SHARED_COMMAND_CLI_OPTIONS = [
1149
1149
 
1150
1150
  // package.json
1151
1151
  var package_default = {
1152
- version: "0.48.0"};
1152
+ version: "0.48.1"};
1153
1153
 
1154
1154
  // src/telemetry/builders.ts
1155
1155
  function createCliBaseEvent(context = {}) {
@@ -3681,6 +3681,7 @@ var mcpPlugin = definePlugin(
3681
3681
  await startMcpServer({
3682
3682
  ...options,
3683
3683
  debug: sdk2.context.options?.debug,
3684
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
3684
3685
  extensions: sdk2.context.extensions,
3685
3686
  experimental: sdk2.context.experimental
3686
3687
  });
@@ -6179,7 +6180,7 @@ var watchTriggerInboxCliPlugin = definePlugin(
6179
6180
  // package.json with { type: 'json' }
6180
6181
  var package_default2 = {
6181
6182
  name: "@zapier/zapier-sdk-cli",
6182
- version: "0.48.0"};
6183
+ version: "0.48.1"};
6183
6184
 
6184
6185
  // src/sdk.ts
6185
6186
  injectCliLogin(login_exports);
@@ -6441,6 +6442,9 @@ program.name("zapier-sdk").description("CLI for Zapier SDK").version(
6441
6442
  ).option(
6442
6443
  "--max-network-retry-delay-ms <ms>",
6443
6444
  "Max delay in ms to wait for rate limit retry (default: 60000)"
6445
+ ).option(
6446
+ "--max-concurrent-requests <count>",
6447
+ "Max concurrent in-flight HTTP requests (default: 200). Pass 'Infinity' to disable."
6444
6448
  ).option("--experimental", "Use the experimental SDK / CLI surface");
6445
6449
  var booleanFlags = [];
6446
6450
  for (const [key, fieldSchema] of Object.entries(
@@ -6464,8 +6468,13 @@ program.helpOption(
6464
6468
  );
6465
6469
  var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
6466
6470
  function getFlagValue(flagName) {
6467
- const index = process.argv.indexOf(flagName);
6468
- return index !== -1 ? process.argv[index + 1] : void 0;
6471
+ const prefix = `${flagName}=`;
6472
+ for (let i = 0; i < process.argv.length; i++) {
6473
+ const arg = process.argv[i];
6474
+ if (arg === flagName) return process.argv[i + 1];
6475
+ if (arg.startsWith(prefix)) return arg.slice(prefix.length);
6476
+ }
6477
+ return void 0;
6469
6478
  }
6470
6479
  var baseUrl = getFlagValue("--base-url");
6471
6480
  var credentialsToken = getFlagValue("--credentials");
@@ -6477,6 +6486,16 @@ var maxNetworkRetriesStr = getFlagValue("--max-network-retries");
6477
6486
  var maxNetworkRetries = maxNetworkRetriesStr ? parseInt(maxNetworkRetriesStr, 10) : void 0;
6478
6487
  var maxNetworkRetryDelayMsStr = getFlagValue("--max-network-retry-delay-ms");
6479
6488
  var maxNetworkRetryDelayMs = maxNetworkRetryDelayMsStr ? parseInt(maxNetworkRetryDelayMsStr, 10) : void 0;
6489
+ var maxConcurrentRequestsStr = getFlagValue("--max-concurrent-requests");
6490
+ var maxConcurrentRequests;
6491
+ if (maxConcurrentRequestsStr === void 0) {
6492
+ maxConcurrentRequests = void 0;
6493
+ } else if (maxConcurrentRequestsStr === "Infinity") {
6494
+ maxConcurrentRequests = Infinity;
6495
+ } else {
6496
+ const parsed = parseInt(maxConcurrentRequestsStr, 10);
6497
+ maxConcurrentRequests = Number.isFinite(parsed) ? parsed : NaN;
6498
+ }
6480
6499
  function buildCredentialsFromFlags() {
6481
6500
  if (credentialsToken) {
6482
6501
  return credentialsToken;
@@ -6519,6 +6538,7 @@ program.exitOverride();
6519
6538
  trackingBaseUrl,
6520
6539
  maxNetworkRetries,
6521
6540
  maxNetworkRetryDelayMs,
6541
+ maxConcurrentRequests,
6522
6542
  ...flagOverrides,
6523
6543
  extensions
6524
6544
  });
@@ -1481,6 +1481,7 @@ var mcpPlugin = zapierSdk.definePlugin(
1481
1481
  await zapierSdkMcp.startMcpServer({
1482
1482
  ...options,
1483
1483
  debug: sdk2.context.options?.debug,
1484
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
1484
1485
  extensions: sdk2.context.extensions,
1485
1486
  experimental: sdk2.context.experimental
1486
1487
  });
@@ -3962,7 +3963,7 @@ var watchTriggerInboxCliPlugin = zapierSdk.definePlugin(
3962
3963
  // package.json with { type: 'json' }
3963
3964
  var package_default = {
3964
3965
  name: "@zapier/zapier-sdk-cli",
3965
- version: "0.48.0"};
3966
+ version: "0.48.1"};
3966
3967
 
3967
3968
  // src/experimental.ts
3968
3969
  experimental.injectCliLogin(login_exports);
@@ -1445,6 +1445,7 @@ var mcpPlugin = definePlugin(
1445
1445
  await startMcpServer({
1446
1446
  ...options,
1447
1447
  debug: sdk2.context.options?.debug,
1448
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
1448
1449
  extensions: sdk2.context.extensions,
1449
1450
  experimental: sdk2.context.experimental
1450
1451
  });
@@ -3926,7 +3927,7 @@ var watchTriggerInboxCliPlugin = definePlugin(
3926
3927
  // package.json with { type: 'json' }
3927
3928
  var package_default = {
3928
3929
  name: "@zapier/zapier-sdk-cli",
3929
- version: "0.48.0"};
3930
+ version: "0.48.1"};
3930
3931
 
3931
3932
  // src/experimental.ts
3932
3933
  injectCliLogin(login_exports);
package/dist/index.cjs CHANGED
@@ -1480,6 +1480,7 @@ var mcpPlugin = zapierSdk.definePlugin(
1480
1480
  await zapierSdkMcp.startMcpServer({
1481
1481
  ...options,
1482
1482
  debug: sdk2.context.options?.debug,
1483
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
1483
1484
  extensions: sdk2.context.extensions,
1484
1485
  experimental: sdk2.context.experimental
1485
1486
  });
@@ -3961,7 +3962,7 @@ zapierSdk.definePlugin(
3961
3962
  // package.json with { type: 'json' }
3962
3963
  var package_default = {
3963
3964
  name: "@zapier/zapier-sdk-cli",
3964
- version: "0.48.0"};
3965
+ version: "0.48.1"};
3965
3966
 
3966
3967
  // src/sdk.ts
3967
3968
  zapierSdk.injectCliLogin(login_exports);
@@ -3989,7 +3990,7 @@ function createZapierCliSdk(options = {}) {
3989
3990
 
3990
3991
  // package.json
3991
3992
  var package_default2 = {
3992
- version: "0.48.0"};
3993
+ version: "0.48.1"};
3993
3994
 
3994
3995
  // src/telemetry/builders.ts
3995
3996
  function createCliBaseEvent(context = {}) {
package/dist/index.mjs CHANGED
@@ -1444,6 +1444,7 @@ var mcpPlugin = definePlugin(
1444
1444
  await startMcpServer({
1445
1445
  ...options,
1446
1446
  debug: sdk2.context.options?.debug,
1447
+ maxConcurrentRequests: sdk2.context.options?.maxConcurrentRequests,
1447
1448
  extensions: sdk2.context.extensions,
1448
1449
  experimental: sdk2.context.experimental
1449
1450
  });
@@ -3925,7 +3926,7 @@ definePlugin(
3925
3926
  // package.json with { type: 'json' }
3926
3927
  var package_default = {
3927
3928
  name: "@zapier/zapier-sdk-cli",
3928
- version: "0.48.0"};
3929
+ version: "0.48.1"};
3929
3930
 
3930
3931
  // src/sdk.ts
3931
3932
  injectCliLogin(login_exports);
@@ -3953,7 +3954,7 @@ function createZapierCliSdk(options = {}) {
3953
3954
 
3954
3955
  // package.json
3955
3956
  var package_default2 = {
3956
- version: "0.48.0"};
3957
+ version: "0.48.1"};
3957
3958
 
3958
3959
  // src/telemetry/builders.ts
3959
3960
  function createCliBaseEvent(context = {}) {
package/dist/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@zapier/zapier-sdk-cli",
3
- "version": "0.48.0",
3
+ "version": "0.48.1",
4
4
  "description": "Command line interface for Zapier SDK",
5
5
  "main": "dist/index.cjs",
6
6
  "module": "dist/index.mjs",
package/dist/src/cli.js CHANGED
@@ -27,6 +27,7 @@ program
27
27
  .option("--tracking-base-url <url>", "Base URL for Zapier tracking endpoints")
28
28
  .option("--max-network-retries <count>", "Max retries for rate-limited requests (default: 3)")
29
29
  .option("--max-network-retry-delay-ms <ms>", "Max delay in ms to wait for rate limit retry (default: 60000)")
30
+ .option("--max-concurrent-requests <count>", "Max concurrent in-flight HTTP requests (default: 200). Pass 'Infinity' to disable.")
30
31
  // Registered so Commander accepts --experimental without rejecting it as
31
32
  // unknown. The actual factory selection happens before Commander parses,
32
33
  // by peeking at argv directly. Equivalent to using the
@@ -51,10 +52,20 @@ BaseSdkOptionsSchema.shape)) {
51
52
  program.helpOption(`${helpOption.short}, ${helpOption.flag}`, helpOption.description);
52
53
  // Check for debug flag early (support both flag and env var)
53
54
  const isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
54
- // Helper to get flag value from argv
55
+ // Helper to get flag value from argv. Handles both Commander forms:
56
+ // `--flag value` (returns the next argv entry) and `--flag=value` (returns
57
+ // the part after the equals). Returns undefined only when the flag is
58
+ // genuinely absent — an explicit empty string still returns "".
55
59
  function getFlagValue(flagName) {
56
- const index = process.argv.indexOf(flagName);
57
- return index !== -1 ? process.argv[index + 1] : undefined;
60
+ const prefix = `${flagName}=`;
61
+ for (let i = 0; i < process.argv.length; i++) {
62
+ const arg = process.argv[i];
63
+ if (arg === flagName)
64
+ return process.argv[i + 1];
65
+ if (arg.startsWith(prefix))
66
+ return arg.slice(prefix.length);
67
+ }
68
+ return undefined;
58
69
  }
59
70
  // Extract options from process.argv for early SDK creation
60
71
  // We need to create the SDK before parsing to generate commands from schemas
@@ -72,6 +83,23 @@ const maxNetworkRetryDelayMsStr = getFlagValue("--max-network-retry-delay-ms");
72
83
  const maxNetworkRetryDelayMs = maxNetworkRetryDelayMsStr
73
84
  ? parseInt(maxNetworkRetryDelayMsStr, 10)
74
85
  : undefined;
86
+ const maxConcurrentRequestsStr = getFlagValue("--max-concurrent-requests");
87
+ // "Infinity" is the explicit disable sentinel. parseInt of an all-digit
88
+ // overflow value (e.g. "9".repeat(309)) also returns ±Infinity, which
89
+ // would otherwise look like the sentinel and silently disable throttling
90
+ // — coerce non-finite parseInt results to NaN so the SDK boundary's
91
+ // fall-back-to-default branch handles them.
92
+ let maxConcurrentRequests;
93
+ if (maxConcurrentRequestsStr === undefined) {
94
+ maxConcurrentRequests = undefined;
95
+ }
96
+ else if (maxConcurrentRequestsStr === "Infinity") {
97
+ maxConcurrentRequests = Infinity;
98
+ }
99
+ else {
100
+ const parsed = parseInt(maxConcurrentRequestsStr, 10);
101
+ maxConcurrentRequests = Number.isFinite(parsed) ? parsed : NaN;
102
+ }
75
103
  // Build credentials object from flags
76
104
  function buildCredentialsFromFlags() {
77
105
  // If a direct token is provided, use it
@@ -143,6 +171,7 @@ program.exitOverride();
143
171
  trackingBaseUrl,
144
172
  maxNetworkRetries,
145
173
  maxNetworkRetryDelayMs,
174
+ maxConcurrentRequests,
146
175
  ...flagOverrides,
147
176
  extensions,
148
177
  });
@@ -3,6 +3,7 @@ export declare const mcpPlugin: (sdk: {
3
3
  context: {
4
4
  options?: {
5
5
  debug?: boolean;
6
+ maxConcurrentRequests?: number;
6
7
  };
7
8
  extensions?: Plugin<unknown, PluginProvides>[];
8
9
  experimental?: boolean;
@@ -6,16 +6,17 @@ export const mcpPlugin = definePlugin((sdk) => createPluginMethod(sdk, {
6
6
  categories: ["utility"],
7
7
  inputSchema: McpSchema,
8
8
  handler: async ({ sdk, options }) => {
9
- // Forward debug + the extensions resolved at CLI startup so the MCP
10
- // server's registry includes extension functions as tools. Without
11
- // this forward, MCP would build a vanilla SDK and the CLI/MCP
12
- // surfaces would diverge. The `experimental` flag (set by the
13
- // experimental CLI factory) tells the MCP server to build against
14
- // `@zapier/zapier-sdk/experimental` so experimental tools are
15
- // exposed.
9
+ // Forward debug, the concurrency cap, and the extensions resolved at
10
+ // CLI startup so the MCP server's SDK matches what the user asked
11
+ // for at the CLI surface. Without this forward, MCP would build a
12
+ // vanilla SDK and the CLI/MCP surfaces would diverge. The
13
+ // `experimental` flag (set by the experimental CLI factory) tells
14
+ // the MCP server to build against `@zapier/zapier-sdk/experimental`
15
+ // so experimental tools are exposed.
16
16
  await startMcpServer({
17
17
  ...options,
18
18
  debug: sdk.context.options?.debug,
19
+ maxConcurrentRequests: sdk.context.options?.maxConcurrentRequests,
19
20
  extensions: sdk.context.extensions,
20
21
  experimental: sdk.context.experimental,
21
22
  });