@base44-preview/cli 0.0.32-pr.251.fd02def → 0.0.32-pr.252.7bf9ea3

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/dist/cli/index.js CHANGED
@@ -17468,7 +17468,7 @@ var require_lodash2 = __commonJS((exports, module) => {
17468
17468
  function nth(array2, n2) {
17469
17469
  return array2 && array2.length ? baseNth(array2, toInteger(n2)) : undefined2;
17470
17470
  }
17471
- var pull2 = baseRest(pullAll);
17471
+ var pull = baseRest(pullAll);
17472
17472
  function pullAll(array2, values2) {
17473
17473
  return array2 && array2.length && values2 && values2.length ? basePullAll(array2, values2) : array2;
17474
17474
  }
@@ -19233,7 +19233,7 @@ __p += '`;
19233
19233
  lodash.pickBy = pickBy;
19234
19234
  lodash.property = property;
19235
19235
  lodash.propertyOf = propertyOf;
19236
- lodash.pull = pull2;
19236
+ lodash.pull = pull;
19237
19237
  lodash.pullAll = pullAll;
19238
19238
  lodash.pullAllBy = pullAllBy;
19239
19239
  lodash.pullAllWith = pullAllWith;
@@ -185051,8 +185051,8 @@ var TikTokConnectorSchema = exports_external.object({
185051
185051
  type: exports_external.literal("tiktok"),
185052
185052
  scopes: exports_external.array(exports_external.string()).default([])
185053
185053
  });
185054
- var StripeConnectorSchema = exports_external.object({
185055
- type: exports_external.literal("stripe"),
185054
+ var GoogleBigQueryConnectorSchema = exports_external.object({
185055
+ type: exports_external.literal("googlebigquery"),
185056
185056
  scopes: exports_external.array(exports_external.string()).default([])
185057
185057
  });
185058
185058
  var CustomTypeSchema = exports_external.string().min(1).regex(/^[a-z0-9_-]+$/i);
@@ -185067,13 +185067,13 @@ var ConnectorResourceSchema = exports_external.union([
185067
185067
  GoogleSheetsConnectorSchema,
185068
185068
  GoogleDocsConnectorSchema,
185069
185069
  GoogleSlidesConnectorSchema,
185070
+ GoogleBigQueryConnectorSchema,
185070
185071
  SlackConnectorSchema,
185071
185072
  NotionConnectorSchema,
185072
185073
  SalesforceConnectorSchema,
185073
185074
  HubspotConnectorSchema,
185074
185075
  LinkedInConnectorSchema,
185075
185076
  TikTokConnectorSchema,
185076
- StripeConnectorSchema,
185077
185077
  GenericConnectorSchema
185078
185078
  ]);
185079
185079
  var KnownIntegrationTypes = [
@@ -185083,13 +185083,13 @@ var KnownIntegrationTypes = [
185083
185083
  "googlesheets",
185084
185084
  "googledocs",
185085
185085
  "googleslides",
185086
+ "googlebigquery",
185086
185087
  "slack",
185087
185088
  "notion",
185088
185089
  "salesforce",
185089
185090
  "hubspot",
185090
185091
  "linkedin",
185091
- "tiktok",
185092
- "stripe"
185092
+ "tiktok"
185093
185093
  ];
185094
185094
  var IntegrationTypeSchema = exports_external.union([
185095
185095
  exports_external.enum(KnownIntegrationTypes),
@@ -185142,18 +185142,6 @@ var RemoveConnectorResponseSchema = exports_external.object({
185142
185142
  status: data.status,
185143
185143
  integrationType: data.integration_type
185144
185144
  }));
185145
- var STRIPE_CONNECTOR_TYPE = "stripe";
185146
- var InstallStripeResponseSchema = exports_external.object({
185147
- already_installed: exports_external.boolean(),
185148
- claim_url: exports_external.string().nullable()
185149
- });
185150
- var StripeStatusResponseSchema = exports_external.object({
185151
- stripe_mode: exports_external.enum(["sandbox", "live"]).nullable(),
185152
- sandbox_claim_url: exports_external.string().nullable().optional()
185153
- });
185154
- var RemoveStripeResponseSchema = exports_external.object({
185155
- success: exports_external.boolean()
185156
- });
185157
185145
 
185158
185146
  // src/core/resources/connector/api.ts
185159
185147
  async function listConnectors() {
@@ -185221,54 +185209,6 @@ async function removeConnector(integrationType) {
185221
185209
  }
185222
185210
  return result.data;
185223
185211
  }
185224
- async function installStripe() {
185225
- const appClient = getAppClient();
185226
- let response;
185227
- try {
185228
- response = await appClient.post("payments/stripe/install", {
185229
- timeout: 60000
185230
- });
185231
- } catch (error48) {
185232
- throw await ApiError.fromHttpError(error48, "installing Stripe");
185233
- }
185234
- const result = InstallStripeResponseSchema.safeParse(await response.json());
185235
- if (!result.success) {
185236
- throw new SchemaValidationError("Invalid response from server", result.error);
185237
- }
185238
- return result.data;
185239
- }
185240
- async function getStripeStatus() {
185241
- const appClient = getAppClient();
185242
- let response;
185243
- try {
185244
- response = await appClient.get("payments/stripe/status", {
185245
- timeout: 60000
185246
- });
185247
- } catch (error48) {
185248
- throw await ApiError.fromHttpError(error48, "checking Stripe integration status");
185249
- }
185250
- const result = StripeStatusResponseSchema.safeParse(await response.json());
185251
- if (!result.success) {
185252
- throw new SchemaValidationError("Invalid response from server", result.error);
185253
- }
185254
- return result.data;
185255
- }
185256
- async function removeStripe() {
185257
- const appClient = getAppClient();
185258
- let response;
185259
- try {
185260
- response = await appClient.delete("payments/stripe", {
185261
- timeout: 60000
185262
- });
185263
- } catch (error48) {
185264
- throw await ApiError.fromHttpError(error48, "removing Stripe integration");
185265
- }
185266
- const result = RemoveStripeResponseSchema.safeParse(await response.json());
185267
- if (!result.success) {
185268
- throw new SchemaValidationError("Invalid response from server", result.error);
185269
- }
185270
- return result.data;
185271
- }
185272
185212
  // src/core/resources/connector/config.ts
185273
185213
  import { join as join4 } from "node:path";
185274
185214
  import { isDeepStrictEqual } from "node:util";
@@ -185317,7 +185257,7 @@ async function readAllConnectors(connectorsDir) {
185317
185257
  async function writeConnectors(connectorsDir, remoteConnectors) {
185318
185258
  const entries = await readConnectorFiles(connectorsDir);
185319
185259
  const typeToEntry = buildTypeToEntryMap(entries);
185320
- const newTypes = new Set(remoteConnectors.map((c) => c.type));
185260
+ const newTypes = new Set(remoteConnectors.map((c) => c.integrationType));
185321
185261
  const deleted = [];
185322
185262
  for (const [type, entry] of typeToEntry) {
185323
185263
  if (!newTypes.has(type)) {
@@ -185327,44 +185267,22 @@ async function writeConnectors(connectorsDir, remoteConnectors) {
185327
185267
  }
185328
185268
  const written = [];
185329
185269
  for (const connector of remoteConnectors) {
185330
- const existing = typeToEntry.get(connector.type);
185331
- if (existing && isDeepStrictEqual(existing.data, connector)) {
185270
+ const existing = typeToEntry.get(connector.integrationType);
185271
+ const localConnector = {
185272
+ type: connector.integrationType,
185273
+ scopes: connector.scopes
185274
+ };
185275
+ if (existing && isDeepStrictEqual(existing.data, localConnector)) {
185332
185276
  continue;
185333
185277
  }
185334
- const filePath = existing?.filePath ?? join4(connectorsDir, `${connector.type}.${CONFIG_FILE_EXTENSION}`);
185335
- await writeJsonFile(filePath, connector);
185336
- written.push(connector.type);
185278
+ const filePath = existing?.filePath ?? join4(connectorsDir, `${connector.integrationType}.${CONFIG_FILE_EXTENSION}`);
185279
+ await writeJsonFile(filePath, localConnector);
185280
+ written.push(connector.integrationType);
185337
185281
  }
185338
185282
  return { written, deleted };
185339
185283
  }
185340
- // src/core/resources/connector/pull.ts
185341
- async function pullAllConnectors() {
185342
- const [oauthResponse, stripeStatus] = await Promise.all([
185343
- listConnectors(),
185344
- getStripeStatus()
185345
- ]);
185346
- const connectors = oauthResponse.integrations.map((i) => ({
185347
- type: i.integrationType,
185348
- scopes: i.scopes
185349
- }));
185350
- if (stripeStatus.stripe_mode !== null) {
185351
- connectors.push({ type: STRIPE_CONNECTOR_TYPE, scopes: [] });
185352
- }
185353
- return connectors;
185354
- }
185355
185284
  // src/core/resources/connector/push.ts
185356
185285
  async function pushConnectors(connectors) {
185357
- const stripeConnector = connectors.find((c) => c.type === STRIPE_CONNECTOR_TYPE);
185358
- const oauthConnectors = connectors.filter((c) => c.type !== STRIPE_CONNECTOR_TYPE);
185359
- const oauthResults = await syncOAuthConnectors(oauthConnectors);
185360
- const stripeResult = await syncStripeConnector(stripeConnector);
185361
- const results = [...oauthResults];
185362
- if (stripeResult) {
185363
- results.push(stripeResult);
185364
- }
185365
- return { results };
185366
- }
185367
- async function syncOAuthConnectors(connectors) {
185368
185286
  const results = [];
185369
185287
  const upstream = await listConnectors();
185370
185288
  const localTypes = new Set(connectors.map((c) => c.type));
@@ -185397,62 +185315,7 @@ async function syncOAuthConnectors(connectors) {
185397
185315
  }
185398
185316
  }
185399
185317
  }
185400
- return results;
185401
- }
185402
- async function syncStripeConnector(localStripe) {
185403
- const remoteStatus = await fetchStripeRemoteStatus();
185404
- if (remoteStatus === "error") {
185405
- return localStripe ? stripeError("Failed to check Stripe integration status") : null;
185406
- }
185407
- const isRemoteInstalled = remoteStatus.stripe_mode !== null;
185408
- const needsInstall = localStripe && !isRemoteInstalled;
185409
- const alreadySynced = localStripe && isRemoteInstalled;
185410
- const needsRemoval = !localStripe && isRemoteInstalled;
185411
- if (needsInstall) {
185412
- return handleStripeInstall();
185413
- }
185414
- if (alreadySynced) {
185415
- return stripeSynced();
185416
- }
185417
- if (needsRemoval) {
185418
- return handleStripeRemoval();
185419
- }
185420
- return null;
185421
- }
185422
- async function fetchStripeRemoteStatus() {
185423
- try {
185424
- return await getStripeStatus();
185425
- } catch {
185426
- return "error";
185427
- }
185428
- }
185429
- async function handleStripeInstall() {
185430
- try {
185431
- const result = await installStripe();
185432
- return stripeProvisioned(result.claim_url ?? undefined);
185433
- } catch (err) {
185434
- return stripeError(err instanceof Error ? err.message : String(err));
185435
- }
185436
- }
185437
- async function handleStripeRemoval() {
185438
- try {
185439
- await removeStripe();
185440
- return stripeRemoved();
185441
- } catch (err) {
185442
- return stripeError(err instanceof Error ? err.message : String(err));
185443
- }
185444
- }
185445
- function stripeSynced() {
185446
- return { type: STRIPE_CONNECTOR_TYPE, action: "synced" };
185447
- }
185448
- function stripeProvisioned(claimUrl) {
185449
- return { type: STRIPE_CONNECTOR_TYPE, action: "provisioned", claimUrl };
185450
- }
185451
- function stripeRemoved() {
185452
- return { type: STRIPE_CONNECTOR_TYPE, action: "removed" };
185453
- }
185454
- function stripeError(error48) {
185455
- return { type: STRIPE_CONNECTOR_TYPE, action: "error", error: error48 };
185318
+ return { results };
185456
185319
  }
185457
185320
  function getConnectorSyncResult(type, response) {
185458
185321
  if (response.error === "different_user") {
@@ -185470,7 +185333,7 @@ function getConnectorSyncResult(type, response) {
185470
185333
  type,
185471
185334
  action: "needs_oauth",
185472
185335
  redirectUrl: response.redirectUrl,
185473
- connectionId: response.connectionId ?? ""
185336
+ connectionId: response.connectionId ?? undefined
185474
185337
  };
185475
185338
  }
185476
185339
  return { type, action: "synced" };
@@ -185483,6 +185346,9 @@ var connectorResource = {
185483
185346
  // src/core/resources/entity/schema.ts
185484
185347
  var FieldConditionSchema = exports_external.union([
185485
185348
  exports_external.string(),
185349
+ exports_external.number(),
185350
+ exports_external.boolean(),
185351
+ exports_external.null(),
185486
185352
  exports_external.object({
185487
185353
  $in: exports_external.unknown().optional(),
185488
185354
  $nin: exports_external.unknown().optional(),
@@ -185500,6 +185366,15 @@ var rlsConditionAllowedKeys = new Set([
185500
185366
  "user_condition",
185501
185367
  "created_by",
185502
185368
  "created_by_id",
185369
+ "id",
185370
+ "_id",
185371
+ "created_date",
185372
+ "updated_date",
185373
+ "app_id",
185374
+ "entity_name",
185375
+ "is_deleted",
185376
+ "deleted_date",
185377
+ "environment",
185503
185378
  "$or",
185504
185379
  "$and",
185505
185380
  "$nor"
@@ -185532,8 +185407,8 @@ var RefineRLSConditionSchema = RLSConditionSchema.refine((val) => Object.entries
185532
185407
  if (rlsConditionAllowedKeys.has(key)) {
185533
185408
  return true;
185534
185409
  }
185535
- if (!key.startsWith("data.")) {
185536
- return false;
185410
+ if (key.startsWith("data.")) {
185411
+ return isValidFieldCondition(value);
185537
185412
  }
185538
185413
  return isValidFieldCondition(value);
185539
185414
  }), "Keys must be known RLS keys or match data.* pattern with valid value");
@@ -185552,36 +185427,17 @@ var FieldRLSSchema = exports_external.strictObject({
185552
185427
  update: RLSRuleSchema.optional(),
185553
185428
  delete: RLSRuleSchema.optional()
185554
185429
  });
185555
- var PropertyTypeSchema = exports_external.enum([
185556
- "string",
185557
- "number",
185558
- "integer",
185559
- "boolean",
185560
- "array",
185561
- "object"
185562
- ]);
185563
- var StringFormatSchema = exports_external.enum([
185564
- "date",
185565
- "date-time",
185566
- "time",
185567
- "email",
185568
- "uri",
185569
- "hostname",
185570
- "ipv4",
185571
- "ipv6",
185572
- "uuid"
185573
- ]);
185574
- var PropertyDefinitionSchema = exports_external.object({
185575
- type: PropertyTypeSchema,
185430
+ var PropertyDefinitionSchema = exports_external.looseObject({
185431
+ type: exports_external.string(),
185576
185432
  title: exports_external.string().optional(),
185577
185433
  description: exports_external.string().optional(),
185578
185434
  minLength: exports_external.number().int().min(0).optional(),
185579
185435
  maxLength: exports_external.number().int().min(0).optional(),
185580
185436
  pattern: exports_external.string().optional(),
185581
- format: StringFormatSchema.optional(),
185437
+ format: exports_external.string().optional(),
185582
185438
  minimum: exports_external.number().optional(),
185583
185439
  maximum: exports_external.number().optional(),
185584
- enum: exports_external.array(exports_external.string()).optional(),
185440
+ enum: exports_external.array(exports_external.unknown()).optional(),
185585
185441
  enumNames: exports_external.array(exports_external.string()).optional(),
185586
185442
  default: exports_external.unknown().optional(),
185587
185443
  $ref: exports_external.string().optional(),
@@ -185594,12 +185450,12 @@ var PropertyDefinitionSchema = exports_external.object({
185594
185450
  return exports_external.record(exports_external.string(), PropertyDefinitionSchema).optional();
185595
185451
  }
185596
185452
  });
185597
- var EntitySchema = exports_external.object({
185598
- type: exports_external.literal("object"),
185599
- name: exports_external.string().regex(/^[a-zA-Z0-9]+$/, "Entity name must be alphanumeric only"),
185453
+ var EntitySchema = exports_external.looseObject({
185454
+ type: exports_external.literal("object").default("object"),
185455
+ name: exports_external.string().min(1).regex(/^[a-zA-Z0-9_-]+$/, "Entity name must contain only letters, digits, underscores, or hyphens"),
185600
185456
  title: exports_external.string().optional(),
185601
185457
  description: exports_external.string().optional(),
185602
- properties: exports_external.record(exports_external.string(), PropertyDefinitionSchema),
185458
+ properties: exports_external.record(exports_external.string(), PropertyDefinitionSchema).default({}),
185603
185459
  required: exports_external.array(exports_external.string()).optional(),
185604
185460
  rls: EntityRLSSchema.optional()
185605
185461
  });
@@ -193779,10 +193635,6 @@ function getDashboardUrl(projectId) {
193779
193635
  const id = projectId ?? getAppConfig().id;
193780
193636
  return `${getBase44ApiUrl()}/apps/${id}/editor/workspace/overview`;
193781
193637
  }
193782
- function getConnectorsUrl(projectId) {
193783
- const id = projectId ?? getAppConfig().id;
193784
- return `${getBase44ApiUrl()}/apps/${id}/editor/workspace/app-connections`;
193785
- }
193786
193638
  // src/cli/commands/agents/pull.ts
193787
193639
  async function pullAgentsAction() {
193788
193640
  const { project: project2 } = await readProjectConfig();
@@ -193887,13 +193739,13 @@ async function pullConnectorsAction() {
193887
193739
  const configDir = dirname8(project2.configPath);
193888
193740
  const connectorsDir = join10(configDir, project2.connectorsDir);
193889
193741
  const remoteConnectors = await runTask("Fetching connectors from Base44", async () => {
193890
- return await pullAllConnectors();
193742
+ return await listConnectors();
193891
193743
  }, {
193892
193744
  successMessage: "Connectors fetched successfully",
193893
193745
  errorMessage: "Failed to fetch connectors"
193894
193746
  });
193895
193747
  const { written, deleted } = await runTask("Syncing connector files", async () => {
193896
- return await writeConnectors(connectorsDir, remoteConnectors);
193748
+ return await writeConnectors(connectorsDir, remoteConnectors.integrations);
193897
193749
  }, {
193898
193750
  successMessage: "Connector files synced successfully",
193899
193751
  errorMessage: "Failed to sync connector files"
@@ -193908,7 +193760,7 @@ async function pullConnectorsAction() {
193908
193760
  M2.info("All connectors are already up to date");
193909
193761
  }
193910
193762
  return {
193911
- outroMessage: `Pulled ${remoteConnectors.length} connectors to ${connectorsDir}`
193763
+ outroMessage: `Pulled ${remoteConnectors.integrations.length} connectors to ${connectorsDir}`
193912
193764
  };
193913
193765
  }
193914
193766
  function getConnectorsPullCommand(context) {
@@ -194527,7 +194379,7 @@ var open_default = open;
194527
194379
  var POLL_INTERVAL_MS = 2000;
194528
194380
  var POLL_TIMEOUT_MS = 2 * 60 * 1000;
194529
194381
  function filterPendingOAuth(results) {
194530
- return results.filter((r2) => r2.action === "needs_oauth" && !!r2.connectionId);
194382
+ return results.filter((r2) => r2.action === "needs_oauth" && !!r2.redirectUrl && !!r2.connectionId);
194531
194383
  }
194532
194384
  async function runOAuthFlowWithSkip(connector2) {
194533
194385
  await open_default(connector2.redirectUrl);
@@ -194609,49 +194461,32 @@ Opening browser for ${connector2.type}...`);
194609
194461
  function printSummary(results, oauthOutcomes) {
194610
194462
  const synced = [];
194611
194463
  const added = [];
194612
- const provisioned = [];
194613
194464
  const removed = [];
194614
194465
  const skipped = [];
194615
194466
  const failed = [];
194616
194467
  for (const r2 of results) {
194617
- switch (r2.action) {
194618
- case "provisioned":
194619
- provisioned.push(r2);
194620
- break;
194621
- case "synced":
194622
- synced.push(r2.type);
194623
- break;
194624
- case "removed":
194625
- removed.push(r2.type);
194626
- break;
194627
- case "error":
194628
- failed.push({ type: r2.type, error: r2.error });
194629
- break;
194630
- case "needs_oauth": {
194631
- const oauthStatus = oauthOutcomes.get(r2.type);
194632
- if (oauthStatus === "ACTIVE") {
194633
- added.push(r2.type);
194634
- } else if (oauthStatus === "SKIPPED") {
194635
- skipped.push(r2.type);
194636
- } else if (oauthStatus === "PENDING") {
194637
- failed.push({ type: r2.type, error: "authorization timed out" });
194638
- } else if (oauthStatus === "FAILED") {
194639
- failed.push({ type: r2.type, error: "authorization failed" });
194640
- } else {
194641
- failed.push({ type: r2.type, error: "needs authorization" });
194642
- }
194643
- break;
194468
+ const oauthStatus = oauthOutcomes.get(r2.type);
194469
+ if (r2.action === "synced") {
194470
+ synced.push(r2.type);
194471
+ } else if (r2.action === "removed") {
194472
+ removed.push(r2.type);
194473
+ } else if (r2.action === "error") {
194474
+ failed.push({ type: r2.type, error: r2.error });
194475
+ } else if (r2.action === "needs_oauth") {
194476
+ if (oauthStatus === "ACTIVE") {
194477
+ added.push(r2.type);
194478
+ } else if (oauthStatus === "SKIPPED") {
194479
+ skipped.push(r2.type);
194480
+ } else if (oauthStatus === "PENDING") {
194481
+ failed.push({ type: r2.type, error: "authorization timed out" });
194482
+ } else if (oauthStatus === "FAILED") {
194483
+ failed.push({ type: r2.type, error: "authorization failed" });
194484
+ } else {
194485
+ failed.push({ type: r2.type, error: "needs authorization" });
194644
194486
  }
194645
194487
  }
194646
194488
  }
194647
194489
  M2.info(theme.styles.bold("Summary:"));
194648
- for (const i2 of provisioned) {
194649
- M2.success(`Provisioned: ${i2.type}`);
194650
- if (i2.claimUrl) {
194651
- M2.info(` Claim your Stripe account: ${theme.colors.links(i2.claimUrl)}`);
194652
- }
194653
- M2.info(` Connectors dashboard: ${theme.colors.links(getConnectorsUrl())}`);
194654
- }
194655
194490
  if (synced.length > 0) {
194656
194491
  M2.success(`Synced: ${synced.join(", ")}`);
194657
194492
  }
@@ -194665,7 +194500,7 @@ function printSummary(results, oauthOutcomes) {
194665
194500
  M2.warn(`Skipped: ${skipped.join(", ")}`);
194666
194501
  }
194667
194502
  for (const r2 of failed) {
194668
- M2.error(`Failed: ${r2.type} - ${r2.error}`);
194503
+ M2.error(`Failed: ${r2.type}${r2.error ? ` - ${r2.error}` : ""}`);
194669
194504
  }
194670
194505
  }
194671
194506
  async function pushConnectorsAction() {
@@ -194699,7 +194534,7 @@ function getConnectorsPushCommand(context) {
194699
194534
 
194700
194535
  // src/cli/commands/connectors/index.ts
194701
194536
  function getConnectorsCommand(context) {
194702
- return new Command("connectors").description("Manage project connectors").addCommand(getConnectorsPullCommand(context)).addCommand(getConnectorsPushCommand(context));
194537
+ return new Command("connectors").description("Manage project connectors (OAuth integrations)").addCommand(getConnectorsPullCommand(context)).addCommand(getConnectorsPushCommand(context));
194703
194538
  }
194704
194539
 
194705
194540
  // src/cli/commands/dashboard/open.ts
@@ -195015,11 +194850,15 @@ ${summaryLines.join(`
195015
194850
  successMessage: theme.colors.base44Orange("Deployment completed"),
195016
194851
  errorMessage: "Deployment failed"
195017
194852
  });
195018
- const connectorResults = result.connectorResults ?? [];
195019
- await handleOAuthConnectors(connectorResults, options);
195020
- const stripeResult = connectorResults.find((r2) => r2.action === "provisioned");
195021
- if (stripeResult) {
195022
- printStripeResult(stripeResult);
194853
+ const needsOAuth = filterPendingOAuth(result.connectorResults ?? []);
194854
+ if (needsOAuth.length > 0) {
194855
+ const oauthOutcomes = await promptOAuthFlows(needsOAuth, {
194856
+ skipPrompt: options.yes || !!process.env.CI
194857
+ });
194858
+ const allAuthorized = oauthOutcomes.size > 0 && [...oauthOutcomes.values()].every((s) => s === "ACTIVE");
194859
+ if (!allAuthorized) {
194860
+ M2.info("Some connectors still require authorization. Run 'base44 connectors push' or open the links above in your browser.");
194861
+ }
195023
194862
  }
195024
194863
  M2.message(`${theme.styles.header("Dashboard")}: ${theme.colors.links(getDashboardUrl())}`);
195025
194864
  if (result.appUrl) {
@@ -195032,25 +194871,6 @@ function getDeployCommand(context) {
195032
194871
  await runCommand(() => deployAction(options), { requireAuth: true }, context);
195033
194872
  });
195034
194873
  }
195035
- async function handleOAuthConnectors(connectorResults, options) {
195036
- const needsOAuth = filterPendingOAuth(connectorResults);
195037
- if (needsOAuth.length === 0)
195038
- return;
195039
- const oauthOutcomes = await promptOAuthFlows(needsOAuth, {
195040
- skipPrompt: options.yes || !!process.env.CI
195041
- });
195042
- const allAuthorized = oauthOutcomes.size > 0 && [...oauthOutcomes.values()].every((s) => s === "ACTIVE");
195043
- if (!allAuthorized) {
195044
- M2.info("Some connectors still require authorization. Run 'base44 connectors push' or open the links above in your browser.");
195045
- }
195046
- }
195047
- function printStripeResult(r2) {
195048
- M2.success(`Provisioned: Stripe`);
195049
- if (r2.claimUrl) {
195050
- M2.info(` Claim your Stripe account: ${theme.colors.links(r2.claimUrl)}`);
195051
- }
195052
- M2.info(` Connectors dashboard: ${theme.colors.links(getConnectorsUrl())}`);
195053
- }
195054
194874
 
195055
194875
  // src/cli/commands/project/link.ts
195056
194876
  function validateNonInteractiveFlags2(command) {
@@ -199939,4 +199759,4 @@ export {
199939
199759
  CLIExitError
199940
199760
  };
199941
199761
 
199942
- //# debugId=72EE81BD671BA57A64756E2164756E21
199762
+ //# debugId=E8152088344F478464756E2164756E21