@nestbox-ai/cli 1.0.23 → 1.0.24
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/commands/agent/apiUtils.d.ts +10 -0
- package/dist/commands/agent/apiUtils.js +20 -0
- package/dist/commands/agent/apiUtils.js.map +1 -0
- package/dist/commands/agent/create.d.ts +29 -0
- package/dist/commands/agent/create.js +88 -0
- package/dist/commands/agent/create.js.map +1 -0
- package/dist/commands/agent/createFromYaml.d.ts +2 -0
- package/dist/commands/agent/createFromYaml.js +172 -0
- package/dist/commands/agent/createFromYaml.js.map +1 -0
- package/dist/commands/agent/deploy.d.ts +2 -0
- package/dist/commands/agent/deploy.js +243 -0
- package/dist/commands/agent/deploy.js.map +1 -0
- package/dist/commands/agent/generate.d.ts +2 -0
- package/dist/commands/agent/generate.js +141 -0
- package/dist/commands/agent/generate.js.map +1 -0
- package/dist/commands/agent/index.d.ts +7 -0
- package/dist/commands/agent/index.js +21 -0
- package/dist/commands/agent/index.js.map +1 -0
- package/dist/commands/agent/list.d.ts +2 -0
- package/dist/commands/agent/list.js +94 -0
- package/dist/commands/agent/list.js.map +1 -0
- package/dist/commands/agent/remove.d.ts +2 -0
- package/dist/commands/agent/remove.js +85 -0
- package/dist/commands/agent/remove.js.map +1 -0
- package/dist/commands/agent.d.ts +4 -0
- package/dist/commands/agent.js +16 -731
- package/dist/commands/agent.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/agent/apiUtils.ts +24 -0
- package/src/commands/agent/create.ts +105 -0
- package/src/commands/agent/createFromYaml.ts +192 -0
- package/src/commands/agent/deploy.ts +272 -0
- package/src/commands/agent/generate.ts +151 -0
- package/src/commands/agent/index.ts +12 -0
- package/src/commands/agent/list.ts +104 -0
- package/src/commands/agent/remove.ts +103 -0
- package/src/commands/agent.ts +15 -909
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { MachineAgentApi, MachineInstancesApi, ProjectsApi } from "@nestbox-ai/admin";
|
|
2
|
+
export interface ApiInstances {
|
|
3
|
+
agentsApi: MachineAgentApi;
|
|
4
|
+
projectsApi: ProjectsApi;
|
|
5
|
+
instanceApi: MachineInstancesApi;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Create API instances with current authentication using setupAuthAndConfig
|
|
9
|
+
*/
|
|
10
|
+
export declare function createApis(): ApiInstances;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createApis = createApis;
|
|
4
|
+
const admin_1 = require("@nestbox-ai/admin");
|
|
5
|
+
const api_1 = require("../../utils/api");
|
|
6
|
+
/**
|
|
7
|
+
* Create API instances with current authentication using setupAuthAndConfig
|
|
8
|
+
*/
|
|
9
|
+
function createApis() {
|
|
10
|
+
const authResult = (0, api_1.setupAuthAndConfig)();
|
|
11
|
+
if (!authResult) {
|
|
12
|
+
throw new Error('No authentication token found. Please log in first.');
|
|
13
|
+
}
|
|
14
|
+
return {
|
|
15
|
+
agentsApi: new admin_1.MachineAgentApi(authResult.configuration),
|
|
16
|
+
projectsApi: new admin_1.ProjectsApi(authResult.configuration),
|
|
17
|
+
instanceApi: new admin_1.MachineInstancesApi(authResult.configuration)
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=apiUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"apiUtils.js","sourceRoot":"","sources":["../../../src/commands/agent/apiUtils.ts"],"names":[],"mappings":";;AAYA,gCAWC;AAvBD,6CAAqG;AACrG,yCAAsE;AAQtE;;GAEG;AACH,SAAgB,UAAU;IACxB,MAAM,UAAU,GAAG,IAAA,wBAAkB,GAAE,CAAC;IACxC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,OAAO;QACL,SAAS,EAAE,IAAI,uBAAe,CAAC,UAAU,CAAC,aAAa,CAAC;QACxD,WAAW,EAAE,IAAI,mBAAW,CAAC,UAAU,CAAC,aAAa,CAAC;QACtD,WAAW,EAAE,IAAI,2BAAmB,CAAC,UAAU,CAAC,aAAa,CAAC;KAC/D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { MachineAgentApi, ProjectsApi } from "@nestbox-ai/admin";
|
|
2
|
+
export interface CreateAgentOptions {
|
|
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>;
|
|
@@ -0,0 +1,88 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.createAgent = createAgent;
|
|
13
|
+
const admin_1 = require("@nestbox-ai/admin");
|
|
14
|
+
const auth_1 = require("../../utils/auth");
|
|
15
|
+
const project_1 = require("../../utils/project");
|
|
16
|
+
/**
|
|
17
|
+
* Create a new agent in the Nestbox platform
|
|
18
|
+
*
|
|
19
|
+
* @param agentName The name of the agent
|
|
20
|
+
* @param options Options including lang, template, and project
|
|
21
|
+
* @param agentsApi The MachineAgentApi instance
|
|
22
|
+
* @param projectsApi The ProjectsApi instance
|
|
23
|
+
*/
|
|
24
|
+
function createAgent(agentName, options, agentsApi, projectsApi) {
|
|
25
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
+
var _a, _b, _c;
|
|
27
|
+
const authToken = (0, auth_1.getAuthToken)();
|
|
28
|
+
if (!authToken) {
|
|
29
|
+
throw new Error("No authentication token found. Please login first.");
|
|
30
|
+
}
|
|
31
|
+
// Create API instances if not provided
|
|
32
|
+
if (!agentsApi || !projectsApi) {
|
|
33
|
+
const configuration = new admin_1.Configuration({
|
|
34
|
+
basePath: authToken === null || authToken === void 0 ? void 0 : authToken.serverUrl,
|
|
35
|
+
baseOptions: {
|
|
36
|
+
headers: {
|
|
37
|
+
Authorization: authToken === null || authToken === void 0 ? void 0 : authToken.token,
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
});
|
|
41
|
+
agentsApi = agentsApi || new admin_1.MachineAgentApi(configuration);
|
|
42
|
+
projectsApi = projectsApi || new admin_1.ProjectsApi(configuration);
|
|
43
|
+
}
|
|
44
|
+
// Resolve project - convert options to match CommandOptions interface
|
|
45
|
+
const projectData = yield (0, project_1.resolveProject)(projectsApi, Object.assign({ project: options.project, instance: options.instanceName || '' }, options));
|
|
46
|
+
// Prepare agent creation payload
|
|
47
|
+
// Determine the correct type value based on options.type
|
|
48
|
+
const agentTypeValue = ((_a = options.type) === null || _a === void 0 ? void 0 : _a.includes("AGENT")) ? "REGULAR" : options.type || "CHAT";
|
|
49
|
+
const payload = {
|
|
50
|
+
agentName,
|
|
51
|
+
goal: options.goal || `AI agent for ${agentName}`,
|
|
52
|
+
modelBaseId: options.modelBaseId || "",
|
|
53
|
+
machineName: options.machineName,
|
|
54
|
+
machineInstanceId: options.machineInstanceId,
|
|
55
|
+
instanceIP: options.instanceIP,
|
|
56
|
+
machineManifestId: options.machineManifestId,
|
|
57
|
+
parameters: ((_b = options.parameters) === null || _b === void 0 ? void 0 : _b.map((param) => ({
|
|
58
|
+
name: param.name,
|
|
59
|
+
description: param.description,
|
|
60
|
+
default_value: param.default || "",
|
|
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
|
|
71
|
+
try {
|
|
72
|
+
const response = yield agentsApi.machineAgentControllerCreateMachineAgent(projectData.id, payload);
|
|
73
|
+
return response.data;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
if (error.response && error.response.status === 401) {
|
|
77
|
+
throw new Error('Authentication token has expired. Please login again using "nestbox login <domain>".');
|
|
78
|
+
}
|
|
79
|
+
else if (error.response) {
|
|
80
|
+
throw new Error(`API Error (${error.response.status}): ${((_c = error.response.data) === null || _c === void 0 ? void 0 : _c.message) || "Unknown error"}`);
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
throw new Error(error.message || "Unknown error");
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/agent/create.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
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
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.registerCreateFromYamlCommand = registerCreateFromYamlCommand;
|
|
16
|
+
const error_1 = require("../../utils/error");
|
|
17
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
18
|
+
const ora_1 = __importDefault(require("ora"));
|
|
19
|
+
const cli_table3_1 = __importDefault(require("cli-table3"));
|
|
20
|
+
const fs_1 = __importDefault(require("fs"));
|
|
21
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
22
|
+
const user_1 = require("../../utils/user");
|
|
23
|
+
const create_1 = require("./create");
|
|
24
|
+
const apiUtils_1 = require("./apiUtils");
|
|
25
|
+
function registerCreateFromYamlCommand(agentCommand) {
|
|
26
|
+
agentCommand
|
|
27
|
+
.command("create [firstArg] [secondArg]")
|
|
28
|
+
.description("Create multiple agents from a YAML configuration file")
|
|
29
|
+
.option("--project <projectId>", "Project ID (defaults to the current project)")
|
|
30
|
+
.action((firstArg, secondArg, options) => __awaiter(this, void 0, void 0, function* () {
|
|
31
|
+
try {
|
|
32
|
+
let apis = (0, apiUtils_1.createApis)();
|
|
33
|
+
// Determine which argument is the YAML file path
|
|
34
|
+
let yamlFilePath;
|
|
35
|
+
if (firstArg === 'file' && secondArg) {
|
|
36
|
+
yamlFilePath = secondArg;
|
|
37
|
+
}
|
|
38
|
+
else if (firstArg) {
|
|
39
|
+
yamlFilePath = firstArg;
|
|
40
|
+
if (typeof secondArg === 'object' && !options) {
|
|
41
|
+
options = secondArg;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
console.error(chalk_1.default.red("Missing YAML file path. Usage: nestbox agent create <yamlFile> OR nestbox agent create file <yamlFile>"));
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
// Check if file exists
|
|
49
|
+
if (!fs_1.default.existsSync(yamlFilePath)) {
|
|
50
|
+
console.error(chalk_1.default.red(`YAML file not found: ${yamlFilePath}`));
|
|
51
|
+
return;
|
|
52
|
+
}
|
|
53
|
+
// Read and parse the YAML file
|
|
54
|
+
const spinner = (0, ora_1.default)(`Reading agents configuration from ${yamlFilePath}...`).start();
|
|
55
|
+
try {
|
|
56
|
+
const fileContents = fs_1.default.readFileSync(yamlFilePath, 'utf8');
|
|
57
|
+
const config = js_yaml_1.default.load(fileContents);
|
|
58
|
+
if (!config || !config.agents || !Array.isArray(config.agents)) {
|
|
59
|
+
spinner.fail("Invalid YAML configuration: Missing 'agents' array");
|
|
60
|
+
console.error(chalk_1.default.red("The YAML file should contain an 'agents' array with agent configurations"));
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
spinner.succeed(`Found ${config.agents.length} agents in configuration file`);
|
|
64
|
+
// Process each agent with token refresh support
|
|
65
|
+
const results = {
|
|
66
|
+
success: 0,
|
|
67
|
+
failed: 0,
|
|
68
|
+
agents: []
|
|
69
|
+
};
|
|
70
|
+
// Get user data once
|
|
71
|
+
const user = yield (0, user_1.userData)();
|
|
72
|
+
for (const agent of config.agents) {
|
|
73
|
+
if (!agent.name) {
|
|
74
|
+
console.log(chalk_1.default.yellow("Skipping agent with no name defined"));
|
|
75
|
+
results.failed++;
|
|
76
|
+
results.agents.push({
|
|
77
|
+
name: "unnamed",
|
|
78
|
+
success: false,
|
|
79
|
+
message: "Name is required"
|
|
80
|
+
});
|
|
81
|
+
continue;
|
|
82
|
+
}
|
|
83
|
+
let agentType = agent.type || "CHAT";
|
|
84
|
+
const resourceType = agentType === "AGENT" ? "Agent" : "Chatbot";
|
|
85
|
+
const agentSpinner = (0, ora_1.default)(`Creating ${resourceType.toLowerCase()} '${agent.name}'...`).start();
|
|
86
|
+
try {
|
|
87
|
+
// Create agent with token refresh support
|
|
88
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
89
|
+
// Map YAML config to createAgent options
|
|
90
|
+
const createOptions = Object.assign(Object.assign({}, options), { goal: agent.goal || "No goal specified", modelBaseId: agent.modelBaseId || "", instanceIP: agent.instanceIP || "localhost", machineInstanceId: agent.machineInstanceId || 1, machineManifestId: agent.machineManifestId || "default", machineName: agent.machineName || `agent-${agent.name.toLowerCase()}`, type: agentType, userId: user.id, parameters: agent.parameters ? agent.parameters.map((p) => {
|
|
91
|
+
return {
|
|
92
|
+
name: p.name || "unnamed",
|
|
93
|
+
description: p.description || "",
|
|
94
|
+
default: p.default || "",
|
|
95
|
+
isUserParam: p.isUserParam !== undefined ? p.isUserParam : true
|
|
96
|
+
};
|
|
97
|
+
}) : [] });
|
|
98
|
+
yield (0, create_1.createAgent)(agent.name, createOptions, apis.agentsApi, apis.projectsApi);
|
|
99
|
+
}), () => {
|
|
100
|
+
apis = (0, apiUtils_1.createApis)();
|
|
101
|
+
});
|
|
102
|
+
agentSpinner.stop();
|
|
103
|
+
results.success++;
|
|
104
|
+
results.agents.push({
|
|
105
|
+
name: agent.name,
|
|
106
|
+
success: true,
|
|
107
|
+
message: `Created successfully`
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
agentSpinner.fail(`Failed to create ${resourceType.toLowerCase()} '${agent.name}'`);
|
|
112
|
+
console.error(chalk_1.default.red(`Error: ${error.message}`));
|
|
113
|
+
results.failed++;
|
|
114
|
+
results.agents.push({
|
|
115
|
+
name: agent.name,
|
|
116
|
+
success: false,
|
|
117
|
+
message: error.message
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Final summary
|
|
122
|
+
console.log(chalk_1.default.blue("\nResource creation summary:"));
|
|
123
|
+
const table = new cli_table3_1.default({
|
|
124
|
+
head: [
|
|
125
|
+
chalk_1.default.white.bold("Name"),
|
|
126
|
+
chalk_1.default.white.bold("Type"),
|
|
127
|
+
chalk_1.default.white.bold("Status"),
|
|
128
|
+
chalk_1.default.white.bold("Message"),
|
|
129
|
+
],
|
|
130
|
+
style: {
|
|
131
|
+
head: [],
|
|
132
|
+
border: [],
|
|
133
|
+
},
|
|
134
|
+
});
|
|
135
|
+
results.agents.forEach((agent, index) => {
|
|
136
|
+
const agentConfig = config.agents.find(a => a.name === agent.name) || config.agents[index];
|
|
137
|
+
const agentType = (agentConfig === null || agentConfig === void 0 ? void 0 : agentConfig.type) || "CHAT";
|
|
138
|
+
const resourceType = agentType === "AGENT" ? "Agent" : "Chatbot";
|
|
139
|
+
table.push([
|
|
140
|
+
agent.name,
|
|
141
|
+
resourceType,
|
|
142
|
+
agent.success ? chalk_1.default.green("Success") : chalk_1.default.red("Failed"),
|
|
143
|
+
agent.message
|
|
144
|
+
]);
|
|
145
|
+
});
|
|
146
|
+
console.log(table.toString());
|
|
147
|
+
console.log(`\nTotal: ${results.success + results.failed}, Successful: ${results.success}, Failed: ${results.failed}`);
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
spinner.fail("Failed to process YAML file");
|
|
151
|
+
if (error.code === 'ENOENT') {
|
|
152
|
+
console.error(chalk_1.default.red(`File not found: ${yamlFilePath}`));
|
|
153
|
+
}
|
|
154
|
+
else if (error.name === 'YAMLException') {
|
|
155
|
+
console.error(chalk_1.default.red(`Invalid YAML format: ${error.message}`));
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
console.error(chalk_1.default.red("Error:"), error.message || "Unknown error");
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
if (error.message && error.message.includes('Authentication')) {
|
|
164
|
+
console.error(chalk_1.default.red(error.message));
|
|
165
|
+
}
|
|
166
|
+
else {
|
|
167
|
+
console.error(chalk_1.default.red("Error:"), error instanceof Error ? error.message : "Unknown error");
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}));
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=createFromYaml.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"createFromYaml.js","sourceRoot":"","sources":["../../../src/commands/agent/createFromYaml.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,243 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
36
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
37
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
38
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
39
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
40
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
41
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
42
|
+
});
|
|
43
|
+
};
|
|
44
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
45
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
46
|
+
};
|
|
47
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
|
+
exports.registerDeployCommand = registerDeployCommand;
|
|
49
|
+
const error_1 = require("../../utils/error");
|
|
50
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
51
|
+
const ora_1 = __importDefault(require("ora"));
|
|
52
|
+
const project_1 = require("../../utils/project");
|
|
53
|
+
const fs_1 = __importDefault(require("fs"));
|
|
54
|
+
const agent_1 = require("../../utils/agent");
|
|
55
|
+
const axios_1 = __importDefault(require("axios"));
|
|
56
|
+
const agentType_1 = require("../../types/agentType");
|
|
57
|
+
const path_1 = __importDefault(require("path"));
|
|
58
|
+
const auth_1 = require("../../utils/auth");
|
|
59
|
+
const apiUtils_1 = require("./apiUtils");
|
|
60
|
+
function registerDeployCommand(agentCommand) {
|
|
61
|
+
agentCommand
|
|
62
|
+
.command("deploy")
|
|
63
|
+
.description("Deploy an AI agent to the Nestbox platform")
|
|
64
|
+
.option("--agent <agentName>", "Agent name to deploy")
|
|
65
|
+
.option("--chatbot <chatbotName>", "Chatbot name to deploy")
|
|
66
|
+
.requiredOption("--instance <instanceName>", "Instance name")
|
|
67
|
+
.option("--zip <zipFileOrDirPath>", "Path to the zip file or directory to upload")
|
|
68
|
+
.option("--project <projectName>", "Project name (defaults to the current project)")
|
|
69
|
+
.option("--entry <entryFunction>", "Entry function name")
|
|
70
|
+
.option("--log", "Show detailed logs during deployment")
|
|
71
|
+
.action((options) => __awaiter(this, void 0, void 0, function* () {
|
|
72
|
+
var _a;
|
|
73
|
+
try {
|
|
74
|
+
const { agent: agentName, chatbot: chatbotName, instance: instanceName, zip: customZipPath, entry, log, } = options;
|
|
75
|
+
// Ensure either agent or chatbot is provided, but not both
|
|
76
|
+
if ((!agentName && !chatbotName) || (agentName && chatbotName)) {
|
|
77
|
+
console.error(chalk_1.default.red("Please provide either --agent OR --chatbot option, but not both."));
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
let apis = (0, apiUtils_1.createApis)();
|
|
81
|
+
// Find project root
|
|
82
|
+
const projectRoot = yield (0, agent_1.findProjectRoot)();
|
|
83
|
+
console.log(chalk_1.default.blue(`Project root detected at: ${projectRoot}`));
|
|
84
|
+
// Main deployment logic with token refresh
|
|
85
|
+
yield (0, error_1.withTokenRefresh)(() => __awaiter(this, void 0, void 0, function* () {
|
|
86
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j;
|
|
87
|
+
// Resolve project
|
|
88
|
+
const projectData = yield (0, project_1.resolveProject)(apis.projectsApi, options);
|
|
89
|
+
// Determine if we're deploying an agent or chatbot
|
|
90
|
+
const isAgent = !!agentName;
|
|
91
|
+
const resourceName = isAgent ? agentName : chatbotName;
|
|
92
|
+
const resourceType = isAgent ? "Agent" : "Chatbot";
|
|
93
|
+
const agentType = isAgent ? agentType_1.AgentType.REGULAR : "CHAT";
|
|
94
|
+
// Get agents data and find agent/chatbot by name
|
|
95
|
+
const agentsData = yield apis.agentsApi.machineAgentControllerGetMachineAgentByProjectId(projectData.id, 0, 10, agentType);
|
|
96
|
+
const targetAgent = agentsData.data.machineAgents.find((agent) => agent.agentName === resourceName);
|
|
97
|
+
if (!targetAgent) {
|
|
98
|
+
console.error(chalk_1.default.red(`${resourceType} with name "${resourceName}" not found in project "${projectData.name}".`));
|
|
99
|
+
console.log(chalk_1.default.yellow(`Available ${resourceType.toLowerCase()}s:`));
|
|
100
|
+
agentsData.data.machineAgents.forEach((agent) => {
|
|
101
|
+
console.log(chalk_1.default.yellow(` - ${agent.agentName} (ID: ${agent.id})`));
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// Get instance data and find instance by name
|
|
106
|
+
const instanceData = yield apis.instanceApi.machineInstancesControllerGetMachineInstanceByUserId(projectData.id, 0, 10);
|
|
107
|
+
const targetInstance = instanceData.data.machineInstances.find((instance) => instance.instanceName === instanceName);
|
|
108
|
+
if (!targetInstance) {
|
|
109
|
+
console.error(chalk_1.default.red(`Instance with name "${instanceName}" not found in project "${projectData.name}".`));
|
|
110
|
+
console.log(chalk_1.default.yellow("Available instances:"));
|
|
111
|
+
instanceData.data.machineInstances.forEach((instance) => {
|
|
112
|
+
console.log(chalk_1.default.yellow(` - ${instance.instanceName} (ID: ${instance.id})`));
|
|
113
|
+
});
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
// Extract IDs
|
|
117
|
+
const agentId = targetAgent.id;
|
|
118
|
+
const resolvedEntry = entry || targetAgent.entryFunctionName || "main";
|
|
119
|
+
const instanceId = targetInstance.id;
|
|
120
|
+
// Load nestbox.config.json
|
|
121
|
+
const config = (0, agent_1.loadNestboxConfig)(projectRoot);
|
|
122
|
+
// Start the deployment process
|
|
123
|
+
const spinner = (0, ora_1.default)(`Preparing to deploy ${resourceType.toLowerCase()} ${agentId} to instance ${instanceId}...`).start();
|
|
124
|
+
try {
|
|
125
|
+
let zipFilePath;
|
|
126
|
+
if (customZipPath) {
|
|
127
|
+
// Process custom zip path
|
|
128
|
+
if (!fs_1.default.existsSync(customZipPath)) {
|
|
129
|
+
spinner.fail(`Path not found: ${customZipPath}`);
|
|
130
|
+
return;
|
|
131
|
+
}
|
|
132
|
+
const stats = fs_1.default.statSync(customZipPath);
|
|
133
|
+
if (stats.isFile()) {
|
|
134
|
+
if (!customZipPath.toLowerCase().endsWith(".zip")) {
|
|
135
|
+
spinner.fail(`File is not a zip archive: ${customZipPath}`);
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
spinner.text = `Using provided zip file: ${customZipPath}`;
|
|
139
|
+
zipFilePath = customZipPath;
|
|
140
|
+
}
|
|
141
|
+
else if (stats.isDirectory()) {
|
|
142
|
+
// Process directory
|
|
143
|
+
spinner.text = `Processing directory: ${customZipPath}`;
|
|
144
|
+
const isTypeScript = (0, agent_1.isTypeScriptProject)(customZipPath);
|
|
145
|
+
if (isTypeScript && (((_a = config === null || config === void 0 ? void 0 : config.agent) === null || _a === void 0 ? void 0 : _a.predeploy) || ((_b = config === null || config === void 0 ? void 0 : config.agents) === null || _b === void 0 ? void 0 : _b.predeploy))) {
|
|
146
|
+
const predeployScripts = ((_c = config === null || config === void 0 ? void 0 : config.agent) === null || _c === void 0 ? void 0 : _c.predeploy) || ((_d = config === null || config === void 0 ? void 0 : config.agents) === null || _d === void 0 ? void 0 : _d.predeploy);
|
|
147
|
+
spinner.text = `Running predeploy scripts on target directory...`;
|
|
148
|
+
yield (0, agent_1.runPredeployScripts)(predeployScripts, customZipPath);
|
|
149
|
+
}
|
|
150
|
+
spinner.text = `Creating zip archive from directory ${customZipPath}...`;
|
|
151
|
+
zipFilePath = (0, agent_1.createZipFromDirectory)(customZipPath);
|
|
152
|
+
spinner.text = `Directory zipped successfully to ${zipFilePath}`;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
// Use project root
|
|
157
|
+
spinner.text = `Using project root: ${projectRoot}`;
|
|
158
|
+
const isTypeScript = (0, agent_1.isTypeScriptProject)(projectRoot);
|
|
159
|
+
if (isTypeScript && (((_e = config === null || config === void 0 ? void 0 : config.agent) === null || _e === void 0 ? void 0 : _e.predeploy) || ((_f = config === null || config === void 0 ? void 0 : config.agents) === null || _f === void 0 ? void 0 : _f.predeploy))) {
|
|
160
|
+
const predeployScripts = ((_g = config === null || config === void 0 ? void 0 : config.agent) === null || _g === void 0 ? void 0 : _g.predeploy) || ((_h = config === null || config === void 0 ? void 0 : config.agents) === null || _h === void 0 ? void 0 : _h.predeploy);
|
|
161
|
+
spinner.text = `Running predeploy scripts on project root...`;
|
|
162
|
+
yield (0, agent_1.runPredeployScripts)(predeployScripts, projectRoot);
|
|
163
|
+
}
|
|
164
|
+
spinner.text = `Creating zip archive from project root ${projectRoot}...`;
|
|
165
|
+
zipFilePath = (0, agent_1.createZipFromDirectory)(projectRoot);
|
|
166
|
+
spinner.text = `Directory zipped successfully to ${zipFilePath}`;
|
|
167
|
+
}
|
|
168
|
+
spinner.text = `Deploying ${resourceType.toLowerCase()} ${agentId} to instance ${instanceId}...`;
|
|
169
|
+
// Prepare deployment
|
|
170
|
+
const authToken = (0, auth_1.getAuthToken)();
|
|
171
|
+
const baseUrl = ((_j = authToken === null || authToken === void 0 ? void 0 : authToken.serverUrl) === null || _j === void 0 ? void 0 : _j.endsWith("/"))
|
|
172
|
+
? authToken.serverUrl.slice(0, -1)
|
|
173
|
+
: authToken === null || authToken === void 0 ? void 0 : authToken.serverUrl;
|
|
174
|
+
const { default: FormData } = yield Promise.resolve().then(() => __importStar(require("form-data")));
|
|
175
|
+
const form = new FormData();
|
|
176
|
+
form.append("file", fs_1.default.createReadStream(zipFilePath));
|
|
177
|
+
form.append("machineAgentId", agentId.toString());
|
|
178
|
+
form.append("instanceId", instanceId.toString());
|
|
179
|
+
form.append("entryFunctionName", resolvedEntry);
|
|
180
|
+
form.append("isSourceCodeUpdate", "true");
|
|
181
|
+
form.append("projectId", projectData.id);
|
|
182
|
+
if (log) {
|
|
183
|
+
console.log(chalk_1.default.blue("Form Details "));
|
|
184
|
+
console.log(chalk_1.default.blue(` - File: ${path_1.default.basename(zipFilePath)}`));
|
|
185
|
+
console.log(chalk_1.default.blue(` - Agent ID: ${agentId}`));
|
|
186
|
+
console.log(chalk_1.default.blue(` - Instance ID: ${instanceId}`));
|
|
187
|
+
console.log(chalk_1.default.blue(` - Entry Function: ${resolvedEntry}`));
|
|
188
|
+
console.log(chalk_1.default.blue(` - Project ID: ${projectData.id}`));
|
|
189
|
+
}
|
|
190
|
+
const axiosInstance = axios_1.default.create({
|
|
191
|
+
baseURL: baseUrl,
|
|
192
|
+
headers: Object.assign(Object.assign({}, form.getHeaders()), { Authorization: authToken === null || authToken === void 0 ? void 0 : authToken.token }),
|
|
193
|
+
});
|
|
194
|
+
const endpoint = `/projects/${projectData.id}/agents/${agentId}`;
|
|
195
|
+
spinner.text = `Sending API request to deploy ${resourceType.toLowerCase()}...`;
|
|
196
|
+
const res = yield axiosInstance.patch(endpoint, form);
|
|
197
|
+
if (!customZipPath && zipFilePath && fs_1.default.existsSync(zipFilePath)) {
|
|
198
|
+
fs_1.default.unlinkSync(zipFilePath);
|
|
199
|
+
}
|
|
200
|
+
if (log) {
|
|
201
|
+
console.log(chalk_1.default.blue("\nDeployment request:"));
|
|
202
|
+
console.log(chalk_1.default.blue(` URL: ${baseUrl}${endpoint}`));
|
|
203
|
+
console.log(chalk_1.default.blue(` Method: PATCH`));
|
|
204
|
+
console.log(chalk_1.default.blue(` File: ${path_1.default.basename(zipFilePath)}`));
|
|
205
|
+
console.log(chalk_1.default.blue(` Response status: ${res.status} ${res.statusText}`));
|
|
206
|
+
const lines = res.data.logEntries || [];
|
|
207
|
+
console.log(chalk_1.default.blue(` Deployment log entries (${lines.length} lines):`));
|
|
208
|
+
lines.forEach((line) => {
|
|
209
|
+
console.log(chalk_1.default.blue(` - [${line.type} ${line.timestamp}] ${line.message} `));
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
spinner.succeed("Successfully deployed");
|
|
213
|
+
console.log(chalk_1.default.green(`${resourceType} deployed successfully!`));
|
|
214
|
+
console.log(chalk_1.default.cyan(`📍 Instance: ${instanceName}`));
|
|
215
|
+
console.log(chalk_1.default.cyan(`🤖 Agent: ${agentName} (${agentId})`));
|
|
216
|
+
console.log(chalk_1.default.cyan(`⚙️ Entry: ${resolvedEntry}`));
|
|
217
|
+
console.log(chalk_1.default.cyan(`🔄 Process: ${res.data.processName}`));
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
spinner.fail(`Failed to deploy ${resourceType.toLowerCase()}`);
|
|
221
|
+
throw error;
|
|
222
|
+
}
|
|
223
|
+
}), () => {
|
|
224
|
+
apis = (0, apiUtils_1.createApis)();
|
|
225
|
+
});
|
|
226
|
+
}
|
|
227
|
+
catch (error) {
|
|
228
|
+
if (error.message && error.message.includes('Authentication')) {
|
|
229
|
+
console.error(chalk_1.default.red(error.message));
|
|
230
|
+
}
|
|
231
|
+
else if (error.response) {
|
|
232
|
+
console.error(chalk_1.default.red(`API Error (${error.response.status}): ${((_a = error.response.data) === null || _a === void 0 ? void 0 : _a.message) || "Unknown error"}`));
|
|
233
|
+
if (error.response.data) {
|
|
234
|
+
console.error(chalk_1.default.red(`Error Data: ${JSON.stringify(error.response.data, null, 2)}`));
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
else {
|
|
238
|
+
console.error(chalk_1.default.red("Error:"), error.message || "Unknown error");
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
}));
|
|
242
|
+
}
|
|
243
|
+
//# sourceMappingURL=deploy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/commands/agent/deploy.ts"],"names":[],"mappings":"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"}
|