@agentage/cli 0.1.1 → 0.1.6
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/README.md +244 -48
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/cli.test.js +21 -13
- package/dist/cli.test.js.map +1 -1
- package/dist/commands/init.d.ts +3 -0
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +21 -11
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/init.test.js +28 -23
- package/dist/commands/init.test.js.map +1 -1
- package/dist/commands/login.d.ts +2 -0
- package/dist/commands/login.d.ts.map +1 -0
- package/dist/commands/login.js +67 -0
- package/dist/commands/login.js.map +1 -0
- package/dist/commands/login.test.d.ts +2 -0
- package/dist/commands/login.test.d.ts.map +1 -0
- package/dist/commands/login.test.js +157 -0
- package/dist/commands/login.test.js.map +1 -0
- package/dist/commands/logout.d.ts +2 -0
- package/dist/commands/logout.d.ts.map +1 -0
- package/dist/commands/logout.js +29 -0
- package/dist/commands/logout.js.map +1 -0
- package/dist/commands/logout.test.d.ts +2 -0
- package/dist/commands/logout.test.d.ts.map +1 -0
- package/dist/commands/logout.test.js +49 -0
- package/dist/commands/logout.test.js.map +1 -0
- package/dist/commands/whoami.d.ts +2 -0
- package/dist/commands/whoami.d.ts.map +1 -0
- package/dist/commands/whoami.js +47 -0
- package/dist/commands/whoami.js.map +1 -0
- package/dist/commands/whoami.test.d.ts +2 -0
- package/dist/commands/whoami.test.d.ts.map +1 -0
- package/dist/commands/whoami.test.js +96 -0
- package/dist/commands/whoami.test.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.test.js +1 -1
- package/dist/services/auth.service.d.ts +10 -0
- package/dist/services/auth.service.d.ts.map +1 -0
- package/dist/services/auth.service.js +97 -0
- package/dist/services/auth.service.js.map +1 -0
- package/dist/services/auth.service.test.d.ts +2 -0
- package/dist/services/auth.service.test.d.ts.map +1 -0
- package/dist/services/auth.service.test.js +215 -0
- package/dist/services/auth.service.test.js.map +1 -0
- package/dist/types/config.types.d.ts +159 -0
- package/dist/types/config.types.d.ts.map +1 -0
- package/dist/types/config.types.js +20 -0
- package/dist/types/config.types.js.map +1 -0
- package/dist/utils/config.d.ts +10 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +49 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/config.test.d.ts +2 -0
- package/dist/utils/config.test.d.ts.map +1 -0
- package/dist/utils/config.test.js +118 -0
- package/dist/utils/config.test.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -1,85 +1,290 @@
|
|
|
1
|
-
#
|
|
1
|
+
# AgentKit CLI
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Command-line interface for creating and managing AI agents.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
## Installation
|
|
6
6
|
|
|
7
|
-
|
|
7
|
+
Install globally:
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @agentage/cli
|
|
11
|
+
```
|
|
10
12
|
|
|
11
|
-
|
|
13
|
+
Or use with npx:
|
|
12
14
|
|
|
13
|
-
|
|
15
|
+
```bash
|
|
16
|
+
npx @agentage/cli <command>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Quick Start
|
|
14
20
|
|
|
15
21
|
```bash
|
|
16
|
-
|
|
22
|
+
# Create a new agent
|
|
23
|
+
agent init my-assistant
|
|
24
|
+
|
|
25
|
+
# Run the agent
|
|
26
|
+
agent run my-assistant "Hello, how are you?"
|
|
27
|
+
|
|
28
|
+
# List all agents
|
|
29
|
+
agent list
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Commands
|
|
33
|
+
|
|
34
|
+
### `agent init [name]`
|
|
35
|
+
|
|
36
|
+
Create a new agent configuration file.
|
|
37
|
+
|
|
38
|
+
#### Synopsis
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
agent init [name]
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
#### Arguments
|
|
45
|
+
|
|
46
|
+
- `name` (optional): Name for the agent (default: `my-agent`)
|
|
47
|
+
|
|
48
|
+
#### Description
|
|
49
|
+
|
|
50
|
+
Creates a new agent YAML file in the `agents/` directory with a default template.
|
|
51
|
+
|
|
52
|
+
#### Examples
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Create agent with default name
|
|
56
|
+
agent init
|
|
57
|
+
|
|
58
|
+
# Create agent with custom name
|
|
59
|
+
agent init my-assistant
|
|
60
|
+
|
|
61
|
+
# Create specialized agents
|
|
62
|
+
agent init code-reviewer
|
|
63
|
+
agent init data-analyzer
|
|
64
|
+
agent init customer-support
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
#### Output
|
|
68
|
+
|
|
69
|
+
Creates `agents/<name>.yml`:
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
name: my-assistant
|
|
73
|
+
model: gpt-4
|
|
74
|
+
instructions: |
|
|
75
|
+
You are a helpful AI assistant.
|
|
76
|
+
Respond clearly and concisely.
|
|
77
|
+
tools: []
|
|
78
|
+
variables: {}
|
|
17
79
|
```
|
|
18
80
|
|
|
19
|
-
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
### `agent run <name> [prompt]`
|
|
84
|
+
|
|
85
|
+
Execute an agent with a prompt.
|
|
20
86
|
|
|
21
|
-
|
|
87
|
+
#### Synopsis
|
|
22
88
|
|
|
23
89
|
```bash
|
|
24
|
-
|
|
90
|
+
agent run <name> [prompt]
|
|
25
91
|
```
|
|
26
92
|
|
|
27
|
-
|
|
93
|
+
#### Arguments
|
|
94
|
+
|
|
95
|
+
- `name` (required): Name of the agent to run
|
|
96
|
+
- `prompt` (optional): Message to send to agent (default: `"Hello!"`)
|
|
97
|
+
|
|
98
|
+
#### Description
|
|
99
|
+
|
|
100
|
+
Loads an agent configuration from `agents/<name>.yml` and executes it with the provided prompt. Requires `OPENAI_API_KEY` environment variable.
|
|
101
|
+
|
|
102
|
+
#### Examples
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Run with default prompt
|
|
106
|
+
agent run my-assistant
|
|
107
|
+
|
|
108
|
+
# Run with custom prompt
|
|
109
|
+
agent run my-assistant "What is TypeScript?"
|
|
110
|
+
|
|
111
|
+
# Run specialized agents
|
|
112
|
+
agent run data-analyzer "Analyze sales trends for Q4"
|
|
113
|
+
agent run customer-support "How do I reset my password?"
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
#### Environment Variables
|
|
117
|
+
|
|
118
|
+
- `OPENAI_API_KEY`: Required. Your OpenAI API key
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
export OPENAI_API_KEY='sk-...'
|
|
122
|
+
agent run my-assistant "Hello"
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
### `agent list`
|
|
128
|
+
|
|
129
|
+
List all available agents.
|
|
130
|
+
|
|
131
|
+
#### Synopsis
|
|
28
132
|
|
|
29
133
|
```bash
|
|
30
|
-
|
|
134
|
+
agent list
|
|
31
135
|
```
|
|
32
136
|
|
|
33
|
-
|
|
137
|
+
#### Description
|
|
138
|
+
|
|
139
|
+
Displays all agent configurations found in the `agents/` directory with their names and models.
|
|
140
|
+
|
|
141
|
+
#### Output
|
|
34
142
|
|
|
35
143
|
```bash
|
|
36
|
-
|
|
144
|
+
📋 Available Agents:
|
|
145
|
+
|
|
146
|
+
✅ my-assistant (gpt-4)
|
|
147
|
+
✅ code-reviewer (gpt-4)
|
|
148
|
+
✅ data-analyzer (gpt-3.5-turbo)
|
|
37
149
|
```
|
|
38
150
|
|
|
39
|
-
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Agent Configuration File
|
|
154
|
+
|
|
155
|
+
### File Format
|
|
40
156
|
|
|
41
|
-
|
|
157
|
+
Agent configurations use YAML format and must be placed in the `agents/` directory.
|
|
42
158
|
|
|
43
|
-
|
|
159
|
+
### File Structure
|
|
44
160
|
|
|
45
161
|
```yaml
|
|
46
|
-
name:
|
|
47
|
-
description: A helpful assistant for code review
|
|
162
|
+
name: agent-name
|
|
48
163
|
model: gpt-4
|
|
49
164
|
instructions: |
|
|
50
|
-
|
|
165
|
+
Multi-line instructions
|
|
166
|
+
for the agent
|
|
167
|
+
tools: []
|
|
168
|
+
variables: {}
|
|
51
169
|
```
|
|
52
170
|
|
|
53
|
-
|
|
171
|
+
### Example Configurations
|
|
54
172
|
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
173
|
+
#### Basic Assistant
|
|
174
|
+
|
|
175
|
+
```yaml
|
|
176
|
+
name: assistant
|
|
177
|
+
model: gpt-4
|
|
178
|
+
instructions: |
|
|
179
|
+
You are a helpful AI assistant.
|
|
180
|
+
Provide clear and accurate information.
|
|
181
|
+
tools: []
|
|
182
|
+
variables: {}
|
|
62
183
|
```
|
|
63
184
|
|
|
64
|
-
|
|
185
|
+
#### Code Reviewer
|
|
65
186
|
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
187
|
+
```yaml
|
|
188
|
+
name: code-reviewer
|
|
189
|
+
model: gpt-4
|
|
190
|
+
instructions: |
|
|
191
|
+
You are an expert code reviewer.
|
|
192
|
+
Review code for:
|
|
193
|
+
- Bugs and errors
|
|
194
|
+
- Security issues
|
|
195
|
+
- Best practices
|
|
196
|
+
- Performance concerns
|
|
197
|
+
Provide specific, actionable feedback.
|
|
198
|
+
tools: []
|
|
199
|
+
variables: {}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### Data Analyzer
|
|
203
|
+
|
|
204
|
+
```yaml
|
|
205
|
+
name: data-analyzer
|
|
206
|
+
model: gpt-4
|
|
207
|
+
instructions: |
|
|
208
|
+
You are a data analysis expert.
|
|
209
|
+
Analyze data to find:
|
|
210
|
+
- Trends and patterns
|
|
211
|
+
- Anomalies
|
|
212
|
+
- Key insights
|
|
213
|
+
- Actionable recommendations
|
|
214
|
+
Present findings clearly with evidence.
|
|
215
|
+
tools: []
|
|
216
|
+
variables: {}
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Environment Setup
|
|
220
|
+
|
|
221
|
+
### Using .env File
|
|
72
222
|
|
|
73
|
-
|
|
223
|
+
Create a `.env` file in your project root:
|
|
74
224
|
|
|
75
|
-
|
|
225
|
+
```env
|
|
226
|
+
OPENAI_API_KEY=sk-your-api-key-here
|
|
76
227
|
```
|
|
77
228
|
|
|
229
|
+
### Using Environment Variables
|
|
230
|
+
|
|
231
|
+
**Linux/macOS:**
|
|
232
|
+
```bash
|
|
233
|
+
export OPENAI_API_KEY='sk-...'
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
**Windows (CMD):**
|
|
237
|
+
```cmd
|
|
238
|
+
set OPENAI_API_KEY=sk-...
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
**Windows (PowerShell):**
|
|
242
|
+
```powershell
|
|
243
|
+
$env:OPENAI_API_KEY='sk-...'
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
## Troubleshooting
|
|
247
|
+
|
|
248
|
+
### Issue: Command not found
|
|
249
|
+
|
|
250
|
+
**Solution:**
|
|
251
|
+
```bash
|
|
252
|
+
# Install globally
|
|
253
|
+
npm install -g @agentage/cli
|
|
254
|
+
|
|
255
|
+
# Or use npx
|
|
256
|
+
npx @agentage/cli init
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### Issue: Agent not found
|
|
260
|
+
|
|
261
|
+
**Solution:**
|
|
262
|
+
```bash
|
|
263
|
+
# List available agents
|
|
264
|
+
agent list
|
|
265
|
+
|
|
266
|
+
# Create the agent first
|
|
267
|
+
agent init my-assistant
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Issue: API errors
|
|
271
|
+
|
|
272
|
+
**Solution:**
|
|
273
|
+
- Check API key is valid
|
|
274
|
+
- Verify internet connection
|
|
275
|
+
- Check OpenAI API status
|
|
276
|
+
|
|
277
|
+
## See Also
|
|
278
|
+
|
|
279
|
+
- [Agent Schema Reference](./docs/agent-schema.md)
|
|
280
|
+
- [SDK Documentation](../../docs/api-reference.md)
|
|
281
|
+
- [Getting Started Guide](../../docs/getting-started.md)
|
|
282
|
+
|
|
78
283
|
## Requirements
|
|
79
284
|
|
|
80
285
|
- Node.js 20+
|
|
81
286
|
- npm 10+
|
|
82
|
-
- OpenAI API key
|
|
287
|
+
- OpenAI API key
|
|
83
288
|
|
|
84
289
|
## Development
|
|
85
290
|
|
|
@@ -93,17 +298,8 @@ npm run build
|
|
|
93
298
|
# Test
|
|
94
299
|
npm run test
|
|
95
300
|
|
|
96
|
-
# Lint
|
|
97
|
-
npm run lint
|
|
98
|
-
|
|
99
|
-
# Type check
|
|
100
|
-
npm run type-check
|
|
101
|
-
|
|
102
301
|
# Verify all
|
|
103
302
|
npm run verify
|
|
104
|
-
|
|
105
|
-
# Clean
|
|
106
|
-
npm run clean
|
|
107
303
|
```
|
|
108
304
|
|
|
109
305
|
## License
|
package/dist/cli.js
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { initCommand } from './commands/init.js';
|
|
4
4
|
import { listCommand } from './commands/list.js';
|
|
5
|
+
import { loginCommand } from './commands/login.js';
|
|
6
|
+
import { logoutCommand } from './commands/logout.js';
|
|
5
7
|
import { runCommand } from './commands/run.js';
|
|
8
|
+
import { whoamiCommand } from './commands/whoami.js';
|
|
6
9
|
import { version } from './index.js';
|
|
7
10
|
const program = new Command();
|
|
8
11
|
program
|
|
@@ -21,5 +24,17 @@ program
|
|
|
21
24
|
.argument('[prompt]', 'Prompt to send to the agent')
|
|
22
25
|
.action(runCommand);
|
|
23
26
|
program.command('list').description('List all agents').action(listCommand);
|
|
27
|
+
program
|
|
28
|
+
.command('login')
|
|
29
|
+
.description('Login to the Agentage registry')
|
|
30
|
+
.action(loginCommand);
|
|
31
|
+
program
|
|
32
|
+
.command('logout')
|
|
33
|
+
.description('Logout from the Agentage registry')
|
|
34
|
+
.action(logoutCommand);
|
|
35
|
+
program
|
|
36
|
+
.command('whoami')
|
|
37
|
+
.description('Display the currently logged in user')
|
|
38
|
+
.action(whoamiCommand);
|
|
24
39
|
program.parse();
|
|
25
40
|
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,cAAc,CAAC;KAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC;KACnD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,WAAW,CAAC,qDAAqD,CAAC;KAClE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,wBAAwB,CAAC;KACrC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,MAAM,CAAC,WAAW,CAAC,CAAC;AAEvB,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,cAAc,CAAC;KAC3B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;KAChC,QAAQ,CAAC,UAAU,EAAE,6BAA6B,CAAC;KACnD,MAAM,CAAC,UAAU,CAAC,CAAC;AAEtB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;AAG3E,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,YAAY,CAAC,CAAC;AAExB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,aAAa,CAAC,CAAC;AAEzB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
package/dist/cli.test.js
CHANGED
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import { execSync } from 'child_process';
|
|
2
|
-
import { existsSync,
|
|
2
|
+
import { existsSync, mkdirSync, rmSync } from 'fs';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
const CLI_PATH = join(__dirname, 'cli.ts');
|
|
5
5
|
describe('CLI Commands', () => {
|
|
6
|
+
const testDir = 'test-cli-workspace';
|
|
7
|
+
beforeEach(() => {
|
|
8
|
+
if (existsSync(testDir)) {
|
|
9
|
+
rmSync(testDir, { recursive: true });
|
|
10
|
+
}
|
|
11
|
+
mkdirSync(testDir);
|
|
12
|
+
process.chdir(testDir);
|
|
13
|
+
});
|
|
6
14
|
afterEach(() => {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
unlinkSync(file);
|
|
11
|
-
}
|
|
12
|
-
});
|
|
13
|
-
if (existsSync('agents')) {
|
|
14
|
-
rmSync('agents', { recursive: true, force: true });
|
|
15
|
+
process.chdir('..');
|
|
16
|
+
if (existsSync(testDir)) {
|
|
17
|
+
rmSync(testDir, { recursive: true });
|
|
15
18
|
}
|
|
16
19
|
});
|
|
17
20
|
test('CLI shows version', () => {
|
|
18
21
|
const output = execSync(`tsx ${CLI_PATH} --version`, {
|
|
19
22
|
encoding: 'utf-8',
|
|
20
23
|
});
|
|
21
|
-
expect(output.trim()).toBe('0.1.
|
|
24
|
+
expect(output.trim()).toBe('0.1.2');
|
|
22
25
|
});
|
|
23
26
|
test('CLI shows help', () => {
|
|
24
27
|
const output = execSync(`tsx ${CLI_PATH} --help`, {
|
|
@@ -29,12 +32,17 @@ describe('CLI Commands', () => {
|
|
|
29
32
|
expect(output).toContain('run');
|
|
30
33
|
expect(output).toContain('list');
|
|
31
34
|
});
|
|
32
|
-
test('init command creates agent
|
|
35
|
+
test('init command creates agent folder and config', () => {
|
|
33
36
|
const output = execSync(`tsx ${CLI_PATH} init test-agent`, {
|
|
34
37
|
encoding: 'utf-8',
|
|
35
38
|
});
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
const expectedAgentPath = join('agents', 'test-agent.agent.md');
|
|
40
|
+
const expectedConfigPath = 'agent.json';
|
|
41
|
+
expect(output).toContain('✅ Created');
|
|
42
|
+
expect(output).toContain('test-agent.agent.md');
|
|
43
|
+
expect(output).toContain('agent.json');
|
|
44
|
+
expect(existsSync(expectedAgentPath)).toBe(true);
|
|
45
|
+
expect(existsSync(expectedConfigPath)).toBe(true);
|
|
38
46
|
});
|
|
39
47
|
test('run command requires agent file', () => {
|
|
40
48
|
try {
|
package/dist/cli.test.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,UAAU,EAAE,
|
|
1
|
+
{"version":3,"file":"cli.test.js","sourceRoot":"","sources":["../src/cli.test.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/init.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,WAAW,GAAU,OAAO,MAAM,KAAG,OAAO,CAAC,IAAI,CA+B7D,CAAC"}
|
package/dist/commands/init.js
CHANGED
|
@@ -1,21 +1,31 @@
|
|
|
1
1
|
import { mkdir, writeFile } from 'fs/promises';
|
|
2
2
|
import { join } from 'path';
|
|
3
|
+
const sampleAgentTemplate = `---
|
|
4
|
+
name: {{name}}
|
|
5
|
+
description: An AI assistant agent
|
|
6
|
+
argument-hint: Describe what you want help with
|
|
7
|
+
tools: []
|
|
8
|
+
handoffs: []
|
|
9
|
+
---
|
|
10
|
+
You are a helpful AI assistant.
|
|
11
|
+
|
|
12
|
+
Respond clearly and concisely to user requests.
|
|
13
|
+
`;
|
|
3
14
|
export const initCommand = async (name) => {
|
|
4
15
|
const agentName = name || 'my-agent';
|
|
5
16
|
const agentsDir = 'agents';
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
tools: []
|
|
13
|
-
variables: {}
|
|
14
|
-
`;
|
|
17
|
+
const agentFilePath = join(agentsDir, `${agentName}.agent.md`);
|
|
18
|
+
const configFilePath = 'agent.json';
|
|
19
|
+
const agentContent = sampleAgentTemplate.replace(/{{name}}/g, agentName);
|
|
20
|
+
const agentConfig = {
|
|
21
|
+
path: '~/agents/',
|
|
22
|
+
};
|
|
15
23
|
try {
|
|
16
24
|
await mkdir(agentsDir, { recursive: true });
|
|
17
|
-
await writeFile(
|
|
18
|
-
console.log(`✅ Created ${
|
|
25
|
+
await writeFile(agentFilePath, agentContent, 'utf-8');
|
|
26
|
+
console.log(`✅ Created ${agentFilePath}`);
|
|
27
|
+
await writeFile(configFilePath, JSON.stringify(agentConfig, null, 2), 'utf-8');
|
|
28
|
+
console.log(`✅ Created ${configFilePath}`);
|
|
19
29
|
}
|
|
20
30
|
catch (error) {
|
|
21
31
|
console.error(`❌ Failed: ${error.message}`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAa,EAAiB,EAAE;IAChE,MAAM,SAAS,GAAG,IAAI,IAAI,UAAU,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/commands/init.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,mBAAmB,GAAG;;;;;;;;;;CAU3B,CAAC;AAMF,MAAM,CAAC,MAAM,WAAW,GAAG,KAAK,EAAE,IAAa,EAAiB,EAAE;IAChE,MAAM,SAAS,GAAG,IAAI,IAAI,UAAU,CAAC;IACrC,MAAM,SAAS,GAAG,QAAQ,CAAC;IAC3B,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,SAAS,WAAW,CAAC,CAAC;IAC/D,MAAM,cAAc,GAAG,YAAY,CAAC;IAEpC,MAAM,YAAY,GAAG,mBAAmB,CAAC,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC;IAEzE,MAAM,WAAW,GAAgB;QAC/B,IAAI,EAAE,WAAW;KAClB,CAAC;IAEF,IAAI,CAAC;QAEH,MAAM,KAAK,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAG5C,MAAM,SAAS,CAAC,aAAa,EAAE,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,aAAa,aAAa,EAAE,CAAC,CAAC;QAG1C,MAAM,SAAS,CACb,cAAc,EACd,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,EACpC,OAAO,CACR,CAAC;QACF,OAAO,CAAC,GAAG,CAAC,aAAa,cAAc,EAAE,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,aAAc,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -2,48 +2,53 @@ import { existsSync, mkdirSync, readFileSync, rmSync } from 'fs';
|
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { initCommand } from './init.js';
|
|
4
4
|
describe('initCommand', () => {
|
|
5
|
-
const
|
|
5
|
+
const testDir = 'test-init-workspace';
|
|
6
6
|
beforeEach(() => {
|
|
7
|
-
if (existsSync(
|
|
8
|
-
rmSync(
|
|
7
|
+
if (existsSync(testDir)) {
|
|
8
|
+
rmSync(testDir, { recursive: true });
|
|
9
9
|
}
|
|
10
|
-
mkdirSync(
|
|
11
|
-
process.chdir(
|
|
10
|
+
mkdirSync(testDir);
|
|
11
|
+
process.chdir(testDir);
|
|
12
12
|
});
|
|
13
13
|
afterEach(() => {
|
|
14
14
|
process.chdir('..');
|
|
15
|
-
if (existsSync(
|
|
16
|
-
rmSync(
|
|
15
|
+
if (existsSync(testDir)) {
|
|
16
|
+
rmSync(testDir, { recursive: true });
|
|
17
17
|
}
|
|
18
18
|
});
|
|
19
|
-
test('creates agent
|
|
19
|
+
test('creates agent.json in current directory and agents folder with default name', async () => {
|
|
20
20
|
await initCommand();
|
|
21
|
-
const
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
expect(
|
|
25
|
-
expect(
|
|
26
|
-
|
|
21
|
+
const agentFilePath = join('agents', 'my-agent.agent.md');
|
|
22
|
+
const configFilePath = 'agent.json';
|
|
23
|
+
expect(existsSync('agents')).toBe(true);
|
|
24
|
+
expect(existsSync(agentFilePath)).toBe(true);
|
|
25
|
+
expect(existsSync(configFilePath)).toBe(true);
|
|
26
|
+
const agentContent = readFileSync(agentFilePath, 'utf-8');
|
|
27
|
+
expect(agentContent).toContain('name: my-agent');
|
|
28
|
+
expect(agentContent).toContain('You are a helpful AI assistant');
|
|
29
|
+
const configContent = JSON.parse(readFileSync(configFilePath, 'utf-8'));
|
|
30
|
+
expect(configContent.path).toBe('~/agents/');
|
|
27
31
|
});
|
|
28
32
|
test('creates agent file with custom name', async () => {
|
|
29
33
|
await initCommand('custom-agent');
|
|
30
|
-
const
|
|
31
|
-
expect(existsSync(
|
|
32
|
-
|
|
33
|
-
|
|
34
|
+
const agentFilePath = join('agents', 'custom-agent.agent.md');
|
|
35
|
+
expect(existsSync('agents')).toBe(true);
|
|
36
|
+
expect(existsSync(agentFilePath)).toBe(true);
|
|
37
|
+
const agentContent = readFileSync(agentFilePath, 'utf-8');
|
|
38
|
+
expect(agentContent).toContain('name: custom-agent');
|
|
34
39
|
});
|
|
35
|
-
test('creates
|
|
36
|
-
expect(existsSync('agents')).toBe(false);
|
|
40
|
+
test('creates agent.json config with path property', async () => {
|
|
37
41
|
await initCommand('test-agent');
|
|
38
|
-
|
|
39
|
-
expect(existsSync(
|
|
42
|
+
const configFilePath = 'agent.json';
|
|
43
|
+
expect(existsSync(configFilePath)).toBe(true);
|
|
44
|
+
const configContent = JSON.parse(readFileSync(configFilePath, 'utf-8'));
|
|
45
|
+
expect(configContent).toEqual({ path: '~/agents/' });
|
|
40
46
|
});
|
|
41
47
|
test('handles errors gracefully', async () => {
|
|
42
48
|
const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => {
|
|
43
49
|
throw new Error('process.exit called');
|
|
44
50
|
});
|
|
45
51
|
const consoleError = jest.spyOn(console, 'error').mockImplementation();
|
|
46
|
-
mkdirSync('agents');
|
|
47
52
|
const originalWriteFile = require('fs/promises').writeFile;
|
|
48
53
|
jest
|
|
49
54
|
.spyOn(require('fs/promises'), 'writeFile')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC;AACjE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAExC,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,MAAM,
|
|
1
|
+
{"version":3,"file":"init.test.js","sourceRoot":"","sources":["../../src/commands/init.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"login.d.ts","sourceRoot":"","sources":["../../src/commands/login.ts"],"names":[],"mappings":"AAWA,eAAO,MAAM,YAAY,QAAa,OAAO,CAAC,IAAI,CAiGjD,CAAC"}
|