@nestbox-ai/cli 1.0.34 → 1.0.36
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/GETTING_STARTED.md +158 -0
- package/dist/commands/agent/index.d.ts +0 -1
- package/dist/commands/agent/index.js +1 -3
- package/dist/commands/agent/index.js.map +1 -1
- package/dist/commands/agent.js +0 -2
- package/dist/commands/agent.js.map +1 -1
- package/dist/commands/generate/project.d.ts +2 -0
- package/dist/commands/{agent/generate.js → generate/project.js} +6 -6
- package/dist/commands/generate/project.js.map +1 -0
- package/dist/commands/generate.d.ts +5 -0
- package/dist/commands/generate.js +16 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/commands/agent/index.ts +0 -1
- package/src/commands/agent.ts +0 -2
- package/src/commands/{agent/generate.ts → generate/project.ts} +4 -4
- package/src/commands/generate.ts +15 -0
- package/src/index.ts +2 -0
- package/test/agent.test.ts +1 -16
- package/test/generate.test.ts +67 -0
- package/dist/commands/agent/generate.d.ts +0 -2
- package/dist/commands/agent/generate.js.map +0 -1
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# Getting Started with Nestbox CLI
|
|
2
|
+
|
|
3
|
+
Welcome to the Nestbox CLI! This guide will get you up and running with building, managing, and deploying AI agents on the Nestbox platform.
|
|
4
|
+
|
|
5
|
+
## Prerequisites
|
|
6
|
+
|
|
7
|
+
- Node.js 18+ installed
|
|
8
|
+
- A Nestbox platform account
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npm install -g @nestbox-ai/cli
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## Quick Start
|
|
17
|
+
|
|
18
|
+
### 1. Login to Nestbox
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
nestbox login demo.nestbox.com
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
This opens your browser for Google SSO authentication. Once authenticated, your credentials are stored locally.
|
|
25
|
+
|
|
26
|
+
### 2. Manage Projects
|
|
27
|
+
|
|
28
|
+
List your projects:
|
|
29
|
+
```bash
|
|
30
|
+
nestbox project list
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Switch to a project:
|
|
34
|
+
```bash
|
|
35
|
+
nestbox project use <project-name>
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
Add a new project:
|
|
39
|
+
```bash
|
|
40
|
+
nestbox project add <project-name> [alias]
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### 3. Check Available Compute
|
|
44
|
+
|
|
45
|
+
List available compute resources:
|
|
46
|
+
```bash
|
|
47
|
+
nestbox compute list
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
Check compute status:
|
|
51
|
+
```bash
|
|
52
|
+
nestbox compute status <compute-id>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 4. Generate Agent Projects
|
|
56
|
+
|
|
57
|
+
Create a new agent project from templates:
|
|
58
|
+
```bash
|
|
59
|
+
nestbox generate project <folder-name>
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Available templates:
|
|
63
|
+
- `base-js` - Basic JavaScript agent
|
|
64
|
+
- `base-ts` - Basic TypeScript agent
|
|
65
|
+
- `chatbot-js` - JavaScript chatbot agent
|
|
66
|
+
- `chatbot-ts` - TypeScript chatbot agent
|
|
67
|
+
|
|
68
|
+
### 5. Deploy Your Agent
|
|
69
|
+
|
|
70
|
+
From your agent directory:
|
|
71
|
+
```bash
|
|
72
|
+
nestbox agent deploy
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
List deployed agents:
|
|
76
|
+
```bash
|
|
77
|
+
nestbox agent list
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Remove an agent:
|
|
81
|
+
```bash
|
|
82
|
+
nestbox agent remove
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Common Workflows
|
|
86
|
+
|
|
87
|
+
### Development Cycle
|
|
88
|
+
```bash
|
|
89
|
+
# Generate agent project
|
|
90
|
+
nestbox generate project my-agent
|
|
91
|
+
|
|
92
|
+
# Develop locally
|
|
93
|
+
cd my-agent
|
|
94
|
+
npm install
|
|
95
|
+
npm run dev
|
|
96
|
+
|
|
97
|
+
# Deploy to staging
|
|
98
|
+
nestbox agent deploy --env staging
|
|
99
|
+
|
|
100
|
+
# Test and validate
|
|
101
|
+
nestbox agent list
|
|
102
|
+
|
|
103
|
+
# Deploy to production
|
|
104
|
+
nestbox agent deploy --env production
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Managing Documents
|
|
108
|
+
```bash
|
|
109
|
+
# Upload documents for agent context
|
|
110
|
+
nestbox document upload ./docs/*.pdf
|
|
111
|
+
|
|
112
|
+
# List uploaded documents
|
|
113
|
+
nestbox document list
|
|
114
|
+
|
|
115
|
+
# Delete documents
|
|
116
|
+
nestbox document delete <document-id>
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Managing Images
|
|
120
|
+
```bash
|
|
121
|
+
# Build and push custom images
|
|
122
|
+
nestbox image build
|
|
123
|
+
|
|
124
|
+
# List available images
|
|
125
|
+
nestbox image list
|
|
126
|
+
|
|
127
|
+
# Use custom image in agent
|
|
128
|
+
nestbox agent deploy --image <image-id>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Configuration
|
|
132
|
+
|
|
133
|
+
The CLI stores configuration in `.nestboxrc` in your home directory. You can also use project-specific configuration by creating a `nestbox.config.json` file:
|
|
134
|
+
|
|
135
|
+
```json
|
|
136
|
+
{
|
|
137
|
+
"project": "your-project-id",
|
|
138
|
+
"defaultCompute": "your-compute-id",
|
|
139
|
+
"environment": "staging"
|
|
140
|
+
}
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
## Help & Documentation
|
|
144
|
+
|
|
145
|
+
Get help for any command:
|
|
146
|
+
```bash
|
|
147
|
+
nestbox --help
|
|
148
|
+
nestbox agent --help
|
|
149
|
+
nestbox project --help
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Next Steps
|
|
153
|
+
|
|
154
|
+
- Check out the [Nestbox AI developers site](https://developers.nestbox.ai) for detailed documentation
|
|
155
|
+
- Explore the example agents in the templates directory
|
|
156
|
+
- Join our developer community for support and best practices
|
|
157
|
+
|
|
158
|
+
Happy building! 🚀
|
|
@@ -2,6 +2,5 @@ export { createAgent, type CreateAgentOptions } from "./create";
|
|
|
2
2
|
export { registerListCommand } from "./list";
|
|
3
3
|
export { registerRemoveCommand } from "./remove";
|
|
4
4
|
export { registerDeployCommand } from "./deploy";
|
|
5
|
-
export { registerGenerateCommand } from "./generate";
|
|
6
5
|
export { registerCreateFromYamlCommand } from "./createFromYaml";
|
|
7
6
|
export { createApis, type ApiInstances } from "./apiUtils";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.createApis = exports.registerCreateFromYamlCommand = exports.
|
|
3
|
+
exports.createApis = exports.registerCreateFromYamlCommand = exports.registerDeployCommand = exports.registerRemoveCommand = exports.registerListCommand = exports.createAgent = void 0;
|
|
4
4
|
// Main agent command exports
|
|
5
5
|
var create_1 = require("./create");
|
|
6
6
|
Object.defineProperty(exports, "createAgent", { enumerable: true, get: function () { return create_1.createAgent; } });
|
|
@@ -11,8 +11,6 @@ var remove_1 = require("./remove");
|
|
|
11
11
|
Object.defineProperty(exports, "registerRemoveCommand", { enumerable: true, get: function () { return remove_1.registerRemoveCommand; } });
|
|
12
12
|
var deploy_1 = require("./deploy");
|
|
13
13
|
Object.defineProperty(exports, "registerDeployCommand", { enumerable: true, get: function () { return deploy_1.registerDeployCommand; } });
|
|
14
|
-
var generate_1 = require("./generate");
|
|
15
|
-
Object.defineProperty(exports, "registerGenerateCommand", { enumerable: true, get: function () { return generate_1.registerGenerateCommand; } });
|
|
16
14
|
var createFromYaml_1 = require("./createFromYaml");
|
|
17
15
|
Object.defineProperty(exports, "registerCreateFromYamlCommand", { enumerable: true, get: function () { return createFromYaml_1.registerCreateFromYamlCommand; } });
|
|
18
16
|
// API utilities
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,mCAAgE;AAAvD,qGAAA,WAAW,OAAA;AAEpB,wDAAwD;AACxD,+BAA6C;AAApC,2GAAA,mBAAmB,OAAA;AAC5B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/agent/index.ts"],"names":[],"mappings":";;;AAAA,6BAA6B;AAC7B,mCAAgE;AAAvD,qGAAA,WAAW,OAAA;AAEpB,wDAAwD;AACxD,+BAA6C;AAApC,2GAAA,mBAAmB,OAAA;AAC5B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,mCAAiD;AAAxC,+GAAA,qBAAqB,OAAA;AAC9B,mDAAiE;AAAxD,+HAAA,6BAA6B,OAAA;AAEtC,gBAAgB;AAChB,uCAA2D;AAAlD,sGAAA,UAAU,OAAA"}
|
package/dist/commands/agent.js
CHANGED
|
@@ -4,7 +4,6 @@ exports.registerAgentCommands = registerAgentCommands;
|
|
|
4
4
|
const list_1 = require("./agent/list");
|
|
5
5
|
const remove_1 = require("./agent/remove");
|
|
6
6
|
const deploy_1 = require("./agent/deploy");
|
|
7
|
-
const generate_1 = require("./agent/generate");
|
|
8
7
|
const createFromYaml_1 = require("./agent/createFromYaml");
|
|
9
8
|
/**
|
|
10
9
|
* Register all agent-related commands
|
|
@@ -18,7 +17,6 @@ function registerAgentCommands(program) {
|
|
|
18
17
|
(0, list_1.registerListCommand)(agentCommand);
|
|
19
18
|
(0, remove_1.registerRemoveCommand)(agentCommand);
|
|
20
19
|
(0, deploy_1.registerDeployCommand)(agentCommand);
|
|
21
|
-
(0, generate_1.registerGenerateCommand)(agentCommand);
|
|
22
20
|
(0, createFromYaml_1.registerCreateFromYamlCommand)(agentCommand);
|
|
23
21
|
}
|
|
24
22
|
//# sourceMappingURL=agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../src/commands/agent.ts"],"names":[],"mappings":";;
|
|
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"}
|
|
@@ -12,7 +12,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
12
12
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
13
|
};
|
|
14
14
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
-
exports.
|
|
15
|
+
exports.registerProjectCommand = registerProjectCommand;
|
|
16
16
|
const chalk_1 = __importDefault(require("chalk"));
|
|
17
17
|
const ora_1 = __importDefault(require("ora"));
|
|
18
18
|
const fs_1 = __importDefault(require("fs"));
|
|
@@ -21,9 +21,9 @@ const plopGenerator_1 = require("../../utils/plopGenerator");
|
|
|
21
21
|
const validation_1 = require("../../utils/validation");
|
|
22
22
|
const inquirer_1 = __importDefault(require("inquirer"));
|
|
23
23
|
const path_1 = __importDefault(require("path"));
|
|
24
|
-
function
|
|
25
|
-
|
|
26
|
-
.command("
|
|
24
|
+
function registerProjectCommand(generateCommand) {
|
|
25
|
+
generateCommand
|
|
26
|
+
.command("project <folder>")
|
|
27
27
|
.description("Generate a new project from templates")
|
|
28
28
|
.option("--lang <language>", "Project language (ts|js)")
|
|
29
29
|
.option("--template <type>", "Template type (agent|chatbot)")
|
|
@@ -105,7 +105,7 @@ function registerGenerateCommand(agentCommand) {
|
|
|
105
105
|
};
|
|
106
106
|
const mappedTemplateType = templateMapping[selectedTemplate] || selectedTemplate;
|
|
107
107
|
// Check if template directory exists
|
|
108
|
-
const templatePath = path_1.default.resolve(__dirname,
|
|
108
|
+
const templatePath = path_1.default.resolve(__dirname, `../../../../templates/${mappedTemplateType}-${selectedLang}`);
|
|
109
109
|
if (!fs_1.default.existsSync(templatePath)) {
|
|
110
110
|
spinner.fail(`Template not found: ${templatePath}`);
|
|
111
111
|
// Show available templates
|
|
@@ -149,4 +149,4 @@ function registerGenerateCommand(agentCommand) {
|
|
|
149
149
|
}
|
|
150
150
|
}));
|
|
151
151
|
}
|
|
152
|
-
//# sourceMappingURL=
|
|
152
|
+
//# sourceMappingURL=project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../../src/commands/generate/project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.registerGenerateCommands = registerGenerateCommands;
|
|
4
|
+
const project_1 = require("./generate/project");
|
|
5
|
+
/**
|
|
6
|
+
* Register all generate-related commands
|
|
7
|
+
*/
|
|
8
|
+
function registerGenerateCommands(program) {
|
|
9
|
+
// Create the main generate command
|
|
10
|
+
const generateCommand = program
|
|
11
|
+
.command("generate")
|
|
12
|
+
.description("Generate new projects and components");
|
|
13
|
+
// Register all subcommands
|
|
14
|
+
(0, project_1.registerProjectCommand)(generateCommand);
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=generate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/commands/generate.ts"],"names":[],"mappings":";;AAMA,4DAQC;AAbD,gDAA4D;AAE5D;;GAEG;AACH,SAAgB,wBAAwB,CAAC,OAAgB;IACvD,mCAAmC;IACnC,MAAM,eAAe,GAAG,OAAO;SAC5B,OAAO,CAAC,UAAU,CAAC;SACnB,WAAW,CAAC,sCAAsC,CAAC,CAAC;IAEvD,2BAA2B;IAC3B,IAAA,gCAAsB,EAAC,eAAe,CAAC,CAAC;AAC1C,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -10,6 +10,7 @@ const compute_1 = require("./commands/compute");
|
|
|
10
10
|
const document_1 = require("./commands/document");
|
|
11
11
|
const image_1 = require("./commands/image");
|
|
12
12
|
const agent_1 = require("./commands/agent");
|
|
13
|
+
const generate_1 = require("./commands/generate");
|
|
13
14
|
// Read version from package.json
|
|
14
15
|
const packageJson = JSON.parse((0, fs_1.readFileSync)((0, path_1.join)(__dirname, '../package.json'), 'utf8'));
|
|
15
16
|
// Setup the CLI program
|
|
@@ -23,6 +24,7 @@ program
|
|
|
23
24
|
(0, project_1.registerProjectCommands)(program);
|
|
24
25
|
(0, compute_1.registerComputeProgram)(program);
|
|
25
26
|
(0, agent_1.registerAgentCommands)(program);
|
|
27
|
+
(0, generate_1.registerGenerateCommands)(program);
|
|
26
28
|
(0, document_1.registerDocumentCommands)(program);
|
|
27
29
|
(0, image_1.registerImageCommands)(program);
|
|
28
30
|
// Parse command line arguments
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,+BAA4B;AAC5B,0CAAuD;AACvD,gDAA6D;AAC7D,gDAA4D;AAC5D,kDAA+D;AAC/D,4CAAyD;AACzD,4CAAyD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AAEA,yCAAoC;AACpC,2BAAkC;AAClC,+BAA4B;AAC5B,0CAAuD;AACvD,gDAA6D;AAC7D,gDAA4D;AAC5D,kDAA+D;AAC/D,4CAAyD;AACzD,4CAAyD;AACzD,kDAA+D;AAE/D,iCAAiC;AACjC,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,IAAA,iBAAY,EAAC,IAAA,WAAI,EAAC,SAAS,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;AAEzF,wBAAwB;AACxB,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAC9B,OAAO;KACJ,IAAI,CAAC,SAAS,CAAC;KACf,WAAW,CAAC,sCAAsC,CAAC;KACnD,OAAO,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEhC,0BAA0B;AAC1B,IAAA,2BAAoB,EAAC,OAAO,CAAC,CAAC;AAC9B,IAAA,iCAAuB,EAAC,OAAO,CAAC,CAAC;AACjC,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;AAChC,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;AAC/B,IAAA,mCAAwB,EAAC,OAAO,CAAC,CAAC;AAClC,IAAA,mCAAwB,EAAC,OAAO,CAAC,CAAC;AAClC,IAAA,6BAAqB,EAAC,OAAO,CAAC,CAAC;AAE/B,+BAA+B;AAC/B,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAE5B,+CAA+C;AAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;IAC9B,OAAO,CAAC,IAAI,EAAE,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -5,7 +5,6 @@ export { createAgent, type CreateAgentOptions } from "./create";
|
|
|
5
5
|
export { registerListCommand } from "./list";
|
|
6
6
|
export { registerRemoveCommand } from "./remove";
|
|
7
7
|
export { registerDeployCommand } from "./deploy";
|
|
8
|
-
export { registerGenerateCommand } from "./generate";
|
|
9
8
|
export { registerCreateFromYamlCommand } from "./createFromYaml";
|
|
10
9
|
|
|
11
10
|
// API utilities
|
package/src/commands/agent.ts
CHANGED
|
@@ -2,7 +2,6 @@ import { Command } from "commander";
|
|
|
2
2
|
import { registerListCommand } from "./agent/list";
|
|
3
3
|
import { registerRemoveCommand } from "./agent/remove";
|
|
4
4
|
import { registerDeployCommand } from "./agent/deploy";
|
|
5
|
-
import { registerGenerateCommand } from "./agent/generate";
|
|
6
5
|
import { registerCreateFromYamlCommand } from "./agent/createFromYaml";
|
|
7
6
|
|
|
8
7
|
/**
|
|
@@ -18,6 +17,5 @@ export function registerAgentCommands(program: Command): void {
|
|
|
18
17
|
registerListCommand(agentCommand);
|
|
19
18
|
registerRemoveCommand(agentCommand);
|
|
20
19
|
registerDeployCommand(agentCommand);
|
|
21
|
-
registerGenerateCommand(agentCommand);
|
|
22
20
|
registerCreateFromYamlCommand(agentCommand);
|
|
23
21
|
}
|
|
@@ -10,9 +10,9 @@ import { isValidFunctionName } from "../../utils/validation";
|
|
|
10
10
|
import inquirer from "inquirer";
|
|
11
11
|
import path from "path";
|
|
12
12
|
|
|
13
|
-
export function
|
|
14
|
-
|
|
15
|
-
.command("
|
|
13
|
+
export function registerProjectCommand(generateCommand: Command): void {
|
|
14
|
+
generateCommand
|
|
15
|
+
.command("project <folder>")
|
|
16
16
|
.description("Generate a new project from templates")
|
|
17
17
|
.option("--lang <language>", "Project language (ts|js)")
|
|
18
18
|
.option("--template <type>", "Template type (agent|chatbot)")
|
|
@@ -104,7 +104,7 @@ export function registerGenerateCommand(agentCommand: Command): void {
|
|
|
104
104
|
const mappedTemplateType = templateMapping[selectedTemplate] || selectedTemplate;
|
|
105
105
|
|
|
106
106
|
// Check if template directory exists
|
|
107
|
-
const templatePath = path.resolve(__dirname,
|
|
107
|
+
const templatePath = path.resolve(__dirname, `../../../../templates/${mappedTemplateType}-${selectedLang}`);
|
|
108
108
|
|
|
109
109
|
if (!fs.existsSync(templatePath)) {
|
|
110
110
|
spinner.fail(`Template not found: ${templatePath}`);
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { registerProjectCommand } from "./generate/project";
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Register all generate-related commands
|
|
6
|
+
*/
|
|
7
|
+
export function registerGenerateCommands(program: Command): void {
|
|
8
|
+
// Create the main generate command
|
|
9
|
+
const generateCommand = program
|
|
10
|
+
.command("generate")
|
|
11
|
+
.description("Generate new projects and components");
|
|
12
|
+
|
|
13
|
+
// Register all subcommands
|
|
14
|
+
registerProjectCommand(generateCommand);
|
|
15
|
+
}
|
package/src/index.ts
CHANGED
|
@@ -9,6 +9,7 @@ import { registerComputeProgram } from './commands/compute';
|
|
|
9
9
|
import { registerDocumentCommands } from './commands/document';
|
|
10
10
|
import { registerImageCommands } from './commands/image';
|
|
11
11
|
import { registerAgentCommands } from './commands/agent';
|
|
12
|
+
import { registerGenerateCommands } from './commands/generate';
|
|
12
13
|
|
|
13
14
|
// Read version from package.json
|
|
14
15
|
const packageJson = JSON.parse(readFileSync(join(__dirname, '../package.json'), 'utf8'));
|
|
@@ -25,6 +26,7 @@ registerAuthCommands(program);
|
|
|
25
26
|
registerProjectCommands(program);
|
|
26
27
|
registerComputeProgram(program);
|
|
27
28
|
registerAgentCommands(program);
|
|
29
|
+
registerGenerateCommands(program);
|
|
28
30
|
registerDocumentCommands(program);
|
|
29
31
|
registerImageCommands(program);
|
|
30
32
|
|
package/test/agent.test.ts
CHANGED
|
@@ -78,20 +78,6 @@ describe('Agent Commands', () => {
|
|
|
78
78
|
expect(instanceOption).toBeDefined();
|
|
79
79
|
});
|
|
80
80
|
|
|
81
|
-
it('should register agent generate subcommand', () => {
|
|
82
|
-
registerAgentCommands(program);
|
|
83
|
-
|
|
84
|
-
const agentCommand = program.commands.find(cmd => cmd.name() === 'agent');
|
|
85
|
-
const subCommands = agentCommand?.commands || [];
|
|
86
|
-
const generateCommand = subCommands.find(cmd => cmd.name() === 'generate');
|
|
87
|
-
|
|
88
|
-
expect(generateCommand).toBeDefined();
|
|
89
|
-
expect(generateCommand?.description()).toBe('Generate a new project from templates');
|
|
90
|
-
|
|
91
|
-
// Check that folder is an argument (it's in command name: "generate <folder>")
|
|
92
|
-
expect(generateCommand?.name()).toBe('generate');
|
|
93
|
-
});
|
|
94
|
-
|
|
95
81
|
it('should register agent create subcommand', () => {
|
|
96
82
|
registerAgentCommands(program);
|
|
97
83
|
|
|
@@ -121,9 +107,8 @@ describe('Agent Commands', () => {
|
|
|
121
107
|
expect(subCommandNames).toContain('list');
|
|
122
108
|
expect(subCommandNames).toContain('remove');
|
|
123
109
|
expect(subCommandNames).toContain('deploy');
|
|
124
|
-
expect(subCommandNames).toContain('generate');
|
|
125
110
|
expect(subCommandNames).toContain('create');
|
|
126
|
-
expect(subCommandNames).toHaveLength(
|
|
111
|
+
expect(subCommandNames).toHaveLength(4);
|
|
127
112
|
});
|
|
128
113
|
|
|
129
114
|
it('should have proper action functions for all subcommands', () => {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
2
|
+
import { Command } from 'commander';
|
|
3
|
+
import { registerGenerateCommands } from '../src/commands/generate';
|
|
4
|
+
|
|
5
|
+
describe('Generate Commands', () => {
|
|
6
|
+
let program: Command;
|
|
7
|
+
|
|
8
|
+
beforeEach(() => {
|
|
9
|
+
program = new Command();
|
|
10
|
+
vi.clearAllMocks();
|
|
11
|
+
});
|
|
12
|
+
|
|
13
|
+
describe('registerGenerateCommands', () => {
|
|
14
|
+
it('should register generate command group', () => {
|
|
15
|
+
registerGenerateCommands(program);
|
|
16
|
+
|
|
17
|
+
const commands = program.commands;
|
|
18
|
+
const generateCommand = commands.find(cmd => cmd.name() === 'generate');
|
|
19
|
+
|
|
20
|
+
expect(generateCommand).toBeDefined();
|
|
21
|
+
expect(generateCommand?.description()).toBe('Generate new projects and components');
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
it('should register generate project subcommand', () => {
|
|
25
|
+
registerGenerateCommands(program);
|
|
26
|
+
|
|
27
|
+
const generateCommand = program.commands.find(cmd => cmd.name() === 'generate');
|
|
28
|
+
const subCommands = generateCommand?.commands || [];
|
|
29
|
+
const projectCommand = subCommands.find(cmd => cmd.name() === 'project');
|
|
30
|
+
|
|
31
|
+
expect(projectCommand).toBeDefined();
|
|
32
|
+
expect(projectCommand?.description()).toBe('Generate a new project from templates');
|
|
33
|
+
|
|
34
|
+
// Check that folder is an argument (it's in command name: "project <folder>")
|
|
35
|
+
expect(projectCommand?.name()).toBe('project');
|
|
36
|
+
|
|
37
|
+
// Check options
|
|
38
|
+
const options = projectCommand?.options || [];
|
|
39
|
+
const langOption = options.find(opt => opt.long === '--lang');
|
|
40
|
+
const templateOption = options.find(opt => opt.long === '--template');
|
|
41
|
+
const nameOption = options.find(opt => opt.long === '--name');
|
|
42
|
+
const projectOption = options.find(opt => opt.long === '--project');
|
|
43
|
+
|
|
44
|
+
expect(langOption).toBeDefined();
|
|
45
|
+
expect(langOption?.description).toBe('Project language (ts|js)');
|
|
46
|
+
|
|
47
|
+
expect(templateOption).toBeDefined();
|
|
48
|
+
expect(templateOption?.description).toBe('Template type (agent|chatbot)');
|
|
49
|
+
|
|
50
|
+
expect(nameOption).toBeDefined();
|
|
51
|
+
expect(nameOption?.description).toBe('Agent/Chatbot name (must be a valid function name)');
|
|
52
|
+
|
|
53
|
+
expect(projectOption).toBeDefined();
|
|
54
|
+
expect(projectOption?.description).toBe('Project ID');
|
|
55
|
+
});
|
|
56
|
+
|
|
57
|
+
it('should contain expected subcommands', () => {
|
|
58
|
+
registerGenerateCommands(program);
|
|
59
|
+
|
|
60
|
+
const generateCommand = program.commands.find(cmd => cmd.name() === 'generate');
|
|
61
|
+
const subCommands = generateCommand?.commands || [];
|
|
62
|
+
const subCommandNames = subCommands.map(cmd => cmd.name());
|
|
63
|
+
|
|
64
|
+
expect(subCommandNames).toContain('project');
|
|
65
|
+
});
|
|
66
|
+
});
|
|
67
|
+
});
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/commands/agent/generate.ts"],"names":[],"mappings":"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"}
|