@agentage/cli 0.1.19 → 0.3.0
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 +111 -199
- package/dist/cli.js +21 -244
- package/dist/cli.js.map +1 -1
- package/dist/commands/agents.d.ts +3 -0
- package/dist/commands/agents.d.ts.map +1 -0
- package/dist/commands/agents.js +78 -0
- package/dist/commands/agents.js.map +1 -0
- package/dist/commands/daemon-cmd.d.ts +3 -0
- package/dist/commands/daemon-cmd.d.ts.map +1 -0
- package/dist/commands/daemon-cmd.js +26 -0
- package/dist/commands/daemon-cmd.js.map +1 -0
- package/dist/commands/login.d.ts +2 -1
- package/dist/commands/login.d.ts.map +1 -1
- package/dist/commands/login.js +68 -57
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/logout.d.ts +2 -1
- package/dist/commands/logout.d.ts.map +1 -1
- package/dist/commands/logout.js +22 -21
- package/dist/commands/logout.js.map +1 -1
- package/dist/commands/logs.d.ts +3 -0
- package/dist/commands/logs.d.ts.map +1 -0
- package/dist/commands/logs.js +45 -0
- package/dist/commands/logs.js.map +1 -0
- package/dist/commands/machines.d.ts +3 -0
- package/dist/commands/machines.d.ts.map +1 -0
- package/dist/commands/machines.js +56 -0
- package/dist/commands/machines.js.map +1 -0
- package/dist/commands/run.d.ts +2 -1
- package/dist/commands/run.d.ts.map +1 -1
- package/dist/commands/run.js +166 -22
- package/dist/commands/run.js.map +1 -1
- package/dist/commands/runs.d.ts +3 -0
- package/dist/commands/runs.d.ts.map +1 -0
- package/dist/commands/runs.js +73 -0
- package/dist/commands/runs.js.map +1 -0
- package/dist/commands/status.d.ts +3 -0
- package/dist/commands/status.d.ts.map +1 -0
- package/dist/commands/status.js +44 -0
- package/dist/commands/status.js.map +1 -0
- package/dist/daemon/config.d.ts +32 -0
- package/dist/daemon/config.d.ts.map +1 -0
- package/dist/daemon/config.js +64 -0
- package/dist/daemon/config.js.map +1 -0
- package/dist/daemon/daemon.d.ts +8 -0
- package/dist/daemon/daemon.d.ts.map +1 -0
- package/dist/daemon/daemon.js +106 -0
- package/dist/daemon/daemon.js.map +1 -0
- package/dist/daemon/logger.d.ts +10 -0
- package/dist/daemon/logger.d.ts.map +1 -0
- package/dist/daemon/logger.js +41 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/routes.d.ts +7 -0
- package/dist/daemon/routes.d.ts.map +1 -0
- package/dist/daemon/routes.js +189 -0
- package/dist/daemon/routes.js.map +1 -0
- package/dist/daemon/run-manager.d.ts +13 -0
- package/dist/daemon/run-manager.d.ts.map +1 -0
- package/dist/daemon/run-manager.js +119 -0
- package/dist/daemon/run-manager.js.map +1 -0
- package/dist/daemon/server.d.ts +11 -0
- package/dist/daemon/server.d.ts.map +1 -0
- package/dist/daemon/server.js +59 -0
- package/dist/daemon/server.js.map +1 -0
- package/dist/daemon/websocket.d.ts +4 -0
- package/dist/daemon/websocket.d.ts.map +1 -0
- package/dist/daemon/websocket.js +88 -0
- package/dist/daemon/websocket.js.map +1 -0
- package/dist/daemon-entry.d.ts +2 -0
- package/dist/daemon-entry.d.ts.map +1 -0
- package/dist/daemon-entry.js +50 -0
- package/dist/daemon-entry.js.map +1 -0
- package/dist/discovery/code-factory.d.ts +3 -0
- package/dist/discovery/code-factory.d.ts.map +1 -0
- package/dist/discovery/code-factory.js +32 -0
- package/dist/discovery/code-factory.js.map +1 -0
- package/dist/discovery/markdown-factory.d.ts +3 -0
- package/dist/discovery/markdown-factory.d.ts.map +1 -0
- package/dist/discovery/markdown-factory.js +63 -0
- package/dist/discovery/markdown-factory.js.map +1 -0
- package/dist/discovery/scanner.d.ts +3 -0
- package/dist/discovery/scanner.d.ts.map +1 -0
- package/dist/discovery/scanner.js +50 -0
- package/dist/discovery/scanner.js.map +1 -0
- package/dist/hub/auth-callback.d.ts +4 -0
- package/dist/hub/auth-callback.d.ts.map +1 -0
- package/dist/hub/auth-callback.js +75 -0
- package/dist/hub/auth-callback.js.map +1 -0
- package/dist/hub/auth.d.ts +21 -0
- package/dist/hub/auth.d.ts.map +1 -0
- package/dist/hub/auth.js +26 -0
- package/dist/hub/auth.js.map +1 -0
- package/dist/hub/hub-client.d.ts +33 -0
- package/dist/hub/hub-client.d.ts.map +1 -0
- package/dist/hub/hub-client.js +64 -0
- package/dist/hub/hub-client.js.map +1 -0
- package/dist/hub/hub-sync.d.ts +9 -0
- package/dist/hub/hub-sync.d.ts.map +1 -0
- package/dist/hub/hub-sync.js +150 -0
- package/dist/hub/hub-sync.js.map +1 -0
- package/dist/hub/hub-ws.d.ts +7 -0
- package/dist/hub/hub-ws.d.ts.map +1 -0
- package/dist/hub/hub-ws.js +105 -0
- package/dist/hub/hub-ws.js.map +1 -0
- package/dist/hub/reconnection.d.ts +13 -0
- package/dist/hub/reconnection.d.ts.map +1 -0
- package/dist/hub/reconnection.js +39 -0
- package/dist/hub/reconnection.js.map +1 -0
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -8
- package/dist/index.js.map +1 -1
- package/dist/utils/daemon-client.d.ts +5 -0
- package/dist/utils/daemon-client.d.ts.map +1 -0
- package/dist/utils/daemon-client.js +44 -0
- package/dist/utils/daemon-client.js.map +1 -0
- package/dist/utils/ensure-daemon.d.ts +2 -0
- package/dist/utils/ensure-daemon.d.ts.map +1 -0
- package/dist/utils/ensure-daemon.js +7 -0
- package/dist/utils/ensure-daemon.js.map +1 -0
- package/dist/utils/render.d.ts +3 -0
- package/dist/utils/render.d.ts.map +1 -0
- package/dist/utils/render.js +84 -0
- package/dist/utils/render.js.map +1 -0
- package/dist/utils/version.d.ts +1 -9
- package/dist/utils/version.d.ts.map +1 -1
- package/dist/utils/version.js +4 -32
- package/dist/utils/version.js.map +1 -1
- package/package.json +47 -54
- package/.github/copilot-instructions.md +0 -126
- package/.github/dependabot.yml +0 -41
- package/.github/workflows/ci.yml +0 -50
- package/.github/workflows/publish.yml +0 -170
- package/dist/cli.test.d.ts +0 -2
- package/dist/cli.test.d.ts.map +0 -1
- package/dist/cli.test.js +0 -67
- package/dist/cli.test.js.map +0 -1
- package/dist/commands/init.d.ts +0 -8
- package/dist/commands/init.d.ts.map +0 -1
- package/dist/commands/init.js +0 -39
- package/dist/commands/init.js.map +0 -1
- package/dist/commands/init.test.d.ts +0 -2
- package/dist/commands/init.test.d.ts.map +0 -1
- package/dist/commands/init.test.js +0 -79
- package/dist/commands/init.test.js.map +0 -1
- package/dist/commands/install.d.ts +0 -8
- package/dist/commands/install.d.ts.map +0 -1
- package/dist/commands/install.js +0 -90
- package/dist/commands/install.js.map +0 -1
- package/dist/commands/install.test.d.ts +0 -2
- package/dist/commands/install.test.d.ts.map +0 -1
- package/dist/commands/install.test.js +0 -172
- package/dist/commands/install.test.js.map +0 -1
- package/dist/commands/list.d.ts +0 -2
- package/dist/commands/list.d.ts.map +0 -1
- package/dist/commands/list.js +0 -145
- package/dist/commands/list.js.map +0 -1
- package/dist/commands/list.test.d.ts +0 -2
- package/dist/commands/list.test.d.ts.map +0 -1
- package/dist/commands/list.test.js +0 -120
- package/dist/commands/list.test.js.map +0 -1
- package/dist/commands/login.test.d.ts +0 -2
- package/dist/commands/login.test.d.ts.map +0 -1
- package/dist/commands/login.test.js +0 -157
- package/dist/commands/login.test.js.map +0 -1
- package/dist/commands/logout.test.d.ts +0 -2
- package/dist/commands/logout.test.d.ts.map +0 -1
- package/dist/commands/logout.test.js +0 -49
- package/dist/commands/logout.test.js.map +0 -1
- package/dist/commands/publish.d.ts +0 -10
- package/dist/commands/publish.d.ts.map +0 -1
- package/dist/commands/publish.js +0 -138
- package/dist/commands/publish.js.map +0 -1
- package/dist/commands/publish.test.d.ts +0 -2
- package/dist/commands/publish.test.d.ts.map +0 -1
- package/dist/commands/publish.test.js +0 -307
- package/dist/commands/publish.test.js.map +0 -1
- package/dist/commands/run.test.d.ts +0 -2
- package/dist/commands/run.test.d.ts.map +0 -1
- package/dist/commands/run.test.js +0 -73
- package/dist/commands/run.test.js.map +0 -1
- package/dist/commands/search.d.ts +0 -8
- package/dist/commands/search.d.ts.map +0 -1
- package/dist/commands/search.js +0 -41
- package/dist/commands/search.js.map +0 -1
- package/dist/commands/search.test.d.ts +0 -2
- package/dist/commands/search.test.d.ts.map +0 -1
- package/dist/commands/search.test.js +0 -138
- package/dist/commands/search.test.js.map +0 -1
- package/dist/commands/update.d.ts +0 -8
- package/dist/commands/update.d.ts.map +0 -1
- package/dist/commands/update.js +0 -28
- package/dist/commands/update.js.map +0 -1
- package/dist/commands/update.test.d.ts +0 -2
- package/dist/commands/update.test.d.ts.map +0 -1
- package/dist/commands/update.test.js +0 -134
- package/dist/commands/update.test.js.map +0 -1
- package/dist/commands/whoami.d.ts +0 -2
- package/dist/commands/whoami.d.ts.map +0 -1
- package/dist/commands/whoami.js +0 -55
- package/dist/commands/whoami.js.map +0 -1
- package/dist/commands/whoami.test.d.ts +0 -2
- package/dist/commands/whoami.test.d.ts.map +0 -1
- package/dist/commands/whoami.test.js +0 -119
- package/dist/commands/whoami.test.js.map +0 -1
- package/dist/index.test.d.ts +0 -2
- package/dist/index.test.d.ts.map +0 -1
- package/dist/index.test.js +0 -17
- package/dist/index.test.js.map +0 -1
- package/dist/schemas/agent.schema.d.ts +0 -22
- package/dist/schemas/agent.schema.d.ts.map +0 -1
- package/dist/schemas/agent.schema.js +0 -9
- package/dist/schemas/agent.schema.js.map +0 -1
- package/dist/schemas/agent.schema.test.d.ts +0 -2
- package/dist/schemas/agent.schema.test.d.ts.map +0 -1
- package/dist/schemas/agent.schema.test.js +0 -80
- package/dist/schemas/agent.schema.test.js.map +0 -1
- package/dist/services/auth.service.d.ts +0 -10
- package/dist/services/auth.service.d.ts.map +0 -1
- package/dist/services/auth.service.js +0 -99
- package/dist/services/auth.service.js.map +0 -1
- package/dist/services/auth.service.test.d.ts +0 -2
- package/dist/services/auth.service.test.d.ts.map +0 -1
- package/dist/services/auth.service.test.js +0 -218
- package/dist/services/auth.service.test.js.map +0 -1
- package/dist/services/registry.service.d.ts +0 -13
- package/dist/services/registry.service.d.ts.map +0 -1
- package/dist/services/registry.service.js +0 -74
- package/dist/services/registry.service.js.map +0 -1
- package/dist/services/registry.service.test.d.ts +0 -2
- package/dist/services/registry.service.test.d.ts.map +0 -1
- package/dist/services/registry.service.test.js +0 -222
- package/dist/services/registry.service.test.js.map +0 -1
- package/dist/types/config.types.d.ts +0 -177
- package/dist/types/config.types.d.ts.map +0 -1
- package/dist/types/config.types.js +0 -22
- package/dist/types/config.types.js.map +0 -1
- package/dist/types/lockfile.types.d.ts +0 -1
- package/dist/types/lockfile.types.d.ts.map +0 -1
- package/dist/types/lockfile.types.js +0 -2
- package/dist/types/lockfile.types.js.map +0 -1
- package/dist/types/registry.types.d.ts +0 -65
- package/dist/types/registry.types.d.ts.map +0 -1
- package/dist/types/registry.types.js +0 -2
- package/dist/types/registry.types.js.map +0 -1
- package/dist/utils/agent-parser.d.ts +0 -26
- package/dist/utils/agent-parser.d.ts.map +0 -1
- package/dist/utils/agent-parser.js +0 -45
- package/dist/utils/agent-parser.js.map +0 -1
- package/dist/utils/agent-parser.test.d.ts +0 -2
- package/dist/utils/agent-parser.test.d.ts.map +0 -1
- package/dist/utils/agent-parser.test.js +0 -102
- package/dist/utils/agent-parser.test.js.map +0 -1
- package/dist/utils/config.d.ts +0 -21
- package/dist/utils/config.d.ts.map +0 -1
- package/dist/utils/config.js +0 -99
- package/dist/utils/config.js.map +0 -1
- package/dist/utils/config.test.d.ts +0 -2
- package/dist/utils/config.test.d.ts.map +0 -1
- package/dist/utils/config.test.js +0 -214
- package/dist/utils/config.test.js.map +0 -1
- package/dist/utils/lockfile.d.ts +0 -1
- package/dist/utils/lockfile.d.ts.map +0 -1
- package/dist/utils/lockfile.js +0 -2
- package/dist/utils/lockfile.js.map +0 -1
- package/dist/utils/lockfile.test.d.ts +0 -1
- package/dist/utils/lockfile.test.d.ts.map +0 -1
- package/dist/utils/lockfile.test.js +0 -7
- package/dist/utils/lockfile.test.js.map +0 -1
- package/dist/utils/version.test.d.ts +0 -2
- package/dist/utils/version.test.d.ts.map +0 -1
- package/dist/utils/version.test.js +0 -30
- package/dist/utils/version.test.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,222 +1,134 @@
|
|
|
1
|
-
#
|
|
1
|
+
# @agentage/cli
|
|
2
2
|
|
|
3
3
|
[](https://github.com/agentage/cli/actions/workflows/ci.yml)
|
|
4
4
|
[](https://badge.fury.io/js/%40agentage%2Fcli)
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
CLI and daemon for the [Agentage](https://agentage.io) control plane. Discovers local agents, executes them, and connects to the hub for multi-machine orchestration.
|
|
7
7
|
|
|
8
8
|
## Installation
|
|
9
9
|
|
|
10
|
-
Install globally:
|
|
11
|
-
|
|
12
10
|
```bash
|
|
13
11
|
npm install -g @agentage/cli
|
|
14
12
|
```
|
|
15
13
|
|
|
16
|
-
Or use with npx:
|
|
17
|
-
|
|
18
|
-
```bash
|
|
19
|
-
npx @agentage/cli <command>
|
|
20
|
-
```
|
|
21
|
-
|
|
22
14
|
## Quick Start
|
|
23
15
|
|
|
24
16
|
```bash
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
#
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
#
|
|
32
|
-
agent
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
#
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
#
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
#
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
### `agent whoami`
|
|
131
|
-
|
|
132
|
-
Display the currently logged in user.
|
|
133
|
-
|
|
134
|
-
```bash
|
|
135
|
-
agent whoami
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
### `agent update`
|
|
139
|
-
|
|
140
|
-
Update the CLI to the latest version.
|
|
141
|
-
|
|
142
|
-
```bash
|
|
143
|
-
agent update
|
|
17
|
+
# Start the daemon (discovers agents, exposes REST API)
|
|
18
|
+
agentage daemon
|
|
19
|
+
|
|
20
|
+
# List discovered agents
|
|
21
|
+
agentage agents
|
|
22
|
+
|
|
23
|
+
# Run an agent
|
|
24
|
+
agentage run my-agent "Summarize this project"
|
|
25
|
+
|
|
26
|
+
# Check daemon + hub status
|
|
27
|
+
agentage status
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
## Daemon
|
|
31
|
+
|
|
32
|
+
The daemon is a lightweight Express server that runs on each machine. It discovers local agents, executes them, and optionally syncs with a central hub.
|
|
33
|
+
|
|
34
|
+
### API
|
|
35
|
+
|
|
36
|
+
| Method | Endpoint | Description |
|
|
37
|
+
|--------|----------|-------------|
|
|
38
|
+
| `GET` | `/api/health` | Status, version, uptime, machine ID, hub connection |
|
|
39
|
+
| `GET` | `/api/agents` | List discovered agent manifests |
|
|
40
|
+
| `POST` | `/api/agents/refresh` | Re-scan agent directories |
|
|
41
|
+
| `POST` | `/api/agents/:name/run` | Execute an agent (`{ task, config?, context? }`) |
|
|
42
|
+
| `GET` | `/api/runs` | List all runs |
|
|
43
|
+
| `GET` | `/api/runs/:id` | Get run details + output |
|
|
44
|
+
| `POST` | `/api/runs/:id/cancel` | Cancel a running execution |
|
|
45
|
+
| `POST` | `/api/runs/:id/input` | Send input to a waiting agent |
|
|
46
|
+
|
|
47
|
+
Default port: **3100**
|
|
48
|
+
|
|
49
|
+
### Agent Discovery
|
|
50
|
+
|
|
51
|
+
The daemon scans configured directories for agents:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
~/.agentage/agents/*.agent.md # Global agents
|
|
55
|
+
.agentage/agents/*.agent.md # Workspace agents
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Two built-in factories: **markdown** (`.agent.md` files with YAML frontmatter) and **code** (TypeScript/JavaScript modules exporting an Agent).
|
|
59
|
+
|
|
60
|
+
### Hub Sync
|
|
61
|
+
|
|
62
|
+
When authenticated (`agentage login`), the daemon connects to the hub via WebSocket — registering the machine, syncing agents, and relaying run events.
|
|
63
|
+
|
|
64
|
+
| Method | Endpoint | Description |
|
|
65
|
+
|--------|----------|-------------|
|
|
66
|
+
| `GET` | `/api/hub/machines` | List all hub-connected machines |
|
|
67
|
+
| `GET` | `/api/hub/agents` | Aggregated agents across all machines |
|
|
68
|
+
| `POST` | `/api/hub/runs` | Start a run on any connected machine |
|
|
69
|
+
|
|
70
|
+
## CLI Commands
|
|
71
|
+
|
|
72
|
+
| Command | Description |
|
|
73
|
+
|---------|-------------|
|
|
74
|
+
| `agentage daemon` | Start the daemon server |
|
|
75
|
+
| `agentage agents` | List discovered agents |
|
|
76
|
+
| `agentage run <name> [task]` | Execute an agent |
|
|
77
|
+
| `agentage runs` | List runs |
|
|
78
|
+
| `agentage machines` | List hub-connected machines |
|
|
79
|
+
| `agentage status` | Show daemon and hub status |
|
|
80
|
+
| `agentage logs` | View daemon logs |
|
|
81
|
+
| `agentage login` | Authenticate with the hub |
|
|
82
|
+
| `agentage logout` | Log out |
|
|
83
|
+
|
|
84
|
+
## Project Structure
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
src/
|
|
88
|
+
├── cli.ts # CLI entry point (commander)
|
|
89
|
+
├── daemon-entry.ts # Daemon process entry point
|
|
90
|
+
├── commands/ # CLI command handlers
|
|
91
|
+
│ ├── daemon-cmd.ts # agentage daemon
|
|
92
|
+
│ ├── agents.ts # agentage agents
|
|
93
|
+
│ ├── run.ts # agentage run
|
|
94
|
+
│ ├── runs.ts # agentage runs
|
|
95
|
+
│ ├── machines.ts # agentage machines
|
|
96
|
+
│ ├── status.ts # agentage status
|
|
97
|
+
│ ├── logs.ts # agentage logs
|
|
98
|
+
│ ├── login.ts # agentage login
|
|
99
|
+
│ └── logout.ts # agentage logout
|
|
100
|
+
├── daemon/ # Daemon server
|
|
101
|
+
│ ├── server.ts # Express + HTTP server setup
|
|
102
|
+
│ ├── routes.ts # REST API routes
|
|
103
|
+
│ ├── config.ts # Daemon configuration
|
|
104
|
+
│ ├── run-manager.ts # Agent execution + run lifecycle
|
|
105
|
+
│ ├── websocket.ts # WebSocket for streaming
|
|
106
|
+
│ └── logger.ts # Structured logging
|
|
107
|
+
├── discovery/ # Agent discovery
|
|
108
|
+
│ ├── scanner.ts # Directory scanning
|
|
109
|
+
│ ├── markdown-factory.ts # .agent.md parser (gray-matter)
|
|
110
|
+
│ └── code-factory.ts # JS/TS module loader (jiti)
|
|
111
|
+
├── hub/ # Hub connection
|
|
112
|
+
│ ├── auth.ts # Auth token storage
|
|
113
|
+
│ ├── auth-callback.ts # OAuth callback server
|
|
114
|
+
│ ├── hub-client.ts # Hub REST client
|
|
115
|
+
│ ├── hub-sync.ts # Machine/agent sync
|
|
116
|
+
│ ├── hub-ws.ts # Hub WebSocket client
|
|
117
|
+
│ └── reconnection.ts # Auto-reconnect logic
|
|
118
|
+
└── utils/
|
|
119
|
+
├── daemon-client.ts # CLI → daemon HTTP client
|
|
120
|
+
├── ensure-daemon.ts # Auto-start daemon if not running
|
|
121
|
+
└── render.ts # Terminal output formatting
|
|
144
122
|
```
|
|
145
123
|
|
|
146
124
|
## Development
|
|
147
125
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
- Node.js >= 20.0.0
|
|
151
|
-
- npm >= 10.0.0
|
|
152
|
-
|
|
153
|
-
### Setup
|
|
126
|
+
Requires Node.js >= 22.0.0.
|
|
154
127
|
|
|
155
128
|
```bash
|
|
156
|
-
|
|
157
|
-
npm
|
|
158
|
-
|
|
159
|
-
# Run in development mode
|
|
160
|
-
npm run dev
|
|
161
|
-
|
|
162
|
-
# Build
|
|
163
|
-
npm run build
|
|
164
|
-
|
|
165
|
-
# Run tests
|
|
166
|
-
npm test
|
|
167
|
-
|
|
168
|
-
# Run tests with coverage
|
|
169
|
-
npm run test:coverage
|
|
170
|
-
|
|
171
|
-
# Lint
|
|
172
|
-
npm run lint
|
|
173
|
-
|
|
174
|
-
# Type check
|
|
175
|
-
npm run type-check
|
|
176
|
-
|
|
177
|
-
# Full verification (type-check, lint, build, test)
|
|
178
|
-
npm run verify
|
|
179
|
-
```
|
|
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
|
|
129
|
+
npm ci
|
|
130
|
+
npm run verify # type-check + lint + format + test + build
|
|
131
|
+
npm run build && npm link # test CLI locally
|
|
220
132
|
```
|
|
221
133
|
|
|
222
134
|
## License
|
package/dist/cli.js
CHANGED
|
@@ -1,248 +1,25 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import chalk from 'chalk';
|
|
3
2
|
import { Command } from 'commander';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import { version } from './index.js';
|
|
15
|
-
import { AuthError, getMe } from './services/auth.service.js';
|
|
16
|
-
import { loadConfig } from './utils/config.js';
|
|
17
|
-
import { checkForUpdates } from './utils/version.js';
|
|
18
|
-
const displayBanner = () => {
|
|
19
|
-
console.log();
|
|
20
|
-
console.log(chalk.cyan.bold(' ╔═══════════════════════════════════════════╗'));
|
|
21
|
-
console.log(chalk.cyan.bold(' ║') +
|
|
22
|
-
chalk.white.bold(' 🤖 AgentKit CLI ') +
|
|
23
|
-
chalk.cyan.bold('║'));
|
|
24
|
-
console.log(chalk.cyan.bold(' ╚═══════════════════════════════════════════╝'));
|
|
25
|
-
console.log();
|
|
26
|
-
};
|
|
27
|
-
const displayVersionInfo = async () => {
|
|
28
|
-
console.log(chalk.gray(` Version: ${chalk.green.bold(version)}`));
|
|
29
|
-
try {
|
|
30
|
-
const config = await loadConfig();
|
|
31
|
-
if (config.auth?.token) {
|
|
32
|
-
const user = await getMe();
|
|
33
|
-
const displayName = user.name || user.email;
|
|
34
|
-
const aliasDisplay = user.verifiedAlias
|
|
35
|
-
? chalk.gray(' (@') +
|
|
36
|
-
chalk.green.bold(user.verifiedAlias) +
|
|
37
|
-
chalk.gray(')')
|
|
38
|
-
: '';
|
|
39
|
-
console.log(chalk.gray(' Logged in as: ') +
|
|
40
|
-
chalk.green.bold(displayName) +
|
|
41
|
-
aliasDisplay);
|
|
42
|
-
}
|
|
43
|
-
else {
|
|
44
|
-
console.log(chalk.gray(' Status: ') +
|
|
45
|
-
chalk.yellow('Not logged in') +
|
|
46
|
-
chalk.gray(' (run ') +
|
|
47
|
-
chalk.cyan('agent login') +
|
|
48
|
-
chalk.gray(')'));
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
catch (error) {
|
|
52
|
-
if (error instanceof AuthError && error.code === 'session_expired') {
|
|
53
|
-
console.log(chalk.gray(' Status: ') +
|
|
54
|
-
chalk.yellow('Session expired') +
|
|
55
|
-
chalk.gray(' (run ') +
|
|
56
|
-
chalk.cyan('agent login') +
|
|
57
|
-
chalk.gray(')'));
|
|
58
|
-
}
|
|
59
|
-
else {
|
|
60
|
-
console.log(chalk.gray(' Status: ') +
|
|
61
|
-
chalk.yellow('Not logged in') +
|
|
62
|
-
chalk.gray(' (run ') +
|
|
63
|
-
chalk.cyan('agent login') +
|
|
64
|
-
chalk.gray(')'));
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
try {
|
|
68
|
-
const result = await checkForUpdates(version);
|
|
69
|
-
if (result.updateAvailable) {
|
|
70
|
-
console.log();
|
|
71
|
-
console.log(chalk.yellow.bold(' ⚠️ Update available: ') +
|
|
72
|
-
chalk.red(version) +
|
|
73
|
-
chalk.gray(' → ') +
|
|
74
|
-
chalk.green.bold(result.latestVersion));
|
|
75
|
-
console.log(chalk.yellow(' Run ') +
|
|
76
|
-
chalk.cyan.bold('agent update') +
|
|
77
|
-
chalk.yellow(' to update to the latest version'));
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
}
|
|
82
|
-
console.log();
|
|
83
|
-
};
|
|
84
|
-
const displayCustomHelp = () => {
|
|
85
|
-
console.log(chalk.white.bold(' Usage: ') +
|
|
86
|
-
chalk.cyan('agent') +
|
|
87
|
-
chalk.gray(' [command] [options]'));
|
|
88
|
-
console.log();
|
|
89
|
-
console.log(chalk.white.bold(' Commands:'));
|
|
90
|
-
console.log();
|
|
91
|
-
const commands = [
|
|
92
|
-
{ cmd: 'init', args: '[name]', desc: 'Initialize a new agent', icon: '🚀' },
|
|
93
|
-
{ cmd: 'run', args: '<name> [prompt]', desc: 'Run an agent', icon: '▶️ ' },
|
|
94
|
-
{ cmd: 'list', args: '', desc: 'List all agents', icon: '📋' },
|
|
95
|
-
{
|
|
96
|
-
cmd: 'publish',
|
|
97
|
-
args: '[path]',
|
|
98
|
-
desc: 'Publish agent to registry',
|
|
99
|
-
icon: '📤',
|
|
100
|
-
},
|
|
101
|
-
{
|
|
102
|
-
cmd: 'install',
|
|
103
|
-
args: '<owner/name>',
|
|
104
|
-
desc: 'Install agent from registry',
|
|
105
|
-
icon: '📥',
|
|
106
|
-
},
|
|
107
|
-
{
|
|
108
|
-
cmd: 'search',
|
|
109
|
-
args: '<query>',
|
|
110
|
-
desc: 'Search for agents',
|
|
111
|
-
icon: '🔍',
|
|
112
|
-
},
|
|
113
|
-
{
|
|
114
|
-
cmd: 'login',
|
|
115
|
-
args: '',
|
|
116
|
-
desc: 'Login to the Agentage registry',
|
|
117
|
-
icon: '🔐',
|
|
118
|
-
},
|
|
119
|
-
{
|
|
120
|
-
cmd: 'logout',
|
|
121
|
-
args: '',
|
|
122
|
-
desc: 'Logout from the Agentage registry',
|
|
123
|
-
icon: '🚪',
|
|
124
|
-
},
|
|
125
|
-
{
|
|
126
|
-
cmd: 'whoami',
|
|
127
|
-
args: '',
|
|
128
|
-
desc: 'Display the currently logged in user',
|
|
129
|
-
icon: '👤',
|
|
130
|
-
},
|
|
131
|
-
{
|
|
132
|
-
cmd: 'update',
|
|
133
|
-
args: '',
|
|
134
|
-
desc: 'Update the CLI to the latest version',
|
|
135
|
-
icon: '⬆️ ',
|
|
136
|
-
},
|
|
137
|
-
];
|
|
138
|
-
for (const { cmd, args, desc, icon } of commands) {
|
|
139
|
-
const cmdStr = chalk.cyan.bold(cmd.padEnd(10));
|
|
140
|
-
const argsStr = chalk.gray(args.padEnd(16));
|
|
141
|
-
console.log(` ${icon} ${cmdStr} ${argsStr} ${chalk.white(desc)}`);
|
|
142
|
-
}
|
|
143
|
-
console.log();
|
|
144
|
-
console.log(chalk.white.bold(' Options:'));
|
|
145
|
-
console.log();
|
|
146
|
-
console.log(` ${chalk.cyan.bold('-v, --version')} ${chalk.white('Display version number')}`);
|
|
147
|
-
console.log(` ${chalk.cyan.bold('-h, --help')} ${chalk.white('Display this help message')}`);
|
|
148
|
-
console.log();
|
|
149
|
-
console.log(chalk.white.bold(' Examples:'));
|
|
150
|
-
console.log();
|
|
151
|
-
console.log(chalk.white(' $ ') + chalk.cyan('agent init my-agent'));
|
|
152
|
-
console.log(chalk.white(' $ ') +
|
|
153
|
-
chalk.cyan('agent run my-agent') +
|
|
154
|
-
chalk.white(' "Hello, how are you?"'));
|
|
155
|
-
console.log(chalk.white(' $ ') + chalk.cyan('agent list'));
|
|
156
|
-
console.log();
|
|
157
|
-
};
|
|
3
|
+
import { VERSION } from './utils/version.js';
|
|
4
|
+
import { registerRun } from './commands/run.js';
|
|
5
|
+
import { registerAgents } from './commands/agents.js';
|
|
6
|
+
import { registerRuns } from './commands/runs.js';
|
|
7
|
+
import { registerMachines } from './commands/machines.js';
|
|
8
|
+
import { registerStatus } from './commands/status.js';
|
|
9
|
+
import { registerLogin } from './commands/login.js';
|
|
10
|
+
import { registerLogout } from './commands/logout.js';
|
|
11
|
+
import { registerLogs } from './commands/logs.js';
|
|
12
|
+
import { registerDaemon } from './commands/daemon-cmd.js';
|
|
158
13
|
const program = new Command();
|
|
159
|
-
program
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
displayCustomHelp();
|
|
171
|
-
});
|
|
172
|
-
});
|
|
173
|
-
program
|
|
174
|
-
.command('init')
|
|
175
|
-
.description('Initialize a new agent')
|
|
176
|
-
.argument('[name]', 'Agent name')
|
|
177
|
-
.option('-g, --global', 'Initialize in global directory (~/.agentage)')
|
|
178
|
-
.action(initCommand);
|
|
179
|
-
program
|
|
180
|
-
.command('run')
|
|
181
|
-
.description('Run an agent')
|
|
182
|
-
.argument('<name>', 'Agent name')
|
|
183
|
-
.argument('[prompt]', 'Prompt to send to the agent')
|
|
184
|
-
.action(runCommand);
|
|
185
|
-
program.command('list').description('List all agents').action(listCommand);
|
|
186
|
-
program
|
|
187
|
-
.command('publish')
|
|
188
|
-
.description('Publish agent to registry')
|
|
189
|
-
.argument('[path]', 'Path to agent file')
|
|
190
|
-
.option('-v, --visibility <visibility>', 'Visibility (public or private)', 'public')
|
|
191
|
-
.option('--version <version>', 'Override version')
|
|
192
|
-
.option('-t, --tag <tag...>', 'Add tags')
|
|
193
|
-
.option('-c, --changelog <message>', 'Changelog message')
|
|
194
|
-
.option('--dry-run', 'Validate without publishing')
|
|
195
|
-
.action(publishCommand);
|
|
196
|
-
program
|
|
197
|
-
.command('install')
|
|
198
|
-
.description('Install agent from registry')
|
|
199
|
-
.argument('<name>', 'Agent name (owner/name[@version])')
|
|
200
|
-
.option('-g, --global', 'Install to global location')
|
|
201
|
-
.option('-l, --local', 'Install to local project')
|
|
202
|
-
.option('-f, --force', 'Overwrite existing')
|
|
203
|
-
.action(installCommand);
|
|
204
|
-
program
|
|
205
|
-
.command('search')
|
|
206
|
-
.description('Search for agents in registry')
|
|
207
|
-
.argument('<query>', 'Search query')
|
|
208
|
-
.option('-n, --limit <number>', 'Number of results', '10')
|
|
209
|
-
.option('-p, --page <number>', 'Page number', '1')
|
|
210
|
-
.option('--json', 'Output as JSON')
|
|
211
|
-
.action(searchCommand);
|
|
212
|
-
program
|
|
213
|
-
.command('login')
|
|
214
|
-
.description('Login to the Agentage registry')
|
|
215
|
-
.action(loginCommand);
|
|
216
|
-
program
|
|
217
|
-
.command('logout')
|
|
218
|
-
.description('Logout from the Agentage registry')
|
|
219
|
-
.action(logoutCommand);
|
|
220
|
-
program
|
|
221
|
-
.command('whoami')
|
|
222
|
-
.description('Display the currently logged in user')
|
|
223
|
-
.action(whoamiCommand);
|
|
224
|
-
program
|
|
225
|
-
.command('update')
|
|
226
|
-
.description('Update the CLI to the latest version')
|
|
227
|
-
.action(updateCommand);
|
|
228
|
-
if (process.argv.includes('-h') || process.argv.includes('--help')) {
|
|
229
|
-
if (process.argv.length === 3) {
|
|
230
|
-
displayBanner();
|
|
231
|
-
displayVersionInfo().then(() => {
|
|
232
|
-
displayCustomHelp();
|
|
233
|
-
});
|
|
234
|
-
}
|
|
235
|
-
else {
|
|
236
|
-
program.parse();
|
|
237
|
-
}
|
|
238
|
-
}
|
|
239
|
-
else if (process.argv.length === 2) {
|
|
240
|
-
displayBanner();
|
|
241
|
-
displayVersionInfo().then(() => {
|
|
242
|
-
displayCustomHelp();
|
|
243
|
-
});
|
|
244
|
-
}
|
|
245
|
-
else {
|
|
246
|
-
program.parse();
|
|
247
|
-
}
|
|
14
|
+
program.name('agentage').description('Agentage CLI — control plane for AI agents').version(VERSION);
|
|
15
|
+
registerRun(program);
|
|
16
|
+
registerAgents(program);
|
|
17
|
+
registerRuns(program);
|
|
18
|
+
registerMachines(program);
|
|
19
|
+
registerStatus(program);
|
|
20
|
+
registerLogin(program);
|
|
21
|
+
registerLogout(program);
|
|
22
|
+
registerLogs(program);
|
|
23
|
+
registerDaemon(program);
|
|
24
|
+
program.parse();
|
|
248
25
|
//# 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,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,WAAW,CAAC,4CAA4C,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpG,WAAW,CAAC,OAAO,CAAC,CAAC;AACrB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,gBAAgB,CAAC,OAAO,CAAC,CAAC;AAC1B,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,aAAa,CAAC,OAAO,CAAC,CAAC;AACvB,cAAc,CAAC,OAAO,CAAC,CAAC;AACxB,YAAY,CAAC,OAAO,CAAC,CAAC;AACtB,cAAc,CAAC,OAAO,CAAC,CAAC;AAExB,OAAO,CAAC,KAAK,EAAE,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agents.d.ts","sourceRoot":"","sources":["../../src/commands/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,WAAW,CAAC;AAazC,eAAO,MAAM,cAAc,GAAI,SAAS,OAAO,KAAG,IAiDjD,CAAC"}
|