@base44-preview/cli 0.0.49-pr.450.5fc8bec → 0.0.49-pr.452.76a8e22
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 +203 -275
- package/dist/cli/index.js.map +12 -16
- package/package.json +1 -1
package/dist/cli/index.js
CHANGED
|
@@ -16067,7 +16067,7 @@ var require_lodash = __commonJS((exports, module) => {
|
|
|
16067
16067
|
}
|
|
16068
16068
|
return mapped.length && mapped[0] === arrays[0] ? baseIntersection(mapped, undefined2, comparator) : [];
|
|
16069
16069
|
});
|
|
16070
|
-
function
|
|
16070
|
+
function join13(array2, separator) {
|
|
16071
16071
|
return array2 == null ? "" : nativeJoin.call(array2, separator);
|
|
16072
16072
|
}
|
|
16073
16073
|
function last(array2) {
|
|
@@ -17999,7 +17999,7 @@ __p += '`;
|
|
|
17999
17999
|
lodash.isUndefined = isUndefined;
|
|
18000
18000
|
lodash.isWeakMap = isWeakMap;
|
|
18001
18001
|
lodash.isWeakSet = isWeakSet;
|
|
18002
|
-
lodash.join =
|
|
18002
|
+
lodash.join = join13;
|
|
18003
18003
|
lodash.kebabCase = kebabCase;
|
|
18004
18004
|
lodash.last = last;
|
|
18005
18005
|
lodash.lastIndexOf = lastIndexOf;
|
|
@@ -27503,7 +27503,7 @@ function cleanDoc(doc2) {
|
|
|
27503
27503
|
return mapDoc(doc2, (currentDoc) => cleanDocFn(currentDoc));
|
|
27504
27504
|
}
|
|
27505
27505
|
function replaceEndOfLine(doc2, replacement = literalline) {
|
|
27506
|
-
return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ?
|
|
27506
|
+
return mapDoc(doc2, (currentDoc) => typeof currentDoc === "string" ? join19(replacement, currentDoc.split(`
|
|
27507
27507
|
`)) : currentDoc);
|
|
27508
27508
|
}
|
|
27509
27509
|
function canBreakFn(doc2) {
|
|
@@ -27583,7 +27583,7 @@ function indentIfBreak(contents, options) {
|
|
|
27583
27583
|
negate: options.negate
|
|
27584
27584
|
};
|
|
27585
27585
|
}
|
|
27586
|
-
function
|
|
27586
|
+
function join19(separator, docs) {
|
|
27587
27587
|
assertDoc(separator);
|
|
27588
27588
|
assertDocArray(docs);
|
|
27589
27589
|
const parts = [];
|
|
@@ -28294,7 +28294,7 @@ var init_doc = __esm(() => {
|
|
|
28294
28294
|
MODE_FLAT = Symbol("MODE_FLAT");
|
|
28295
28295
|
DOC_FILL_PRINTED_LENGTH = Symbol("DOC_FILL_PRINTED_LENGTH");
|
|
28296
28296
|
builders = {
|
|
28297
|
-
join:
|
|
28297
|
+
join: join19,
|
|
28298
28298
|
line,
|
|
28299
28299
|
softline,
|
|
28300
28300
|
hardline,
|
|
@@ -133208,7 +133208,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
133208
133208
|
return mapDoc2(doc2, (currentDoc) => cleanDocFn2(currentDoc));
|
|
133209
133209
|
}
|
|
133210
133210
|
function replaceEndOfLine2(doc2, replacement = literalline2) {
|
|
133211
|
-
return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ?
|
|
133211
|
+
return mapDoc2(doc2, (currentDoc) => typeof currentDoc === "string" ? join21(replacement, currentDoc.split(`
|
|
133212
133212
|
`)) : currentDoc);
|
|
133213
133213
|
}
|
|
133214
133214
|
function canBreakFn2(doc2) {
|
|
@@ -133294,7 +133294,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
133294
133294
|
negate: options8.negate
|
|
133295
133295
|
};
|
|
133296
133296
|
}
|
|
133297
|
-
function
|
|
133297
|
+
function join21(separator, docs) {
|
|
133298
133298
|
assertDoc2(separator);
|
|
133299
133299
|
assertDocArray2(docs);
|
|
133300
133300
|
const parts = [];
|
|
@@ -133959,7 +133959,7 @@ Expected it to be ${EXPECTED_TYPE_VALUES}.`;
|
|
|
133959
133959
|
}
|
|
133960
133960
|
}
|
|
133961
133961
|
var builders2 = {
|
|
133962
|
-
join:
|
|
133962
|
+
join: join21,
|
|
133963
133963
|
line: line3,
|
|
133964
133964
|
softline: softline2,
|
|
133965
133965
|
hardline: hardline4,
|
|
@@ -160402,7 +160402,7 @@ var require_view = __commonJS((exports, module) => {
|
|
|
160402
160402
|
var dirname14 = path18.dirname;
|
|
160403
160403
|
var basename4 = path18.basename;
|
|
160404
160404
|
var extname2 = path18.extname;
|
|
160405
|
-
var
|
|
160405
|
+
var join22 = path18.join;
|
|
160406
160406
|
var resolve6 = path18.resolve;
|
|
160407
160407
|
module.exports = View;
|
|
160408
160408
|
function View(name2, options8) {
|
|
@@ -160464,12 +160464,12 @@ var require_view = __commonJS((exports, module) => {
|
|
|
160464
160464
|
};
|
|
160465
160465
|
View.prototype.resolve = function resolve7(dir, file2) {
|
|
160466
160466
|
var ext = this.ext;
|
|
160467
|
-
var path19 =
|
|
160467
|
+
var path19 = join22(dir, file2);
|
|
160468
160468
|
var stat2 = tryStat(path19);
|
|
160469
160469
|
if (stat2 && stat2.isFile()) {
|
|
160470
160470
|
return path19;
|
|
160471
160471
|
}
|
|
160472
|
-
path19 =
|
|
160472
|
+
path19 = join22(dir, basename4(file2, ext), "index" + ext);
|
|
160473
160473
|
stat2 = tryStat(path19);
|
|
160474
160474
|
if (stat2 && stat2.isFile()) {
|
|
160475
160475
|
return path19;
|
|
@@ -164164,7 +164164,7 @@ var require_send = __commonJS((exports, module) => {
|
|
|
164164
164164
|
var Stream2 = __require("stream");
|
|
164165
164165
|
var util2 = __require("util");
|
|
164166
164166
|
var extname2 = path18.extname;
|
|
164167
|
-
var
|
|
164167
|
+
var join22 = path18.join;
|
|
164168
164168
|
var normalize = path18.normalize;
|
|
164169
164169
|
var resolve6 = path18.resolve;
|
|
164170
164170
|
var sep = path18.sep;
|
|
@@ -164336,7 +164336,7 @@ var require_send = __commonJS((exports, module) => {
|
|
|
164336
164336
|
return res;
|
|
164337
164337
|
}
|
|
164338
164338
|
parts = path19.split(sep);
|
|
164339
|
-
path19 = normalize(
|
|
164339
|
+
path19 = normalize(join22(root2, path19));
|
|
164340
164340
|
} else {
|
|
164341
164341
|
if (UP_PATH_REGEXP.test(path19)) {
|
|
164342
164342
|
debug('malicious path "%s"', path19);
|
|
@@ -164476,7 +164476,7 @@ var require_send = __commonJS((exports, module) => {
|
|
|
164476
164476
|
return self2.onStatError(err);
|
|
164477
164477
|
return self2.error(404);
|
|
164478
164478
|
}
|
|
164479
|
-
var p4 =
|
|
164479
|
+
var p4 = join22(path19, self2._index[i5]);
|
|
164480
164480
|
debug('stat "%s"', p4);
|
|
164481
164481
|
fs28.stat(p4, function(err2, stat2) {
|
|
164482
164482
|
if (err2)
|
|
@@ -214616,7 +214616,7 @@ var require_buffer_list = __commonJS((exports, module) => {
|
|
|
214616
214616
|
}
|
|
214617
214617
|
}, {
|
|
214618
214618
|
key: "join",
|
|
214619
|
-
value: function
|
|
214619
|
+
value: function join22(s5) {
|
|
214620
214620
|
if (this.length === 0)
|
|
214621
214621
|
return "";
|
|
214622
214622
|
var p4 = this.head;
|
|
@@ -218270,7 +218270,7 @@ var require_dist5 = __commonJS((exports, module) => {
|
|
|
218270
218270
|
});
|
|
218271
218271
|
|
|
218272
218272
|
// src/cli/index.ts
|
|
218273
|
-
import { dirname as dirname18, join as
|
|
218273
|
+
import { dirname as dirname18, join as join25 } from "node:path";
|
|
218274
218274
|
import { fileURLToPath as fileURLToPath6 } from "node:url";
|
|
218275
218275
|
|
|
218276
218276
|
// ../../node_modules/@clack/core/dist/index.mjs
|
|
@@ -219422,7 +219422,7 @@ var {
|
|
|
219422
219422
|
} = import__.default;
|
|
219423
219423
|
|
|
219424
219424
|
// src/cli/commands/agents/pull.ts
|
|
219425
|
-
import { dirname as dirname7, join as
|
|
219425
|
+
import { dirname as dirname7, join as join13 } from "node:path";
|
|
219426
219426
|
// ../../node_modules/chalk/source/vendor/ansi-styles/index.js
|
|
219427
219427
|
var ANSI_BACKGROUND_OFFSET = 10;
|
|
219428
219428
|
var wrapAnsi16 = (offset = 0) => (code) => `\x1B[${code + offset}m`;
|
|
@@ -234683,6 +234683,21 @@ class UserError extends CLIError {
|
|
|
234683
234683
|
|
|
234684
234684
|
class SystemError extends CLIError {
|
|
234685
234685
|
}
|
|
234686
|
+
class AuthExpiredError extends UserError {
|
|
234687
|
+
code = "AUTH_EXPIRED";
|
|
234688
|
+
constructor(message = "Authentication has expired", options) {
|
|
234689
|
+
super(message, {
|
|
234690
|
+
hints: options?.hints ?? [
|
|
234691
|
+
{
|
|
234692
|
+
message: "Run 'base44 login' to re-authenticate",
|
|
234693
|
+
command: "base44 login"
|
|
234694
|
+
}
|
|
234695
|
+
],
|
|
234696
|
+
cause: options?.cause
|
|
234697
|
+
});
|
|
234698
|
+
}
|
|
234699
|
+
}
|
|
234700
|
+
|
|
234686
234701
|
class ConfigNotFoundError extends UserError {
|
|
234687
234702
|
code = "CONFIG_NOT_FOUND";
|
|
234688
234703
|
constructor(message = "No Base44 project found in this directory", options) {
|
|
@@ -242523,67 +242538,6 @@ async function readAllEntities(entitiesDir) {
|
|
|
242523
242538
|
const entities = await Promise.all(files.map((filePath) => readEntityFile(filePath)));
|
|
242524
242539
|
return entities;
|
|
242525
242540
|
}
|
|
242526
|
-
// src/core/resources/entity/data-api.ts
|
|
242527
|
-
var EntityRecordSchema = exports_external.object({
|
|
242528
|
-
id: exports_external.string(),
|
|
242529
|
-
created_date: exports_external.string()
|
|
242530
|
-
}).passthrough();
|
|
242531
|
-
var EntityRecordListSchema = exports_external.array(EntityRecordSchema);
|
|
242532
|
-
var CountResponseSchema = exports_external.object({
|
|
242533
|
-
count: exports_external.number()
|
|
242534
|
-
});
|
|
242535
|
-
async function listEntityRecords(entityName, options = {}) {
|
|
242536
|
-
const appClient = getAppClient();
|
|
242537
|
-
const searchParams = new URLSearchParams;
|
|
242538
|
-
if (options.limit !== undefined) {
|
|
242539
|
-
searchParams.set("limit", String(options.limit));
|
|
242540
|
-
}
|
|
242541
|
-
if (options.skip !== undefined) {
|
|
242542
|
-
searchParams.set("skip", String(options.skip));
|
|
242543
|
-
}
|
|
242544
|
-
if (options.sort) {
|
|
242545
|
-
searchParams.set("sort", options.sort);
|
|
242546
|
-
}
|
|
242547
|
-
let response;
|
|
242548
|
-
try {
|
|
242549
|
-
response = await appClient.get(`entities/${encodeURIComponent(entityName)}`, { searchParams, timeout: 30000 });
|
|
242550
|
-
} catch (error48) {
|
|
242551
|
-
throw await ApiError.fromHttpError(error48, `listing records for entity "${entityName}"`);
|
|
242552
|
-
}
|
|
242553
|
-
const result = EntityRecordListSchema.safeParse(await response.json());
|
|
242554
|
-
if (!result.success) {
|
|
242555
|
-
throw new SchemaValidationError("Invalid response from server", result.error);
|
|
242556
|
-
}
|
|
242557
|
-
return result.data;
|
|
242558
|
-
}
|
|
242559
|
-
async function getEntityRecord(entityName, id) {
|
|
242560
|
-
const appClient = getAppClient();
|
|
242561
|
-
let response;
|
|
242562
|
-
try {
|
|
242563
|
-
response = await appClient.get(`entities/${encodeURIComponent(entityName)}/${encodeURIComponent(id)}`, { timeout: 30000 });
|
|
242564
|
-
} catch (error48) {
|
|
242565
|
-
throw await ApiError.fromHttpError(error48, `fetching record "${id}" from entity "${entityName}"`);
|
|
242566
|
-
}
|
|
242567
|
-
const result = EntityRecordSchema.safeParse(await response.json());
|
|
242568
|
-
if (!result.success) {
|
|
242569
|
-
throw new SchemaValidationError("Invalid response from server", result.error);
|
|
242570
|
-
}
|
|
242571
|
-
return result.data;
|
|
242572
|
-
}
|
|
242573
|
-
async function countEntityRecords(entityName) {
|
|
242574
|
-
const appClient = getAppClient();
|
|
242575
|
-
let response;
|
|
242576
|
-
try {
|
|
242577
|
-
response = await appClient.get(`entities/${encodeURIComponent(entityName)}/count`, { timeout: 30000 });
|
|
242578
|
-
} catch (error48) {
|
|
242579
|
-
throw await ApiError.fromHttpError(error48, `counting records for entity "${entityName}"`);
|
|
242580
|
-
}
|
|
242581
|
-
const result = CountResponseSchema.safeParse(await response.json());
|
|
242582
|
-
if (!result.success) {
|
|
242583
|
-
throw new SchemaValidationError("Invalid response from server", result.error);
|
|
242584
|
-
}
|
|
242585
|
-
return result.data.count;
|
|
242586
|
-
}
|
|
242587
242541
|
// src/core/resources/entity/deploy.ts
|
|
242588
242542
|
async function pushEntities(entities) {
|
|
242589
242543
|
if (entities.length === 0) {
|
|
@@ -243690,12 +243644,12 @@ async function waitForAuthentication(deviceCode, expiresIn, interval) {
|
|
|
243690
243644
|
});
|
|
243691
243645
|
} catch (error48) {
|
|
243692
243646
|
if (error48 instanceof Error && error48.message.includes("timed out")) {
|
|
243693
|
-
throw new
|
|
243647
|
+
throw new AuthExpiredError("Authentication timed out. Please try again.");
|
|
243694
243648
|
}
|
|
243695
243649
|
throw error48;
|
|
243696
243650
|
}
|
|
243697
243651
|
if (tokenResponse === undefined) {
|
|
243698
|
-
throw new
|
|
243652
|
+
throw new InternalError("Failed to retrieve authentication token.");
|
|
243699
243653
|
}
|
|
243700
243654
|
return tokenResponse;
|
|
243701
243655
|
}
|
|
@@ -243738,6 +243692,9 @@ async function ensureAppConfig(ctx) {
|
|
|
243738
243692
|
ctx.errorReporter.setContext({ appId: appConfig.id });
|
|
243739
243693
|
}
|
|
243740
243694
|
|
|
243695
|
+
// src/cli/utils/skill-version-check.ts
|
|
243696
|
+
import { join as join12 } from "node:path";
|
|
243697
|
+
|
|
243741
243698
|
// ../../node_modules/is-plain-obj/index.js
|
|
243742
243699
|
function isPlainObject2(value) {
|
|
243743
243700
|
if (typeof value !== "object" || value === null) {
|
|
@@ -250234,6 +250191,87 @@ var {
|
|
|
250234
250191
|
getCancelSignal: getCancelSignal2
|
|
250235
250192
|
} = getIpcExport();
|
|
250236
250193
|
|
|
250194
|
+
// src/cli/utils/skill-version-check.ts
|
|
250195
|
+
var import_front_matter2 = __toESM(require_front_matter(), 1);
|
|
250196
|
+
var SourcePackageSchema = exports_external.object({
|
|
250197
|
+
name: exports_external.string(),
|
|
250198
|
+
version: exports_external.string()
|
|
250199
|
+
});
|
|
250200
|
+
var SkillFrontmatterSchema = exports_external.object({
|
|
250201
|
+
metadata: exports_external.object({
|
|
250202
|
+
sourcePackage: SourcePackageSchema
|
|
250203
|
+
})
|
|
250204
|
+
});
|
|
250205
|
+
var InstalledSkillSchema = exports_external.object({
|
|
250206
|
+
name: exports_external.string(),
|
|
250207
|
+
path: exports_external.string()
|
|
250208
|
+
});
|
|
250209
|
+
var InstalledSkillsSchema = exports_external.array(InstalledSkillSchema);
|
|
250210
|
+
async function listInstalledSkills(cwd) {
|
|
250211
|
+
const { stdout } = await execa("npx", ["-y", "skills", "list", "--json"], {
|
|
250212
|
+
cwd,
|
|
250213
|
+
timeout: 3000,
|
|
250214
|
+
env: { ...process.env, CI: "1" }
|
|
250215
|
+
});
|
|
250216
|
+
const jsonStart = stdout.indexOf("[");
|
|
250217
|
+
if (jsonStart === -1)
|
|
250218
|
+
return [];
|
|
250219
|
+
const parsed = JSON.parse(stdout.slice(jsonStart));
|
|
250220
|
+
return InstalledSkillsSchema.parse(parsed);
|
|
250221
|
+
}
|
|
250222
|
+
async function readSkillFrontmatter(skillPath) {
|
|
250223
|
+
try {
|
|
250224
|
+
const content = await readTextFile(join12(skillPath, "SKILL.md"));
|
|
250225
|
+
const { attributes } = import_front_matter2.default(content);
|
|
250226
|
+
const result = SkillFrontmatterSchema.safeParse(attributes);
|
|
250227
|
+
return result.success ? result.data : null;
|
|
250228
|
+
} catch {
|
|
250229
|
+
return null;
|
|
250230
|
+
}
|
|
250231
|
+
}
|
|
250232
|
+
async function checkSkillVersions(projectRoot) {
|
|
250233
|
+
const skills = await listInstalledSkills(projectRoot);
|
|
250234
|
+
const results = await Promise.all(skills.map(async (skill) => {
|
|
250235
|
+
const fm = await readSkillFrontmatter(skill.path);
|
|
250236
|
+
if (!fm)
|
|
250237
|
+
return null;
|
|
250238
|
+
if (fm.metadata.sourcePackage.name !== package_default.name)
|
|
250239
|
+
return null;
|
|
250240
|
+
if (fm.metadata.sourcePackage.version === package_default.version)
|
|
250241
|
+
return null;
|
|
250242
|
+
return {
|
|
250243
|
+
skillName: skill.name,
|
|
250244
|
+
installedVersion: fm.metadata.sourcePackage.version,
|
|
250245
|
+
currentVersion: package_default.version
|
|
250246
|
+
};
|
|
250247
|
+
}));
|
|
250248
|
+
return results.filter((r) => r !== null);
|
|
250249
|
+
}
|
|
250250
|
+
function startSkillVersionCheck(projectRoot) {
|
|
250251
|
+
return checkSkillVersions(projectRoot);
|
|
250252
|
+
}
|
|
250253
|
+
function formatSkillWarning(staleSkills) {
|
|
250254
|
+
const { shinyOrange } = theme.colors;
|
|
250255
|
+
const { bold: bold2 } = theme.styles;
|
|
250256
|
+
const lines = staleSkills.map((s) => shinyOrange(`Skill "${s.skillName}" was built for v${s.installedVersion}, current CLI is v${bold2(s.currentVersion)}`));
|
|
250257
|
+
lines.push(shinyOrange("Run: base44 agent-skills update"));
|
|
250258
|
+
return lines.join(`
|
|
250259
|
+
`);
|
|
250260
|
+
}
|
|
250261
|
+
function formatPlainSkillWarning(staleSkills) {
|
|
250262
|
+
const lines = staleSkills.map((s) => `Skill "${s.skillName}" was built for v${s.installedVersion}, current CLI is v${s.currentVersion}.`);
|
|
250263
|
+
lines.push("Run: base44 agent-skills update");
|
|
250264
|
+
return lines.join(" ");
|
|
250265
|
+
}
|
|
250266
|
+
async function printSkillVersionWarning(promise2) {
|
|
250267
|
+
try {
|
|
250268
|
+
const staleSkills = await promise2;
|
|
250269
|
+
if (staleSkills && staleSkills.length > 0) {
|
|
250270
|
+
Ve(formatSkillWarning(staleSkills));
|
|
250271
|
+
}
|
|
250272
|
+
} catch {}
|
|
250273
|
+
}
|
|
250274
|
+
|
|
250237
250275
|
// src/cli/utils/version-check.ts
|
|
250238
250276
|
async function checkForUpgrade() {
|
|
250239
250277
|
const testLatestVersion = getTestOverrides()?.latestVersion;
|
|
@@ -250320,8 +250358,11 @@ async function showCommandStart(fullBanner) {
|
|
|
250320
250358
|
We(theme.colors.base44OrangeBackground(" Base 44 "));
|
|
250321
250359
|
}
|
|
250322
250360
|
}
|
|
250323
|
-
async function showCommandEnd(result,
|
|
250324
|
-
await
|
|
250361
|
+
async function showCommandEnd(result, options) {
|
|
250362
|
+
await Promise.all([
|
|
250363
|
+
printUpgradeNotification(options.upgradeCheck, options.distribution),
|
|
250364
|
+
printSkillVersionWarning(options.skillCheck)
|
|
250365
|
+
]);
|
|
250325
250366
|
Le(result.outroMessage || "");
|
|
250326
250367
|
if (result.stdout) {
|
|
250327
250368
|
process.stdout.write(result.stdout);
|
|
@@ -250394,16 +250435,26 @@ class Base44Command extends Command {
|
|
|
250394
250435
|
await showCommandStart(this._commandOptions.fullBanner);
|
|
250395
250436
|
}
|
|
250396
250437
|
const upgradeCheckPromise = startUpgradeCheck();
|
|
250438
|
+
let skillCheckPromise = Promise.resolve(null);
|
|
250397
250439
|
try {
|
|
250398
250440
|
if (this._commandOptions.requireAuth) {
|
|
250399
250441
|
await ensureAuth(this.context);
|
|
250400
250442
|
}
|
|
250401
250443
|
if (this._commandOptions.requireAppConfig) {
|
|
250402
250444
|
await ensureAppConfig(this.context);
|
|
250445
|
+
const errorReporter = this.context.errorReporter;
|
|
250446
|
+
skillCheckPromise = startSkillVersionCheck(getAppConfig().projectRoot).catch((error48) => {
|
|
250447
|
+
errorReporter.captureException(error48 instanceof Error ? error48 : new Error(String(error48)));
|
|
250448
|
+
return null;
|
|
250449
|
+
});
|
|
250403
250450
|
}
|
|
250404
250451
|
const result = await fn(this.context, ...args) ?? {};
|
|
250405
250452
|
if (!quiet) {
|
|
250406
|
-
await showCommandEnd(result,
|
|
250453
|
+
await showCommandEnd(result, {
|
|
250454
|
+
upgradeCheck: upgradeCheckPromise,
|
|
250455
|
+
skillCheck: skillCheckPromise,
|
|
250456
|
+
distribution: this.context.distribution
|
|
250457
|
+
});
|
|
250407
250458
|
} else {
|
|
250408
250459
|
if (result.outroMessage) {
|
|
250409
250460
|
process.stdout.write(`${result.outroMessage}
|
|
@@ -250412,9 +250463,16 @@ class Base44Command extends Command {
|
|
|
250412
250463
|
if (result.stdout) {
|
|
250413
250464
|
process.stdout.write(result.stdout);
|
|
250414
250465
|
}
|
|
250415
|
-
const upgradeInfo = await
|
|
250466
|
+
const [upgradeInfo, staleSkills] = await Promise.all([
|
|
250467
|
+
upgradeCheckPromise,
|
|
250468
|
+
skillCheckPromise
|
|
250469
|
+
]);
|
|
250416
250470
|
if (upgradeInfo) {
|
|
250417
250471
|
process.stderr.write(`${formatPlainUpgradeMessage(upgradeInfo, this.context.distribution)}
|
|
250472
|
+
`);
|
|
250473
|
+
}
|
|
250474
|
+
if (staleSkills && staleSkills.length > 0) {
|
|
250475
|
+
process.stderr.write(`${formatPlainSkillWarning(staleSkills)}
|
|
250418
250476
|
`);
|
|
250419
250477
|
}
|
|
250420
250478
|
}
|
|
@@ -250614,7 +250672,7 @@ async function pullAgentsAction({
|
|
|
250614
250672
|
}) {
|
|
250615
250673
|
const { project: project2 } = await readProjectConfig();
|
|
250616
250674
|
const configDir = dirname7(project2.configPath);
|
|
250617
|
-
const agentsDir =
|
|
250675
|
+
const agentsDir = join13(configDir, project2.agentsDir);
|
|
250618
250676
|
const remoteAgents = await runTask("Fetching agents from Base44", async () => {
|
|
250619
250677
|
return await fetchAgents();
|
|
250620
250678
|
}, {
|
|
@@ -250677,7 +250735,7 @@ function getAgentsCommand() {
|
|
|
250677
250735
|
}
|
|
250678
250736
|
|
|
250679
250737
|
// src/cli/commands/auth/password-login.ts
|
|
250680
|
-
import { dirname as dirname8, join as
|
|
250738
|
+
import { dirname as dirname8, join as join14 } from "node:path";
|
|
250681
250739
|
function validateAction(action) {
|
|
250682
250740
|
if (action !== "enable" && action !== "disable") {
|
|
250683
250741
|
throw new InvalidInputError(`Invalid action "${action}". Must be "enable" or "disable".`, {
|
|
@@ -250699,7 +250757,7 @@ async function passwordLoginAction({ log }, action) {
|
|
|
250699
250757
|
const shouldEnable = action === "enable";
|
|
250700
250758
|
const { project: project2 } = await readProjectConfig();
|
|
250701
250759
|
const configDir = dirname8(project2.configPath);
|
|
250702
|
-
const authDir =
|
|
250760
|
+
const authDir = join14(configDir, project2.authDir);
|
|
250703
250761
|
const updated = await runTask("Updating local auth config", async () => {
|
|
250704
250762
|
const current = await readAuthConfig(authDir) ?? DEFAULT_AUTH_CONFIG;
|
|
250705
250763
|
const merged = { ...current, enableUsernamePassword: shouldEnable };
|
|
@@ -250719,11 +250777,11 @@ function getPasswordLoginCommand() {
|
|
|
250719
250777
|
}
|
|
250720
250778
|
|
|
250721
250779
|
// src/cli/commands/auth/pull.ts
|
|
250722
|
-
import { dirname as dirname9, join as
|
|
250780
|
+
import { dirname as dirname9, join as join15 } from "node:path";
|
|
250723
250781
|
async function pullAuthAction({ log }) {
|
|
250724
250782
|
const { project: project2 } = await readProjectConfig();
|
|
250725
250783
|
const configDir = dirname9(project2.configPath);
|
|
250726
|
-
const authDir =
|
|
250784
|
+
const authDir = join15(configDir, project2.authDir);
|
|
250727
250785
|
const remoteConfig = await runTask("Fetching auth config from Base44", async () => {
|
|
250728
250786
|
return await pullAuthConfig();
|
|
250729
250787
|
}, {
|
|
@@ -250849,13 +250907,13 @@ function getConnectorsListAvailableCommand() {
|
|
|
250849
250907
|
}
|
|
250850
250908
|
|
|
250851
250909
|
// src/cli/commands/connectors/pull.ts
|
|
250852
|
-
import { dirname as dirname10, join as
|
|
250910
|
+
import { dirname as dirname10, join as join16 } from "node:path";
|
|
250853
250911
|
async function pullConnectorsAction({
|
|
250854
250912
|
log
|
|
250855
250913
|
}) {
|
|
250856
250914
|
const { project: project2 } = await readProjectConfig();
|
|
250857
250915
|
const configDir = dirname10(project2.configPath);
|
|
250858
|
-
const connectorsDir =
|
|
250916
|
+
const connectorsDir = join16(configDir, project2.connectorsDir);
|
|
250859
250917
|
const remoteConnectors = await runTask("Fetching connectors from Base44", async () => {
|
|
250860
250918
|
return await pullAllConnectors();
|
|
250861
250919
|
}, {
|
|
@@ -251692,164 +251750,6 @@ function getDashboardCommand() {
|
|
|
251692
251750
|
return new Command("dashboard").description("Manage app dashboard").addCommand(getDashboardOpenCommand());
|
|
251693
251751
|
}
|
|
251694
251752
|
|
|
251695
|
-
// src/cli/commands/automations/status.ts
|
|
251696
|
-
function formatAutomationType(automation) {
|
|
251697
|
-
if (automation.type === "entity")
|
|
251698
|
-
return "entity";
|
|
251699
|
-
if (automation.type === "scheduled") {
|
|
251700
|
-
if (automation.schedule_mode === "one-time")
|
|
251701
|
-
return "scheduled (one-time)";
|
|
251702
|
-
if (automation.schedule_type === "cron")
|
|
251703
|
-
return "scheduled (cron)";
|
|
251704
|
-
return "scheduled (simple)";
|
|
251705
|
-
}
|
|
251706
|
-
return automation.type;
|
|
251707
|
-
}
|
|
251708
|
-
async function statusAction({
|
|
251709
|
-
log
|
|
251710
|
-
}) {
|
|
251711
|
-
const { functions } = await runTask("Fetching automations...", async () => listDeployedFunctions(), { errorMessage: "Failed to fetch automations" });
|
|
251712
|
-
let totalAutomations = 0;
|
|
251713
|
-
let functionsWithAutomations = 0;
|
|
251714
|
-
for (const fn of functions) {
|
|
251715
|
-
if (fn.automations.length === 0)
|
|
251716
|
-
continue;
|
|
251717
|
-
functionsWithAutomations++;
|
|
251718
|
-
for (const automation of fn.automations) {
|
|
251719
|
-
totalAutomations++;
|
|
251720
|
-
const active = automation.is_active;
|
|
251721
|
-
const statusLabel = active ? theme.styles.bold("active") : theme.styles.dim("disabled");
|
|
251722
|
-
const typeLabel = formatAutomationType(automation);
|
|
251723
|
-
log.message(` ${fn.name} / ${automation.name} ${theme.styles.dim(typeLabel)} ${statusLabel}`);
|
|
251724
|
-
}
|
|
251725
|
-
}
|
|
251726
|
-
if (totalAutomations === 0) {
|
|
251727
|
-
return { outroMessage: "No automations found" };
|
|
251728
|
-
}
|
|
251729
|
-
return {
|
|
251730
|
-
outroMessage: `${totalAutomations} automation${totalAutomations !== 1 ? "s" : ""} across ${functionsWithAutomations} function${functionsWithAutomations !== 1 ? "s" : ""}`
|
|
251731
|
-
};
|
|
251732
|
-
}
|
|
251733
|
-
function getAutomationsStatusCommand() {
|
|
251734
|
-
return new Base44Command("status").description("Show status of all automations").action(statusAction);
|
|
251735
|
-
}
|
|
251736
|
-
|
|
251737
|
-
// src/cli/commands/automations/index.ts
|
|
251738
|
-
function getAutomationsCommand() {
|
|
251739
|
-
return new Command("automations").description("Manage automations").addCommand(getAutomationsStatusCommand());
|
|
251740
|
-
}
|
|
251741
|
-
|
|
251742
|
-
// src/cli/commands/entities/count.ts
|
|
251743
|
-
async function countAction(_ctx, entityName) {
|
|
251744
|
-
const count2 = await runTask(`Counting ${entityName} records...`, async () => countEntityRecords(entityName), { errorMessage: `Failed to count ${entityName} records` });
|
|
251745
|
-
return {
|
|
251746
|
-
outroMessage: `${entityName} has ${count2} record${count2 !== 1 ? "s" : ""}`
|
|
251747
|
-
};
|
|
251748
|
-
}
|
|
251749
|
-
function getEntitiesCountCommand() {
|
|
251750
|
-
return new Base44Command("count").description("Count total records for an entity").argument("<entityName>", "Name of the entity").action(countAction);
|
|
251751
|
-
}
|
|
251752
|
-
|
|
251753
|
-
// src/cli/commands/entities/get.ts
|
|
251754
|
-
async function getAction(_ctx, entityName, id) {
|
|
251755
|
-
const record2 = await runTask(`Fetching ${entityName} record...`, async () => getEntityRecord(entityName, id), { errorMessage: `Failed to fetch ${entityName} record "${id}"` });
|
|
251756
|
-
const formatted = JSON.stringify(record2, null, 2);
|
|
251757
|
-
return {
|
|
251758
|
-
outroMessage: `Fetched ${entityName} record ${id}`,
|
|
251759
|
-
stdout: `${formatted}
|
|
251760
|
-
`
|
|
251761
|
-
};
|
|
251762
|
-
}
|
|
251763
|
-
function getEntitiesGetCommand() {
|
|
251764
|
-
return new Base44Command("get").description("Get a single entity record by ID").argument("<entityName>", "Name of the entity").argument("<id>", "Record ID").action(getAction);
|
|
251765
|
-
}
|
|
251766
|
-
|
|
251767
|
-
// src/cli/commands/entities/list.ts
|
|
251768
|
-
function formatRecordRow(record2, fields) {
|
|
251769
|
-
const values = fields.map((field) => {
|
|
251770
|
-
const value = record2[field];
|
|
251771
|
-
if (value === undefined || value === null)
|
|
251772
|
-
return "-";
|
|
251773
|
-
if (typeof value === "object")
|
|
251774
|
-
return JSON.stringify(value);
|
|
251775
|
-
return String(value);
|
|
251776
|
-
});
|
|
251777
|
-
return values.join("\t");
|
|
251778
|
-
}
|
|
251779
|
-
function pickDisplayFields(records) {
|
|
251780
|
-
const systemFields = ["id", "created_date"];
|
|
251781
|
-
if (records.length === 0)
|
|
251782
|
-
return systemFields;
|
|
251783
|
-
const skipFields = new Set([
|
|
251784
|
-
"id",
|
|
251785
|
-
"created_date",
|
|
251786
|
-
"updated_date",
|
|
251787
|
-
"created_by",
|
|
251788
|
-
"created_by_id",
|
|
251789
|
-
"app_id",
|
|
251790
|
-
"entity_name",
|
|
251791
|
-
"is_deleted",
|
|
251792
|
-
"deleted_date",
|
|
251793
|
-
"environment",
|
|
251794
|
-
"_id"
|
|
251795
|
-
]);
|
|
251796
|
-
const dataFields = [];
|
|
251797
|
-
for (const key of Object.keys(records[0])) {
|
|
251798
|
-
if (!skipFields.has(key) && dataFields.length < 4) {
|
|
251799
|
-
dataFields.push(key);
|
|
251800
|
-
}
|
|
251801
|
-
}
|
|
251802
|
-
return [...systemFields, ...dataFields];
|
|
251803
|
-
}
|
|
251804
|
-
function validateLimit(limit) {
|
|
251805
|
-
if (limit === undefined)
|
|
251806
|
-
return;
|
|
251807
|
-
const n2 = Number.parseInt(limit, 10);
|
|
251808
|
-
if (Number.isNaN(n2) || n2 < 1) {
|
|
251809
|
-
throw new InvalidInputError(`Invalid limit: "${limit}". Must be a positive integer.`);
|
|
251810
|
-
}
|
|
251811
|
-
}
|
|
251812
|
-
function validateSkip(skip) {
|
|
251813
|
-
if (skip === undefined)
|
|
251814
|
-
return;
|
|
251815
|
-
const n2 = Number.parseInt(skip, 10);
|
|
251816
|
-
if (Number.isNaN(n2) || n2 < 0) {
|
|
251817
|
-
throw new InvalidInputError(`Invalid skip: "${skip}". Must be a non-negative integer.`);
|
|
251818
|
-
}
|
|
251819
|
-
}
|
|
251820
|
-
async function listAction({ log }, entityName, options) {
|
|
251821
|
-
validateLimit(options.limit);
|
|
251822
|
-
validateSkip(options.skip);
|
|
251823
|
-
const apiOptions = {};
|
|
251824
|
-
if (options.limit) {
|
|
251825
|
-
apiOptions.limit = Number.parseInt(options.limit, 10);
|
|
251826
|
-
} else {
|
|
251827
|
-
apiOptions.limit = 10;
|
|
251828
|
-
}
|
|
251829
|
-
if (options.skip) {
|
|
251830
|
-
apiOptions.skip = Number.parseInt(options.skip, 10);
|
|
251831
|
-
}
|
|
251832
|
-
if (options.sort) {
|
|
251833
|
-
apiOptions.sort = options.sort;
|
|
251834
|
-
}
|
|
251835
|
-
const records = await runTask(`Fetching ${entityName} records...`, async () => listEntityRecords(entityName, apiOptions), { errorMessage: `Failed to fetch ${entityName} records` });
|
|
251836
|
-
if (records.length === 0) {
|
|
251837
|
-
return { outroMessage: `No records found for ${entityName}` };
|
|
251838
|
-
}
|
|
251839
|
-
const fields = pickDisplayFields(records);
|
|
251840
|
-
const header2 = fields.join("\t");
|
|
251841
|
-
log.message(theme.styles.dim(header2));
|
|
251842
|
-
for (const record2 of records) {
|
|
251843
|
-
log.message(` ${formatRecordRow(record2, fields)}`);
|
|
251844
|
-
}
|
|
251845
|
-
return {
|
|
251846
|
-
outroMessage: `Showing ${records.length} ${entityName} record${records.length !== 1 ? "s" : ""}`
|
|
251847
|
-
};
|
|
251848
|
-
}
|
|
251849
|
-
function getEntitiesListCommand() {
|
|
251850
|
-
return new Base44Command("list").description("List entity records").argument("<entityName>", "Name of the entity").option("-n, --limit <n>", "Maximum number of records to return (default: 10)").option("--sort <field>", "Field to sort by").option("--skip <n>", "Number of records to skip").action(listAction);
|
|
251851
|
-
}
|
|
251852
|
-
|
|
251853
251753
|
// src/cli/commands/entities/push.ts
|
|
251854
251754
|
async function pushEntitiesAction({
|
|
251855
251755
|
log
|
|
@@ -251878,12 +251778,7 @@ async function pushEntitiesAction({
|
|
|
251878
251778
|
return { outroMessage: "Entities pushed to Base44" };
|
|
251879
251779
|
}
|
|
251880
251780
|
function getEntitiesPushCommand() {
|
|
251881
|
-
return new Base44Command("push").description("Push local entities to Base44").action(pushEntitiesAction);
|
|
251882
|
-
}
|
|
251883
|
-
|
|
251884
|
-
// src/cli/commands/entities/index.ts
|
|
251885
|
-
function getEntitiesCommand() {
|
|
251886
|
-
return new Command("entities").description("Manage project entities").addCommand(getEntitiesPushCommand()).addCommand(getEntitiesListCommand()).addCommand(getEntitiesGetCommand()).addCommand(getEntitiesCountCommand());
|
|
251781
|
+
return new Command("entities").description("Manage project entities").addCommand(new Base44Command("push").description("Push local entities to Base44").action(pushEntitiesAction));
|
|
251887
251782
|
}
|
|
251888
251783
|
|
|
251889
251784
|
// src/cli/commands/functions/delete.ts
|
|
@@ -252070,11 +251965,11 @@ function getListCommand() {
|
|
|
252070
251965
|
}
|
|
252071
251966
|
|
|
252072
251967
|
// src/cli/commands/functions/pull.ts
|
|
252073
|
-
import { dirname as dirname11, join as
|
|
251968
|
+
import { dirname as dirname11, join as join17 } from "node:path";
|
|
252074
251969
|
async function pullFunctionsAction({ log }, name2) {
|
|
252075
251970
|
const { project: project2 } = await readProjectConfig();
|
|
252076
251971
|
const configDir = dirname11(project2.configPath);
|
|
252077
|
-
const functionsDir =
|
|
251972
|
+
const functionsDir = join17(configDir, project2.functionsDir);
|
|
252078
251973
|
const remoteFunctions = await runTask("Fetching functions from Base44", async () => {
|
|
252079
251974
|
const { functions } = await listDeployedFunctions();
|
|
252080
251975
|
return functions;
|
|
@@ -252117,8 +252012,39 @@ function getFunctionsCommand() {
|
|
|
252117
252012
|
}
|
|
252118
252013
|
|
|
252119
252014
|
// src/cli/commands/project/create.ts
|
|
252120
|
-
import { basename as basename3, join as
|
|
252015
|
+
import { basename as basename3, join as join18, resolve as resolve2 } from "node:path";
|
|
252121
252016
|
var import_kebabCase = __toESM(require_kebabCase(), 1);
|
|
252017
|
+
|
|
252018
|
+
// src/cli/commands/skills/update.ts
|
|
252019
|
+
var SKILLS_REPO = "base44/skills";
|
|
252020
|
+
async function installAllSkills(cwd) {
|
|
252021
|
+
await execa("npx", ["-y", "skills", "add", SKILLS_REPO, "--all", "-y"], {
|
|
252022
|
+
cwd
|
|
252023
|
+
});
|
|
252024
|
+
}
|
|
252025
|
+
async function updateAction(_ctx) {
|
|
252026
|
+
const projectRoot = await findProjectRoot();
|
|
252027
|
+
if (!projectRoot) {
|
|
252028
|
+
return {
|
|
252029
|
+
outroMessage: "Not in a Base44 project. Run this command from a project directory."
|
|
252030
|
+
};
|
|
252031
|
+
}
|
|
252032
|
+
await runTask("Updating agent skills...", async () => {
|
|
252033
|
+
await installAllSkills(projectRoot.root);
|
|
252034
|
+
}, {
|
|
252035
|
+
successMessage: theme.colors.base44Orange("Agent skills updated successfully"),
|
|
252036
|
+
errorMessage: "Failed to update agent skills"
|
|
252037
|
+
});
|
|
252038
|
+
return { outroMessage: "Agent skills are up to date" };
|
|
252039
|
+
}
|
|
252040
|
+
function getSkillsUpdateCommand() {
|
|
252041
|
+
return new Base44Command("update", {
|
|
252042
|
+
requireAuth: false,
|
|
252043
|
+
requireAppConfig: false
|
|
252044
|
+
}).description("Update locally installed agent skills to the latest version").action(updateAction);
|
|
252045
|
+
}
|
|
252046
|
+
|
|
252047
|
+
// src/cli/commands/project/create.ts
|
|
252122
252048
|
var DEFAULT_TEMPLATE_ID = "backend-only";
|
|
252123
252049
|
async function getTemplateById(templateId) {
|
|
252124
252050
|
const templates = await listTemplates();
|
|
@@ -252254,7 +252180,7 @@ async function executeCreate({
|
|
|
252254
252180
|
updateMessage("Building project...");
|
|
252255
252181
|
await execa({ cwd: resolvedPath, shell: true })`${buildCommand}`;
|
|
252256
252182
|
updateMessage("Deploying site...");
|
|
252257
|
-
return await deploySite(
|
|
252183
|
+
return await deploySite(join18(resolvedPath, outputDirectory));
|
|
252258
252184
|
}, {
|
|
252259
252185
|
successMessage: theme.colors.base44Orange("Site deployed successfully"),
|
|
252260
252186
|
errorMessage: "Failed to deploy site"
|
|
@@ -252266,13 +252192,10 @@ async function executeCreate({
|
|
|
252266
252192
|
if (shouldAddSkills) {
|
|
252267
252193
|
try {
|
|
252268
252194
|
await runTask("Installing AI agent skills...", async () => {
|
|
252269
|
-
await
|
|
252270
|
-
cwd: resolvedPath,
|
|
252271
|
-
shell: true
|
|
252272
|
-
});
|
|
252195
|
+
await installAllSkills(resolvedPath);
|
|
252273
252196
|
}, {
|
|
252274
252197
|
successMessage: theme.colors.base44Orange("AI agent skills added successfully"),
|
|
252275
|
-
errorMessage: "Failed to add
|
|
252198
|
+
errorMessage: "Failed to add agent skills - you can add them later with: base44 agent-skills update"
|
|
252276
252199
|
});
|
|
252277
252200
|
} catch {}
|
|
252278
252201
|
}
|
|
@@ -252646,7 +252569,7 @@ async function getAllFunctionNames() {
|
|
|
252646
252569
|
const { functions } = await readProjectConfig();
|
|
252647
252570
|
return functions.map((fn) => fn.name);
|
|
252648
252571
|
}
|
|
252649
|
-
function
|
|
252572
|
+
function validateLimit(limit) {
|
|
252650
252573
|
if (limit === undefined)
|
|
252651
252574
|
return;
|
|
252652
252575
|
const n2 = Number.parseInt(limit, 10);
|
|
@@ -252655,7 +252578,7 @@ function validateLimit2(limit) {
|
|
|
252655
252578
|
}
|
|
252656
252579
|
}
|
|
252657
252580
|
async function logsAction(_ctx, options) {
|
|
252658
|
-
|
|
252581
|
+
validateLimit(options.limit);
|
|
252659
252582
|
const specifiedFunctions = parseFunctionNames(options.function);
|
|
252660
252583
|
const allProjectFunctions = await getAllFunctionNames();
|
|
252661
252584
|
const functionNames = specifiedFunctions.length > 0 ? specifiedFunctions : allProjectFunctions;
|
|
@@ -252832,6 +252755,11 @@ function getSiteCommand() {
|
|
|
252832
252755
|
return new Command("site").description("Manage app site (frontend app)").addCommand(getSiteDeployCommand()).addCommand(getSiteOpenCommand());
|
|
252833
252756
|
}
|
|
252834
252757
|
|
|
252758
|
+
// src/cli/commands/skills/index.ts
|
|
252759
|
+
function getAgentSkillsCommand() {
|
|
252760
|
+
return new Command("agent-skills").description("Manage locally installed agent skills").addCommand(getSkillsUpdateCommand());
|
|
252761
|
+
}
|
|
252762
|
+
|
|
252835
252763
|
// src/core/types/generator.ts
|
|
252836
252764
|
var import_common_tags = __toESM(require_lib2(), 1);
|
|
252837
252765
|
var import_json_schema_to_typescript = __toESM(require_src3(), 1);
|
|
@@ -252918,10 +252846,10 @@ function toPascalCase(name2) {
|
|
|
252918
252846
|
return name2.split(/[-_\s]+/).map((w8) => w8.charAt(0).toUpperCase() + w8.slice(1)).join("");
|
|
252919
252847
|
}
|
|
252920
252848
|
// src/core/types/update-project.ts
|
|
252921
|
-
import { join as
|
|
252849
|
+
import { join as join21 } from "node:path";
|
|
252922
252850
|
var TYPES_INCLUDE_PATH = `${PROJECT_SUBDIR}/${TYPES_OUTPUT_SUBDIR}/*.d.ts`;
|
|
252923
252851
|
async function updateProjectConfig(projectRoot) {
|
|
252924
|
-
const tsconfigPath =
|
|
252852
|
+
const tsconfigPath = join21(projectRoot, "tsconfig.json");
|
|
252925
252853
|
if (!await pathExists(tsconfigPath)) {
|
|
252926
252854
|
return false;
|
|
252927
252855
|
}
|
|
@@ -252964,7 +252892,7 @@ function getTypesCommand() {
|
|
|
252964
252892
|
// src/cli/dev/dev-server/main.ts
|
|
252965
252893
|
var import_cors = __toESM(require_lib4(), 1);
|
|
252966
252894
|
var import_express5 = __toESM(require_express(), 1);
|
|
252967
|
-
import { dirname as dirname16, join as
|
|
252895
|
+
import { dirname as dirname16, join as join24 } from "node:path";
|
|
252968
252896
|
|
|
252969
252897
|
// ../../node_modules/get-port/index.js
|
|
252970
252898
|
import net from "node:net";
|
|
@@ -255827,8 +255755,8 @@ async function createDevServer(options8) {
|
|
|
255827
255755
|
broadcastEntityEvent(io6, appId, entityName, event);
|
|
255828
255756
|
};
|
|
255829
255757
|
const base44ConfigWatcher = new WatchBase44({
|
|
255830
|
-
functions:
|
|
255831
|
-
entities:
|
|
255758
|
+
functions: join24(dirname16(project2.configPath), project2.functionsDir),
|
|
255759
|
+
entities: join24(dirname16(project2.configPath), project2.entitiesDir)
|
|
255832
255760
|
}, devLogger);
|
|
255833
255761
|
base44ConfigWatcher.on("change", async (name2) => {
|
|
255834
255762
|
try {
|
|
@@ -256097,15 +256025,15 @@ function createProgram(context) {
|
|
|
256097
256025
|
program2.addCommand(getDeployCommand2());
|
|
256098
256026
|
program2.addCommand(getLinkCommand());
|
|
256099
256027
|
program2.addCommand(getEjectCommand());
|
|
256100
|
-
program2.addCommand(
|
|
256028
|
+
program2.addCommand(getEntitiesPushCommand());
|
|
256101
256029
|
program2.addCommand(getAgentsCommand());
|
|
256102
256030
|
program2.addCommand(getConnectorsCommand());
|
|
256103
256031
|
program2.addCommand(getFunctionsCommand());
|
|
256104
256032
|
program2.addCommand(getSecretsCommand());
|
|
256033
|
+
program2.addCommand(getAgentSkillsCommand());
|
|
256105
256034
|
program2.addCommand(getAuthCommand());
|
|
256106
256035
|
program2.addCommand(getSiteCommand());
|
|
256107
256036
|
program2.addCommand(getTypesCommand());
|
|
256108
|
-
program2.addCommand(getAutomationsCommand());
|
|
256109
256037
|
program2.addCommand(getExecCommand());
|
|
256110
256038
|
program2.addCommand(getDevCommand(), { hidden: true });
|
|
256111
256039
|
program2.addCommand(getLogsCommand());
|
|
@@ -260317,7 +260245,7 @@ function addCommandInfoToErrorReporter(program2, errorReporter) {
|
|
|
260317
260245
|
// src/cli/index.ts
|
|
260318
260246
|
var __dirname4 = dirname18(fileURLToPath6(import.meta.url));
|
|
260319
260247
|
async function runCLI(options8) {
|
|
260320
|
-
ensureNpmAssets(
|
|
260248
|
+
ensureNpmAssets(join25(__dirname4, "../assets"));
|
|
260321
260249
|
const errorReporter = new ErrorReporter;
|
|
260322
260250
|
errorReporter.registerProcessErrorHandlers();
|
|
260323
260251
|
const isNonInteractive = !process.stdin.isTTY || !process.stdout.isTTY;
|
|
@@ -260352,4 +260280,4 @@ export {
|
|
|
260352
260280
|
CLIExitError
|
|
260353
260281
|
};
|
|
260354
260282
|
|
|
260355
|
-
//# debugId=
|
|
260283
|
+
//# debugId=CBDDB58DC64FA23E64756E2164756E21
|