@nestbox-ai/cli 1.0.37 → 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.
Files changed (36) hide show
  1. package/.github/workflows/test.yml +54 -0
  2. package/README.md +2 -1
  3. package/dist/commands/agent/apiUtils.d.ts +20 -0
  4. package/dist/commands/agent/apiUtils.js +75 -2
  5. package/dist/commands/agent/apiUtils.js.map +1 -1
  6. package/dist/commands/agent/create.d.ts +2 -29
  7. package/dist/commands/agent/create.js +123 -61
  8. package/dist/commands/agent/create.js.map +1 -1
  9. package/dist/commands/agent/deploy.js +183 -137
  10. package/dist/commands/agent/deploy.js.map +1 -1
  11. package/dist/commands/agent/index.d.ts +1 -2
  12. package/dist/commands/agent/index.js +3 -6
  13. package/dist/commands/agent/index.js.map +1 -1
  14. package/dist/commands/agent/yaml-schema.d.ts +72 -0
  15. package/dist/commands/agent/yaml-schema.js +61 -0
  16. package/dist/commands/agent/yaml-schema.js.map +1 -0
  17. package/dist/commands/agent.js +2 -2
  18. package/dist/commands/agent.js.map +1 -1
  19. package/dist/commands/generate/project.js +32 -28
  20. package/dist/commands/generate/project.js.map +1 -1
  21. package/dist/utils/agent.js +18 -20
  22. package/dist/utils/agent.js.map +1 -1
  23. package/package.json +3 -2
  24. package/src/commands/agent/apiUtils.ts +103 -14
  25. package/src/commands/agent/create.ts +266 -100
  26. package/src/commands/agent/deploy.ts +515 -264
  27. package/src/commands/agent/index.ts +1 -4
  28. package/src/commands/agent/yaml-schema.ts +57 -0
  29. package/src/commands/agent.ts +10 -10
  30. package/src/commands/generate/project.ts +179 -147
  31. package/src/utils/agent.ts +141 -125
  32. package/test/agent.test.ts +153 -124
  33. package/dist/commands/agent/createFromYaml.d.ts +0 -2
  34. package/dist/commands/agent/createFromYaml.js +0 -172
  35. package/dist/commands/agent/createFromYaml.js.map +0 -1
  36. package/src/commands/agent/createFromYaml.ts +0 -192
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":";;AASA,sDAWC;AAnBD,uCAAmD;AACnD,2CAAuD;AACvD,2CAAuD;AACvD,2DAAuE;AAEvE;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAgB;IACpD,gCAAgC;IAChC,MAAM,YAAY,GAAG,OAAO;SACzB,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAExC,2BAA2B;IAC3B,IAAA,0BAAmB,EAAC,YAAY,CAAC,CAAC;IAClC,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;IACpC,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;IACpC,IAAA,8CAA6B,EAAC,YAAY,CAAC,CAAC;AAC9C,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":";;AASA,sDAWC;AAnBD,uCAAmD;AACnD,2CAAuD;AACvD,2CAAuD;AACvD,2CAAuD;AAEvD;;GAEG;AACH,SAAgB,qBAAqB,CAAC,OAAgB;IACrD,gCAAgC;IAChC,MAAM,YAAY,GAAG,OAAO;SAC1B,OAAO,CAAC,OAAO,CAAC;SAChB,WAAW,CAAC,uBAAuB,CAAC,CAAC;IAEvC,2BAA2B;IAC3B,IAAA,0BAAmB,EAAC,YAAY,CAAC,CAAC;IAClC,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;IACpC,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;IACpC,IAAA,8BAAqB,EAAC,YAAY,CAAC,CAAC;AACrC,CAAC"}
@@ -45,44 +45,46 @@ function registerProjectCommand(generateCommand) {
45
45
  spinner.stop();
46
46
  const answers = yield inquirer_1.default.prompt([
47
47
  {
48
- type: 'list',
49
- name: 'lang',
50
- message: 'Select project language:',
48
+ type: "list",
49
+ name: "lang",
50
+ message: "Select project language:",
51
51
  choices: [
52
- { name: 'TypeScript', value: 'ts' },
53
- { name: 'JavaScript', value: 'js' }
52
+ { name: "TypeScript", value: "ts" },
53
+ { name: "JavaScript", value: "js" },
54
54
  ],
55
- when: () => !selectedLang
55
+ when: () => !selectedLang,
56
56
  },
57
57
  {
58
- type: 'list',
59
- name: 'template',
60
- message: 'Select template type:',
58
+ type: "list",
59
+ name: "template",
60
+ message: "Select template type:",
61
61
  choices: [
62
- { name: 'Agent', value: 'agent' },
63
- { name: 'Chatbot', value: 'chatbot' }
62
+ { name: "Agent", value: "agent" },
63
+ { name: "Chatbot", value: "chatbot" },
64
64
  ],
65
- when: () => !selectedTemplate
65
+ when: () => !selectedTemplate,
66
66
  },
67
67
  {
68
- type: 'input',
69
- name: 'agentName',
70
- message: 'Enter agent/chatbot name (must be a valid function name):',
68
+ type: "input",
69
+ name: "agentName",
70
+ message: "Enter agent/chatbot name (must be a valid function name):",
71
71
  when: () => !agentName,
72
72
  default: (answers) => {
73
73
  const type = selectedTemplate || answers.template;
74
- return type === 'agent' ? 'myAgent' : 'myChatbot';
74
+ return type === "agent"
75
+ ? "myAgent"
76
+ : "myChatbot";
75
77
  },
76
78
  validate: (input) => {
77
79
  if (!input.trim()) {
78
- return 'Agent name cannot be empty';
80
+ return "Agent name cannot be empty";
79
81
  }
80
82
  if (!(0, validation_1.isValidFunctionName)(input.trim())) {
81
- return 'Must be a valid function name (e.g., myAgent, chatBot123, my_agent)';
83
+ return "Must be a valid function name (e.g., myAgent, chatBot123, my_agent)";
82
84
  }
83
85
  return true;
84
- }
85
- }
86
+ },
87
+ },
86
88
  ]);
