@base44-preview/cli 0.0.30-pr.211.eb36cd7 → 0.0.30-pr.214.2479e76

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
@@ -17446,7 +17446,7 @@ var require_lodash2 = __commonJS((exports, module) => {
17446
17446
  }
17447
17447
  return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
17448
17448
  });
17449
- function join10(array2, separator) {
17449
+ function join12(array2, separator) {
17450
17450
  return array2 == null ? "" : nativeJoin.call(array2, separator);
17451
17451
  }
17452
17452
  function last(array2) {
@@ -19378,7 +19378,7 @@ __p += '`;
19378
19378
  lodash.isUndefined = isUndefined;
19379
19379
  lodash.isWeakMap = isWeakMap;
19380
19380
  lodash.isWeakSet = isWeakSet;
19381
- lodash.join = join10;
19381
+ lodash.join = join12;
19382
19382
  lodash.kebabCase = kebabCase2;
19383
19383
  lodash.last = last;
19384
19384
  lodash.lastIndexOf = lastIndexOf;
@@ -20007,7 +20007,7 @@ function cleanDoc(doc2) {
20007
20007
  return mapDoc(doc2, (currentDoc) => cleanDocFn(currentDoc));
20008
20008
  }
20009
20009
  function replaceEndOfLine(doc2, replacement = literalline) {
20010
- return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ? join10(replacement, currentDoc.split(`
20010
+ return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ? join12(replacement, currentDoc.split(`
20011
20011
  `)) : currentDoc);
20012
20012
  }
20013
20013
  function canBreakFn(doc2) {
@@ -20087,7 +20087,7 @@ function indentIfBreak(contents, options) {
20087
20087
  negate: options.negate
20088
20088
  };
20089
20089
  }
20090
- function join10(separator, docs) {
20090
+ function join12(separator, docs) {
20091
20091
  assertDoc(separator);
20092
20092
  assertDocArray(docs);
20093
20093
  const parts = [];
@@ -20798,7 +20798,7 @@ var init_doc = __esm(() => {
20798
20798
  MODE_FLAT = Symbol("MODE_FLAT");
20799
20799
  DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
20800
20800
  builders = {
20801
- join: join10,
20801
+ join: join12,
20802
20802
  line,
20803
20803
  softline,
20804
20804
  hardline,
@@ -125712,7 +125712,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
125712
125712
  return mapDoc2(doc2, (currentDoc) => cleanDocFn2(currentDoc));
125713
125713
  }
125714
125714
  function replaceEndOfLine2(doc2, replacement = literalline2) {
125715
- return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ? join12(replacement, currentDoc.split(`
125715
+ return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ? join14(replacement, currentDoc.split(`
125716
125716
  `)) : currentDoc);
125717
125717
  }
125718
125718
  function canBreakFn2(doc2) {
@@ -125798,7 +125798,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
125798
125798
  negate: options8.negate
125799
125799
  };
125800
125800
  }
125801
- function join12(separator, docs) {
125801
+ function join14(separator, docs) {
125802
125802
  assertDoc2(separator);
125803
125803
  assertDocArray2(docs);
125804
125804
  const parts = [];
@@ -126463,7 +126463,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
126463
126463
  }
126464
126464
  }
126465
126465
  var builders2 = {
126466
- join: join12,
126466
+ join: join14,
126467
126467
  line: line3,
126468
126468
  softline: softline2,
126469
126469
  hardline: hardline4,
@@ -137148,7 +137148,7 @@ var {
137148
137148
  } = import__.default;
137149
137149
 
137150
137150
  // src/cli/commands/agents/pull.ts
137151
- import { dirname as dirname7, join as join8 } from "node:path";
137151
+ import { dirname as dirname7, join as join9 } from "node:path";
137152
137152
 
137153
137153
  // node_modules/@clack/core/dist/index.mjs
137154
137154
  var import_sisteransi = __toESM(require_src(), 1);
@@ -153650,7 +153650,7 @@ var generateGlobTasks = normalizeArguments(generateTasks);
153650
153650
  var generateGlobTasksSync = normalizeArgumentsSync(generateTasksSync);
153651
153651
 
153652
153652
  // src/core/project/config.ts
153653
- import { dirname as dirname4, join as join4 } from "node:path";
153653
+ import { dirname as dirname4, join as join5 } from "node:path";
153654
153654
 
153655
153655
  // src/core/resources/agent/schema.ts
153656
153656
  var EntityOperationSchema = exports_external.enum(["create", "update", "delete", "read"]);
@@ -153911,6 +153911,9 @@ async function listConnectors() {
153911
153911
  }
153912
153912
  return result.data;
153913
153913
  }
153914
+ async function fetchConnectors() {
153915
+ return await listConnectors();
153916
+ }
153914
153917
  async function setConnector(integrationType, scopes) {
153915
153918
  const appClient = getAppClient();
153916
153919
  let response;
@@ -153963,6 +153966,7 @@ async function removeConnector(integrationType) {
153963
153966
  return result.data;
153964
153967
  }
153965
153968
  // src/core/resources/connector/config.ts
153969
+ import { join as join3 } from "node:path";
153966
153970
  async function readConnectorFile(connectorPath) {
153967
153971
  const parsed = await readJsonFile(connectorPath);
153968
153972
  const result = ConnectorResourceSchema.safeParse(parsed);
@@ -153995,6 +153999,31 @@ async function readAllConnectors(connectorsDir) {
153995
153999
  }
153996
154000
  return connectors;
153997
154001
  }
154002
+ async function writeConnectors(connectorsDir, remoteConnectors) {
154003
+ const existingConnectors = await readAllConnectors(connectorsDir);
154004
+ const newTypes = new Set(remoteConnectors.map((c) => c.integration_type));
154005
+ const toDelete = existingConnectors.filter((c) => !newTypes.has(c.type));
154006
+ for (const connector of toDelete) {
154007
+ const files = await globby(`${connector.type}.${CONFIG_FILE_EXTENSION_GLOB}`, {
154008
+ cwd: connectorsDir,
154009
+ absolute: true
154010
+ });
154011
+ for (const filePath of files) {
154012
+ await deleteFile(filePath);
154013
+ }
154014
+ }
154015
+ for (const connector of remoteConnectors) {
154016
+ const filePath = join3(connectorsDir, `${connector.integration_type}.${CONFIG_FILE_EXTENSION}`);
154017
+ const localConnector = {
154018
+ type: connector.integration_type,
154019
+ scopes: connector.scopes
154020
+ };
154021
+ await writeJsonFile(filePath, localConnector);
154022
+ }
154023
+ const written = remoteConnectors.map((c) => c.integration_type);
154024
+ const deleted = toDelete.map((c) => c.type);
154025
+ return { written, deleted };
154026
+ }
153998
154027
  // node_modules/open/index.js
153999
154028
  import process11 from "node:process";
154000
154029
  import path4 from "node:path";
@@ -155059,7 +155088,7 @@ async function deployFunctions(functions) {
155059
155088
  return result.data;
155060
155089
  }
155061
155090
  // src/core/resources/function/config.ts
155062
- import { dirname as dirname3, join as join3 } from "node:path";
155091
+ import { dirname as dirname3, join as join4 } from "node:path";
155063
155092
  async function readFunctionConfig(configPath) {
155064
155093
  const parsed = await readJsonFile(configPath);
155065
155094
  const result = FunctionConfigSchema.safeParse(parsed);
@@ -155071,7 +155100,7 @@ async function readFunctionConfig(configPath) {
155071
155100
  async function readFunction(configPath) {
155072
155101
  const config5 = await readFunctionConfig(configPath);
155073
155102
  const functionDir = dirname3(configPath);
155074
- const entryPath = join3(functionDir, config5.entry);
155103
+ const entryPath = join4(functionDir, config5.entry);
155075
155104
  if (!await pathExists(entryPath)) {
155076
155105
  throw new FileNotFoundError(`Function entry file not found: ${entryPath} (referenced in ${configPath})`);
155077
155106
  }
@@ -155160,10 +155189,10 @@ async function readProjectConfig(projectRoot) {
155160
155189
  const project = result.data;
155161
155190
  const configDir = dirname4(configPath);
155162
155191
  const [entities, functions, agents, connectors] = await Promise.all([
155163
- entityResource.readAll(join4(configDir, project.entitiesDir)),
155164
- functionResource.readAll(join4(configDir, project.functionsDir)),
155165
- agentResource.readAll(join4(configDir, project.agentsDir)),
155166
- connectorResource.readAll(join4(configDir, project.connectorsDir))
155192
+ entityResource.readAll(join5(configDir, project.entitiesDir)),
155193
+ functionResource.readAll(join5(configDir, project.functionsDir)),
155194
+ agentResource.readAll(join5(configDir, project.agentsDir)),
155195
+ connectorResource.readAll(join5(configDir, project.connectorsDir))
155167
155196
  ]);
155168
155197
  return {
155169
155198
  project: { ...project, root, configPath },
@@ -155260,7 +155289,7 @@ async function readAppConfig(projectRoot) {
155260
155289
  // src/core/project/template.ts
155261
155290
  var import_ejs = __toESM(require_ejs(), 1);
155262
155291
  var import_front_matter = __toESM(require_front_matter(), 1);
155263
- import { dirname as dirname5, join as join5 } from "node:path";
155292
+ import { dirname as dirname5, join as join6 } from "node:path";
155264
155293
  async function listTemplates() {
155265
155294
  const parsed = await readJsonFile(getTemplatesIndexPath());
155266
155295
  const result = TemplatesConfigSchema.safeParse(parsed);
@@ -155270,23 +155299,23 @@ async function listTemplates() {
155270
155299
  return result.data.templates;
155271
155300
  }
155272
155301
  async function renderTemplate(template, destPath, data) {
155273
- const templateDir = join5(getTemplatesDir(), template.path);
155302
+ const templateDir = join6(getTemplatesDir(), template.path);
155274
155303
  const files = await globby("**/*", {
155275
155304
  cwd: templateDir,
155276
155305
  dot: true,
155277
155306
  onlyFiles: true
155278
155307
  });
155279
155308
  for (const file2 of files) {
155280
- const srcPath = join5(templateDir, file2);
155309
+ const srcPath = join6(templateDir, file2);
155281
155310
  try {
155282
155311
  if (file2.endsWith(".ejs")) {
155283
155312
  const rendered = await import_ejs.default.renderFile(srcPath, data);
155284
155313
  const { attributes, body } = import_front_matter.default(rendered);
155285
- const destFile = attributes.outputFileName ? join5(dirname5(file2), attributes.outputFileName) : file2.replace(/\.ejs$/, "");
155286
- const destFilePath = join5(destPath, destFile);
155314
+ const destFile = attributes.outputFileName ? join6(dirname5(file2), attributes.outputFileName) : file2.replace(/\.ejs$/, "");
155315
+ const destFilePath = join6(destPath, destFile);
155287
155316
  await writeFile(destFilePath, body);
155288
155317
  } else {
155289
- const destFilePath = join5(destPath, file2);
155318
+ const destFilePath = join6(destPath, file2);
155290
155319
  await copyFile(srcPath, destFilePath);
155291
155320
  }
155292
155321
  } catch (error48) {
@@ -155376,7 +155405,7 @@ async function getSiteFilePaths(outputDir) {
155376
155405
  // src/core/site/deploy.ts
155377
155406
  import { randomUUID } from "node:crypto";
155378
155407
  import { tmpdir } from "node:os";
155379
- import { join as join7 } from "node:path";
155408
+ import { join as join8 } from "node:path";
155380
155409
 
155381
155410
  // node_modules/@isaacs/fs-minipass/dist/esm/index.js
155382
155411
  import EE from "events";
@@ -161141,7 +161170,7 @@ var mkdirSync = (dir, opt) => {
161141
161170
  };
161142
161171
 
161143
161172
  // node_modules/tar/dist/esm/path-reservations.js
161144
- import { join as join6 } from "node:path";
161173
+ import { join as join7 } from "node:path";
161145
161174
 
161146
161175
  // node_modules/tar/dist/esm/normalize-unicode.js
161147
161176
  var normalizeCache = Object.create(null);
@@ -161174,7 +161203,7 @@ var getDirs = (path10) => {
161174
161203
  const dirs = path10.split("/").slice(0, -1).reduce((set2, path11) => {
161175
161204
  const s = set2[set2.length - 1];
161176
161205
  if (s !== undefined) {
161177
- path11 = join6(s, path11);
161206
+ path11 = join7(s, path11);
161178
161207
  }
161179
161208
  set2.push(path11 || "/");
161180
161209
  return set2;
@@ -161188,7 +161217,7 @@ class PathReservations {
161188
161217
  #running = new Set;
161189
161218
  reserve(paths, fn) {
161190
161219
  paths = isWindows2 ? ["win32 parallelization disabled"] : paths.map((p2) => {
161191
- return stripTrailingSlashes(join6(normalizeUnicode(p2)));
161220
+ return stripTrailingSlashes(join7(normalizeUnicode(p2)));
161192
161221
  });
161193
161222
  const dirs = new Set(paths.map((path10) => getDirs(path10)).reduce((a, b3) => a.concat(b3)));
161194
161223
  this.#reservations.set(fn, { dirs, paths });
@@ -162223,7 +162252,7 @@ async function deploySite(siteOutputDir) {
162223
162252
  ]
162224
162253
  });
162225
162254
  }
162226
- const archivePath = join7(tmpdir(), `base44-site-${randomUUID()}.tar.gz`);
162255
+ const archivePath = join8(tmpdir(), `base44-site-${randomUUID()}.tar.gz`);
162227
162256
  try {
162228
162257
  await createArchive(siteOutputDir, archivePath);
162229
162258
  return await uploadSite(archivePath);
@@ -162240,26 +162269,24 @@ async function createArchive(pathToArchive, targetArchivePath) {
162240
162269
  }
162241
162270
  // src/core/project/deploy.ts
162242
162271
  function hasResourcesToDeploy(projectData) {
162243
- const { project, entities, functions, agents, connectors } = projectData;
162272
+ const { project, entities, functions, agents } = projectData;
162244
162273
  const hasSite = Boolean(project.site?.outputDirectory);
162245
162274
  const hasEntities = entities.length > 0;
162246
162275
  const hasFunctions = functions.length > 0;
162247
162276
  const hasAgents = agents.length > 0;
162248
- const hasConnectors = connectors.length > 0;
162249
- return hasEntities || hasFunctions || hasAgents || hasConnectors || hasSite;
162277
+ return hasEntities || hasFunctions || hasAgents || hasSite;
162250
162278
  }
162251
162279
  async function deployAll(projectData) {
162252
- const { project, entities, functions, agents, connectors } = projectData;
162280
+ const { project, entities, functions, agents } = projectData;
162253
162281
  await entityResource.push(entities);
162254
162282
  await functionResource.push(functions);
162255
162283
  await agentResource.push(agents);
162256
- const { results: connectorResults } = await pushConnectors(connectors);
162257
162284
  if (project.site?.outputDirectory) {
162258
162285
  const outputDir = resolve(project.root, project.site.outputDirectory);
162259
162286
  const { appUrl } = await deploySite(outputDir);
162260
- return { appUrl, connectorResults };
162287
+ return { appUrl };
162261
162288
  }
162262
- return { connectorResults };
162289
+ return {};
162263
162290
  }
162264
162291
  // src/core/clients/base44-client.ts
162265
162292
  var retriedRequests = new WeakSet;
@@ -169796,7 +169823,7 @@ function getDashboardUrl(projectId) {
169796
169823
  async function pullAgentsAction() {
169797
169824
  const { project: project2 } = await readProjectConfig();
169798
169825
  const configDir = dirname7(project2.configPath);
169799
- const agentsDir = join8(configDir, project2.agentsDir);
169826
+ const agentsDir = join9(configDir, project2.agentsDir);
169800
169827
  const remoteAgents = await runTask("Fetching agents from Base44", async () => {
169801
169828
  return await fetchAgents();
169802
169829
  }, {
@@ -169889,48 +169916,47 @@ function getWhoamiCommand(context) {
169889
169916
  });
169890
169917
  }
169891
169918
 
169892
- // src/cli/commands/connectors/oauth-prompt.ts
169893
- function filterPendingOAuth(results) {
169894
- return results.filter((r2) => r2.action === "needs_oauth" && !!r2.redirectUrl && !!r2.connectionId);
169895
- }
169896
- async function promptOAuthFlows(pending, options) {
169897
- const outcomes = new Map;
169898
- if (pending.length === 0) {
169899
- return outcomes;
169900
- }
169901
- M2.info("");
169902
- M2.warn(`${pending.length} connector(s) require authorization in your browser:`);
169903
- for (const connector2 of pending) {
169904
- M2.info(` ${connector2.type}: ${theme.styles.dim(connector2.redirectUrl)}`);
169905
- }
169906
- if (options?.skipPrompt) {
169907
- return outcomes;
169919
+ // src/cli/commands/connectors/pull.ts
169920
+ import { dirname as dirname8, join as join10 } from "node:path";
169921
+ async function pullConnectorsAction() {
169922
+ const { project: project2 } = await readProjectConfig();
169923
+ const configDir = dirname8(project2.configPath);
169924
+ const connectorsDir = join10(configDir, project2.connectorsDir);
169925
+ const remoteConnectors = await runTask("Fetching connectors from Base44", async () => {
169926
+ return await fetchConnectors();
169927
+ }, {
169928
+ successMessage: "Connectors fetched successfully",
169929
+ errorMessage: "Failed to fetch connectors"
169930
+ });
169931
+ if (remoteConnectors.integrations.length === 0) {
169932
+ return { outroMessage: "No connectors found on Base44" };
169908
169933
  }
169909
- const shouldAuth = await ye({
169910
- message: "Open browser to authorize now?"
169934
+ const { written, deleted } = await runTask("Writing connector files", async () => {
169935
+ return await writeConnectors(connectorsDir, remoteConnectors.integrations);
169936
+ }, {
169937
+ successMessage: "Connector files written successfully",
169938
+ errorMessage: "Failed to write connector files"
169911
169939
  });
169912
- if (pD(shouldAuth) || !shouldAuth) {
169913
- return outcomes;
169940
+ if (written.length > 0) {
169941
+ M2.success(`Written: ${written.join(", ")}`);
169914
169942
  }
169915
- for (const connector2 of pending) {
169916
- M2.info(`
169917
- Opening browser for ${connector2.type}...`);
169918
- const oauthResult = await runTask(`Waiting for ${connector2.type} authorization...`, async () => {
169919
- return await runOAuthFlow({
169920
- type: connector2.type,
169921
- redirectUrl: connector2.redirectUrl,
169922
- connectionId: connector2.connectionId
169923
- });
169924
- }, {
169925
- successMessage: `${connector2.type} authorization complete`,
169926
- errorMessage: `${connector2.type} authorization failed`
169927
- });
169928
- outcomes.set(connector2.type, oauthResult.status);
169943
+ if (deleted.length > 0) {
169944
+ M2.warn(`Deleted: ${deleted.join(", ")}`);
169929
169945
  }
169930
- return outcomes;
169946
+ return {
169947
+ outroMessage: `Pulled ${remoteConnectors.integrations.length} connectors to ${connectorsDir}`
169948
+ };
169949
+ }
169950
+ function getConnectorsPullCommand(context) {
169951
+ return new Command("pull").description("Pull connectors from Base44 to local files (replaces all local connector configs)").action(async () => {
169952
+ await runCommand(pullConnectorsAction, { requireAuth: true }, context);
169953
+ });
169931
169954
  }
169932
169955
 
169933
169956
  // src/cli/commands/connectors/push.ts
169957
+ function isPendingOAuth(r2) {
169958
+ return r2.action === "needs_oauth" && !!r2.redirectUrl && !!r2.connectionId;
169959
+ }
169934
169960
  function printSummary(results, oauthOutcomes) {
169935
169961
  const synced = [];
169936
169962
  const added = [];
@@ -169982,14 +170008,42 @@ async function pushConnectorsAction() {
169982
170008
  const { results } = await runTask("Pushing connectors to Base44", async () => {
169983
170009
  return await pushConnectors(connectors);
169984
170010
  });
169985
- const needsOAuth = filterPendingOAuth(results);
170011
+ const oauthOutcomes = new Map;
170012
+ const needsOAuth = results.filter(isPendingOAuth);
169986
170013
  let outroMessage = "Connectors pushed to Base44";
169987
- const oauthOutcomes = await promptOAuthFlows(needsOAuth, {
169988
- skipPrompt: !!process.env.CI
169989
- });
169990
- if (needsOAuth.length > 0 && oauthOutcomes.size === 0) {
170014
+ if (needsOAuth.length > 0) {
170015
+ M2.info("");
170016
+ M2.warn(`${needsOAuth.length} connector(s) require authorization in your browser:`);
170017
+ for (const connector2 of needsOAuth) {
170018
+ M2.info(` ${connector2.type}: ${theme.styles.dim(connector2.redirectUrl)}`);
170019
+ }
169991
170020
  const pending = needsOAuth.map((c3) => c3.type).join(", ");
169992
- outroMessage = process.env.CI ? `Skipped OAuth in CI. Pending: ${pending}. Run 'base44 connectors push' locally or open the links above to authorize.` : `Authorization skipped. Pending: ${pending}. Run 'base44 connectors push' or open the links above to authorize.`;
170021
+ if (process.env.CI) {
170022
+ outroMessage = `Skipped OAuth in CI. Pending: ${pending}. Run 'base44 connectors push' locally to authorize.`;
170023
+ } else {
170024
+ const shouldAuth = await ye({
170025
+ message: "Open browser to authorize now?"
170026
+ });
170027
+ if (pD(shouldAuth) || !shouldAuth) {
170028
+ outroMessage = `Authorization skipped. Pending: ${pending}. Run 'base44 connectors push' again to complete.`;
170029
+ } else {
170030
+ for (const connector2 of needsOAuth) {
170031
+ M2.info(`
170032
+ Opening browser for ${connector2.type}...`);
170033
+ const oauthResult = await runTask(`Waiting for ${connector2.type} authorization...`, async () => {
170034
+ return await runOAuthFlow({
170035
+ type: connector2.type,
170036
+ redirectUrl: connector2.redirectUrl,
170037
+ connectionId: connector2.connectionId
170038
+ });
170039
+ }, {
170040
+ successMessage: `${connector2.type} authorization complete`,
170041
+ errorMessage: `${connector2.type} authorization failed`
170042
+ });
170043
+ oauthOutcomes.set(connector2.type, oauthResult.status);
170044
+ }
170045
+ }
170046
+ }
169993
170047
  }
169994
170048
  printSummary(results, oauthOutcomes);
169995
170049
  return { outroMessage };
@@ -170002,7 +170056,7 @@ function getConnectorsPushCommand(context) {
170002
170056
 
170003
170057
  // src/cli/commands/connectors/index.ts
170004
170058
  function getConnectorsCommand(context) {
170005
- return new Command("connectors").description("Manage project connectors (OAuth integrations)").addCommand(getConnectorsPushCommand(context));
170059
+ return new Command("connectors").description("Manage project connectors (OAuth integrations)").addCommand(getConnectorsPullCommand(context)).addCommand(getConnectorsPushCommand(context));
170006
170060
  }
170007
170061
 
170008
170062
  // src/cli/commands/dashboard/open.ts
@@ -170096,7 +170150,7 @@ function getFunctionsDeployCommand(context) {
170096
170150
  }
170097
170151
 
170098
170152
  // src/cli/commands/project/create.ts
170099
- import { basename as basename3, join as join9, resolve as resolve2 } from "node:path";
170153
+ import { basename as basename3, join as join11, resolve as resolve2 } from "node:path";
170100
170154
  var import_lodash = __toESM(require_lodash(), 1);
170101
170155
  var DEFAULT_TEMPLATE_ID = "backend-only";
170102
170156
  async function getTemplateById(templateId) {
@@ -170232,7 +170286,7 @@ async function executeCreate({
170232
170286
  updateMessage("Building project...");
170233
170287
  await execa({ cwd: resolvedPath, shell: true })`${buildCommand}`;
170234
170288
  updateMessage("Deploying site...");
170235
- return await deploySite(join9(resolvedPath, outputDirectory));
170289
+ return await deploySite(join11(resolvedPath, outputDirectory));
170236
170290
  }, {
170237
170291
  successMessage: theme.colors.base44Orange("Site deployed successfully"),
170238
170292
  errorMessage: "Failed to deploy site"
@@ -170280,7 +170334,7 @@ async function deployAction(options) {
170280
170334
  outroMessage: "No resources found to deploy"
170281
170335
  };
170282
170336
  }
170283
- const { project: project2, entities, functions, agents, connectors } = projectData;
170337
+ const { project: project2, entities, functions, agents } = projectData;
170284
170338
  const summaryLines = [];
170285
170339
  if (entities.length > 0) {
170286
170340
  summaryLines.push(` - ${entities.length} ${entities.length === 1 ? "entity" : "entities"}`);
@@ -170291,9 +170345,6 @@ async function deployAction(options) {
170291
170345
  if (agents.length > 0) {
170292
170346
  summaryLines.push(` - ${agents.length} ${agents.length === 1 ? "agent" : "agents"}`);
170293
170347
  }
170294
- if (connectors.length > 0) {
170295
- summaryLines.push(` - ${connectors.length} ${connectors.length === 1 ? "connector" : "connectors"}`);
170296
- }
170297
170348
  if (project2.site?.outputDirectory) {
170298
170349
  summaryLines.push(` - Site from ${project2.site.outputDirectory}`);
170299
170350
  }
@@ -170318,16 +170369,6 @@ ${summaryLines.join(`
170318
170369
  successMessage: theme.colors.base44Orange("Deployment completed"),
170319
170370
  errorMessage: "Deployment failed"
170320
170371
  });
170321
- const needsOAuth = filterPendingOAuth(result.connectorResults ?? []);
170322
- if (needsOAuth.length > 0) {
170323
- const oauthOutcomes = await promptOAuthFlows(needsOAuth, {
170324
- skipPrompt: options.yes || !!process.env.CI
170325
- });
170326
- if (oauthOutcomes.size === 0) {
170327
- const pending = needsOAuth.map((c3) => c3.type).join(", ");
170328
- M2.info(`To authorize, run 'base44 connectors push' or open the links above in your browser.`);
170329
- }
170330
- }
170331
170372
  M2.message(`${theme.styles.header("Dashboard")}: ${theme.colors.links(getDashboardUrl())}`);
170332
170373
  if (result.appUrl) {
170333
170374
  M2.message(`${theme.styles.header("App URL")}: ${theme.colors.links(result.appUrl)}`);
@@ -170335,7 +170376,7 @@ ${summaryLines.join(`
170335
170376
  return { outroMessage: "App deployed successfully" };
170336
170377
  }
170337
170378
  function getDeployCommand(context) {
170338
- return new Command("deploy").description("Deploy all project resources (entities, functions, agents, connectors, and site)").option("-y, --yes", "Skip confirmation prompt").action(async (options) => {
170379
+ return new Command("deploy").description("Deploy all project resources (entities, functions, agents, and site)").option("-y, --yes", "Skip confirmation prompt").action(async (options) => {
170339
170380
  await runCommand(() => deployAction(options), { requireAuth: true }, context);
170340
170381
  });
170341
170382
  }
@@ -170626,10 +170667,10 @@ function toPascalCase(name2) {
170626
170667
  return name2.split(/[-_\s]+/).map((w9) => w9.charAt(0).toUpperCase() + w9.slice(1)).join("");
170627
170668
  }
170628
170669
  // src/core/types/update-project.ts
170629
- import { join as join12 } from "node:path";
170670
+ import { join as join14 } from "node:path";
170630
170671
  var TYPES_INCLUDE_PATH = `${PROJECT_SUBDIR}/${TYPES_OUTPUT_SUBDIR}/*.d.ts`;
170631
170672
  async function updateProjectConfig(projectRoot) {
170632
- const tsconfigPath = join12(projectRoot, "tsconfig.json");
170673
+ const tsconfigPath = join14(projectRoot, "tsconfig.json");
170633
170674
  if (!await pathExists(tsconfigPath)) {
170634
170675
  return false;
170635
170676
  }
@@ -170729,7 +170770,7 @@ function nanoid3(size = 21) {
170729
170770
  }
170730
170771
 
170731
170772
  // node_modules/posthog-node/dist/extensions/error-tracking/modifiers/module.node.mjs
170732
- import { dirname as dirname10, posix, sep } from "path";
170773
+ import { dirname as dirname11, posix, sep } from "path";
170733
170774
  function createModulerModifier() {
170734
170775
  const getModuleFromFileName = createGetModuleFromFilename();
170735
170776
  return async (frames) => {
@@ -170738,7 +170779,7 @@ function createModulerModifier() {
170738
170779
  return frames;
170739
170780
  };
170740
170781
  }
170741
- function createGetModuleFromFilename(basePath = process.argv[1] ? dirname10(process.argv[1]) : process.cwd(), isWindows4 = sep === "\\") {
170782
+ function createGetModuleFromFilename(basePath = process.argv[1] ? dirname11(process.argv[1]) : process.cwd(), isWindows4 = sep === "\\") {
170742
170783
  const normalizedBase = isWindows4 ? normalizeWindowsPath2(basePath) : basePath;
170743
170784
  return (filename) => {
170744
170785
  if (!filename)
@@ -174957,4 +174998,4 @@ export {
174957
174998
  CLIExitError
174958
174999
  };
174959
175000
 
174960
- //# debugId=11497327DA6C4B7264756E2164756E21
175001
+ //# debugId=32B5EDD5767F60C664756E2164756E21