@agentage/cli 0.1.18 → 0.1.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/copilot-instructions.md +126 -0
- package/.github/dependabot.yml +41 -0
- package/.github/workflows/ci.yml +50 -0
- package/.github/workflows/publish.yml +170 -0
- package/README.md +107 -190
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +7 -9
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/run.test.js +2 -34
- package/dist/commands/run.test.js.map +1 -1
- package/dist/types/lockfile.types.d.ts +1 -0
- package/dist/types/lockfile.types.d.ts.map +1 -0
- package/dist/types/lockfile.types.js +2 -0
- package/dist/types/lockfile.types.js.map +1 -0
- package/dist/utils/lockfile.d.ts +1 -0
- package/dist/utils/lockfile.d.ts.map +1 -0
- package/dist/utils/lockfile.js +2 -0
- package/dist/utils/lockfile.js.map +1 -0
- package/dist/utils/lockfile.test.d.ts +1 -0
- package/dist/utils/lockfile.test.d.ts.map +1 -0
- package/dist/utils/lockfile.test.js +7 -0
- package/dist/utils/lockfile.test.js.map +1 -0
- package/package.json +5 -8
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# AgentKit CLI - Development Instructions
|
|
2
|
+
|
|
3
|
+
## **Project Overview**
|
|
4
|
+
|
|
5
|
+
- CLI tool for creating and running AI agents locally
|
|
6
|
+
- TypeScript-based command-line interface
|
|
7
|
+
- Commands: init, install, list, login, logout, publish, run, search, update, whoami
|
|
8
|
+
- Published as `@agentage/cli` package
|
|
9
|
+
|
|
10
|
+
## **Project Agreements**
|
|
11
|
+
|
|
12
|
+
- Default branch: `master`
|
|
13
|
+
- Repository: `agentage/cli`
|
|
14
|
+
- Branch names: `feature/*`, `bugfix/*`, `hotfix/*`, `setup-*`
|
|
15
|
+
- Commits: `feat:`, `fix:`, `chore:` (max 72 chars)
|
|
16
|
+
- Verifications: `npm run verify` (type-check + lint + build + test)
|
|
17
|
+
|
|
18
|
+
## **Publishing**
|
|
19
|
+
|
|
20
|
+
- Published to npm as `@agentage/cli`
|
|
21
|
+
- Auto-publish on push to `master` when `package.json` version is bumped.
|
|
22
|
+
|
|
23
|
+
## **Release Strategy**
|
|
24
|
+
|
|
25
|
+
- 🎯 **MINIMAL FIRST**: Keep commands simple and focused
|
|
26
|
+
- 🚫 **No Over-Engineering**: Single responsibility per command
|
|
27
|
+
- ⚡ **Essential Only**: Core CLI functionality
|
|
28
|
+
|
|
29
|
+
## **Rules**
|
|
30
|
+
|
|
31
|
+
- 📊 Use icons/tables for structured output
|
|
32
|
+
- 📁 NO extra docs unless explicitly asked
|
|
33
|
+
- 🐙 GitHub: owner `agentage`, repo `cli`
|
|
34
|
+
- ⚡ Prefer function calls over terminal commands
|
|
35
|
+
- 📂 Source code in `src/` directory
|
|
36
|
+
|
|
37
|
+
## **Coding Standards**
|
|
38
|
+
|
|
39
|
+
### TypeScript
|
|
40
|
+
|
|
41
|
+
- 🚫 No `any` type - explicit types always
|
|
42
|
+
- 📤 Named exports only (no default exports)
|
|
43
|
+
- 📏 Files <300 lines, commands <200 lines
|
|
44
|
+
- 🔄 Functional: arrow functions, async/await, destructuring
|
|
45
|
+
- 🏗️ Interfaces over classes
|
|
46
|
+
- ✅ ESM modules (`type: "module"`)
|
|
47
|
+
|
|
48
|
+
### Naming
|
|
49
|
+
|
|
50
|
+
- **Interfaces**: `AgentConfig`, `RegistryAgent`, `LockfileEntry`
|
|
51
|
+
- **Types**: `CommandOptions`, `ServiceConfig`
|
|
52
|
+
- **Files**: `command.ts`, `service.ts`, `*.types.ts`, `*.test.ts`
|
|
53
|
+
|
|
54
|
+
## **Tech Stack**
|
|
55
|
+
|
|
56
|
+
- **Language**: TypeScript 5.3+ (strict mode)
|
|
57
|
+
- **Module**: ESNext with ESM
|
|
58
|
+
- **Testing**: Jest 30+ with ts-jest
|
|
59
|
+
- **Linting**: ESLint 9+ (flat config)
|
|
60
|
+
- **Formatting**: Prettier
|
|
61
|
+
- **Package Manager**: npm (workspaces)
|
|
62
|
+
|
|
63
|
+
## **Node Requirements**
|
|
64
|
+
|
|
65
|
+
- Node.js >= 20.0.0
|
|
66
|
+
- npm >= 10.0.0
|
|
67
|
+
|
|
68
|
+
## **CLI Patterns**
|
|
69
|
+
|
|
70
|
+
**Command Structure**:
|
|
71
|
+
|
|
72
|
+
```typescript
|
|
73
|
+
import { Command } from "commander";
|
|
74
|
+
|
|
75
|
+
export const myCommand = new Command("name")
|
|
76
|
+
.description("Command description")
|
|
77
|
+
.option("-o, --option <value>", "Option description")
|
|
78
|
+
.action(async (options) => {
|
|
79
|
+
// Implementation
|
|
80
|
+
});
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**Service Pattern**:
|
|
84
|
+
|
|
85
|
+
```typescript
|
|
86
|
+
export const myService = {
|
|
87
|
+
async doSomething(): Promise<Result> {
|
|
88
|
+
// Implementation
|
|
89
|
+
},
|
|
90
|
+
};
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
## **Workspace Structure**
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
src/
|
|
97
|
+
cli.ts # Main CLI entry point
|
|
98
|
+
index.ts # Package exports
|
|
99
|
+
commands/ # CLI commands (init, run, install, etc.)
|
|
100
|
+
services/ # Business logic (auth, registry)
|
|
101
|
+
schemas/ # Zod validation schemas
|
|
102
|
+
types/ # TypeScript type definitions
|
|
103
|
+
utils/ # Utility functions
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
## **Scripts**
|
|
107
|
+
|
|
108
|
+
All packages support:
|
|
109
|
+
|
|
110
|
+
- `npm run build` - Build TypeScript
|
|
111
|
+
- `npm run type-check` - TypeScript validation
|
|
112
|
+
- `npm run lint` - ESLint check
|
|
113
|
+
- `npm run lint:fix` - Auto-fix linting
|
|
114
|
+
- `npm run test` - Run Jest tests
|
|
115
|
+
- `npm run test:watch` - Watch mode
|
|
116
|
+
- `npm run test:coverage` - Coverage report
|
|
117
|
+
- `npm run verify` - All checks
|
|
118
|
+
- `npm run clean` - Clean build artifacts
|
|
119
|
+
|
|
120
|
+
## **Quality Gates**
|
|
121
|
+
|
|
122
|
+
- ✅ Type check must pass
|
|
123
|
+
- ✅ Linting must pass (no warnings)
|
|
124
|
+
- ✅ All tests must pass
|
|
125
|
+
- ✅ Coverage >= 70% (branches, functions, lines, statements)
|
|
126
|
+
- ✅ Build must succeed
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
version: 2
|
|
2
|
+
updates:
|
|
3
|
+
# Enable version updates for npm
|
|
4
|
+
- package-ecosystem: "npm"
|
|
5
|
+
directory: "/"
|
|
6
|
+
schedule:
|
|
7
|
+
interval: "weekly"
|
|
8
|
+
day: "monday"
|
|
9
|
+
open-pull-requests-limit: 10
|
|
10
|
+
groups:
|
|
11
|
+
typescript:
|
|
12
|
+
patterns:
|
|
13
|
+
- "typescript"
|
|
14
|
+
- "@typescript-eslint/*"
|
|
15
|
+
- "ts-jest"
|
|
16
|
+
- "tsx"
|
|
17
|
+
testing:
|
|
18
|
+
patterns:
|
|
19
|
+
- "jest"
|
|
20
|
+
- "@jest/*"
|
|
21
|
+
- "@types/jest"
|
|
22
|
+
linting:
|
|
23
|
+
patterns:
|
|
24
|
+
- "eslint"
|
|
25
|
+
- "eslint-*"
|
|
26
|
+
all-patch:
|
|
27
|
+
update-types:
|
|
28
|
+
- "patch"
|
|
29
|
+
labels:
|
|
30
|
+
- "dependencies"
|
|
31
|
+
- "automated"
|
|
32
|
+
|
|
33
|
+
# GitHub Actions
|
|
34
|
+
- package-ecosystem: "github-actions"
|
|
35
|
+
directory: "/"
|
|
36
|
+
schedule:
|
|
37
|
+
interval: "weekly"
|
|
38
|
+
day: "monday"
|
|
39
|
+
labels:
|
|
40
|
+
- "dependencies"
|
|
41
|
+
- "github-actions"
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main, master]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build-and-test:
|
|
11
|
+
runs-on: ubuntu-latest
|
|
12
|
+
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
node-version: [20.x, 22.x]
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v6
|
|
19
|
+
|
|
20
|
+
- name: Use Node.js ${{ matrix.node-version }}
|
|
21
|
+
uses: actions/setup-node@v4
|
|
22
|
+
with:
|
|
23
|
+
node-version: ${{ matrix.node-version }}
|
|
24
|
+
cache: 'npm'
|
|
25
|
+
|
|
26
|
+
- name: Install dependencies
|
|
27
|
+
run: npm ci
|
|
28
|
+
|
|
29
|
+
- name: Type check
|
|
30
|
+
run: npm run type-check
|
|
31
|
+
|
|
32
|
+
- name: Lint
|
|
33
|
+
run: npm run lint
|
|
34
|
+
|
|
35
|
+
- name: Build
|
|
36
|
+
run: npm run build
|
|
37
|
+
|
|
38
|
+
- name: Test
|
|
39
|
+
run: npm test
|
|
40
|
+
|
|
41
|
+
- name: Test coverage
|
|
42
|
+
run: npm run test:coverage
|
|
43
|
+
|
|
44
|
+
- name: Upload coverage reports
|
|
45
|
+
uses: codecov/codecov-action@v5
|
|
46
|
+
if: matrix.node-version == '20.x'
|
|
47
|
+
with:
|
|
48
|
+
token: ${{ secrets.CODECOV_TOKEN }}
|
|
49
|
+
file: ./coverage/lcov.info
|
|
50
|
+
fail_ci_if_error: false
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
name: Publish Package
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [master, main]
|
|
6
|
+
paths:
|
|
7
|
+
- "package.json"
|
|
8
|
+
workflow_dispatch:
|
|
9
|
+
|
|
10
|
+
permissions:
|
|
11
|
+
contents: write
|
|
12
|
+
id-token: write
|
|
13
|
+
|
|
14
|
+
env:
|
|
15
|
+
NODE_VERSION: "20"
|
|
16
|
+
|
|
17
|
+
jobs:
|
|
18
|
+
detect-changes:
|
|
19
|
+
name: 🔍 Detect Version Changes
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
outputs:
|
|
22
|
+
should-publish: ${{ steps.detect.outputs.should-publish }}
|
|
23
|
+
name: ${{ steps.detect.outputs.name }}
|
|
24
|
+
version: ${{ steps.detect.outputs.version }}
|
|
25
|
+
|
|
26
|
+
steps:
|
|
27
|
+
- name: 📥 Checkout code
|
|
28
|
+
uses: actions/checkout@v6
|
|
29
|
+
|
|
30
|
+
- name: 🔧 Setup Node.js
|
|
31
|
+
uses: actions/setup-node@v6
|
|
32
|
+
with:
|
|
33
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
34
|
+
cache: "npm"
|
|
35
|
+
|
|
36
|
+
- name: 📦 Install dependencies
|
|
37
|
+
run: npm ci
|
|
38
|
+
|
|
39
|
+
- name: 🔍 Detect version changes
|
|
40
|
+
id: detect
|
|
41
|
+
run: |
|
|
42
|
+
name=$(node -p "require('./package.json').name")
|
|
43
|
+
version=$(node -p "require('./package.json').version")
|
|
44
|
+
private=$(node -p "require('./package.json').private || false")
|
|
45
|
+
|
|
46
|
+
echo "name=${name}" >> $GITHUB_OUTPUT
|
|
47
|
+
echo "version=${version}" >> $GITHUB_OUTPUT
|
|
48
|
+
|
|
49
|
+
# Skip if private
|
|
50
|
+
if [ "$private" = "true" ]; then
|
|
51
|
+
echo "should-publish=false" >> $GITHUB_OUTPUT
|
|
52
|
+
echo "ℹ️ Package is private, skipping publish"
|
|
53
|
+
exit 0
|
|
54
|
+
fi
|
|
55
|
+
|
|
56
|
+
echo "📦 Checking ${name}@${version}..."
|
|
57
|
+
|
|
58
|
+
# Check if this version exists on npm
|
|
59
|
+
if npm view "${name}@${version}" version 2>/dev/null; then
|
|
60
|
+
echo "should-publish=false" >> $GITHUB_OUTPUT
|
|
61
|
+
echo "⏭️ Version ${version} already published for ${name}"
|
|
62
|
+
else
|
|
63
|
+
echo "should-publish=true" >> $GITHUB_OUTPUT
|
|
64
|
+
echo "✨ New version detected: ${name}@${version}"
|
|
65
|
+
fi
|
|
66
|
+
|
|
67
|
+
verify:
|
|
68
|
+
name: ✅ Verify Package
|
|
69
|
+
needs: [detect-changes]
|
|
70
|
+
if: needs.detect-changes.outputs.should-publish == 'true'
|
|
71
|
+
runs-on: ubuntu-latest
|
|
72
|
+
|
|
73
|
+
steps:
|
|
74
|
+
- name: 📥 Checkout code
|
|
75
|
+
uses: actions/checkout@v6
|
|
76
|
+
|
|
77
|
+
- name: 🔧 Setup Node.js
|
|
78
|
+
uses: actions/setup-node@v6
|
|
79
|
+
with:
|
|
80
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
81
|
+
cache: "npm"
|
|
82
|
+
|
|
83
|
+
- name: 📦 Install dependencies
|
|
84
|
+
run: npm ci
|
|
85
|
+
|
|
86
|
+
- name: 🏗️ Build package
|
|
87
|
+
run: npm run build
|
|
88
|
+
|
|
89
|
+
- name: 🧪 Run tests
|
|
90
|
+
run: npm test
|
|
91
|
+
|
|
92
|
+
- name: 🔍 Run linting
|
|
93
|
+
run: npm run lint
|
|
94
|
+
|
|
95
|
+
- name: ✅ Verification passed
|
|
96
|
+
run: |
|
|
97
|
+
echo "✅ ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }} verified successfully" >> $GITHUB_STEP_SUMMARY
|
|
98
|
+
|
|
99
|
+
publish:
|
|
100
|
+
name: 📤 Publish Package
|
|
101
|
+
needs: [detect-changes, verify]
|
|
102
|
+
if: needs.detect-changes.outputs.should-publish == 'true' && needs.verify.result == 'success'
|
|
103
|
+
runs-on: ubuntu-latest
|
|
104
|
+
|
|
105
|
+
steps:
|
|
106
|
+
- name: 📥 Checkout code
|
|
107
|
+
uses: actions/checkout@v6
|
|
108
|
+
|
|
109
|
+
- name: 🔧 Setup Node.js
|
|
110
|
+
uses: actions/setup-node@v6
|
|
111
|
+
with:
|
|
112
|
+
node-version: ${{ env.NODE_VERSION }}
|
|
113
|
+
cache: "npm"
|
|
114
|
+
registry-url: "https://registry.npmjs.org"
|
|
115
|
+
|
|
116
|
+
- name: 📦 Install dependencies
|
|
117
|
+
run: npm ci
|
|
118
|
+
|
|
119
|
+
- name: 🏗️ Build package
|
|
120
|
+
run: npm run build
|
|
121
|
+
|
|
122
|
+
- name: 📤 Publish to npm
|
|
123
|
+
env:
|
|
124
|
+
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
125
|
+
run: |
|
|
126
|
+
echo "📤 Publishing ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}"
|
|
127
|
+
npm publish --access public --provenance
|
|
128
|
+
|
|
129
|
+
- name: 🏷️ Create git tag
|
|
130
|
+
run: |
|
|
131
|
+
git config --global user.name "github-actions[bot]"
|
|
132
|
+
git config --global user.email "github-actions[bot]@users.noreply.github.com"
|
|
133
|
+
|
|
134
|
+
TAG_NAME="v${{ needs.detect-changes.outputs.version }}"
|
|
135
|
+
|
|
136
|
+
git tag -a "${TAG_NAME}" -m "Release ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}"
|
|
137
|
+
git push origin "${TAG_NAME}"
|
|
138
|
+
|
|
139
|
+
- name: ✅ Published successfully
|
|
140
|
+
run: |
|
|
141
|
+
echo "🎉 Successfully published ${{ needs.detect-changes.outputs.name }}@${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
142
|
+
echo "📦 Package URL: https://www.npmjs.com/package/${{ needs.detect-changes.outputs.name }}/v/${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
143
|
+
|
|
144
|
+
summary:
|
|
145
|
+
name: 📋 Publish Summary
|
|
146
|
+
needs: [detect-changes, verify, publish]
|
|
147
|
+
if: always()
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
|
|
150
|
+
steps:
|
|
151
|
+
- name: 📊 Create summary
|
|
152
|
+
run: |
|
|
153
|
+
echo "## 📦 Package Publishing Summary" >> $GITHUB_STEP_SUMMARY
|
|
154
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
155
|
+
|
|
156
|
+
if [ "${{ needs.detect-changes.outputs.should-publish }}" != "true" ]; then
|
|
157
|
+
echo "ℹ️ **No new version to publish**" >> $GITHUB_STEP_SUMMARY
|
|
158
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
159
|
+
echo "Version ${{ needs.detect-changes.outputs.version }} is already published or package is private." >> $GITHUB_STEP_SUMMARY
|
|
160
|
+
elif [ "${{ needs.verify.result }}" != "success" ]; then
|
|
161
|
+
echo "❌ **Verification failed - package not published**" >> $GITHUB_STEP_SUMMARY
|
|
162
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
163
|
+
echo "Please fix verification errors and try again." >> $GITHUB_STEP_SUMMARY
|
|
164
|
+
elif [ "${{ needs.publish.result }}" == "success" ]; then
|
|
165
|
+
echo "✅ **Package published successfully!**" >> $GITHUB_STEP_SUMMARY
|
|
166
|
+
echo "" >> $GITHUB_STEP_SUMMARY
|
|
167
|
+
echo "- **${{ needs.detect-changes.outputs.name }}** version ${{ needs.detect-changes.outputs.version }}" >> $GITHUB_STEP_SUMMARY
|
|
168
|
+
else
|
|
169
|
+
echo "⚠️ **Package failed to publish**" >> $GITHUB_STEP_SUMMARY
|
|
170
|
+
fi
|
package/README.md
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
# AgentKit CLI
|
|
2
2
|
|
|
3
|
+
[](https://github.com/agentage/cli/actions/workflows/ci.yml)
|
|
4
|
+
[](https://badge.fury.io/js/%40agentage%2Fcli)
|
|
5
|
+
|
|
3
6
|
Command-line interface for creating and managing AI agents.
|
|
4
7
|
|
|
5
8
|
## Installation
|
|
@@ -35,22 +38,6 @@ agent list
|
|
|
35
38
|
|
|
36
39
|
Create a new agent configuration file.
|
|
37
40
|
|
|
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
41
|
```bash
|
|
55
42
|
# Create agent with default name
|
|
56
43
|
agent init
|
|
@@ -58,250 +45,180 @@ agent init
|
|
|
58
45
|
# Create agent with custom name
|
|
59
46
|
agent init my-assistant
|
|
60
47
|
|
|
61
|
-
# Create
|
|
62
|
-
agent init
|
|
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: {}
|
|
48
|
+
# Create in global directory
|
|
49
|
+
agent init my-agent --global
|
|
79
50
|
```
|
|
80
51
|
|
|
81
|
-
---
|
|
82
|
-
|
|
83
52
|
### `agent run <name> [prompt]`
|
|
84
53
|
|
|
85
54
|
Execute an agent with a prompt.
|
|
86
55
|
|
|
87
|
-
#### Synopsis
|
|
88
|
-
|
|
89
|
-
```bash
|
|
90
|
-
agent run <name> [prompt]
|
|
91
|
-
```
|
|
92
|
-
|
|
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
56
|
```bash
|
|
105
57
|
# Run with default prompt
|
|
106
58
|
agent run my-assistant
|
|
107
59
|
|
|
108
60
|
# Run with custom prompt
|
|
109
61
|
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
62
|
```
|
|
115
63
|
|
|
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
64
|
### `agent list`
|
|
128
65
|
|
|
129
|
-
List all available agents.
|
|
130
|
-
|
|
131
|
-
#### Synopsis
|
|
66
|
+
List all available agents (local and global).
|
|
132
67
|
|
|
133
68
|
```bash
|
|
134
69
|
agent list
|
|
135
70
|
```
|
|
136
71
|
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
Displays all agent configurations found in the `agents/` directory with their names and models.
|
|
72
|
+
### `agent publish [path]`
|
|
140
73
|
|
|
141
|
-
|
|
74
|
+
Publish an agent to the Agentage registry.
|
|
142
75
|
|
|
143
76
|
```bash
|
|
144
|
-
|
|
77
|
+
# Publish agent in current directory
|
|
78
|
+
agent publish
|
|
145
79
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
✅ data-analyzer (gpt-3.5-turbo)
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Agent Configuration File
|
|
154
|
-
|
|
155
|
-
### File Format
|
|
156
|
-
|
|
157
|
-
Agent configurations use YAML format and must be placed in the `agents/` directory.
|
|
80
|
+
# Publish specific agent file
|
|
81
|
+
agent publish agents/my-agent.agent.md
|
|
158
82
|
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
```yaml
|
|
162
|
-
name: agent-name
|
|
163
|
-
model: gpt-4
|
|
164
|
-
instructions: |
|
|
165
|
-
Multi-line instructions
|
|
166
|
-
for the agent
|
|
167
|
-
tools: []
|
|
168
|
-
variables: {}
|
|
83
|
+
# Dry run (validate without publishing)
|
|
84
|
+
agent publish --dry-run
|
|
169
85
|
```
|
|
170
86
|
|
|
171
|
-
###
|
|
87
|
+
### `agent install <owner/name>`
|
|
172
88
|
|
|
173
|
-
|
|
89
|
+
Install an agent from the registry.
|
|
174
90
|
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
instructions: |
|
|
179
|
-
You are a helpful AI assistant.
|
|
180
|
-
Provide clear and accurate information.
|
|
181
|
-
tools: []
|
|
182
|
-
variables: {}
|
|
183
|
-
```
|
|
91
|
+
```bash
|
|
92
|
+
# Install latest version
|
|
93
|
+
agent install user/my-agent
|
|
184
94
|
|
|
185
|
-
|
|
186
|
-
|
|
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
|
-
```
|
|
95
|
+
# Install specific version
|
|
96
|
+
agent install user/my-agent@2025-01-01
|
|
201
97
|
|
|
202
|
-
|
|
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: {}
|
|
98
|
+
# Install globally
|
|
99
|
+
agent install user/my-agent --global
|
|
217
100
|
```
|
|
218
101
|
|
|
219
|
-
|
|
102
|
+
### `agent search <query>`
|
|
220
103
|
|
|
221
|
-
|
|
104
|
+
Search for agents in the registry.
|
|
222
105
|
|
|
223
|
-
|
|
106
|
+
```bash
|
|
107
|
+
# Search for agents
|
|
108
|
+
agent search "code review"
|
|
224
109
|
|
|
225
|
-
|
|
226
|
-
|
|
110
|
+
# Limit results
|
|
111
|
+
agent search "ai assistant" --limit 5
|
|
227
112
|
```
|
|
228
113
|
|
|
229
|
-
###
|
|
230
|
-
|
|
231
|
-
**Linux/macOS:**
|
|
232
|
-
```bash
|
|
233
|
-
export OPENAI_API_KEY='sk-...'
|
|
234
|
-
```
|
|
114
|
+
### `agent login`
|
|
235
115
|
|
|
236
|
-
|
|
237
|
-
```cmd
|
|
238
|
-
set OPENAI_API_KEY=sk-...
|
|
239
|
-
```
|
|
116
|
+
Authenticate with the Agentage registry.
|
|
240
117
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
$env:OPENAI_API_KEY='sk-...'
|
|
118
|
+
```bash
|
|
119
|
+
agent login
|
|
244
120
|
```
|
|
245
121
|
|
|
246
|
-
|
|
122
|
+
### `agent logout`
|
|
247
123
|
|
|
248
|
-
|
|
124
|
+
Log out from the registry.
|
|
249
125
|
|
|
250
|
-
**Solution:**
|
|
251
126
|
```bash
|
|
252
|
-
|
|
253
|
-
npm install -g @agentage/cli
|
|
254
|
-
|
|
255
|
-
# Or use npx
|
|
256
|
-
npx @agentage/cli init
|
|
127
|
+
agent logout
|
|
257
128
|
```
|
|
258
129
|
|
|
259
|
-
###
|
|
130
|
+
### `agent whoami`
|
|
260
131
|
|
|
261
|
-
|
|
262
|
-
```bash
|
|
263
|
-
# List available agents
|
|
264
|
-
agent list
|
|
132
|
+
Display the currently logged in user.
|
|
265
133
|
|
|
266
|
-
|
|
267
|
-
agent
|
|
134
|
+
```bash
|
|
135
|
+
agent whoami
|
|
268
136
|
```
|
|
269
137
|
|
|
270
|
-
###
|
|
138
|
+
### `agent update`
|
|
271
139
|
|
|
272
|
-
|
|
273
|
-
- Check API key is valid
|
|
274
|
-
- Verify internet connection
|
|
275
|
-
- Check OpenAI API status
|
|
140
|
+
Update the CLI to the latest version.
|
|
276
141
|
|
|
277
|
-
|
|
142
|
+
```bash
|
|
143
|
+
agent update
|
|
144
|
+
```
|
|
278
145
|
|
|
279
|
-
|
|
280
|
-
- [SDK Documentation](../../docs/api-reference.md)
|
|
281
|
-
- [Getting Started Guide](../../docs/getting-started.md)
|
|
146
|
+
## Development
|
|
282
147
|
|
|
283
|
-
|
|
148
|
+
### Prerequisites
|
|
284
149
|
|
|
285
|
-
- Node.js 20
|
|
286
|
-
- npm 10
|
|
287
|
-
- OpenAI API key
|
|
150
|
+
- Node.js >= 20.0.0
|
|
151
|
+
- npm >= 10.0.0
|
|
288
152
|
|
|
289
|
-
|
|
153
|
+
### Setup
|
|
290
154
|
|
|
291
155
|
```bash
|
|
292
156
|
# Install dependencies
|
|
293
157
|
npm install
|
|
294
158
|
|
|
159
|
+
# Run in development mode
|
|
160
|
+
npm run dev
|
|
161
|
+
|
|
295
162
|
# Build
|
|
296
163
|
npm run build
|
|
297
164
|
|
|
298
|
-
#
|
|
299
|
-
npm
|
|
165
|
+
# Run tests
|
|
166
|
+
npm test
|
|
167
|
+
|
|
168
|
+
# Run tests with coverage
|
|
169
|
+
npm run test:coverage
|
|
300
170
|
|
|
301
|
-
#
|
|
171
|
+
# Lint
|
|
172
|
+
npm run lint
|
|
173
|
+
|
|
174
|
+
# Type check
|
|
175
|
+
npm run type-check
|
|
176
|
+
|
|
177
|
+
# Full verification (type-check, lint, build, test)
|
|
302
178
|
npm run verify
|
|
303
179
|
```
|
|
304
180
|
|
|
181
|
+
### Project Structure
|
|
182
|
+
|
|
183
|
+
```
|
|
184
|
+
cli/
|
|
185
|
+
├── src/
|
|
186
|
+
│ ├── cli.ts # CLI entry point
|
|
187
|
+
│ ├── index.ts # Package exports
|
|
188
|
+
│ ├── commands/ # CLI command handlers
|
|
189
|
+
│ │ ├── init.ts
|
|
190
|
+
│ │ ├── run.ts
|
|
191
|
+
│ │ ├── list.ts
|
|
192
|
+
│ │ ├── publish.ts
|
|
193
|
+
│ │ ├── install.ts
|
|
194
|
+
│ │ ├── search.ts
|
|
195
|
+
│ │ ├── login.ts
|
|
196
|
+
│ │ ├── logout.ts
|
|
197
|
+
│ │ ├── whoami.ts
|
|
198
|
+
│ │ └── update.ts
|
|
199
|
+
│ ├── services/ # API services
|
|
200
|
+
│ │ ├── auth.service.ts
|
|
201
|
+
│ │ └── registry.service.ts
|
|
202
|
+
│ ├── utils/ # Utility functions
|
|
203
|
+
│ │ ├── agent-parser.ts
|
|
204
|
+
│ │ ├── config.ts
|
|
205
|
+
│ │ ├── lockfile.ts
|
|
206
|
+
│ │ └── version.ts
|
|
207
|
+
│ ├── schemas/ # Zod schemas
|
|
208
|
+
│ │ └── agent.schema.ts
|
|
209
|
+
│ ├── types/ # TypeScript types
|
|
210
|
+
│ │ ├── config.types.ts
|
|
211
|
+
│ │ ├── lockfile.types.ts
|
|
212
|
+
│ │ └── registry.types.ts
|
|
213
|
+
│ └── __mocks__/ # Jest mocks
|
|
214
|
+
│ └── chalk.ts
|
|
215
|
+
├── package.json
|
|
216
|
+
├── tsconfig.json
|
|
217
|
+
├── jest.config.js
|
|
218
|
+
├── eslint.config.js
|
|
219
|
+
└── README.md
|
|
220
|
+
```
|
|
221
|
+
|
|
305
222
|
## License
|
|
306
223
|
|
|
307
224
|
MIT
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,OAAO,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,UAAU,GACrB,MAAM,MAAM,EACZ,SAAS,MAAM,KACd,OAAO,CAAC,IAAI,CAiCd,CAAC"}
|
package/dist/commands/run.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import
|
|
1
|
+
import chalk from 'chalk';
|
|
2
2
|
import { readFile } from 'fs/promises';
|
|
3
3
|
import { join } from 'path';
|
|
4
4
|
import { parse } from 'yaml';
|
|
@@ -10,16 +10,14 @@ export const runCommand = async (name, prompt) => {
|
|
|
10
10
|
const content = await readFile(filename, 'utf-8');
|
|
11
11
|
const yaml = parse(content);
|
|
12
12
|
const validated = agentYamlSchema.parse(yaml);
|
|
13
|
-
const assistant = agent(validated.name)
|
|
14
|
-
.model(validated.model)
|
|
15
|
-
.instructions(validated.instructions)
|
|
16
|
-
.config([
|
|
17
|
-
{ key: 'OPENAI_API_KEY', value: process.env.OPENAI_API_KEY || '' },
|
|
18
|
-
]);
|
|
19
13
|
const userPrompt = prompt || 'Hello!';
|
|
20
14
|
console.log(`\n🤖 Running ${validated.name}...\n`);
|
|
21
|
-
|
|
22
|
-
console.log(
|
|
15
|
+
console.log(chalk.gray(`Model: ${validated.model}`));
|
|
16
|
+
console.log(chalk.gray(`Prompt: ${userPrompt}`));
|
|
17
|
+
console.log();
|
|
18
|
+
console.log(chalk.yellow('⚠️ Agent runtime not available. This is a standalone CLI without SDK integration.'));
|
|
19
|
+
console.log(chalk.gray('To run agents, integrate with an AI provider (OpenAI, Anthropic, etc.) directly.'));
|
|
20
|
+
console.log();
|
|
23
21
|
}
|
|
24
22
|
catch (error) {
|
|
25
23
|
console.error(`❌ Failed: ${error.message}`);
|
package/dist/commands/run.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAE7D,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAC7B,IAAY,EACZ,MAAe,EACA,EAAE;IACjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,QAAQ,CAAC;QAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,MAAM,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAClD,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE9C,MAAM,UAAU,GAAG,MAAM,IAAI,QAAQ,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,CAAC,IAAI,OAAO,CAAC,CAAC;QACnD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QACrD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,UAAU,EAAE,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,EAAE,CAAC;QAKd,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,oFAAoF,CACrF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,IAAI,CACR,kFAAkF,CACnF,CACF,CAAC;QACF,OAAO,CAAC,GAAG,EAAE,CAAC;IAChB,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"}
|
|
@@ -1,14 +1,6 @@
|
|
|
1
1
|
import { existsSync, mkdirSync, rmSync, writeFileSync } from 'fs';
|
|
2
2
|
import { join } from 'path';
|
|
3
3
|
import { runCommand } from './run.js';
|
|
4
|
-
jest.mock('@agentage/sdk', () => ({
|
|
5
|
-
agent: jest.fn(() => ({
|
|
6
|
-
model: jest.fn().mockReturnThis(),
|
|
7
|
-
instructions: jest.fn().mockReturnThis(),
|
|
8
|
-
config: jest.fn().mockReturnThis(),
|
|
9
|
-
send: jest.fn().mockResolvedValue({ content: 'Mock response' }),
|
|
10
|
-
})),
|
|
11
|
-
}));
|
|
12
4
|
describe('runCommand', () => {
|
|
13
5
|
const testAgentsDir = 'test-agents';
|
|
14
6
|
beforeEach(() => {
|
|
@@ -25,7 +17,7 @@ describe('runCommand', () => {
|
|
|
25
17
|
rmSync(testAgentsDir, { recursive: true });
|
|
26
18
|
}
|
|
27
19
|
});
|
|
28
|
-
test('runs agent with valid config', async () => {
|
|
20
|
+
test('runs agent with valid config and shows warning', async () => {
|
|
29
21
|
mkdirSync('agents');
|
|
30
22
|
const validAgent = `name: test-agent
|
|
31
23
|
model: gpt-4
|
|
@@ -36,7 +28,7 @@ variables: {}`;
|
|
|
36
28
|
const consoleLog = jest.spyOn(console, 'log').mockImplementation();
|
|
37
29
|
await runCommand('test-agent', 'Hello');
|
|
38
30
|
expect(consoleLog).toHaveBeenCalledWith('\n🤖 Running test-agent...\n');
|
|
39
|
-
expect(consoleLog).toHaveBeenCalledWith('
|
|
31
|
+
expect(consoleLog).toHaveBeenCalledWith(expect.stringContaining('Agent runtime not available'));
|
|
40
32
|
consoleLog.mockRestore();
|
|
41
33
|
});
|
|
42
34
|
test('uses default prompt when none provided', async () => {
|
|
@@ -77,29 +69,5 @@ model: gpt-4`;
|
|
|
77
69
|
mockExit.mockRestore();
|
|
78
70
|
consoleError.mockRestore();
|
|
79
71
|
});
|
|
80
|
-
test('handles agent execution errors', async () => {
|
|
81
|
-
mkdirSync('agents');
|
|
82
|
-
const validAgent = `name: test-agent
|
|
83
|
-
model: gpt-4
|
|
84
|
-
instructions: Test instructions
|
|
85
|
-
tools: []
|
|
86
|
-
variables: {}`;
|
|
87
|
-
writeFileSync(join('agents', 'test-agent.yml'), validAgent);
|
|
88
|
-
const { agent } = require('@agentage/sdk');
|
|
89
|
-
agent.mockImplementation(() => ({
|
|
90
|
-
model: jest.fn().mockReturnThis(),
|
|
91
|
-
instructions: jest.fn().mockReturnThis(),
|
|
92
|
-
config: jest.fn().mockReturnThis(),
|
|
93
|
-
send: jest.fn().mockRejectedValue(new Error('API Error')),
|
|
94
|
-
}));
|
|
95
|
-
const mockExit = jest.spyOn(process, 'exit').mockImplementation(() => {
|
|
96
|
-
throw new Error('process.exit called');
|
|
97
|
-
});
|
|
98
|
-
const consoleError = jest.spyOn(console, 'error').mockImplementation();
|
|
99
|
-
await expect(runCommand('test-agent')).rejects.toThrow('process.exit called');
|
|
100
|
-
expect(consoleError).toHaveBeenCalledWith('❌ Failed: API Error');
|
|
101
|
-
mockExit.mockRestore();
|
|
102
|
-
consoleError.mockRestore();
|
|
103
|
-
});
|
|
104
72
|
});
|
|
105
73
|
//# sourceMappingURL=run.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"run.test.js","sourceRoot":"","sources":["../../src/commands/run.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAClE,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"run.test.js","sourceRoot":"","sources":["../../src/commands/run.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=lockfile.types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.types.d.ts","sourceRoot":"","sources":["../../src/types/lockfile.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.types.js","sourceRoot":"","sources":["../../src/types/lockfile.types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=lockfile.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.d.ts","sourceRoot":"","sources":["../../src/utils/lockfile.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.js","sourceRoot":"","sources":["../../src/utils/lockfile.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=lockfile.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.test.d.ts","sourceRoot":"","sources":["../../src/utils/lockfile.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lockfile.test.js","sourceRoot":"","sources":["../../src/utils/lockfile.test.ts"],"names":[],"mappings":";AAAA,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAE/B,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agentage/cli",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.19",
|
|
4
4
|
"description": "CLI tool for creating and running AI agents locally",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -32,27 +32,24 @@
|
|
|
32
32
|
"license": "MIT",
|
|
33
33
|
"repository": {
|
|
34
34
|
"type": "git",
|
|
35
|
-
"url": "https://github.com/agentage/
|
|
36
|
-
"directory": "packages/cli"
|
|
35
|
+
"url": "https://github.com/agentage/cli.git"
|
|
37
36
|
},
|
|
38
37
|
"bugs": {
|
|
39
|
-
"url": "https://github.com/agentage/
|
|
38
|
+
"url": "https://github.com/agentage/cli/issues"
|
|
40
39
|
},
|
|
41
|
-
"homepage": "https://github.com/agentage/
|
|
40
|
+
"homepage": "https://github.com/agentage/cli#readme",
|
|
42
41
|
"engines": {
|
|
43
42
|
"node": ">=20.0.0",
|
|
44
43
|
"npm": ">=10.0.0"
|
|
45
44
|
},
|
|
46
45
|
"dependencies": {
|
|
47
|
-
"@agentage/core": "^0.1.0",
|
|
48
|
-
"@agentage/sdk": "^0.1.0",
|
|
49
46
|
"chalk": "^5.6.2",
|
|
50
47
|
"commander": "^14.0.2",
|
|
51
48
|
"gray-matter": "^4.0.3",
|
|
52
49
|
"inquirer": "^13.0.1",
|
|
53
50
|
"js-yaml": "^4.1.0",
|
|
54
51
|
"node-machine-id": "1.1.12",
|
|
55
|
-
"open": "^
|
|
52
|
+
"open": "^11.0.0",
|
|
56
53
|
"yaml": "^2.8.1",
|
|
57
54
|
"zod": "3.25.76"
|
|
58
55
|
},
|