87
89
  selectedLang = selectedLang || answers.lang;
88
90
  selectedTemplate = selectedTemplate || answers.template;
@@ -96,28 +98,30 @@ function registerProjectCommand(generateCommand) {
96
98
  }
97
99
  // Set default agent name if not provided
98
100
  if (!agentName) {
99
- agentName = selectedTemplate === 'agent' ? 'myAgent' : 'myChatbot';
101
+ agentName =
102
+ selectedTemplate === "agent" ? "myAgent" : "myChatbot";
100
103
  }
101
104
  // Find matching template in local templates folder
102
105
  const templateMapping = {
103
- 'agent': 'base',
104
- 'chatbot': 'chatbot'
106
+ agent: "base",
107
+ chatbot: "chatbot",
105
108
  };
106
109
  const mappedTemplateType = templateMapping[selectedTemplate] || selectedTemplate;
107
110
  // Check if template directory exists
108
- const templatePath = path_1.default.resolve(__dirname, `../../../../templates/${mappedTemplateType}-${selectedLang}`);
111
+ console.log(__dirname);
112
+ const templatePath = path_1.default.resolve(__dirname, `../../../templates/${mappedTemplateType}-${selectedLang}`);
109
113
  if (!fs_1.default.existsSync(templatePath)) {
110
114
  spinner.fail(`Template not found: ${templatePath}`);
111
115
  // Show available templates
112
116
  const availableTemplates = (0, plopGenerator_1.listAvailableTemplates)();
113
117
  if (availableTemplates.length > 0) {
114
- console.log(chalk_1.default.yellow('Available templates:'));
118
+ console.log(chalk_1.default.yellow("Available templates:"));
115
119
  availableTemplates.forEach(template => {
116
120
  console.log(chalk_1.default.yellow(` - ${template}`));
117
121
  });
118
122
  }
119
123
  else {
120
- console.log(chalk_1.default.red('No templates found. Please add your templates to the templates directory.'));
124
+ console.log(chalk_1.default.red("No templates found. Please add your templates to the templates directory."));
121
125
  }
122
126
  return;
123
127
  }
