@zapier/zapier-sdk-cli 0.17.4 → 0.18.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # @zapier/zapier-sdk-cli
2
2
 
3
+ ## 0.18.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 97ff6c0: Add support for client credentials.
8
+
9
+ ### Patch Changes
10
+
11
+ - Updated dependencies [97ff6c0]
12
+ - @zapier/zapier-sdk-cli-login@0.4.0
13
+ - @zapier/zapier-sdk@1.0.0
14
+ - @zapier/zapier-sdk-mcp@0.4.11
15
+
3
16
  ## 0.17.4
4
17
 
5
18
  ### Patch Changes
package/dist/cli.cjs CHANGED
@@ -1536,15 +1536,22 @@ var generateRandomString = () => {
1536
1536
  (dec) => ("0" + dec.toString(16)).substring(-2)
1537
1537
  ).join("");
1538
1538
  };
1539
+ function ensureOfflineAccess(scope) {
1540
+ if (scope.includes("offline_access")) {
1541
+ return scope;
1542
+ }
1543
+ return `${scope} offline_access`;
1544
+ }
1539
1545
  var login = async ({
1540
1546
  timeoutMs = LOGIN_TIMEOUT_MS,
1541
- baseUrl: baseUrl2,
1542
- authBaseUrl: authBaseUrl2,
1543
- authClientId: authClientId2
1547
+ credentials: credentials2
1544
1548
  }) => {
1545
- const authOptions = { baseUrl: baseUrl2, authBaseUrl: authBaseUrl2 };
1546
- const tokenUrl = zapierSdkCliLogin.getAuthTokenUrl(authOptions);
1547
- const authorizeUrl = zapierSdkCliLogin.getAuthAuthorizeUrl(authOptions);
1549
+ const { clientId, tokenUrl, authorizeUrl } = zapierSdkCliLogin.getPkceLoginConfig({
1550
+ credentials: credentials2
1551
+ });
1552
+ const scope = ensureOfflineAccess(
1553
+ credentials2?.scope || "internal credentials"
1554
+ );
1548
1555
  zapierSdkCliLogin.logout();
1549
1556
  const availablePort = await findAvailablePort();
1550
1557
  const redirectUri = `http://localhost:${availablePort}/oauth`;
@@ -1576,9 +1583,9 @@ var login = async ({
1576
1583
  const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge__default.default();
1577
1584
  const authUrl = `${authorizeUrl}?${new URLSearchParams({
1578
1585
  response_type: "code",
1579
- client_id: authClientId2 || zapierSdkCliLogin.ZAPIER_AUTH_CLIENT_ID,
1586
+ client_id: clientId,
1580
1587
  redirect_uri: redirectUri,
1581
- scope: "internal offline_access",
1588
+ scope,
1582
1589
  state: generateRandomString(),
1583
1590
  code_challenge: codeChallenge,
1584
1591
  code_challenge_method: "S256"
@@ -1628,7 +1635,7 @@ var login = async ({
1628
1635
  grant_type: "authorization_code",
1629
1636
  code: await promisedCode,
1630
1637
  redirect_uri: redirectUri,
1631
- client_id: authClientId2 || zapierSdkCliLogin.ZAPIER_AUTH_CLIENT_ID,
1638
+ client_id: clientId,
1632
1639
  code_verifier: codeVerifier
1633
1640
  },
1634
1641
  {
@@ -1649,7 +1656,7 @@ var LoginSchema = zod.z.object({
1649
1656
 
1650
1657
  // package.json
1651
1658
  var package_default = {
1652
- version: "0.17.4"};
1659
+ version: "0.18.0"};
1653
1660
 
1654
1661
  // src/telemetry/builders.ts
1655
1662
  function createCliBaseEvent(context = {}) {
@@ -1706,22 +1713,17 @@ function buildCliCommandExecutedEvent({
1706
1713
 
1707
1714
  // src/plugins/login/index.ts
1708
1715
  var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
1709
- var loginWithSdk = zapierSdk.createFunction(
1710
- async (options) => {
1711
- const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
1712
- if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
1713
- throw new Error("Timeout must be a positive number");
1714
- }
1715
- await login_default({
1716
- timeoutMs: timeoutSeconds * 1e3,
1717
- baseUrl: options.baseUrl,
1718
- authBaseUrl: options.authBaseUrl,
1719
- authClientId: options.authClientId
1720
- });
1721
- const user = await zapierSdkCliLogin.getLoggedInUser();
1722
- console.log(`\u2705 Successfully logged in as ${user.email}`);
1716
+ function toPkceCredentials(credentials2) {
1717
+ if (credentials2 && zapierSdk.isCredentialsObject(credentials2) && !("clientSecret" in credentials2)) {
1718
+ return {
1719
+ type: "pkce",
1720
+ clientId: credentials2.clientId,
1721
+ baseUrl: credentials2.baseUrl,
1722
+ scope: credentials2.scope
1723
+ };
1723
1724
  }
1724
- );
1725
+ return void 0;
1726
+ }
1725
1727
  var loginPlugin = ({ context }) => {
1726
1728
  const loginWithTelemetry = async (options) => {
1727
1729
  const startTime = Date.now();
@@ -1730,17 +1732,21 @@ var loginPlugin = ({ context }) => {
1730
1732
  let accountId = null;
1731
1733
  let customUserId = null;
1732
1734
  try {
1733
- await loginWithSdk({
1734
- ...options,
1735
- baseUrl: context.options?.baseUrl,
1736
- authBaseUrl: context.options?.authBaseUrl,
1737
- authClientId: context.options?.authClientId
1735
+ const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
1736
+ if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
1737
+ throw new Error("Timeout must be a positive number");
1738
+ }
1739
+ const resolvedCredentials = await context.resolveCredentials();
1740
+ const pkceCredentials = toPkceCredentials(resolvedCredentials);
1741
+ await login_default({
1742
+ timeoutMs: timeoutSeconds * 1e3,
1743
+ credentials: pkceCredentials
1738
1744
  });
1745
+ const user = await zapierSdkCliLogin.getLoggedInUser();
1746
+ accountId = user.accountId;
1747
+ customUserId = user.customUserId;
1748
+ console.log(`\u2705 Successfully logged in as ${user.email}`);
1739
1749
  success = true;
1740
- try {
1741
- ({ accountId, customUserId } = await zapierSdkCliLogin.getLoggedInUser());
1742
- } catch {
1743
- }
1744
1750
  } catch (error) {
1745
1751
  success = false;
1746
1752
  errorMessage = error instanceof Error ? error.message : "Login failed";
@@ -2931,7 +2937,7 @@ function createZapierCliSdk(options = {}) {
2931
2937
  // package.json with { type: 'json' }
2932
2938
  var package_default2 = {
2933
2939
  name: "@zapier/zapier-sdk-cli",
2934
- version: "0.17.4"};
2940
+ version: "0.18.0"};
2935
2941
  function detectPackageManager(cwd = process.cwd()) {
2936
2942
  const ua = process.env.npm_config_user_agent;
2937
2943
  if (ua) {
@@ -3138,27 +3144,54 @@ async function checkAndNotifyUpdates({
3138
3144
 
3139
3145
  // src/cli.ts
3140
3146
  var program = new commander.Command();
3141
- program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option(
3142
- "--auth-base-url <url>",
3143
- "Base URL for Zapier authentication endpoints"
3144
- ).option("--auth-client-id <id>", "OAuth client ID for Zapier authentication").option(
3147
+ program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option("--credentials <token>", "Authentication token").option("--credentials-client-id <id>", "OAuth client ID for authentication").option(
3148
+ "--credentials-client-secret <secret>",
3149
+ "OAuth client secret for authentication"
3150
+ ).option(
3151
+ "--credentials-base-url <url>",
3152
+ "Base URL for authentication endpoints"
3153
+ ).option(
3145
3154
  "--tracking-base-url <url>",
3146
3155
  "Base URL for Zapier tracking endpoints"
3147
3156
  );
3148
3157
  var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
3149
- var baseUrlIndex = process.argv.indexOf("--base-url");
3150
- var authBaseUrlIndex = process.argv.indexOf("--auth-base-url");
3151
- var authClientIdIndex = process.argv.indexOf("--auth-client-id");
3152
- var trackingBaseUrlIndex = process.argv.indexOf("--tracking-base-url");
3153
- var baseUrl = baseUrlIndex !== -1 ? process.argv[baseUrlIndex + 1] : void 0;
3154
- var authBaseUrl = authBaseUrlIndex !== -1 ? process.argv[authBaseUrlIndex + 1] : void 0;
3155
- var authClientId = authClientIdIndex !== -1 ? process.argv[authClientIdIndex + 1] : void 0;
3156
- var trackingBaseUrl = trackingBaseUrlIndex !== -1 ? process.argv[trackingBaseUrlIndex + 1] : void 0;
3158
+ function getFlagValue(flagName) {
3159
+ const index = process.argv.indexOf(flagName);
3160
+ return index !== -1 ? process.argv[index + 1] : void 0;
3161
+ }
3162
+ var baseUrl = getFlagValue("--base-url");
3163
+ var credentialsToken = getFlagValue("--credentials");
3164
+ var credentialsClientId = getFlagValue("--credentials-client-id");
3165
+ var credentialsClientSecret = getFlagValue("--credentials-client-secret");
3166
+ var credentialsBaseUrl = getFlagValue("--credentials-base-url");
3167
+ var trackingBaseUrl = getFlagValue("--tracking-base-url");
3168
+ function buildCredentialsFromFlags() {
3169
+ if (credentialsToken) {
3170
+ return credentialsToken;
3171
+ }
3172
+ if (credentialsClientId) {
3173
+ if (credentialsClientSecret) {
3174
+ return {
3175
+ type: "client_credentials",
3176
+ clientId: credentialsClientId,
3177
+ clientSecret: credentialsClientSecret,
3178
+ baseUrl: credentialsBaseUrl
3179
+ };
3180
+ } else {
3181
+ return {
3182
+ type: "pkce",
3183
+ clientId: credentialsClientId,
3184
+ baseUrl: credentialsBaseUrl
3185
+ };
3186
+ }
3187
+ }
3188
+ return void 0;
3189
+ }
3190
+ var credentials = buildCredentialsFromFlags();
3157
3191
  var sdk = createZapierCliSdk({
3158
3192
  debug: isDebugMode,
3193
+ credentials,
3159
3194
  baseUrl,
3160
- authBaseUrl,
3161
- authClientId,
3162
3195
  trackingBaseUrl
3163
3196
  });
3164
3197
  generateCliCommands(program, sdk);
package/dist/cli.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
  import { Command, CommanderError } from 'commander';
3
3
  import { z } from 'zod';
4
- import { createFunction, OutputPropertySchema, DEFAULT_CONFIG_PATH, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, formatErrorMessage, getOsInfo, getPlatformVersions, getCiPlatform, isCi, isPositional, getReleaseId, getCurrentTimestamp, generateEventId } from '@zapier/zapier-sdk';
4
+ import { createFunction, OutputPropertySchema, DEFAULT_CONFIG_PATH, createZapierSdkWithoutRegistry, registryPlugin, ZapierError, ZapierValidationError, ZapierUnknownError, batch, toSnakeCase, formatErrorMessage, isCredentialsObject, getOsInfo, getPlatformVersions, getCiPlatform, isCi, isPositional, getReleaseId, getCurrentTimestamp, generateEventId } from '@zapier/zapier-sdk';
5
5
  import inquirer from 'inquirer';
6
6
  import chalk3 from 'chalk';
7
7
  import util from 'util';
@@ -9,7 +9,7 @@ import open from 'open';
9
9
  import crypto from 'crypto';
10
10
  import express from 'express';
11
11
  import pkceChallenge from 'pkce-challenge';
12
- import { getLoggedInUser, logout, getAuthTokenUrl, getAuthAuthorizeUrl, ZAPIER_AUTH_CLIENT_ID, AUTH_MODE_HEADER, updateLogin, getConfigPath } from '@zapier/zapier-sdk-cli-login';
12
+ import { logout, getConfigPath, getLoggedInUser, getPkceLoginConfig, AUTH_MODE_HEADER, updateLogin } from '@zapier/zapier-sdk-cli-login';
13
13
  import ora from 'ora';
14
14
  import { startMcpServer } from '@zapier/zapier-sdk-mcp';
15
15
  import { buildSync } from 'esbuild';
@@ -1500,15 +1500,22 @@ var generateRandomString = () => {
1500
1500
  (dec) => ("0" + dec.toString(16)).substring(-2)
1501
1501
  ).join("");
1502
1502
  };
1503
+ function ensureOfflineAccess(scope) {
1504
+ if (scope.includes("offline_access")) {
1505
+ return scope;
1506
+ }
1507
+ return `${scope} offline_access`;
1508
+ }
1503
1509
  var login = async ({
1504
1510
  timeoutMs = LOGIN_TIMEOUT_MS,
1505
- baseUrl: baseUrl2,
1506
- authBaseUrl: authBaseUrl2,
1507
- authClientId: authClientId2
1511
+ credentials: credentials2
1508
1512
  }) => {
1509
- const authOptions = { baseUrl: baseUrl2, authBaseUrl: authBaseUrl2 };
1510
- const tokenUrl = getAuthTokenUrl(authOptions);
1511
- const authorizeUrl = getAuthAuthorizeUrl(authOptions);
1513
+ const { clientId, tokenUrl, authorizeUrl } = getPkceLoginConfig({
1514
+ credentials: credentials2
1515
+ });
1516
+ const scope = ensureOfflineAccess(
1517
+ credentials2?.scope || "internal credentials"
1518
+ );
1512
1519
  logout();
1513
1520
  const availablePort = await findAvailablePort();
1514
1521
  const redirectUri = `http://localhost:${availablePort}/oauth`;
@@ -1540,9 +1547,9 @@ var login = async ({
1540
1547
  const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge();
1541
1548
  const authUrl = `${authorizeUrl}?${new URLSearchParams({
1542
1549
  response_type: "code",
1543
- client_id: authClientId2 || ZAPIER_AUTH_CLIENT_ID,
1550
+ client_id: clientId,
1544
1551
  redirect_uri: redirectUri,
1545
- scope: "internal offline_access",
1552
+ scope,
1546
1553
  state: generateRandomString(),
1547
1554
  code_challenge: codeChallenge,
1548
1555
  code_challenge_method: "S256"
@@ -1592,7 +1599,7 @@ var login = async ({
1592
1599
  grant_type: "authorization_code",
1593
1600
  code: await promisedCode,
1594
1601
  redirect_uri: redirectUri,
1595
- client_id: authClientId2 || ZAPIER_AUTH_CLIENT_ID,
1602
+ client_id: clientId,
1596
1603
  code_verifier: codeVerifier
1597
1604
  },
1598
1605
  {
@@ -1613,7 +1620,7 @@ var LoginSchema = z.object({
1613
1620
 
1614
1621
  // package.json
1615
1622
  var package_default = {
1616
- version: "0.17.4"};
1623
+ version: "0.18.0"};
1617
1624
 
1618
1625
  // src/telemetry/builders.ts
1619
1626
  function createCliBaseEvent(context = {}) {
@@ -1670,22 +1677,17 @@ function buildCliCommandExecutedEvent({
1670
1677
 
1671
1678
  // src/plugins/login/index.ts
1672
1679
  var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
1673
- var loginWithSdk = createFunction(
1674
- async (options) => {
1675
- const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
1676
- if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
1677
- throw new Error("Timeout must be a positive number");
1678
- }
1679
- await login_default({
1680
- timeoutMs: timeoutSeconds * 1e3,
1681
- baseUrl: options.baseUrl,
1682
- authBaseUrl: options.authBaseUrl,
1683
- authClientId: options.authClientId
1684
- });
1685
- const user = await getLoggedInUser();
1686
- console.log(`\u2705 Successfully logged in as ${user.email}`);
1680
+ function toPkceCredentials(credentials2) {
1681
+ if (credentials2 && isCredentialsObject(credentials2) && !("clientSecret" in credentials2)) {
1682
+ return {
1683
+ type: "pkce",
1684
+ clientId: credentials2.clientId,
1685
+ baseUrl: credentials2.baseUrl,
1686
+ scope: credentials2.scope
1687
+ };
1687
1688
  }
1688
- );
1689
+ return void 0;
1690
+ }
1689
1691
  var loginPlugin = ({ context }) => {
1690
1692
  const loginWithTelemetry = async (options) => {
1691
1693
  const startTime = Date.now();
@@ -1694,17 +1696,21 @@ var loginPlugin = ({ context }) => {
1694
1696
  let accountId = null;
1695
1697
  let customUserId = null;
1696
1698
  try {
1697
- await loginWithSdk({
1698
- ...options,
1699
- baseUrl: context.options?.baseUrl,
1700
- authBaseUrl: context.options?.authBaseUrl,
1701
- authClientId: context.options?.authClientId
1699
+ const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
1700
+ if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
1701
+ throw new Error("Timeout must be a positive number");
1702
+ }
1703
+ const resolvedCredentials = await context.resolveCredentials();
1704
+ const pkceCredentials = toPkceCredentials(resolvedCredentials);
1705
+ await login_default({
1706
+ timeoutMs: timeoutSeconds * 1e3,
1707
+ credentials: pkceCredentials
1702
1708
  });
1709
+ const user = await getLoggedInUser();
1710
+ accountId = user.accountId;
1711
+ customUserId = user.customUserId;
1712
+ console.log(`\u2705 Successfully logged in as ${user.email}`);
1703
1713
  success = true;
1704
- try {
1705
- ({ accountId, customUserId } = await getLoggedInUser());
1706
- } catch {
1707
- }
1708
1714
  } catch (error) {
1709
1715
  success = false;
1710
1716
  errorMessage = error instanceof Error ? error.message : "Login failed";
@@ -2895,7 +2901,7 @@ function createZapierCliSdk(options = {}) {
2895
2901
  // package.json with { type: 'json' }
2896
2902
  var package_default2 = {
2897
2903
  name: "@zapier/zapier-sdk-cli",
2898
- version: "0.17.4"};
2904
+ version: "0.18.0"};
2899
2905
  function detectPackageManager(cwd = process.cwd()) {
2900
2906
  const ua = process.env.npm_config_user_agent;
2901
2907
  if (ua) {
@@ -3102,27 +3108,54 @@ async function checkAndNotifyUpdates({
3102
3108
 
3103
3109
  // src/cli.ts
3104
3110
  var program = new Command();
3105
- program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option(
3106
- "--auth-base-url <url>",
3107
- "Base URL for Zapier authentication endpoints"
3108
- ).option("--auth-client-id <id>", "OAuth client ID for Zapier authentication").option(
3111
+ program.name("zapier-sdk").description("CLI for Zapier SDK").version(package_default2.version, "-v, --version", "display version number").option("--debug", "Enable debug logging").option("--base-url <url>", "Base URL for Zapier API endpoints").option("--credentials <token>", "Authentication token").option("--credentials-client-id <id>", "OAuth client ID for authentication").option(
3112
+ "--credentials-client-secret <secret>",
3113
+ "OAuth client secret for authentication"
3114
+ ).option(
3115
+ "--credentials-base-url <url>",
3116
+ "Base URL for authentication endpoints"
3117
+ ).option(
3109
3118
  "--tracking-base-url <url>",
3110
3119
  "Base URL for Zapier tracking endpoints"
3111
3120
  );
3112
3121
  var isDebugMode = process.env.DEBUG === "true" || process.argv.includes("--debug");
3113
- var baseUrlIndex = process.argv.indexOf("--base-url");
3114
- var authBaseUrlIndex = process.argv.indexOf("--auth-base-url");
3115
- var authClientIdIndex = process.argv.indexOf("--auth-client-id");
3116
- var trackingBaseUrlIndex = process.argv.indexOf("--tracking-base-url");
3117
- var baseUrl = baseUrlIndex !== -1 ? process.argv[baseUrlIndex + 1] : void 0;
3118
- var authBaseUrl = authBaseUrlIndex !== -1 ? process.argv[authBaseUrlIndex + 1] : void 0;
3119
- var authClientId = authClientIdIndex !== -1 ? process.argv[authClientIdIndex + 1] : void 0;
3120
- var trackingBaseUrl = trackingBaseUrlIndex !== -1 ? process.argv[trackingBaseUrlIndex + 1] : void 0;
3122
+ function getFlagValue(flagName) {
3123
+ const index = process.argv.indexOf(flagName);
3124
+ return index !== -1 ? process.argv[index + 1] : void 0;
3125
+ }
3126
+ var baseUrl = getFlagValue("--base-url");
3127
+ var credentialsToken = getFlagValue("--credentials");
3128
+ var credentialsClientId = getFlagValue("--credentials-client-id");
3129
+ var credentialsClientSecret = getFlagValue("--credentials-client-secret");
3130
+ var credentialsBaseUrl = getFlagValue("--credentials-base-url");
3131
+ var trackingBaseUrl = getFlagValue("--tracking-base-url");
3132
+ function buildCredentialsFromFlags() {
3133
+ if (credentialsToken) {
3134
+ return credentialsToken;
3135
+ }
3136
+ if (credentialsClientId) {
3137
+ if (credentialsClientSecret) {
3138
+ return {
3139
+ type: "client_credentials",
3140
+ clientId: credentialsClientId,
3141
+ clientSecret: credentialsClientSecret,
3142
+ baseUrl: credentialsBaseUrl
3143
+ };
3144
+ } else {
3145
+ return {
3146
+ type: "pkce",
3147
+ clientId: credentialsClientId,
3148
+ baseUrl: credentialsBaseUrl
3149
+ };
3150
+ }
3151
+ }
3152
+ return void 0;
3153
+ }
3154
+ var credentials = buildCredentialsFromFlags();
3121
3155
  var sdk = createZapierCliSdk({
3122
3156
  debug: isDebugMode,
3157
+ credentials,
3123
3158
  baseUrl,
3124
- authBaseUrl,
3125
- authClientId,
3126
3159
  trackingBaseUrl
3127
3160
  });
3128
3161
  generateCliCommands(program, sdk);
package/dist/index.cjs CHANGED
@@ -182,15 +182,22 @@ var generateRandomString = () => {
182
182
  (dec) => ("0" + dec.toString(16)).substring(-2)
183
183
  ).join("");
184
184
  };
185
+ function ensureOfflineAccess(scope) {
186
+ if (scope.includes("offline_access")) {
187
+ return scope;
188
+ }
189
+ return `${scope} offline_access`;
190
+ }
185
191
  var login = async ({
186
192
  timeoutMs = LOGIN_TIMEOUT_MS,
187
- baseUrl,
188
- authBaseUrl,
189
- authClientId
193
+ credentials
190
194
  }) => {
191
- const authOptions = { baseUrl, authBaseUrl };
192
- const tokenUrl = zapierSdkCliLogin.getAuthTokenUrl(authOptions);
193
- const authorizeUrl = zapierSdkCliLogin.getAuthAuthorizeUrl(authOptions);
195
+ const { clientId, tokenUrl, authorizeUrl } = zapierSdkCliLogin.getPkceLoginConfig({
196
+ credentials
197
+ });
198
+ const scope = ensureOfflineAccess(
199
+ credentials?.scope || "internal credentials"
200
+ );
194
201
  zapierSdkCliLogin.logout();
195
202
  const availablePort = await findAvailablePort();
196
203
  const redirectUri = `http://localhost:${availablePort}/oauth`;
@@ -222,9 +229,9 @@ var login = async ({
222
229
  const { code_verifier: codeVerifier, code_challenge: codeChallenge } = await pkceChallenge__default.default();
223
230
  const authUrl = `${authorizeUrl}?${new URLSearchParams({
224
231
  response_type: "code",
225
- client_id: authClientId || zapierSdkCliLogin.ZAPIER_AUTH_CLIENT_ID,
232
+ client_id: clientId,
226
233
  redirect_uri: redirectUri,
227
- scope: "internal offline_access",
234
+ scope,
228
235
  state: generateRandomString(),
229
236
  code_challenge: codeChallenge,
230
237
  code_challenge_method: "S256"
@@ -274,7 +281,7 @@ var login = async ({
274
281
  grant_type: "authorization_code",
275
282
  code: await promisedCode,
276
283
  redirect_uri: redirectUri,
277
- client_id: authClientId || zapierSdkCliLogin.ZAPIER_AUTH_CLIENT_ID,
284
+ client_id: clientId,
278
285
  code_verifier: codeVerifier
279
286
  },
280
287
  {
@@ -295,7 +302,7 @@ var LoginSchema = zod.z.object({
295
302
 
296
303
  // package.json
297
304
  var package_default = {
298
- version: "0.17.4"};
305
+ version: "0.18.0"};
299
306
 
300
307
  // src/telemetry/builders.ts
301
308
  function createCliBaseEvent(context = {}) {
@@ -352,22 +359,17 @@ function buildCliCommandExecutedEvent({
352
359
 
353
360
  // src/plugins/login/index.ts
354
361
  var CLI_COMMAND_EXECUTED_EVENT_SUBJECT = "platform.sdk.CliCommandExecutedEvent";
355
- var loginWithSdk = zapierSdk.createFunction(
356
- async (options) => {
357
- const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
358
- if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
359
- throw new Error("Timeout must be a positive number");
360
- }
361
- await login_default({
362
- timeoutMs: timeoutSeconds * 1e3,
363
- baseUrl: options.baseUrl,
364
- authBaseUrl: options.authBaseUrl,
365
- authClientId: options.authClientId
366
- });
367
- const user = await zapierSdkCliLogin.getLoggedInUser();
368
- console.log(`\u2705 Successfully logged in as ${user.email}`);
362
+ function toPkceCredentials(credentials) {
363
+ if (credentials && zapierSdk.isCredentialsObject(credentials) && !("clientSecret" in credentials)) {
364
+ return {
365
+ type: "pkce",
366
+ clientId: credentials.clientId,
367
+ baseUrl: credentials.baseUrl,
368
+ scope: credentials.scope
369
+ };
369
370
  }
370
- );
371
+ return void 0;
372
+ }
371
373
  var loginPlugin = ({ context }) => {
372
374
  const loginWithTelemetry = async (options) => {
373
375
  const startTime = Date.now();
@@ -376,17 +378,21 @@ var loginPlugin = ({ context }) => {
376
378
  let accountId = null;
377
379
  let customUserId = null;
378
380
  try {
379
- await loginWithSdk({
380
- ...options,
381
- baseUrl: context.options?.baseUrl,
382
- authBaseUrl: context.options?.authBaseUrl,
383
- authClientId: context.options?.authClientId
381
+ const timeoutSeconds = options.timeout ? parseInt(options.timeout, 10) : 300;
382
+ if (isNaN(timeoutSeconds) || timeoutSeconds <= 0) {
383
+ throw new Error("Timeout must be a positive number");
384
+ }
385
+ const resolvedCredentials = await context.resolveCredentials();
386
+ const pkceCredentials = toPkceCredentials(resolvedCredentials);
387
+ await login_default({
388
+ timeoutMs: timeoutSeconds * 1e3,
389
+ credentials: pkceCredentials
384
390
  });
391
+ const user = await zapierSdkCliLogin.getLoggedInUser();
392
+ accountId = user.accountId;
393
+ customUserId = user.customUserId;
394
+ console.log(`\u2705 Successfully logged in as ${user.email}`);
385
395
  success = true;
386
- try {
387
- ({ accountId, customUserId } = await zapierSdkCliLogin.getLoggedInUser());
388
- } catch {
389
- }
390
396
  } catch (error) {
391
397
  success = false;
392
398
  errorMessage = error instanceof Error ? error.message : "Login failed";