@nestbox-ai/cli 1.0.38 → 1.0.39
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/.github/workflows/test.yml +54 -0
- package/dist/commands/agent/apiUtils.d.ts +20 -0
- package/dist/commands/agent/apiUtils.js +75 -2
- package/dist/commands/agent/apiUtils.js.map +1 -1
- package/dist/commands/agent/create.d.ts +2 -29
- package/dist/commands/agent/create.js +123 -61
- package/dist/commands/agent/create.js.map +1 -1
- package/dist/commands/agent/deploy.js +183 -137
- package/dist/commands/agent/deploy.js.map +1 -1
- package/dist/commands/agent/index.d.ts +1 -2
- package/dist/commands/agent/index.js +3 -6
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent/yaml-schema.d.ts +72 -0
- package/dist/commands/agent/yaml-schema.js +61 -0
- package/dist/commands/agent/yaml-schema.js.map +1 -0
- package/dist/commands/agent.js +2 -2
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/generate/project.js +32 -28
- package/dist/commands/generate/project.js.map +1 -1
- package/dist/utils/agent.js +18 -20
- package/dist/utils/agent.js.map +1 -1
- package/package.json +3 -2
- package/src/commands/agent/apiUtils.ts +103 -14
- package/src/commands/agent/create.ts +266 -100
- package/src/commands/agent/deploy.ts +515 -264
- package/src/commands/agent/index.ts +1 -4
- package/src/commands/agent/yaml-schema.ts +57 -0
- package/src/commands/agent.ts +10 -10
- package/src/commands/generate/project.ts +179 -147
- package/src/utils/agent.ts +141 -125
- package/test/agent.test.ts +153 -124
- package/dist/commands/agent/createFromYaml.d.ts +0 -2
- package/dist/commands/agent/createFromYaml.js +0 -172
- package/dist/commands/agent/createFromYaml.js.map +0 -1
- package/src/commands/agent/createFromYaml.ts +0 -192
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Test Nestbox AI CLI Tools
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches-ignore:
|
|
6
|
+
- main
|
|
7
|
+
pull_request:
|
|
8
|
+
branches:
|
|
9
|
+
- main
|
|
10
|
+
|
|
11
|
+
permissions:
|
|
12
|
+
contents: read
|
|
13
|
+
|
|
14
|
+
jobs:
|
|
15
|
+
test:
|
|
16
|
+
runs-on: ubuntu-latest
|
|
17
|
+
|
|
18
|
+
steps:
|
|
19
|
+
- uses: actions/checkout@v4
|
|
20
|
+
|
|
21
|
+
- name: Setup Node.js
|
|
22
|
+
uses: actions/setup-node@v4
|
|
23
|
+
with:
|
|
24
|
+
node-version: '20'
|
|
25
|
+
cache: 'npm'
|
|
26
|
+
|
|
27
|
+
- name: Install dependencies
|
|
28
|
+
run: |
|
|
29
|
+
npm install --prefer-offline --no-audit
|
|
30
|
+
|
|
31
|
+
- name: Install platform-specific dependencies
|
|
32
|
+
run: |
|
|
33
|
+
# Install Linux-specific Rollup binary for vitest
|
|
34
|
+
npm install @rollup/rollup-linux-x64-gnu --no-save || echo "Warning: Could not install platform-specific Rollup binary"
|
|
35
|
+
continue-on-error: true
|
|
36
|
+
|
|
37
|
+
- name: Verify installation
|
|
38
|
+
run: |
|
|
39
|
+
npm list vitest --depth=0
|
|
40
|
+
node --version
|
|
41
|
+
npm --version
|
|
42
|
+
|
|
43
|
+
- name: Run tests
|
|
44
|
+
run: |
|
|
45
|
+
echo "Running tests..."
|
|
46
|
+
echo "Node.js version: $(node --version)"
|
|
47
|
+
echo "NPM version: $(npm --version)"
|
|
48
|
+
echo "Checking if vitest is available..."
|
|
49
|
+
npx vitest --version || echo "Vitest not found via npx"
|
|
50
|
+
npm run test:ci
|
|
51
|
+
echo "All tests passed! ✅"
|
|
52
|
+
|
|
53
|
+
- name: Build project
|
|
54
|
+
run: npm run build
|
|
@@ -8,3 +8,23 @@ export interface ApiInstances {
|
|
|
8
8
|
* Create API instances with current authentication using setupAuthAndConfig
|
|
9
9
|
*/
|
|
10
10
|
export declare function createApis(): ApiInstances;
|
|
11
|
+
export type ManifestAgent = {
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
entry: string;
|
|
15
|
+
type?: "REGULAR" | "CHATBOT" | "WORKFLOW";
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object";
|
|
18
|
+
properties: Record<string, {
|
|
19
|
+
type: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
default?: string | number | boolean | null;
|
|
22
|
+
}>;
|
|
23
|
+
required?: string[];
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
export type ManifestFile = {
|
|
27
|
+
agents: ManifestAgent[];
|
|
28
|
+
};
|
|
29
|
+
export declare function loadAgentFromYaml(agentName: string): Promise<ManifestAgent | undefined>;
|
|
30
|
+
export declare function loadAllAgentNamesFromYaml(): Promise<string[]>;
|
|
@@ -1,20 +1,93 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
2
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
15
|
exports.createApis = createApis;
|
|
16
|
+
exports.loadAgentFromYaml = loadAgentFromYaml;
|
|
17
|
+
exports.loadAllAgentNamesFromYaml = loadAllAgentNamesFromYaml;
|
|
4
18
|
const admin_1 = require("@nestbox-ai/admin");
|
|
5
19
|
const api_1 = require("../../utils/api");
|
|
20
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
21
|
+
const path_1 = __importDefault(require("path"));
|
|
22
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
23
|
+
const ajv_1 = __importDefault(require("ajv"));
|
|
24
|
+
const yaml_schema_1 = require("./yaml-schema");
|
|
6
25
|
/**
|
|
7
26
|
* Create API instances with current authentication using setupAuthAndConfig
|
|
8
27
|
*/
|
|
9
28
|
function createApis() {
|
|
10
29
|
const authResult = (0, api_1.setupAuthAndConfig)();
|
|
11
30
|
if (!authResult) {
|
|
12
|
-
throw new Error(
|
|
31
|
+
throw new Error("No authentication token found. Please log in first.");
|
|
13
32
|
}
|
|
14
33
|
return {
|
|
15
34
|
agentsApi: new admin_1.MachineAgentApi(authResult.configuration),
|
|
16
35
|
projectsApi: new admin_1.ProjectsApi(authResult.configuration),
|
|
17
|
-
instanceApi: new admin_1.MachineInstancesApi(authResult.configuration)
|
|
36
|
+
instanceApi: new admin_1.MachineInstancesApi(authResult.configuration),
|
|
18
37
|
};
|
|
19
38
|
}
|
|
39
|
+
const ajv = new ajv_1.default({ strict: false });
|
|
40
|
+
const validate = ajv.compile(yaml_schema_1.yamlSchema);
|
|
41
|
+
function loadAgentFromYaml(agentName) {
|
|
42
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const file = path_1.default.join(process.cwd(), "nestbox-agents.yaml");
|
|
44
|
+
try {
|
|
45
|
+
yield promises_1.default.access(file);
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
if ((err === null || err === void 0 ? void 0 : err.code) === "ENOENT")
|
|
49
|
+
return undefined;
|
|
50
|
+
throw new Error(`cannot access nestbox-agents.yaml: ${err.message}`);
|
|
51
|
+
}
|
|
52
|
+
const raw = yield promises_1.default.readFile(file, "utf8");
|
|
53
|
+
const doc = js_yaml_1.default.load(raw);
|
|
54
|
+
if (!validate(doc)) {
|
|
55
|
+
const msg = ajv.errorsText(validate.errors, { separator: "\n- " });
|
|
56
|
+
throw new Error(`invalid nestbox-agents.yaml:\n- ${msg}`);
|
|
57
|
+
}
|
|
58
|
+
const mf = doc;
|
|
59
|
+
return mf.agents.find(a => (a === null || a === void 0 ? void 0 : a.name) === agentName);
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
function loadAllAgentNamesFromYaml() {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const file = path_1.default.join(process.cwd(), "nestbox-agents.yaml");
|
|
65
|
+
try {
|
|
66
|
+
yield promises_1.default.access(file);
|
|
67
|
+
}
|
|
68
|
+
catch (err) {
|
|
69
|
+
if ((err === null || err === void 0 ? void 0 : err.code) === "ENOENT")
|
|
70
|
+
return [];
|
|
71
|
+
throw new Error(`cannot access nestbox-agents.yaml: ${err.message}`);
|
|
72
|
+
}
|
|
73
|
+
const raw = yield promises_1.default.readFile(file, "utf8");
|
|
74
|
+
const doc = js_yaml_1.default.load(raw);
|
|
75
|
+
if (!validate(doc)) {
|
|
76
|
+
const msg = ajv.errorsText(validate.errors, { separator: "\n- " });
|
|
77
|
+
throw new Error(`invalid nestbox-agents.yaml:\n- ${msg}`);
|
|
78
|
+
}
|
|
79
|
+
const mf = doc;
|
|
80
|
+
const names = Array.isArray(mf === null || mf === void 0 ? void 0 : mf.agents)
|
|
81
|
+
? mf.agents.map(a => a === null || a === void 0 ? void 0 : a.name).filter(Boolean)
|
|
82
|
+
: [];
|
|
83
|
+
// de-duplicate by name, keep first occurrence
|
|
84
|
+
const seen = new Set();
|
|
85
|
+
return names.filter(n => {
|
|
86
|
+
if (seen.has(n))
|
|
87
|
+
return false;
|
|
88
|
+
seen.add(n);
|
|
89
|
+
return true;
|
|
90
|
+
});
|
|
91
|
+
});
|
|
92
|
+
}
|
|
20
93
|
//# sourceMappingURL=apiUtils.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiUtils.js","sourceRoot":"","sources":["../../../src/commands/agent/apiUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiUtils.js","sourceRoot":"","sources":["../../../src/commands/agent/apiUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,29 +1,2 @@
|
|
|
1
|
-
import {
|
|
2
|
-
export
|
|
3
|
-
lang?: string;
|
|
4
|
-
template?: string;
|
|
5
|
-
project?: string;
|
|
6
|
-
instanceName?: string;
|
|
7
|
-
machineManifestId?: string;
|
|
8
|
-
type?: string;
|
|
9
|
-
goal?: string;
|
|
10
|
-
modelBaseId?: string;
|
|
11
|
-
machineName?: string;
|
|
12
|
-
machineInstanceId?: number;
|
|
13
|
-
instanceIP?: string;
|
|
14
|
-
userId?: number;
|
|
15
|
-
parameters?: Array<{
|
|
16
|
-
name: string;
|
|
17
|
-
description: string;
|
|
18
|
-
default: any;
|
|
19
|
-
}>;
|
|
20
|
-
}
|
|
21
|
-
/**
|
|
22
|
-
* Create a new agent in the Nestbox platform
|
|
23
|
-
*
|
|
24
|
-
* @param agentName The name of the agent
|
|
25
|
-
* @param options Options including lang, template, and project
|
|
26
|
-
* @param agentsApi The MachineAgentApi instance
|
|
27
|
-
* @param projectsApi The ProjectsApi instance
|
|
28
|
-
*/
|
|
29
|
-
export declare function createAgent(agentName: string, options: CreateAgentOptions, agentsApi?: MachineAgentApi, projectsApi?: ProjectsApi): Promise<any>;
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
export declare function registerCreateCommand(agentCommand: Command): void;
|
|
@@ -8,81 +8,143 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
8
8
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
11
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.
|
|
13
|
-
const
|
|
14
|
-
const auth_1 = require("../../utils/auth");
|
|
15
|
+
exports.registerCreateCommand = registerCreateCommand;
|
|
16
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
15
17
|
const project_1 = require("../../utils/project");
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
18
|
+
const agent_1 = require("../../utils/agent");
|
|
19
|
+
const apiUtils_1 = require("./apiUtils");
|
|
20
|
+
function buildAgentData(options_1) {
|
|
21
|
+
return __awaiter(this, arguments, void 0, function* (options, machineInstanceData = {}) {
|
|
22
|
+
const createAgentData = {
|
|
23
|
+
agentName: "",
|
|
24
|
+
goal: "",
|
|
25
|
+
inputSchema: {},
|
|
26
|
+
machineManifestId: machineInstanceData.machineId,
|
|
27
|
+
machineName: options.instance,
|
|
28
|
+
machineInstanceId: machineInstanceData.id,
|
|
29
|
+
instanceIP: machineInstanceData.internalIP,
|
|
30
|
+
projectId: options.project,
|
|
31
|
+
type: (options === null || options === void 0 ? void 0 : options.type) || "REGULAR",
|
|
32
|
+
userId: 0,
|
|
33
|
+
modelBaseId: "",
|
|
34
|
+
entryFunctionName: "",
|
|
35
|
+
};
|
|
36
|
+
// check agent name and add prefix
|
|
37
|
+
if (!options.agent) {
|
|
38
|
+
throw new Error("Missing required argument <agent>.");
|
|
39
|
+
}
|
|
40
|
+
createAgentData.agentName = options.prefix
|
|
41
|
+
? options.prefix + "-" + options.agent
|
|
42
|
+
: options.agent;
|
|
43
|
+
// agent creation using arguments
|
|
44
|
+
if (options.description || options.inputSchema) {
|
|
45
|
+
if (!options.description) {
|
|
46
|
+
throw new Error("Missing required argument <description>.");
|
|
47
|
+
}
|
|
48
|
+
if (!options.inputSchema) {
|
|
49
|
+
throw new Error("Missing required argument <inputSchema>.");
|
|
50
|
+
}
|
|
51
|
+
createAgentData.goal = options.description;
|
|
52
|
+
createAgentData.inputSchema = JSON.parse(options.inputSchema);
|
|
30
53
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
},
|
|
40
|
-
});
|
|
41
|
-
agentsApi = agentsApi || new admin_1.MachineAgentApi(configuration);
|
|
42
|
-
projectsApi = projectsApi || new admin_1.ProjectsApi(configuration);
|
|
54
|
+
else {
|
|
55
|
+
const manifestAgent = yield (0, apiUtils_1.loadAgentFromYaml)(options.agent);
|
|
56
|
+
if (!manifestAgent) {
|
|
57
|
+
throw new Error("Could not find a yaml file definition of an agent or agent not defined in yaml file.");
|
|
58
|
+
}
|
|
59
|
+
createAgentData.goal = manifestAgent.description;
|
|
60
|
+
createAgentData.inputSchema = manifestAgent.inputSchema || {};
|
|
61
|
+
createAgentData.type = options.type || (manifestAgent === null || manifestAgent === void 0 ? void 0 : manifestAgent.type) || "REGULAR";
|
|
43
62
|
}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
isUserParam: param.isUserParam !== undefined ? param.isUserParam : true
|
|
62
|
-
}))) || [],
|
|
63
|
-
projectId: projectData.id,
|
|
64
|
-
type: agentTypeValue,
|
|
65
|
-
userId: options.userId || 0,
|
|
66
|
-
};
|
|
67
|
-
// Determine the type of resource (Agent or Chat)
|
|
68
|
-
const agentType = options.type || "CHAT";
|
|
69
|
-
const resourceType = agentType === "AGENT" || agentType === "REGULAR" ? "Agent" : "Chatbot";
|
|
70
|
-
// Create the agent
|
|
63
|
+
return createAgentData;
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function registerCreateCommand(agentCommand) {
|
|
67
|
+
agentCommand
|
|
68
|
+
.command("create")
|
|
69
|
+
.description("Create an agent with direct arguments or YAML.")
|
|
70
|
+
.option("--agent <agent>", "Agent name to deploy")
|
|
71
|
+
.option("--all", "Deploy all agents defined in nestbox-agents.yaml")
|
|
72
|
+
.option("--project <project>", "Project ID (defaults to current project)")
|
|
73
|
+
.option("--type <type>", "Agent type (e.g. CHAT, AGENT, REGULAR)")
|
|
74
|
+
.option("--prefix <prefix>", "A prefix added to beginning of the agent name.")
|
|
75
|
+
.option("--description <description>", "Description of the agent")
|
|
76
|
+
.option("--instance <instance>", "Machine name")
|
|
77
|
+
.option("--inputSchema <inputSchema>", "Agent input schema")
|
|
78
|
+
.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
79
|
+
var _a, _b, _c;
|
|
71
80
|
try {
|
|
72
|
-
const
|
|
81
|
+
const apis = (0, apiUtils_1.createApis)();
|
|
82
|
+
// resolve project
|
|
83
|
+
const projectData = yield (0, project_1.resolveProject)(apis.projectsApi, Object.assign({ project: (options === null || options === void 0 ? void 0 : options.project) || "", instance: (options === null || options === void 0 ? void 0 : options.instance) || "" }, options));
|
|
84
|
+
const projectRoot = process.cwd();
|
|
85
|
+
const nestboxConfig = (0, agent_1.loadNestboxConfig)(projectRoot);
|
|
86
|
+
if (!(options === null || options === void 0 ? void 0 : options.instance) && !(nestboxConfig === null || nestboxConfig === void 0 ? void 0 : nestboxConfig.instance)) {
|
|
87
|
+
console.log(chalk_1.default.red("Parameter <instance> not provided."));
|
|
88
|
+
return;
|
|
89
|
+
}
|
|
90
|
+
const machineName = (options === null || options === void 0 ? void 0 : options.instance) || (nestboxConfig === null || nestboxConfig === void 0 ? void 0 : nestboxConfig.instance);
|
|
91
|
+
const instanceData = yield apis.instanceApi.machineInstancesControllerGetMachineInstanceByUserId(projectData.id, 0, 10);
|
|
92
|
+
const targetInstance = instanceData.data.machineInstances.find((instance) => instance.instanceName === machineName);
|
|
93
|
+
if (!targetInstance) {
|
|
94
|
+
console.error(chalk_1.default.red(`Instance with name "${machineName}" not found in project "${projectData.name}".`));
|
|
95
|
+
console.log(chalk_1.default.yellow("Available instances:"));
|
|
96
|
+
instanceData.data.machineInstances.forEach((instance) => {
|
|
97
|
+
console.log(chalk_1.default.yellow(` - ${instance.instanceName} (ID: ${instance.id})`));
|
|
98
|
+
});
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
// handle --all (iterate all manifest agent names)
|
|
102
|
+
if (options.all) {
|
|
103
|
+
let created = 0;
|
|
104
|
+
let failed = 0;
|
|
105
|
+
const names = yield (0, apiUtils_1.loadAllAgentNamesFromYaml)();
|
|
106
|
+
if (!names.length) {
|
|
107
|
+
console.log(chalk_1.default.yellow("No agents found in YAML manifest."));
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
console.log(chalk_1.default.cyan(`Deploying ${names.length} agent(s) from YAML${options.prefix ? ` with prefix "${options.prefix}"` : ""}...`));
|
|
111
|
+
const results = [];
|
|
112
|
+
for (const name of names) {
|
|
113
|
+
try {
|
|
114
|
+
const data = yield buildAgentData(Object.assign(Object.assign({}, options), { project: projectData.id, agent: name }), targetInstance);
|
|
115
|
+
const res = yield apis.agentsApi.machineAgentControllerCreateMachineAgent(projectData.id, Object.assign({}, data));
|
|
116
|
+
created++;
|
|
117
|
+
results.push(res.data);
|
|
118
|
+
console.log(chalk_1.default.green(`✔ Created: ${data.agentName}`));
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
failed++;
|
|
122
|
+
const msg = ((_b = (_a = err === null || err === void 0 ? void 0 : err.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.message) ||
|
|
123
|
+
(err === null || err === void 0 ? void 0 : err.message) ||
|
|
124
|
+
"Unknown error";
|
|
125
|
+
console.log(chalk_1.default.red(`✖ Failed: ${name} — ${msg}`));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
console.log(chalk_1.default.cyan(`Done. ${chalk_1.default.green(`${created} created`)}, ${chalk_1.default.red(`${failed} failed`)}.`));
|
|
129
|
+
return results;
|
|
130
|
+
}
|
|
131
|
+
// original single-agent flow
|
|
132
|
+
const data = yield buildAgentData(Object.assign(Object.assign({}, options), { project: projectData.id }), targetInstance);
|
|
133
|
+
const response = yield apis.agentsApi.machineAgentControllerCreateMachineAgent(projectData.id, Object.assign({}, data));
|
|
134
|
+
console.log(chalk_1.default.green("Agent successfully created."));
|
|
73
135
|
return response.data;
|
|
74
136
|
}
|
|
75
137
|
catch (error) {
|
|
76
138
|
if (error.response && error.response.status === 401) {
|
|
77
|
-
|
|
139
|
+
console.log(chalk_1.default.red('Authentication token has expired. Please login again using "nestbox login <domain>".'));
|
|
78
140
|
}
|
|
79
141
|
else if (error.response) {
|
|
80
|
-
|
|
142
|
+
console.log(chalk_1.default.red(`API Error (${error.response.status}): ${((_c = error.response.data) === null || _c === void 0 ? void 0 : _c.message) || "Unknown error"}`));
|
|
81
143
|
}
|
|
82
144
|
else {
|
|
83
|
-
|
|
145
|
+
console.log(chalk_1.default.red(error.message || "Unknown error"));
|
|
84
146
|
}
|
|
85
147
|
}
|
|
86
|
-
});
|
|
148
|
+
}));
|
|
87
149
|
}
|
|
88
150
|
//# sourceMappingURL=create.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"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"}
|