@@ -126,12 +130,12 @@ function registerProjectCommand(generateCommand) {
126
130
  // Generate project using plop
127
131
  yield (0, plopGenerator_1.generateWithPlop)(selectedTemplate, selectedLang, folder, path_1.default.basename(folder), agentName);
128
132
  // Create nestbox.config.json for TypeScript projects
129
- (0, agent_1.createNestboxConfig)(folder, selectedLang === 'ts');
133
+ (0, agent_1.createNestboxConfig)(folder, selectedLang === "ts");
130
134
  spinner.succeed(`Successfully generated ${mappedTemplateType} project in ${folder}`);
131
135
  console.log(chalk_1.default.green("\nNext steps:"));
132
136
  console.log(chalk_1.default.yellow(` cd ${folder}`));
133
137
  console.log(chalk_1.default.yellow(" npm install"));
134
- if (selectedLang === 'ts') {
138
+ if (selectedLang === "ts") {
135
139
  console.log(chalk_1.default.yellow(" npm run build"));
136
140
  }
137
141
  console.log(chalk_1.default.yellow(" nestbox agent deploy --agent <agent-name> --instance <instance-name>"));
@@ -1 +1 @@
1
- {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/generate/project.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/generate/project.ts"],"names":[],"mappings":"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"}
@@ -64,9 +64,10 @@ function findProjectRoot() {
64
64
  return __awaiter(this, arguments, void 0, function* (startDir = process.cwd()) {
65
65
  let currentDir = startDir;
66
66
  while (currentDir !== path_1.default.parse(currentDir).root) {
67
- const nestboxConfigPath = path_1.default.join(currentDir, 'nestbox.config.json');
68
- const packageJsonPath = path_1.default.join(currentDir, 'package.json');
69
- if (fs_1.default.existsSync(nestboxConfigPath) || fs_1.default.existsSync(packageJsonPath)) {
67
+ const nestboxConfigPath = path_1.default.join(currentDir, "nestbox.config.json");
68
+ const packageJsonPath = path_1.default.join(currentDir, "package.json");
69
+ if (fs_1.default.existsSync(nestboxConfigPath) ||
70
+ fs_1.default.existsSync(packageJsonPath)) {
70
71
  return currentDir;
71
72
  }
72
73
  currentDir = path_1.default.dirname(currentDir);
@@ -76,10 +77,10 @@ function findProjectRoot() {
76
77
  }
77
78
  // Function to load and parse nestbox.config.json if it exists
78
79
  function loadNestboxConfig(projectRoot) {
79
- const configPath = path_1.default.join(projectRoot, 'nestbox.config.json');
80
+ const configPath = path_1.default.join(projectRoot, "nestbox.config.json");
80
81
  if (fs_1.default.existsSync(configPath)) {
81
82
  try {
82
- const configContent = fs_1.default.readFileSync(configPath, 'utf8');
83
+ const configContent = fs_1.default.readFileSync(configPath, "utf8");
83
84
  return JSON.parse(configContent);
84
85
  }
85
86
  catch (error) {
@@ -91,13 +92,13 @@ function loadNestboxConfig(projectRoot) {
91
92
  // Function to detect if a directory contains TypeScript files
92
93
  function isTypeScriptProject(directoryPath) {
93
94
  // Check for tsconfig.json
94
- if (fs_1.default.existsSync(path_1.default.join(directoryPath, 'tsconfig.json'))) {
95
+ if (fs_1.default.existsSync(path_1.default.join(directoryPath, "tsconfig.json"))) {
95
96
  return true;
96
97
  }
97
98
  // Check for .ts files
98
99
  try {
99
100
  const files = fs_1.default.readdirSync(directoryPath);
100
- return files.some(file => file.endsWith('.ts') || file.endsWith('.tsx'));
101
+ return files.some(file => file.endsWith(".ts") || file.endsWith(".tsx"));
101
102
  }
102
103
  catch (error) {
103
104
  return false;
@@ -108,7 +109,7 @@ function runPredeployScripts(scripts, projectRoot) {
108
109
  if (!scripts || !Array.isArray(scripts) || scripts.length === 0) {
109
110
  return;
110
111
  }
111
- const spinner = (0, ora_1.default)('Running predeploy scripts...').start();
112
+ const spinner = (0, ora_1.default)("Running predeploy scripts...").start();
112
113
  try {
113
114
  for (const script of scripts) {
114
115
  spinner.text = `Running: ${script}`;
@@ -117,7 +118,7 @@ function runPredeployScripts(scripts, projectRoot) {
117
118
  cwd: projectRoot,
118
119
  });
119
120
  }
120
- spinner.succeed('Predeploy scripts completed successfully');
121
+ spinner.succeed("Predeploy scripts completed successfully");
121
122
  }
122
123
  catch (error) {
123
124
  spinner.fail(`Predeploy script failed: ${error.message}`);
@@ -125,21 +126,22 @@ function runPredeployScripts(scripts, projectRoot) {
125
126
  }
126
127
  });
127
128
  }
128
- function createZipFromDirectory(dirPath, excludePatterns = ['node_modules']) {
129
+ function createZipFromDirectory(dirPath, excludePatterns = ["node_modules"]) {
129
130
  const dirName = path_1.default.basename(dirPath);
130
131
  const timestamp = Date.now();
131
132
  // Create zip in temp directory
132
133
  const tempZipFilePath = path_1.default.join(os.tmpdir(), `${dirName}_${timestamp}.zip`);
133
134
  const zip = new adm_zip_1.default();
134
135
  // Function to recursively add files to zip
135
- function addFilesToZip(currentPath, relativePath = '') {
136
+ function addFilesToZip(currentPath, relativePath = "") {
136
137
  const items = fs_1.default.readdirSync(currentPath);
137
138
  for (const item of items) {
138
139
  const itemPath = path_1.default.join(currentPath, item);
139
140
  const itemRelativePath = path_1.default.join(relativePath, item);
140
141
  // Check if item should be excluded
141
- if (excludePatterns.some((pattern) => typeof pattern === 'string' ? itemRelativePath === pattern || item === pattern :
142
- pattern.test(itemRelativePath))) {
142
+ if (excludePatterns.some((pattern) => typeof pattern === "string"
143
+ ? itemRelativePath === pattern || item === pattern
144
+ : pattern.test(itemRelativePath))) {
143
145
  continue;
144
146
  }
145
147
  const stats = fs_1.default.statSync(itemPath);
@@ -160,15 +162,11 @@ function createZipFromDirectory(dirPath, excludePatterns = ['node_modules']) {
160
162
  function createNestboxConfig(projectPath, isTypeScript) {
161
163
  if (!isTypeScript)
162
164
  return;
163
- const configPath = path_1.default.join(projectPath, 'nestbox.config.json');
165
+ const configPath = path_1.default.join(projectPath, "nestbox.config.json");
164
166
  const config = {
165
167
  agents: {
166
- predeploy: [
167
- 'rm -rf dist',
168
- 'npm run lint',
169
- 'npm run build'
170
- ]
171
- }
168
+ predeploy: ["rm -rf dist", "npm run lint", "npm run build"],
169
+ },
172
170
  };
173
171
  fs_1.default.writeFileSync(configPath, JSON.stringify(config, null, 2));
174
172
  console.log(chalk_1.default.green(`Created nestbox.config.json at ${configPath}`));
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/utils/agent.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nestbox-ai/cli",
3
- "version": "1.0.37",
3
+ "version": "1.0.39",
4
4
  "description": "The cli tools that helps developers to build agents",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -48,9 +48,10 @@
48
48
  "vitest": "^1.1.0"
49
49
  },
50
50
  "dependencies": {
51
- "@nestbox-ai/admin": "1.0.42",
51
+ "@nestbox-ai/admin": "1.0.50",
52
52
  "@types/js-yaml": "^4.0.9",
53
53
  "adm-zip": "^0.5.16",
54
+ "ajv": "^8.17.1",
54
55
  "archiver": "^7.0.1",
55
56
  "axios": "^1.8.4",
56
57
  "chalk": "^4.1.2",
@@ -1,24 +1,113 @@
1
- import { MachineAgentApi, MachineInstancesApi, ProjectsApi } from "@nestbox-ai/admin";
1
+ import {
2
+ MachineAgentApi,
3
+ MachineInstancesApi,
4
+ ProjectsApi,
5
+ } from "@nestbox-ai/admin";
2
6
  import { setupAuthAndConfig } from "../../utils/api";
7
+ import fs from "fs/promises";
8
+ import path from "path";
9
+ import yaml from "js-yaml";
10
+ import Ajv from "ajv";
11
+ import { yamlSchema } from "./yaml-schema";
3
12
 
4
13
  export interface ApiInstances {
5
- agentsApi: MachineAgentApi;
6
- projectsApi: ProjectsApi;
7
- instanceApi: MachineInstancesApi;
14
+ agentsApi: MachineAgentApi;
15
+ projectsApi: ProjectsApi;
16
+ instanceApi: MachineInstancesApi;
8
17
  }
9
18
 
10
19
  /**
11
20
  * Create API instances with current authentication using setupAuthAndConfig
12
21
  */
13
22
  export function createApis(): ApiInstances {
14
- const authResult = setupAuthAndConfig();
15
- if (!authResult) {
16
- throw new Error('No authentication token found. Please log in first.');
17
- }
18
-
19
- return {
20
- agentsApi: new MachineAgentApi(authResult.configuration),
21
- projectsApi: new ProjectsApi(authResult.configuration),
22
- instanceApi: new MachineInstancesApi(authResult.configuration)
23
- };
23
+ const authResult = setupAuthAndConfig();
24
+ if (!authResult) {
25
+ throw new Error("No authentication token found. Please log in first.");
26
+ }
27
+
28
+ return {
29
+ agentsApi: new MachineAgentApi(authResult.configuration),
30
+ projectsApi: new ProjectsApi(authResult.configuration),
31
+ instanceApi: new MachineInstancesApi(authResult.configuration),
32
+ };
33
+ }
34
+
35
+ const ajv = new Ajv({ strict: false });
36
+ const validate = ajv.compile(yamlSchema);
37
+
38
+ export type ManifestAgent = {
39
+ name: string;
40
+ description: string;
41
+ entry: string;
42
+ type?: "REGULAR" | "CHATBOT" | "WORKFLOW";
43
+ inputSchema: {
44
+ type: "object";
45
+ properties: Record<
46
+ string,
47
+ {
48
+ type: string;
49
+ description?: string;
50
+ default?: string | number | boolean | null;
51
+ }
52
+ >;
53
+ required?: string[];
54
+ };
55
+ };
56
+
57
+ export type ManifestFile = { agents: ManifestAgent[] };
58
+
59
+ export async function loadAgentFromYaml(
60
+ agentName: string
61
+ ): Promise<ManifestAgent | undefined> {
62
+ const file = path.join(process.cwd(), "nestbox-agents.yaml");
63
+
64
+ try {
65
+ await fs.access(file);
66
+ } catch (err: any) {
67
+ if (err?.code === "ENOENT") return undefined;
68
+ throw new Error(`cannot access nestbox-agents.yaml: ${err.message}`);
69
+ }
70
+
71
+ const raw = await fs.readFile(file, "utf8");
72
+ const doc = yaml.load(raw) as unknown;
73
+
74
+ if (!validate(doc)) {
75
+ const msg = ajv.errorsText(validate.errors, { separator: "\n- " });
76
+ throw new Error(`invalid nestbox-agents.yaml:\n- ${msg}`);
77
+ }
78
+
79
+ const mf = doc as ManifestFile;
80
+ return mf.agents.find(a => a?.name === agentName);
81
+ }
82
+
83
+ export async function loadAllAgentNamesFromYaml(): Promise<string[]> {
84
+ const file = path.join(process.cwd(), "nestbox-agents.yaml");
85
+
86
+ try {
87
+ await fs.access(file);
88
+ } catch (err: any) {
89
+ if (err?.code === "ENOENT") return [];
90
+ throw new Error(`cannot access nestbox-agents.yaml: ${err.message}`);
91
+ }
92
+
93
+ const raw = await fs.readFile(file, "utf8");
94
+ const doc = yaml.load(raw) as unknown;
95
+
96
+ if (!validate(doc)) {
97
+ const msg = ajv.errorsText(validate.errors, { separator: "\n- " });
98
+ throw new Error(`invalid nestbox-agents.yaml:\n- ${msg}`);
99
+ }
100
+
101
+ const mf = doc as ManifestFile;
102
+ const names = Array.isArray(mf?.agents)
103
+ ? (mf.agents.map(a => a?.name).filter(Boolean) as string[])
104
+ : [];
105
+
106
+ // de-duplicate by name, keep first occurrence
107
+ const seen = new Set<string>();
108
+ return names.filter(n => {
109
+ if (seen.has(n)) return false;
110
+ seen.add(n);
111
+ return true;
112
+ });
24
113
  }