@elevasis/sdk 0.9.7 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +228 -199
- package/dist/index.d.ts +14 -5
- package/dist/index.js +5 -3
- package/package.json +3 -3
package/dist/cli.cjs
CHANGED
|
@@ -40455,7 +40455,7 @@ var RegistryValidationError = class extends Error {
|
|
|
40455
40455
|
this.name = "RegistryValidationError";
|
|
40456
40456
|
}
|
|
40457
40457
|
};
|
|
40458
|
-
function
|
|
40458
|
+
function validateDeploymentSpec(orgName, resources) {
|
|
40459
40459
|
const seenIds = /* @__PURE__ */ new Set();
|
|
40460
40460
|
resources.workflows?.forEach((workflow) => {
|
|
40461
40461
|
const id = workflow.config.resourceId;
|
|
@@ -40587,7 +40587,8 @@ function isZodOptional(schema) {
|
|
|
40587
40587
|
return schema.isOptional();
|
|
40588
40588
|
}
|
|
40589
40589
|
function validateRelationships(orgName, resources) {
|
|
40590
|
-
if (!resources.relationships && !resources.triggers && !resources.externalResources && !resources.humanCheckpoints)
|
|
40590
|
+
if (!resources.relationships && !resources.triggers && !resources.externalResources && !resources.humanCheckpoints)
|
|
40591
|
+
return;
|
|
40591
40592
|
const validAgentIds = new Set(resources.agents?.map((a) => a.config.resourceId) ?? []);
|
|
40592
40593
|
const validWorkflowIds = new Set(resources.workflows?.map((w) => w.config.resourceId) ?? []);
|
|
40593
40594
|
const validIntegrationIds = new Set(resources.integrations?.map((i) => i.resourceId) ?? []);
|
|
@@ -43100,6 +43101,7 @@ function serializeOrganization(resources) {
|
|
|
43100
43101
|
const humanCheckpoints = resources.humanCheckpoints ?? [];
|
|
43101
43102
|
const domainDefinitions = deriveDomainDefinitions(resources);
|
|
43102
43103
|
return {
|
|
43104
|
+
version: resources.version,
|
|
43103
43105
|
resources: {
|
|
43104
43106
|
workflows: workflowResources,
|
|
43105
43107
|
agents: agentResources,
|
|
@@ -43258,7 +43260,7 @@ var ResourceRegistry = class {
|
|
|
43258
43260
|
*/
|
|
43259
43261
|
validateRegistry() {
|
|
43260
43262
|
for (const [orgName, resources] of Object.entries(this.registry)) {
|
|
43261
|
-
|
|
43263
|
+
validateDeploymentSpec(orgName, resources);
|
|
43262
43264
|
}
|
|
43263
43265
|
}
|
|
43264
43266
|
/**
|
|
@@ -43891,7 +43893,7 @@ function wrapAction(commandName, fn) {
|
|
|
43891
43893
|
// package.json
|
|
43892
43894
|
var package_default = {
|
|
43893
43895
|
name: "@elevasis/sdk",
|
|
43894
|
-
version: "0.
|
|
43896
|
+
version: "1.0.1",
|
|
43895
43897
|
description: "SDK for building Elevasis organization resources",
|
|
43896
43898
|
type: "module",
|
|
43897
43899
|
bin: {
|
|
@@ -44008,6 +44010,17 @@ function extractResourceMetadata(resource, schemaWarnings) {
|
|
|
44008
44010
|
}
|
|
44009
44011
|
return meta;
|
|
44010
44012
|
}
|
|
44013
|
+
function bumpVersion(current, type) {
|
|
44014
|
+
const [major, minor, patch] = current.split(".").map(Number);
|
|
44015
|
+
switch (type) {
|
|
44016
|
+
case "major":
|
|
44017
|
+
return `${major + 1}.0.0`;
|
|
44018
|
+
case "minor":
|
|
44019
|
+
return `${major}.${minor + 1}.0`;
|
|
44020
|
+
case "patch":
|
|
44021
|
+
return `${major}.${minor}.${patch + 1}`;
|
|
44022
|
+
}
|
|
44023
|
+
}
|
|
44011
44024
|
var IGNORED_DOC_DIRS = /* @__PURE__ */ new Set([".archive"]);
|
|
44012
44025
|
async function scanDocumentation() {
|
|
44013
44026
|
const docsDir = (0, import_path.resolve)("docs");
|
|
@@ -44486,218 +44499,234 @@ async function generateNavigationMap(docs) {
|
|
|
44486
44499
|
function registerDeployCommand(program3) {
|
|
44487
44500
|
program3.command("deploy").description(
|
|
44488
44501
|
"Validate, bundle, upload, and deploy project resources\n Example: elevasis-sdk deploy --api-url http://localhost:5170"
|
|
44489
|
-
).option("--api-url <url>", "API URL").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").option("--prod", "Deploy to production (overrides NODE_ENV=development)").action(
|
|
44490
|
-
wrapAction(
|
|
44491
|
-
|
|
44492
|
-
|
|
44493
|
-
|
|
44494
|
-
|
|
44495
|
-
|
|
44496
|
-
|
|
44497
|
-
|
|
44498
|
-
|
|
44499
|
-
|
|
44500
|
-
|
|
44501
|
-
|
|
44502
|
-
|
|
44503
|
-
|
|
44504
|
-
|
|
44505
|
-
|
|
44506
|
-
|
|
44507
|
-
const
|
|
44508
|
-
|
|
44509
|
-
|
|
44510
|
-
|
|
44511
|
-
|
|
44512
|
-
|
|
44502
|
+
).option("--api-url <url>", "API URL").option("--entry <path>", "Path to entry file (default: ./src/index.ts)").option("--prod", "Deploy to production (overrides NODE_ENV=development)").option("--major", "Bump major version before deploying (1.0.0 \u2192 2.0.0)").option("--minor", "Bump minor version before deploying (1.0.0 \u2192 1.1.0)").option("--patch", "Bump patch version before deploying (1.0.0 \u2192 1.0.1)").action(
|
|
44503
|
+
wrapAction(
|
|
44504
|
+
"deploy",
|
|
44505
|
+
async (options2) => {
|
|
44506
|
+
const startTime = Date.now();
|
|
44507
|
+
const apiUrl = resolveApiUrl(options2.apiUrl, options2.prod);
|
|
44508
|
+
const env2 = resolveEnvironment(options2.prod);
|
|
44509
|
+
const entryPath = options2.entry ?? "./src/index.ts";
|
|
44510
|
+
const authSpinner = ora("Authenticating...").start();
|
|
44511
|
+
let orgName;
|
|
44512
|
+
try {
|
|
44513
|
+
const me = await apiGet("/api/external/me", apiUrl);
|
|
44514
|
+
orgName = me.organizationName;
|
|
44515
|
+
authSpinner.succeed(
|
|
44516
|
+
source_default.green("Authenticating...") + source_default.white(" done") + source_default.gray(` (${orgName})`)
|
|
44517
|
+
);
|
|
44518
|
+
} catch (error46) {
|
|
44519
|
+
authSpinner.fail(source_default.red("Authentication failed"));
|
|
44520
|
+
const errMsg = error46 instanceof Error ? error46.message : String(error46);
|
|
44521
|
+
if (errMsg.includes("401") || errMsg.toLowerCase().includes("unauthorized")) {
|
|
44522
|
+
const keyVar = !options2.prod && process.env.NODE_ENV === "development" && process.env.ELEVASIS_PLATFORM_KEY_DEV ? "ELEVASIS_PLATFORM_KEY_DEV" : "ELEVASIS_PLATFORM_KEY";
|
|
44523
|
+
console.error(source_default.red(" Invalid API key."));
|
|
44524
|
+
console.error(source_default.gray(` Your ${keyVar} was rejected by the server.`));
|
|
44525
|
+
console.error(source_default.gray(" Check your .env file and verify the key in the Elevasis dashboard."));
|
|
44526
|
+
} else {
|
|
44527
|
+
console.error(source_default.gray(" Check your API key and API URL."));
|
|
44528
|
+
}
|
|
44529
|
+
throw error46;
|
|
44513
44530
|
}
|
|
44514
|
-
|
|
44515
|
-
|
|
44516
|
-
|
|
44517
|
-
|
|
44518
|
-
|
|
44519
|
-
|
|
44520
|
-
|
|
44521
|
-
|
|
44522
|
-
|
|
44523
|
-
|
|
44524
|
-
|
|
44525
|
-
|
|
44526
|
-
|
|
44527
|
-
|
|
44528
|
-
|
|
44529
|
-
|
|
44530
|
-
|
|
44531
|
-
|
|
44532
|
-
|
|
44533
|
-
|
|
44534
|
-
|
|
44535
|
-
|
|
44536
|
-
|
|
44537
|
-
|
|
44531
|
+
const validateSpinner = ora("Validating...").start();
|
|
44532
|
+
let org;
|
|
44533
|
+
let activeWorkflows = [];
|
|
44534
|
+
let activeAgents = [];
|
|
44535
|
+
try {
|
|
44536
|
+
const entryModule = await loadTsModule(entryPath);
|
|
44537
|
+
org = entryModule.default;
|
|
44538
|
+
if (!org) {
|
|
44539
|
+
validateSpinner.fail("Invalid entry: no default export found");
|
|
44540
|
+
console.error(source_default.gray(` Entry file: ${(0, import_path.resolve)(entryPath)}`));
|
|
44541
|
+
throw new Error("Invalid entry: no default export found");
|
|
44542
|
+
}
|
|
44543
|
+
new ResourceRegistry({ [orgName]: org });
|
|
44544
|
+
activeWorkflows = (org.workflows ?? []).filter((w) => !w.config.archived);
|
|
44545
|
+
activeAgents = (org.agents ?? []).filter((a) => !a.config.archived);
|
|
44546
|
+
const archivedCount = (org.workflows?.length ?? 0) + (org.agents?.length ?? 0) - activeWorkflows.length - activeAgents.length;
|
|
44547
|
+
const totalCount = activeWorkflows.length + activeAgents.length;
|
|
44548
|
+
validateSpinner.succeed(
|
|
44549
|
+
source_default.green("Validating...") + source_default.white(" done") + source_default.gray(` (${totalCount} resource${totalCount !== 1 ? "s" : ""}, 0 errors)`)
|
|
44550
|
+
);
|
|
44551
|
+
if (archivedCount > 0) {
|
|
44552
|
+
console.log(source_default.gray(` Skipping ${archivedCount} archived resource${archivedCount !== 1 ? "s" : ""}`));
|
|
44553
|
+
}
|
|
44554
|
+
const bumpType = options2.major ? "major" : options2.minor ? "minor" : "patch";
|
|
44555
|
+
const currentVersion = org.version;
|
|
44556
|
+
const newVersion = bumpVersion(currentVersion, bumpType);
|
|
44557
|
+
const absEntryPath = (0, import_path.resolve)(entryPath);
|
|
44558
|
+
const entryContent = await (0, import_promises.readFile)(absEntryPath, "utf-8");
|
|
44559
|
+
const updatedContent = entryContent.replace(
|
|
44560
|
+
/version:\s*['"][\d]+\.[\d]+\.[\d]+['"]/,
|
|
44561
|
+
`version: '${newVersion}'`
|
|
44562
|
+
);
|
|
44563
|
+
await (0, import_promises.writeFile)(absEntryPath, updatedContent, "utf-8");
|
|
44564
|
+
org.version = newVersion;
|
|
44565
|
+
console.log("");
|
|
44566
|
+
console.log(source_default.gray(` Org: ${orgName}`));
|
|
44567
|
+
console.log(source_default.gray(` Target: ${apiUrl} (${env2})`));
|
|
44568
|
+
console.log(source_default.gray(` Version: ${currentVersion} \u2192 ${source_default.white(newVersion)} (${bumpType})`));
|
|
44569
|
+
console.log("");
|
|
44570
|
+
for (const w of activeWorkflows) {
|
|
44571
|
+
console.log(source_default.gray(` workflow ${source_default.white(w.config.resourceId)} v${w.config.version}`));
|
|
44572
|
+
}
|
|
44573
|
+
for (const a of activeAgents) {
|
|
44574
|
+
console.log(source_default.gray(` agent ${source_default.white(a.config.resourceId)} v${a.config.version}`));
|
|
44575
|
+
}
|
|
44576
|
+
console.log("");
|
|
44577
|
+
} catch (error46) {
|
|
44578
|
+
if (error46 instanceof RegistryValidationError) {
|
|
44579
|
+
validateSpinner.fail(source_default.red("Validation failed"));
|
|
44580
|
+
console.error("");
|
|
44581
|
+
console.error(source_default.red(` ERROR ${error46.message}`));
|
|
44582
|
+
if (error46.resourceId) {
|
|
44583
|
+
console.error(source_default.gray(` Resource: ${error46.resourceId}`));
|
|
44584
|
+
}
|
|
44585
|
+
console.error("");
|
|
44586
|
+
console.error(source_default.gray(" Deploy aborted."));
|
|
44587
|
+
}
|
|
44588
|
+
throw error46;
|
|
44538
44589
|
}
|
|
44539
|
-
|
|
44540
|
-
|
|
44541
|
-
|
|
44542
|
-
|
|
44543
|
-
|
|
44544
|
-
|
|
44590
|
+
await generateResourceMap(org);
|
|
44591
|
+
await generateProjectMap(org);
|
|
44592
|
+
let documentation = await scanDocumentation();
|
|
44593
|
+
if (documentation) {
|
|
44594
|
+
await generateNavigationMap(documentation);
|
|
44595
|
+
documentation = await scanDocumentation();
|
|
44596
|
+
console.log(
|
|
44597
|
+
source_default.gray(
|
|
44598
|
+
` docs ${source_default.white(String(documentation.length))} file${documentation.length !== 1 ? "s" : ""}`
|
|
44599
|
+
)
|
|
44600
|
+
);
|
|
44545
44601
|
}
|
|
44546
|
-
|
|
44547
|
-
|
|
44602
|
+
const triggerCount = org.triggers?.length ?? 0;
|
|
44603
|
+
const integrationCount = org.integrations?.length ?? 0;
|
|
44604
|
+
const checkpointCount = org.humanCheckpoints?.length ?? 0;
|
|
44605
|
+
if (triggerCount > 0) console.log(source_default.gray(` triggers ${source_default.white(String(triggerCount))}`));
|
|
44606
|
+
if (integrationCount > 0) console.log(source_default.gray(` integrations ${source_default.white(String(integrationCount))}`));
|
|
44607
|
+
if (checkpointCount > 0) console.log(source_default.gray(` checkpoints ${source_default.white(String(checkpointCount))}`));
|
|
44608
|
+
const relationshipCount = org.relationships ? Object.keys(org.relationships).length : 0;
|
|
44609
|
+
if (relationshipCount > 0) {
|
|
44610
|
+
console.log(
|
|
44611
|
+
source_default.gray(
|
|
44612
|
+
` rels ${source_default.white(String(relationshipCount))} resource${relationshipCount !== 1 ? "s" : ""}`
|
|
44613
|
+
)
|
|
44614
|
+
);
|
|
44548
44615
|
}
|
|
44549
|
-
|
|
44550
|
-
|
|
44551
|
-
|
|
44552
|
-
|
|
44553
|
-
|
|
44554
|
-
|
|
44555
|
-
if (error46.resourceId) {
|
|
44556
|
-
console.error(source_default.gray(` Resource: ${error46.resourceId}`));
|
|
44616
|
+
const schemaWarnings = [];
|
|
44617
|
+
const workflows = activeWorkflows.map((w) => extractResourceMetadata(w, schemaWarnings));
|
|
44618
|
+
const agents = activeAgents.map((a) => extractResourceMetadata(a, schemaWarnings));
|
|
44619
|
+
if (schemaWarnings.length > 0) {
|
|
44620
|
+
for (const warning of schemaWarnings) {
|
|
44621
|
+
console.log(source_default.yellow(` warn ${warning}`));
|
|
44557
44622
|
}
|
|
44558
|
-
console.
|
|
44559
|
-
console.
|
|
44560
|
-
}
|
|
44561
|
-
throw error46;
|
|
44562
|
-
}
|
|
44563
|
-
await generateResourceMap(org);
|
|
44564
|
-
await generateProjectMap(org);
|
|
44565
|
-
let documentation = await scanDocumentation();
|
|
44566
|
-
if (documentation) {
|
|
44567
|
-
await generateNavigationMap(documentation);
|
|
44568
|
-
documentation = await scanDocumentation();
|
|
44569
|
-
console.log(
|
|
44570
|
-
source_default.gray(
|
|
44571
|
-
` docs ${source_default.white(String(documentation.length))} file${documentation.length !== 1 ? "s" : ""}`
|
|
44572
|
-
)
|
|
44573
|
-
);
|
|
44574
|
-
}
|
|
44575
|
-
const triggerCount = org.triggers?.length ?? 0;
|
|
44576
|
-
const integrationCount = org.integrations?.length ?? 0;
|
|
44577
|
-
const checkpointCount = org.humanCheckpoints?.length ?? 0;
|
|
44578
|
-
if (triggerCount > 0) console.log(source_default.gray(` triggers ${source_default.white(String(triggerCount))}`));
|
|
44579
|
-
if (integrationCount > 0) console.log(source_default.gray(` integrations ${source_default.white(String(integrationCount))}`));
|
|
44580
|
-
if (checkpointCount > 0) console.log(source_default.gray(` checkpoints ${source_default.white(String(checkpointCount))}`));
|
|
44581
|
-
const relationshipCount = org.relationships ? Object.keys(org.relationships).length : 0;
|
|
44582
|
-
if (relationshipCount > 0) {
|
|
44583
|
-
console.log(
|
|
44584
|
-
source_default.gray(
|
|
44585
|
-
` rels ${source_default.white(String(relationshipCount))} resource${relationshipCount !== 1 ? "s" : ""}`
|
|
44586
|
-
)
|
|
44587
|
-
);
|
|
44588
|
-
}
|
|
44589
|
-
const schemaWarnings = [];
|
|
44590
|
-
const workflows = activeWorkflows.map((w) => extractResourceMetadata(w, schemaWarnings));
|
|
44591
|
-
const agents = activeAgents.map((a) => extractResourceMetadata(a, schemaWarnings));
|
|
44592
|
-
if (schemaWarnings.length > 0) {
|
|
44593
|
-
for (const warning of schemaWarnings) {
|
|
44594
|
-
console.log(source_default.yellow(` warn ${warning}`));
|
|
44623
|
+
console.log(source_default.gray(" Schemas will be unavailable on the platform for these resources."));
|
|
44624
|
+
console.log("");
|
|
44595
44625
|
}
|
|
44596
|
-
|
|
44597
|
-
|
|
44598
|
-
|
|
44599
|
-
|
|
44600
|
-
|
|
44601
|
-
|
|
44602
|
-
try {
|
|
44603
|
-
const entryImport = entryPath.replace(/\.ts$/, ".js");
|
|
44604
|
-
const wrapperContent = `import org from ${JSON.stringify(entryImport)}
|
|
44626
|
+
const bundleSpinner = ora("Bundling...").start();
|
|
44627
|
+
const wrapperPath = (0, import_path.resolve)("__elevasis_worker.ts");
|
|
44628
|
+
const bundleOutfile = (0, import_path.resolve)("dist/bundle.js");
|
|
44629
|
+
try {
|
|
44630
|
+
const entryImport = entryPath.replace(/\.ts$/, ".js");
|
|
44631
|
+
const wrapperContent = `import org from ${JSON.stringify(entryImport)}
|
|
44605
44632
|
import { startWorker } from '@elevasis/sdk/worker'
|
|
44606
44633
|
startWorker(org)
|
|
44607
44634
|
`;
|
|
44608
|
-
|
|
44609
|
-
|
|
44610
|
-
|
|
44611
|
-
|
|
44612
|
-
|
|
44613
|
-
|
|
44614
|
-
|
|
44615
|
-
|
|
44616
|
-
|
|
44617
|
-
|
|
44618
|
-
await (0, import_promises.unlink)(wrapperPath);
|
|
44619
|
-
const bundleBuffer = await (0, import_promises.readFile)(bundleOutfile);
|
|
44620
|
-
const bundleSizeKB = Math.round(bundleBuffer.length / 1024);
|
|
44621
|
-
bundleSpinner.succeed(
|
|
44622
|
-
source_default.green("Bundling...") + source_default.white(" done") + source_default.gray(` (${bundleSizeKB} KB)`)
|
|
44623
|
-
);
|
|
44624
|
-
} catch (error46) {
|
|
44625
|
-
try {
|
|
44635
|
+
await (0, import_promises.writeFile)(wrapperPath, wrapperContent, "utf-8");
|
|
44636
|
+
await (0, import_promises.mkdir)((0, import_path.resolve)("dist"), { recursive: true });
|
|
44637
|
+
const esbuild = getEsbuild();
|
|
44638
|
+
await esbuild.build({
|
|
44639
|
+
entryPoints: [wrapperPath],
|
|
44640
|
+
bundle: true,
|
|
44641
|
+
platform: "node",
|
|
44642
|
+
format: "cjs",
|
|
44643
|
+
outfile: bundleOutfile
|
|
44644
|
+
});
|
|
44626
44645
|
await (0, import_promises.unlink)(wrapperPath);
|
|
44627
|
-
|
|
44628
|
-
|
|
44629
|
-
|
|
44630
|
-
|
|
44631
|
-
|
|
44632
|
-
|
|
44633
|
-
|
|
44634
|
-
|
|
44635
|
-
|
|
44636
|
-
if (!apiKey) {
|
|
44637
|
-
uploadSpinner.fail(source_default.red("Missing API key environment variable"));
|
|
44638
|
-
console.error(source_default.gray(" Set it in your .env file or shell environment:"));
|
|
44639
|
-
if (!options2.prod && process.env.NODE_ENV === "development") {
|
|
44640
|
-
console.error(source_default.gray(" ELEVASIS_PLATFORM_KEY_DEV=sk_... (or ELEVASIS_PLATFORM_KEY as fallback)"));
|
|
44641
|
-
} else {
|
|
44642
|
-
console.error(source_default.gray(" ELEVASIS_PLATFORM_KEY=sk_..."));
|
|
44646
|
+
const bundleBuffer = await (0, import_promises.readFile)(bundleOutfile);
|
|
44647
|
+
const bundleSizeKB = Math.round(bundleBuffer.length / 1024);
|
|
44648
|
+
bundleSpinner.succeed(
|
|
44649
|
+
source_default.green("Bundling...") + source_default.white(" done") + source_default.gray(` (${bundleSizeKB} KB)`)
|
|
44650
|
+
);
|
|
44651
|
+
} catch (error46) {
|
|
44652
|
+
try {
|
|
44653
|
+
await (0, import_promises.unlink)(wrapperPath);
|
|
44654
|
+
} catch {
|
|
44643
44655
|
}
|
|
44644
|
-
|
|
44656
|
+
bundleSpinner.fail(source_default.red("Bundling failed"));
|
|
44657
|
+
throw error46;
|
|
44645
44658
|
}
|
|
44646
|
-
const
|
|
44647
|
-
|
|
44648
|
-
|
|
44649
|
-
|
|
44650
|
-
|
|
44651
|
-
|
|
44652
|
-
|
|
44653
|
-
|
|
44654
|
-
|
|
44655
|
-
|
|
44656
|
-
|
|
44657
|
-
|
|
44658
|
-
|
|
44659
|
-
|
|
44660
|
-
|
|
44661
|
-
if (!response.ok) {
|
|
44662
|
-
const errorText = await response.text();
|
|
44663
|
-
uploadSpinner.fail(source_default.red("Upload failed"));
|
|
44664
|
-
console.error(source_default.red(` ${response.status}: ${errorText}`));
|
|
44665
|
-
throw new Error(`Deploy upload failed (${response.status}): ${errorText}`);
|
|
44666
|
-
}
|
|
44667
|
-
const result = await response.json();
|
|
44668
|
-
uploadSpinner.succeed(source_default.green("Uploading...") + source_default.white(" done"));
|
|
44669
|
-
const totalResources = activeWorkflows.length + activeAgents.length;
|
|
44670
|
-
const elapsed = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
44671
|
-
if (result.status === "active") {
|
|
44672
|
-
console.log("");
|
|
44673
|
-
console.log(
|
|
44674
|
-
source_default.green.bold(` Deployed! ${totalResources} resource${totalResources !== 1 ? "s" : ""} live.`)
|
|
44675
|
-
);
|
|
44676
|
-
if (result.deployId) {
|
|
44677
|
-
console.log(source_default.gray(` Version: ${result.deployId}`));
|
|
44659
|
+
const uploadSpinner = ora("Uploading...").start();
|
|
44660
|
+
try {
|
|
44661
|
+
const bundleBuffer = await (0, import_promises.readFile)(bundleOutfile);
|
|
44662
|
+
const apiKey = resolveApiKey(options2.prod);
|
|
44663
|
+
if (!apiKey) {
|
|
44664
|
+
uploadSpinner.fail(source_default.red("Missing API key environment variable"));
|
|
44665
|
+
console.error(source_default.gray(" Set it in your .env file or shell environment:"));
|
|
44666
|
+
if (!options2.prod && process.env.NODE_ENV === "development") {
|
|
44667
|
+
console.error(
|
|
44668
|
+
source_default.gray(" ELEVASIS_PLATFORM_KEY_DEV=sk_... (or ELEVASIS_PLATFORM_KEY as fallback)")
|
|
44669
|
+
);
|
|
44670
|
+
} else {
|
|
44671
|
+
console.error(source_default.gray(" ELEVASIS_PLATFORM_KEY=sk_..."));
|
|
44672
|
+
}
|
|
44673
|
+
throw new Error("Missing API key environment variable");
|
|
44678
44674
|
}
|
|
44679
|
-
|
|
44680
|
-
|
|
44681
|
-
|
|
44682
|
-
|
|
44683
|
-
|
|
44684
|
-
|
|
44675
|
+
const metadata = {
|
|
44676
|
+
sdkVersion: SDK_VERSION,
|
|
44677
|
+
deploymentVersion: org.version,
|
|
44678
|
+
mode: env2,
|
|
44679
|
+
resources: { workflows, agents },
|
|
44680
|
+
...documentation ? { documentation } : {},
|
|
44681
|
+
...org.relationships ? { relationships: org.relationships } : {}
|
|
44682
|
+
};
|
|
44683
|
+
const form = new FormData();
|
|
44684
|
+
form.append("bundle", new Blob([bundleBuffer]), "bundle.js");
|
|
44685
|
+
form.append("metadata", JSON.stringify(metadata));
|
|
44686
|
+
const response = await fetch(`${apiUrl}/api/external/deploy`, {
|
|
44687
|
+
method: "POST",
|
|
44688
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
44689
|
+
body: form
|
|
44690
|
+
});
|
|
44691
|
+
if (!response.ok) {
|
|
44692
|
+
const errorText = await response.text();
|
|
44693
|
+
uploadSpinner.fail(source_default.red("Upload failed"));
|
|
44694
|
+
console.error(source_default.red(` ${response.status}: ${errorText}`));
|
|
44695
|
+
throw new Error(`Deploy upload failed (${response.status}): ${errorText}`);
|
|
44696
|
+
}
|
|
44697
|
+
const result = await response.json();
|
|
44698
|
+
uploadSpinner.succeed(source_default.green("Uploading...") + source_default.white(" done"));
|
|
44699
|
+
const totalResources = activeWorkflows.length + activeAgents.length;
|
|
44700
|
+
const elapsed = ((Date.now() - startTime) / 1e3).toFixed(1);
|
|
44701
|
+
if (result.status === "active") {
|
|
44702
|
+
console.log("");
|
|
44703
|
+
console.log(
|
|
44704
|
+
source_default.green.bold(` Deployed! ${totalResources} resource${totalResources !== 1 ? "s" : ""} live.`)
|
|
44705
|
+
);
|
|
44706
|
+
console.log(source_default.gray(` Version: ${source_default.white(`v${org.version}`)}`));
|
|
44707
|
+
console.log(source_default.gray(` Duration: ${elapsed}s`));
|
|
44708
|
+
} else if (result.status === "failed") {
|
|
44709
|
+
console.log("");
|
|
44710
|
+
console.log(source_default.red.bold(" Deploy failed."));
|
|
44711
|
+
if (result.error) {
|
|
44712
|
+
console.error(source_default.red(` ${result.error}`));
|
|
44713
|
+
}
|
|
44714
|
+
throw new Error(`Deploy failed: ${result.error ?? "unknown error"}`);
|
|
44715
|
+
} else {
|
|
44716
|
+
console.log("");
|
|
44717
|
+
console.log(source_default.yellow(` Deploy status: ${result.status ?? "unknown"}`));
|
|
44718
|
+
if (result.deployId) {
|
|
44719
|
+
console.log(source_default.gray(` Version: ${result.deployId}`));
|
|
44720
|
+
}
|
|
44685
44721
|
}
|
|
44686
|
-
|
|
44687
|
-
|
|
44688
|
-
|
|
44689
|
-
console.log(source_default.yellow(` Deploy status: ${result.status ?? "unknown"}`));
|
|
44690
|
-
if (result.deployId) {
|
|
44691
|
-
console.log(source_default.gray(` Version: ${result.deployId}`));
|
|
44722
|
+
} catch (error46) {
|
|
44723
|
+
if (uploadSpinner.isSpinning) {
|
|
44724
|
+
uploadSpinner.fail(source_default.red("Deploy failed"));
|
|
44692
44725
|
}
|
|
44726
|
+
throw error46;
|
|
44693
44727
|
}
|
|
44694
|
-
} catch (error46) {
|
|
44695
|
-
if (uploadSpinner.isSpinning) {
|
|
44696
|
-
uploadSpinner.fail(source_default.red("Deploy failed"));
|
|
44697
|
-
}
|
|
44698
|
-
throw error46;
|
|
44699
44728
|
}
|
|
44700
|
-
|
|
44729
|
+
)
|
|
44701
44730
|
);
|
|
44702
44731
|
}
|
|
44703
44732
|
|
package/dist/index.d.ts
CHANGED
|
@@ -2310,6 +2310,7 @@ type Database = {
|
|
|
2310
2310
|
Row: {
|
|
2311
2311
|
compiled_docs: Json | null;
|
|
2312
2312
|
created_at: string;
|
|
2313
|
+
deployment_version: string | null;
|
|
2313
2314
|
documentation: Json | null;
|
|
2314
2315
|
error_message: string | null;
|
|
2315
2316
|
id: string;
|
|
@@ -2324,6 +2325,7 @@ type Database = {
|
|
|
2324
2325
|
Insert: {
|
|
2325
2326
|
compiled_docs?: Json | null;
|
|
2326
2327
|
created_at?: string;
|
|
2328
|
+
deployment_version?: string | null;
|
|
2327
2329
|
documentation?: Json | null;
|
|
2328
2330
|
error_message?: string | null;
|
|
2329
2331
|
id?: string;
|
|
@@ -2338,6 +2340,7 @@ type Database = {
|
|
|
2338
2340
|
Update: {
|
|
2339
2341
|
compiled_docs?: Json | null;
|
|
2340
2342
|
created_at?: string;
|
|
2343
|
+
deployment_version?: string | null;
|
|
2341
2344
|
documentation?: Json | null;
|
|
2342
2345
|
error_message?: string | null;
|
|
2343
2346
|
id?: string;
|
|
@@ -3475,6 +3478,8 @@ interface RemoteOrgConfig {
|
|
|
3475
3478
|
toolCredentials?: Record<string, string>;
|
|
3476
3479
|
/** SDK version used to deploy this bundle */
|
|
3477
3480
|
sdkVersion?: string;
|
|
3481
|
+
/** Deployment version (semver) of the deployed bundle */
|
|
3482
|
+
deploymentVersion?: string;
|
|
3478
3483
|
}
|
|
3479
3484
|
/**
|
|
3480
3485
|
* Organization-specific resource collection
|
|
@@ -3482,7 +3487,9 @@ interface RemoteOrgConfig {
|
|
|
3482
3487
|
* Complete manifest of all automation resources for an organization.
|
|
3483
3488
|
* Used by ResourceRegistry for discovery and Command View for visualization.
|
|
3484
3489
|
*/
|
|
3485
|
-
interface
|
|
3490
|
+
interface DeploymentSpec {
|
|
3491
|
+
/** Deployment version (semver) */
|
|
3492
|
+
version: string;
|
|
3486
3493
|
/** Workflow definitions */
|
|
3487
3494
|
workflows?: WorkflowDefinition[];
|
|
3488
3495
|
/** Agent definitions */
|
|
@@ -3498,10 +3505,12 @@ interface OrganizationResources {
|
|
|
3498
3505
|
/** Human checkpoint definitions - human decision points in automation */
|
|
3499
3506
|
humanCheckpoints?: HumanCheckpointDefinition[];
|
|
3500
3507
|
}
|
|
3508
|
+
/** @deprecated Use DeploymentSpec instead */
|
|
3509
|
+
type OrganizationResources = DeploymentSpec;
|
|
3501
3510
|
/**
|
|
3502
3511
|
* Organization Registry type
|
|
3503
3512
|
*/
|
|
3504
|
-
type OrganizationRegistry = Record<string,
|
|
3513
|
+
type OrganizationRegistry = Record<string, DeploymentSpec>;
|
|
3505
3514
|
declare class ResourceRegistry {
|
|
3506
3515
|
private registry;
|
|
3507
3516
|
/**
|
|
@@ -3568,7 +3577,7 @@ declare class ResourceRegistry {
|
|
|
3568
3577
|
* @throws Error if incoming resourceId conflicts with a static resource
|
|
3569
3578
|
* @throws Error if incoming deployment contains duplicate resourceIds
|
|
3570
3579
|
*/
|
|
3571
|
-
registerOrganization(orgName: string, org:
|
|
3580
|
+
registerOrganization(orgName: string, org: DeploymentSpec, remote: RemoteOrgConfig): void;
|
|
3572
3581
|
/**
|
|
3573
3582
|
* Patch serialized cache with pre-serialized schemas from an external manifest.
|
|
3574
3583
|
*
|
|
@@ -3603,7 +3612,7 @@ declare class ResourceRegistry {
|
|
|
3603
3612
|
* @param orgName - Organization name
|
|
3604
3613
|
* @param org - Resource definitions with real handlers (not stubs)
|
|
3605
3614
|
*/
|
|
3606
|
-
registerStaticResources(orgName: string, org:
|
|
3615
|
+
registerStaticResources(orgName: string, org: DeploymentSpec): void;
|
|
3607
3616
|
/**
|
|
3608
3617
|
* Unregister runtime-registered resources for an organization
|
|
3609
3618
|
*
|
|
@@ -7398,4 +7407,4 @@ declare class ToolingError extends ExecutionError {
|
|
|
7398
7407
|
}
|
|
7399
7408
|
|
|
7400
7409
|
export { ExecutionError, RegistryValidationError, ResourceRegistry, StepType, ToolingError };
|
|
7401
|
-
export type { AbsoluteScheduleConfig, AcqCompany, AcqContact, AcqDeal, AcqList, AddToCampaignLead, AddToCampaignParams, AddToCampaignResult, AgentConfig, AgentConstraints, AgentDefinition, AgentMemory, FindCompanyEmailParams as AnymailfinderFindCompanyEmailParams, FindCompanyEmailResult as AnymailfinderFindCompanyEmailResult, FindDecisionMakerEmailParams as AnymailfinderFindDecisionMakerEmailParams, FindDecisionMakerEmailResult as AnymailfinderFindDecisionMakerEmailResult, FindPersonEmailParams as AnymailfinderFindPersonEmailParams, FindPersonEmailResult as AnymailfinderFindPersonEmailResult, AnymailfinderToolMap, VerifyEmailParams as AnymailfinderVerifyEmailParams, VerifyEmailResult as AnymailfinderVerifyEmailResult, ApifyToolMap, ApifyWebhookConfig, AppendRowsParams, AppendRowsResult, ApprovalToolMap, AttioToolMap, BatchUpdateParams, BatchUpdateResult, BulkDeleteLeadsParams, BulkDeleteLeadsResult, BulkImportParams, BulkImportResult, CancelHitlByDealIdParams, CancelSchedulesAndHitlByEmailParams, ClearDealFieldsParams, ClearRangeParams, ClearRangeResult, CompanyFilters, ConditionalNext, ContactFilters, Contract, CreateAttributeParams, CreateAttributeResult, CreateAutoPaymentLinkParams, CreateAutoPaymentLinkResult, CreateCheckoutSessionParams, CreateCheckoutSessionResult, CreateCompanyParams, CreateContactParams, CreateEnvelopeParams, CreateEnvelopeResult, CreateFolderParams, CreateFolderResult, CreateListParams, CreateNoteParams, CreateNoteResult, CreatePaymentLinkParams, CreatePaymentLinkResult, CreateRecordParams, CreateRecordResult, CreateScheduleInput, DeleteDealParams, DeleteNoteParams, DeleteNoteResult, DeleteRecordParams, DeleteRecordResult, DeleteRowByValueParams, DeleteRowByValueResult, DomainDefinition, DownloadDocumentParams, DownloadDocumentResult, DropboxToolMap, ElevasConfig, EmailToolMap, EnvelopeDocument, EventTriggerConfig, ExecutionContext, ExecutionInterface, ExecutionMetadata, ExecutionToolMap, FilterExpression, FilterRowsParams, FilterRowsResult, FormField, FormFieldType, FormSchema, GetDailyCampaignAnalyticsParams, GetDailyCampaignAnalyticsResult, GetEmailsParams, GetEmailsResult, GetEnvelopeParams, GetEnvelopeResult, GetHeadersParams, GetHeadersResult, GetLastRowParams, GetLastRowResult, GetPaymentLinkParams, GetPaymentLinkResult, GetRecordParams, GetRecordResult, GetRowByValueParams, GetRowByValueResult, GetSpreadsheetMetadataParams, GetSpreadsheetMetadataResult, GmailSendEmailParams, GmailSendEmailResult, GmailToolMap, GoogleSheetsToolMap, HumanCheckpointDefinition, InstantlyToolMap, IntegrationDefinition, LLMAdapterFactory, LLMGenerateRequest, LLMGenerateResponse, LLMMessage, LLMModel, LeadToolMap, LinearNext, ListAttributesParams, ListAttributesResult, ListLeadsParams, ListLeadsResult, ListNotesParams, ListNotesResult, ListObjectsResult, ListPaymentLinksParams, ListPaymentLinksResult, MarkProposalReviewedParams, MarkProposalSentParams, MethodEntry, MillionVerifierToolMap, ModelConfig, NextConfig, NotificationSDKInput, NotificationToolMap, OrganizationResources, PaginatedResult, PaginationParams, PdfToolMap, QueryRecordsParams, QueryRecordsResult, ReadSheetParams, ReadSheetResult, Recipient, RecurringScheduleConfig, RelationshipDeclaration, RelativeScheduleConfig, RemoveFromSubsequenceParams, RemoveFromSubsequenceResult, ResendGetEmailParams, ResendGetEmailResult, ResendSendEmailParams, ResendSendEmailResult, ResendToolMap, ResourceDefinition, ResourceDomain, ResourceMetricsConfig, ResourceRelationships, ResourceStatus$1 as ResourceStatus, ResourceType, RunActorParams, RunActorResult, SDKLLMGenerateParams, ScheduleOriginTracking, ScheduleTarget, ScheduleTriggerConfig, SchedulerToolMap, SendReplyParams, SendReplyResult, SetContactNurtureParams, SheetInfo, SignatureApiFieldType, SignatureApiToolMap, SigningPlace, SortCriteria, StartActorParams, StartActorResult, StepHandler, StorageDeleteInput, StorageDeleteOutput, StorageDownloadInput, StorageDownloadOutput, StorageListInput, StorageListOutput, StorageSignedUrlInput, StorageSignedUrlOutput, StorageToolMap, StorageUploadInput, StorageUploadOutput, StripeToolMap, SyncDealStageParams, TaskSchedule, TaskScheduleConfig, TombaToolMap, Tool, ToolExecutionOptions, ToolMethodMap, ToolingErrorType, TriggerConfig, TriggerDefinition, UpdateAttributeParams, UpdateAttributeResult, UpdateCloseLostReasonParams, UpdateCompanyParams, UpdateContactParams, UpdateDiscoveryDataParams, UpdateFeesParams, UpdateInterestStatusParams, UpdateInterestStatusResult, UpdateListParams, UpdatePaymentLinkParams, UpdatePaymentLinkResult, UpdateProposalDataParams, UpdateRecordParams, UpdateRecordResult, UpdateRowByValueParams, UpdateRowByValueResult, UploadFileParams, UploadFileResult, UpsertCompanyParams, UpsertContactParams, UpsertDealParams, UpsertRowParams, UpsertRowResult, VoidEnvelopeParams, VoidEnvelopeResult, WebhookProviderType, WebhookTriggerConfig, WorkflowConfig, WorkflowDefinition, WorkflowStep, WriteSheetParams, WriteSheetResult };
|
|
7410
|
+
export type { AbsoluteScheduleConfig, AcqCompany, AcqContact, AcqDeal, AcqList, AddToCampaignLead, AddToCampaignParams, AddToCampaignResult, AgentConfig, AgentConstraints, AgentDefinition, AgentMemory, FindCompanyEmailParams as AnymailfinderFindCompanyEmailParams, FindCompanyEmailResult as AnymailfinderFindCompanyEmailResult, FindDecisionMakerEmailParams as AnymailfinderFindDecisionMakerEmailParams, FindDecisionMakerEmailResult as AnymailfinderFindDecisionMakerEmailResult, FindPersonEmailParams as AnymailfinderFindPersonEmailParams, FindPersonEmailResult as AnymailfinderFindPersonEmailResult, AnymailfinderToolMap, VerifyEmailParams as AnymailfinderVerifyEmailParams, VerifyEmailResult as AnymailfinderVerifyEmailResult, ApifyToolMap, ApifyWebhookConfig, AppendRowsParams, AppendRowsResult, ApprovalToolMap, AttioToolMap, BatchUpdateParams, BatchUpdateResult, BulkDeleteLeadsParams, BulkDeleteLeadsResult, BulkImportParams, BulkImportResult, CancelHitlByDealIdParams, CancelSchedulesAndHitlByEmailParams, ClearDealFieldsParams, ClearRangeParams, ClearRangeResult, CompanyFilters, ConditionalNext, ContactFilters, Contract, CreateAttributeParams, CreateAttributeResult, CreateAutoPaymentLinkParams, CreateAutoPaymentLinkResult, CreateCheckoutSessionParams, CreateCheckoutSessionResult, CreateCompanyParams, CreateContactParams, CreateEnvelopeParams, CreateEnvelopeResult, CreateFolderParams, CreateFolderResult, CreateListParams, CreateNoteParams, CreateNoteResult, CreatePaymentLinkParams, CreatePaymentLinkResult, CreateRecordParams, CreateRecordResult, CreateScheduleInput, DeleteDealParams, DeleteNoteParams, DeleteNoteResult, DeleteRecordParams, DeleteRecordResult, DeleteRowByValueParams, DeleteRowByValueResult, DeploymentSpec, DomainDefinition, DownloadDocumentParams, DownloadDocumentResult, DropboxToolMap, ElevasConfig, EmailToolMap, EnvelopeDocument, EventTriggerConfig, ExecutionContext, ExecutionInterface, ExecutionMetadata, ExecutionToolMap, FilterExpression, FilterRowsParams, FilterRowsResult, FormField, FormFieldType, FormSchema, GetDailyCampaignAnalyticsParams, GetDailyCampaignAnalyticsResult, GetEmailsParams, GetEmailsResult, GetEnvelopeParams, GetEnvelopeResult, GetHeadersParams, GetHeadersResult, GetLastRowParams, GetLastRowResult, GetPaymentLinkParams, GetPaymentLinkResult, GetRecordParams, GetRecordResult, GetRowByValueParams, GetRowByValueResult, GetSpreadsheetMetadataParams, GetSpreadsheetMetadataResult, GmailSendEmailParams, GmailSendEmailResult, GmailToolMap, GoogleSheetsToolMap, HumanCheckpointDefinition, InstantlyToolMap, IntegrationDefinition, LLMAdapterFactory, LLMGenerateRequest, LLMGenerateResponse, LLMMessage, LLMModel, LeadToolMap, LinearNext, ListAttributesParams, ListAttributesResult, ListLeadsParams, ListLeadsResult, ListNotesParams, ListNotesResult, ListObjectsResult, ListPaymentLinksParams, ListPaymentLinksResult, MarkProposalReviewedParams, MarkProposalSentParams, MethodEntry, MillionVerifierToolMap, ModelConfig, NextConfig, NotificationSDKInput, NotificationToolMap, OrganizationResources, PaginatedResult, PaginationParams, PdfToolMap, QueryRecordsParams, QueryRecordsResult, ReadSheetParams, ReadSheetResult, Recipient, RecurringScheduleConfig, RelationshipDeclaration, RelativeScheduleConfig, RemoveFromSubsequenceParams, RemoveFromSubsequenceResult, ResendGetEmailParams, ResendGetEmailResult, ResendSendEmailParams, ResendSendEmailResult, ResendToolMap, ResourceDefinition, ResourceDomain, ResourceMetricsConfig, ResourceRelationships, ResourceStatus$1 as ResourceStatus, ResourceType, RunActorParams, RunActorResult, SDKLLMGenerateParams, ScheduleOriginTracking, ScheduleTarget, ScheduleTriggerConfig, SchedulerToolMap, SendReplyParams, SendReplyResult, SetContactNurtureParams, SheetInfo, SignatureApiFieldType, SignatureApiToolMap, SigningPlace, SortCriteria, StartActorParams, StartActorResult, StepHandler, StorageDeleteInput, StorageDeleteOutput, StorageDownloadInput, StorageDownloadOutput, StorageListInput, StorageListOutput, StorageSignedUrlInput, StorageSignedUrlOutput, StorageToolMap, StorageUploadInput, StorageUploadOutput, StripeToolMap, SyncDealStageParams, TaskSchedule, TaskScheduleConfig, TombaToolMap, Tool, ToolExecutionOptions, ToolMethodMap, ToolingErrorType, TriggerConfig, TriggerDefinition, UpdateAttributeParams, UpdateAttributeResult, UpdateCloseLostReasonParams, UpdateCompanyParams, UpdateContactParams, UpdateDiscoveryDataParams, UpdateFeesParams, UpdateInterestStatusParams, UpdateInterestStatusResult, UpdateListParams, UpdatePaymentLinkParams, UpdatePaymentLinkResult, UpdateProposalDataParams, UpdateRecordParams, UpdateRecordResult, UpdateRowByValueParams, UpdateRowByValueResult, UploadFileParams, UploadFileResult, UpsertCompanyParams, UpsertContactParams, UpsertDealParams, UpsertRowParams, UpsertRowResult, VoidEnvelopeParams, VoidEnvelopeResult, WebhookProviderType, WebhookTriggerConfig, WorkflowConfig, WorkflowDefinition, WorkflowStep, WriteSheetParams, WriteSheetResult };
|
package/dist/index.js
CHANGED
|
@@ -426,7 +426,7 @@ var RegistryValidationError = class extends Error {
|
|
|
426
426
|
this.name = "RegistryValidationError";
|
|
427
427
|
}
|
|
428
428
|
};
|
|
429
|
-
function
|
|
429
|
+
function validateDeploymentSpec(orgName, resources) {
|
|
430
430
|
const seenIds = /* @__PURE__ */ new Set();
|
|
431
431
|
resources.workflows?.forEach((workflow) => {
|
|
432
432
|
const id = workflow.config.resourceId;
|
|
@@ -558,7 +558,8 @@ function isZodOptional(schema) {
|
|
|
558
558
|
return schema.isOptional();
|
|
559
559
|
}
|
|
560
560
|
function validateRelationships(orgName, resources) {
|
|
561
|
-
if (!resources.relationships && !resources.triggers && !resources.externalResources && !resources.humanCheckpoints)
|
|
561
|
+
if (!resources.relationships && !resources.triggers && !resources.externalResources && !resources.humanCheckpoints)
|
|
562
|
+
return;
|
|
562
563
|
const validAgentIds = new Set(resources.agents?.map((a) => a.config.resourceId) ?? []);
|
|
563
564
|
const validWorkflowIds = new Set(resources.workflows?.map((w) => w.config.resourceId) ?? []);
|
|
564
565
|
const validIntegrationIds = new Set(resources.integrations?.map((i) => i.resourceId) ?? []);
|
|
@@ -3027,6 +3028,7 @@ function serializeOrganization(resources) {
|
|
|
3027
3028
|
const humanCheckpoints = resources.humanCheckpoints ?? [];
|
|
3028
3029
|
const domainDefinitions = deriveDomainDefinitions(resources);
|
|
3029
3030
|
return {
|
|
3031
|
+
version: resources.version,
|
|
3030
3032
|
resources: {
|
|
3031
3033
|
workflows: workflowResources,
|
|
3032
3034
|
agents: agentResources,
|
|
@@ -3185,7 +3187,7 @@ var ResourceRegistry = class {
|
|
|
3185
3187
|
*/
|
|
3186
3188
|
validateRegistry() {
|
|
3187
3189
|
for (const [orgName, resources] of Object.entries(this.registry)) {
|
|
3188
|
-
|
|
3190
|
+
validateDeploymentSpec(orgName, resources);
|
|
3189
3191
|
}
|
|
3190
3192
|
}
|
|
3191
3193
|
/**
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elevasis/sdk",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"description": "SDK for building Elevasis organization resources",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -50,8 +50,8 @@
|
|
|
50
50
|
"tsup": "^8.0.0",
|
|
51
51
|
"typescript": "5.9.2",
|
|
52
52
|
"zod": "^4.1.0",
|
|
53
|
-
"@repo/
|
|
54
|
-
"@repo/
|
|
53
|
+
"@repo/typescript-config": "0.0.0",
|
|
54
|
+
"@repo/core": "0.0.0"
|
|
55
55
|
},
|
|
56
56
|
"scripts": {
|
|
57
57
|
"build": "node -e \"require('fs').rmSync('dist',{recursive:true,force:true})\" && tsc -p tsconfig.core-dts.json && tsc -p tsconfig.build.json && tsup && rollup -c rollup.dts.config.mjs && esbuild src/cli/index.ts --bundle --platform=node --outfile=dist/cli.cjs --format=cjs --external:esbuild --banner:js=\"#!/usr/bin/env node\" && node scripts/copy-reference-docs.mjs && node scripts/generate-navigation.mjs",
|