@oxagen/cli 0.2.3 → 0.3.2
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 +447 -0
- package/dist/commands/__tests__/cli-parity.test.js +2 -2
- package/dist/commands/__tests__/cli-parity.test.js.map +1 -1
- package/dist/commands/agent.plan.create.d.ts +3 -0
- package/dist/commands/agent.plan.create.d.ts.map +1 -0
- package/dist/commands/agent.plan.create.js +41 -0
- package/dist/commands/agent.plan.create.js.map +1 -0
- package/dist/commands/api-key.create.js +3 -2
- package/dist/commands/api-key.create.js.map +1 -1
- package/dist/commands/api-key.revoke.js +3 -2
- package/dist/commands/api-key.revoke.js.map +1 -1
- package/dist/commands/auth.login.js +2 -1
- package/dist/commands/auth.login.js.map +1 -1
- package/dist/commands/auth.whoami.js +3 -2
- package/dist/commands/auth.whoami.js.map +1 -1
- package/dist/commands/billing.status.js +3 -2
- package/dist/commands/billing.status.js.map +1 -1
- package/dist/commands/chat.send.js +3 -2
- package/dist/commands/chat.send.js.map +1 -1
- package/dist/commands/conversation.archive.js +3 -2
- package/dist/commands/conversation.archive.js.map +1 -1
- package/dist/commands/conversation.delete.js +3 -2
- package/dist/commands/conversation.delete.js.map +1 -1
- package/dist/commands/conversation.list.js +3 -2
- package/dist/commands/conversation.list.js.map +1 -1
- package/dist/commands/conversation.rename.js +3 -2
- package/dist/commands/conversation.rename.js.map +1 -1
- package/dist/commands/documents.generate.js +1 -1
- package/dist/commands/documents.generate.js.map +1 -1
- package/dist/commands/notifications.list.js +3 -2
- package/dist/commands/notifications.list.js.map +1 -1
- package/dist/commands/notifications.mark.js +3 -2
- package/dist/commands/notifications.mark.js.map +1 -1
- package/dist/commands/org.create.js +3 -2
- package/dist/commands/org.create.js.map +1 -1
- package/dist/commands/org.list.js +3 -2
- package/dist/commands/org.list.js.map +1 -1
- package/dist/commands/org.member.add.js +3 -2
- package/dist/commands/org.member.add.js.map +1 -1
- package/dist/commands/org.member.remove.js +3 -2
- package/dist/commands/org.member.remove.js.map +1 -1
- package/dist/commands/plugin.catalog.browse.js +1 -1
- package/dist/commands/plugin.catalog.browse.js.map +1 -1
- package/dist/commands/plugin.install.js +3 -2
- package/dist/commands/plugin.install.js.map +1 -1
- package/dist/commands/plugin.list.js +3 -2
- package/dist/commands/plugin.list.js.map +1 -1
- package/dist/commands/plugin.registry.list.js +1 -1
- package/dist/commands/plugin.registry.list.js.map +1 -1
- package/dist/commands/plugin.uninstall.js +3 -2
- package/dist/commands/plugin.uninstall.js.map +1 -1
- package/dist/commands/privacy.erase.d.ts +3 -0
- package/dist/commands/privacy.erase.d.ts.map +1 -0
- package/dist/commands/privacy.erase.js +60 -0
- package/dist/commands/privacy.erase.js.map +1 -0
- package/dist/commands/privacy.export.d.ts +3 -0
- package/dist/commands/privacy.export.d.ts.map +1 -0
- package/dist/commands/privacy.export.js +36 -0
- package/dist/commands/privacy.export.js.map +1 -0
- package/dist/commands/workspace.create.js +3 -2
- package/dist/commands/workspace.create.js.map +1 -1
- package/dist/commands/workspace.list.js +3 -2
- package/dist/commands/workspace.list.js.map +1 -1
- package/dist/commands/workspace.member.list.d.ts.map +1 -1
- package/dist/commands/workspace.member.list.js +2 -1
- package/dist/commands/workspace.member.list.js.map +1 -1
- package/dist/commands.test.js +472 -0
- package/dist/commands.test.js.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +1 -1
- package/package.json +12 -12
- package/LICENSE +0 -3
package/README.md
ADDED
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
# Oxagen CLI
|
|
2
|
+
|
|
3
|
+
A comprehensive command-line interface for Oxagen, enabling you to manage organizations, workspaces, conversations, and more directly from your terminal.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
### From npm (when published)
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
npm install -g @oxagen/cli
|
|
11
|
+
# or
|
|
12
|
+
yarn global add @oxagen/cli
|
|
13
|
+
# or
|
|
14
|
+
pnpm add -g @oxagen/cli
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
After installation, verify the CLI is available:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
oxagen --version
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### From source (development)
|
|
24
|
+
|
|
25
|
+
Clone the repository and run:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cd oxagen-monorepo
|
|
29
|
+
pnpm install
|
|
30
|
+
pnpm build
|
|
31
|
+
pnpm -C apps/cli dev # for development with tsx
|
|
32
|
+
# or
|
|
33
|
+
pnpm -C apps/cli build && node apps/cli/dist/index.js # for production build
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Quick Start
|
|
37
|
+
|
|
38
|
+
### Authentication
|
|
39
|
+
|
|
40
|
+
First, authenticate with your Oxagen account:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
oxagen auth login
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
You'll be prompted for your credentials. Your session is saved locally for subsequent commands.
|
|
47
|
+
|
|
48
|
+
Check who you're logged in as:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
oxagen auth whoami
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Log out when finished:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
oxagen auth logout
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Organizations & Workspaces
|
|
61
|
+
|
|
62
|
+
List your organizations:
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
oxagen org list
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Create a new organization:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
oxagen org create --name "My Organization"
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
List workspaces in an organization:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
oxagen workspace list
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Create a new workspace:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
oxagen workspace create --name "My Workspace"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
## Common Commands
|
|
87
|
+
|
|
88
|
+
### Authentication
|
|
89
|
+
|
|
90
|
+
- `oxagen auth login` — Authenticate with your account
|
|
91
|
+
- `oxagen auth logout` — Remove local session
|
|
92
|
+
- `oxagen auth whoami` — Display current user
|
|
93
|
+
|
|
94
|
+
### Organization Management
|
|
95
|
+
|
|
96
|
+
- `oxagen org list` — List all organizations
|
|
97
|
+
- `oxagen org create` — Create a new organization
|
|
98
|
+
- `oxagen org member add` — Add a member to an organization
|
|
99
|
+
- `oxagen org member remove` — Remove a member from an organization
|
|
100
|
+
- `oxagen org member role change` — Change a member's role
|
|
101
|
+
- `oxagen org member invite accept` — Accept an org invite
|
|
102
|
+
- `oxagen org member invite decline` — Decline an org invite
|
|
103
|
+
|
|
104
|
+
### Workspace Management
|
|
105
|
+
|
|
106
|
+
- `oxagen workspace list` — List workspaces
|
|
107
|
+
- `oxagen workspace create` — Create a workspace
|
|
108
|
+
- `oxagen workspace member list` — List workspace members
|
|
109
|
+
- `oxagen workspace invite send` — Send an invite to a workspace
|
|
110
|
+
- `oxagen workspace model settings read` — Read model settings
|
|
111
|
+
- `oxagen workspace model settings write` — Update model settings
|
|
112
|
+
|
|
113
|
+
### Conversations & Chat
|
|
114
|
+
|
|
115
|
+
- `oxagen conversation list` — List conversations
|
|
116
|
+
- `oxagen conversation chat` — Start interactive chat
|
|
117
|
+
- `oxagen chat send` — Send a single message
|
|
118
|
+
- `oxagen conversation rename` — Rename a conversation
|
|
119
|
+
- `oxagen conversation archive` — Archive a conversation
|
|
120
|
+
- `oxagen conversation delete` — Delete a conversation
|
|
121
|
+
- `oxagen conversation purge` — Purge all conversations
|
|
122
|
+
|
|
123
|
+
### API Keys
|
|
124
|
+
|
|
125
|
+
- `oxagen api-key create` — Create a new API key
|
|
126
|
+
- `oxagen api-key revoke` — Revoke an API key
|
|
127
|
+
|
|
128
|
+
### Plugins
|
|
129
|
+
|
|
130
|
+
- `oxagen plugin list` — List available plugins
|
|
131
|
+
- `oxagen plugin install` — Install a plugin
|
|
132
|
+
- `oxagen plugin uninstall` — Uninstall a plugin
|
|
133
|
+
- `oxagen plugin org list` — List organization plugins
|
|
134
|
+
- `oxagen plugin org install` — Org-level plugin install
|
|
135
|
+
- `oxagen plugin org uninstall` — Org-level plugin uninstall
|
|
136
|
+
- `oxagen plugin org install bulk` — Bulk install plugins
|
|
137
|
+
- `oxagen plugin org set enabled` — Enable/disable org plugin
|
|
138
|
+
- `oxagen plugin workspace set enabled` — Enable/disable workspace plugin
|
|
139
|
+
- `oxagen plugin registry list` — List plugin registries
|
|
140
|
+
- `oxagen plugin registry add` — Add a custom registry
|
|
141
|
+
- `oxagen plugin registry remove` — Remove a registry
|
|
142
|
+
- `oxagen plugin registry sync` — Sync plugins from registry
|
|
143
|
+
- `oxagen plugin catalog get` — Get plugin from catalog
|
|
144
|
+
- `oxagen plugin catalog browse` — Browse plugin catalog
|
|
145
|
+
- `oxagen plugin credential reauth` — Re-authenticate plugin
|
|
146
|
+
- `oxagen plugin credential set secret` — Set plugin credentials
|
|
147
|
+
- `oxagen plugin denylist add` — Add to denylist
|
|
148
|
+
- `oxagen plugin denylist remove` — Remove from denylist
|
|
149
|
+
- `oxagen plugin settings set auth alerts` — Configure alerts
|
|
150
|
+
|
|
151
|
+
### Billing & Credits
|
|
152
|
+
|
|
153
|
+
- `oxagen billing status` — View billing status
|
|
154
|
+
- `oxagen billing credits purchase` — Purchase credits
|
|
155
|
+
- `oxagen billing subscription read` — View subscription
|
|
156
|
+
- `oxagen billing subscription upgrade start` — Start upgrade
|
|
157
|
+
|
|
158
|
+
### Agents & Workflows
|
|
159
|
+
|
|
160
|
+
- `oxagen agent mcp list` — List agent MCP servers
|
|
161
|
+
- `oxagen agent mcp register` — Register an MCP server
|
|
162
|
+
- `oxagen agent skill list` — List agent skills
|
|
163
|
+
- `oxagen agent tool list` — List available tools
|
|
164
|
+
- `oxagen agent approval resolve` — Resolve an approval
|
|
165
|
+
- `oxagen agent memory write` — Write to agent memory
|
|
166
|
+
- `oxagen agent memory recall` — Recall from agent memory
|
|
167
|
+
- `oxagen agent task background start` — Start background task
|
|
168
|
+
- `oxagen agent task background read` — Read task status
|
|
169
|
+
- `oxagen agent task background cancel` — Cancel task
|
|
170
|
+
- `oxagen agent plan approve` — Approve an agent plan
|
|
171
|
+
- `oxagen workflow run` — Run a workflow
|
|
172
|
+
- `oxagen workflow status` — Check workflow status
|
|
173
|
+
- `oxagen workflow cancel` — Cancel a workflow
|
|
174
|
+
|
|
175
|
+
### Content & Media
|
|
176
|
+
|
|
177
|
+
- `oxagen image list` — List images
|
|
178
|
+
- `oxagen image create` — Upload/create an image
|
|
179
|
+
- `oxagen image generate` — Generate an image with AI
|
|
180
|
+
- `oxagen image analyze` — Analyze an image
|
|
181
|
+
- `oxagen document list` — List documents
|
|
182
|
+
- `oxagen document create` — Create a document
|
|
183
|
+
- `oxagen document read` — Read a document
|
|
184
|
+
- `oxagen documents generate` — Generate documents
|
|
185
|
+
- `oxagen documents pdf create` — Generate PDF from documents
|
|
186
|
+
- `oxagen video generate` — Generate video
|
|
187
|
+
- `oxagen svg generate` — Generate SVG
|
|
188
|
+
- `oxagen asset upload` — Upload an asset
|
|
189
|
+
|
|
190
|
+
### Forms & Automation
|
|
191
|
+
|
|
192
|
+
- `oxagen form create` — Create a form
|
|
193
|
+
- `oxagen form submit` — Submit form data
|
|
194
|
+
- `oxagen form fill` — Fill form fields
|
|
195
|
+
- `oxagen automation list` — List automations
|
|
196
|
+
- `oxagen automation create` — Create an automation
|
|
197
|
+
- `oxagen automation trigger` — Trigger an automation
|
|
198
|
+
|
|
199
|
+
### Utilities
|
|
200
|
+
|
|
201
|
+
- `oxagen notifications list` — List notifications
|
|
202
|
+
- `oxagen notifications mark` — Mark notifications as read
|
|
203
|
+
- `oxagen user preferences get` — Get user preferences
|
|
204
|
+
- `oxagen user preferences read` — Read preferences
|
|
205
|
+
- `oxagen user preferences update` — Update preferences
|
|
206
|
+
- `oxagen user preferences write` — Write preferences
|
|
207
|
+
- `oxagen skill workspace list` — List workspace skills
|
|
208
|
+
- `oxagen archive create` — Create an archive
|
|
209
|
+
- `oxagen brandkit apply` — Apply brand kit settings
|
|
210
|
+
|
|
211
|
+
## Usage Examples
|
|
212
|
+
|
|
213
|
+
### Interactive Chat Session
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
oxagen conversation chat --workspace my-workspace
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
### Send a Single Message
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
oxagen chat send "What is the weather today?" --workspace my-workspace
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Create and Configure
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
# Create a new organization
|
|
229
|
+
oxagen org create --name "Acme Corp"
|
|
230
|
+
|
|
231
|
+
# Create a workspace within it
|
|
232
|
+
oxagen workspace create --name "Engineering"
|
|
233
|
+
|
|
234
|
+
# Invite team members
|
|
235
|
+
oxagen workspace invite send --email "alice@acme.com" --email "bob@acme.com"
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### API Key Management
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
# Create an API key for programmatic access
|
|
242
|
+
oxagen api-key create
|
|
243
|
+
|
|
244
|
+
# Revoke a key by ID
|
|
245
|
+
oxagen api-key revoke <key-id>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Plugin Management
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# View available plugins
|
|
252
|
+
oxagen plugin catalog browse
|
|
253
|
+
|
|
254
|
+
# Install a plugin to your workspace
|
|
255
|
+
oxagen plugin install <plugin-id>
|
|
256
|
+
|
|
257
|
+
# Configure plugin credentials
|
|
258
|
+
oxagen plugin credential set secret <plugin-id> <secret-name> <secret-value>
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Configuration
|
|
262
|
+
|
|
263
|
+
Settings are stored in your user's config directory:
|
|
264
|
+
- **macOS**: `~/.config/oxagen/`
|
|
265
|
+
- **Linux**: `~/.config/oxagen/`
|
|
266
|
+
- **Windows**: `%APPDATA%\oxagen\`
|
|
267
|
+
|
|
268
|
+
Your authentication token is stored securely in the system keychain when available, with a fallback to the config directory.
|
|
269
|
+
|
|
270
|
+
## Troubleshooting
|
|
271
|
+
|
|
272
|
+
### `command not found: oxagen`
|
|
273
|
+
|
|
274
|
+
Ensure the CLI is installed globally:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
npm list -g @oxagen/cli
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
If not installed, run:
|
|
281
|
+
|
|
282
|
+
```bash
|
|
283
|
+
npm install -g @oxagen/cli
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
### Authentication failures
|
|
287
|
+
|
|
288
|
+
Clear your cached session and re-authenticate:
|
|
289
|
+
|
|
290
|
+
```bash
|
|
291
|
+
oxagen auth logout
|
|
292
|
+
oxagen auth login
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
### Check version and help
|
|
296
|
+
|
|
297
|
+
```bash
|
|
298
|
+
oxagen --version
|
|
299
|
+
oxagen --help
|
|
300
|
+
oxagen <command> --help
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
## Publishing to npm
|
|
304
|
+
|
|
305
|
+
### Prerequisites
|
|
306
|
+
|
|
307
|
+
1. Ensure you have an npm account: https://www.npmjs.com/signup
|
|
308
|
+
2. Authenticate locally:
|
|
309
|
+
```bash
|
|
310
|
+
npm login
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
3. Package must not be marked as `"private": true` in `package.json` (currently it is; see step below)
|
|
314
|
+
|
|
315
|
+
### Before Publishing
|
|
316
|
+
|
|
317
|
+
1. Update the version in `apps/cli/package.json`:
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
# Use semantic versioning
|
|
321
|
+
npm version patch # 0.2.2 → 0.2.3 (bug fixes)
|
|
322
|
+
npm version minor # 0.2.2 → 0.3.0 (new features, backwards compatible)
|
|
323
|
+
npm version major # 0.2.2 → 1.0.0 (breaking changes)
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Or manually edit the `version` field.
|
|
327
|
+
|
|
328
|
+
2. Update `apps/cli/package.json` to remove the `"private": true` field:
|
|
329
|
+
|
|
330
|
+
```json
|
|
331
|
+
{
|
|
332
|
+
"name": "@oxagen/cli",
|
|
333
|
+
"version": "0.3.0",
|
|
334
|
+
"type": "module",
|
|
335
|
+
"bin": {
|
|
336
|
+
"oxagen": "./dist/index.js"
|
|
337
|
+
}
|
|
338
|
+
// ... rest of config
|
|
339
|
+
}
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
3. Build the distribution:
|
|
343
|
+
|
|
344
|
+
```bash
|
|
345
|
+
pnpm -C apps/cli build
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
4. Verify the build is correct:
|
|
349
|
+
|
|
350
|
+
```bash
|
|
351
|
+
node apps/cli/dist/index.js --version
|
|
352
|
+
node apps/cli/dist/index.js --help
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
### Publishing
|
|
356
|
+
|
|
357
|
+
From the monorepo root:
|
|
358
|
+
|
|
359
|
+
```bash
|
|
360
|
+
# Option 1: Using npm directly from the CLI package directory
|
|
361
|
+
cd apps/cli
|
|
362
|
+
npm publish
|
|
363
|
+
|
|
364
|
+
# Option 2: Using pnpm from monorepo root
|
|
365
|
+
pnpm publish -C apps/cli
|
|
366
|
+
```
|
|
367
|
+
|
|
368
|
+
### Verification
|
|
369
|
+
|
|
370
|
+
Verify the package was published:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
npm view @oxagen/cli
|
|
374
|
+
npm info @oxagen/cli
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
Install from npm to verify:
|
|
378
|
+
|
|
379
|
+
```bash
|
|
380
|
+
npm install -g @oxagen/cli@latest
|
|
381
|
+
oxagen --version
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
### Post-Publish Checklist
|
|
385
|
+
|
|
386
|
+
- [ ] Version bumped in `apps/cli/package.json`
|
|
387
|
+
- [ ] `package.json` no longer marked `"private"`
|
|
388
|
+
- [ ] Distribution built (`apps/cli/dist/` up-to-date)
|
|
389
|
+
- [ ] Package published to npm
|
|
390
|
+
- [ ] Installation verified with `npm install -g @oxagen/cli@latest`
|
|
391
|
+
- [ ] Help text displays correctly: `oxagen --help`
|
|
392
|
+
- [ ] Global command works: `oxagen --version`
|
|
393
|
+
- [ ] Commit and tag pushed to repository
|
|
394
|
+
|
|
395
|
+
### Automated Release (via pnpm scripts)
|
|
396
|
+
|
|
397
|
+
This monorepo includes automated release tooling:
|
|
398
|
+
|
|
399
|
+
```bash
|
|
400
|
+
pnpm release:patch # Bumps all packages including @oxagen/cli
|
|
401
|
+
pnpm release:minor
|
|
402
|
+
pnpm release:major
|
|
403
|
+
```
|
|
404
|
+
|
|
405
|
+
These commands:
|
|
406
|
+
- Bump version across all workspace packages (lockstep versioning)
|
|
407
|
+
- Create a git tag
|
|
408
|
+
- Publish to npm
|
|
409
|
+
- Sync version to Vercel projects
|
|
410
|
+
|
|
411
|
+
## Development
|
|
412
|
+
|
|
413
|
+
### Building from source
|
|
414
|
+
|
|
415
|
+
```bash
|
|
416
|
+
pnpm -C apps/cli build
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Testing
|
|
420
|
+
|
|
421
|
+
```bash
|
|
422
|
+
pnpm -C apps/cli test:unit
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
### Linting
|
|
426
|
+
|
|
427
|
+
```bash
|
|
428
|
+
pnpm -C apps/cli lint
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
### Interactive development
|
|
432
|
+
|
|
433
|
+
```bash
|
|
434
|
+
pnpm -C apps/cli dev -- <command> [args]
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
## Support
|
|
438
|
+
|
|
439
|
+
For issues, feature requests, or questions:
|
|
440
|
+
|
|
441
|
+
- GitHub Issues: https://github.com/oxagen/oxagen-monorepo/issues
|
|
442
|
+
- Documentation: https://oxagen-v2-docs.vercel.app
|
|
443
|
+
- Email: support@oxagen.ai
|
|
444
|
+
|
|
445
|
+
## License
|
|
446
|
+
|
|
447
|
+
MIT
|
|
@@ -95,14 +95,14 @@ describe("CLI Command Parity Tests", () => {
|
|
|
95
95
|
{ name: "documents.generate", command: documentsGenerateCommand },
|
|
96
96
|
];
|
|
97
97
|
it("all CLI parity commands are properly registered", () => {
|
|
98
|
-
commands.forEach(({
|
|
98
|
+
commands.forEach(({ command }) => {
|
|
99
99
|
expect(command).toBeDefined();
|
|
100
100
|
expect(command.name()).toBeTruthy();
|
|
101
101
|
});
|
|
102
102
|
});
|
|
103
103
|
it("each command has a description", () => {
|
|
104
104
|
commands.forEach(({ command }) => {
|
|
105
|
-
expect(command.
|
|
105
|
+
expect(command.description()).toBeTruthy();
|
|
106
106
|
});
|
|
107
107
|
});
|
|
108
108
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli-parity.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/cli-parity.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli-parity.test.js","sourceRoot":"","sources":["../../../src/commands/__tests__/cli-parity.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.plan.create.d.ts","sourceRoot":"","sources":["../../src/commands/agent.plan.create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAsBpC,eAAO,MAAM,sBAAsB,SA+ChC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { Command } from "commander";
|
|
2
|
+
import { apiRequest, ApiError } from "../lib/api-client.js";
|
|
3
|
+
export const agentPlanCreateCommand = new Command("create")
|
|
4
|
+
.description("Create a structured hierarchical execution plan with approval gates")
|
|
5
|
+
.requiredOption("-g, --goals <json>", "JSON array of goal strings")
|
|
6
|
+
.requiredOption("-t, --tasks <json>", "JSON array of task objects")
|
|
7
|
+
.option("-c, --constraints <json>", "JSON array of constraint strings")
|
|
8
|
+
.option("--no-approval", "Skip approval gate (plan starts as draft, not awaiting_approval)")
|
|
9
|
+
.option("--message-id <id>", "Originating conversation message ID")
|
|
10
|
+
.option("-o, --org <id>", "Organization ID")
|
|
11
|
+
.action(async (options) => {
|
|
12
|
+
try {
|
|
13
|
+
const goals = JSON.parse(options.goals);
|
|
14
|
+
const tasks = JSON.parse(options.tasks);
|
|
15
|
+
const constraints = options.constraints
|
|
16
|
+
? JSON.parse(options.constraints)
|
|
17
|
+
: undefined;
|
|
18
|
+
const data = await apiRequest("/agent/plans", {
|
|
19
|
+
method: "POST",
|
|
20
|
+
body: JSON.stringify({
|
|
21
|
+
goals,
|
|
22
|
+
tasks,
|
|
23
|
+
constraints,
|
|
24
|
+
approvalRequired: options.approval,
|
|
25
|
+
messageId: options.messageId,
|
|
26
|
+
org_id: options.org,
|
|
27
|
+
}),
|
|
28
|
+
});
|
|
29
|
+
console.log(`✓ Plan created: ${data.planId} (${data.status})`);
|
|
30
|
+
console.log(` Goals: ${data.goals.length}, Tasks: ${data.tasks.length}`);
|
|
31
|
+
if (data.approvalRequired) {
|
|
32
|
+
console.log(` Awaiting approval via: oxagen agent plan approve --plan ${data.planId} --decision approve`);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
catch (err) {
|
|
36
|
+
const msg = err instanceof ApiError ? err.message : String(err);
|
|
37
|
+
console.error(`Error: ${msg}`);
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
//# sourceMappingURL=agent.plan.create.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.plan.create.js","sourceRoot":"","sources":["../../src/commands/agent.plan.create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAqB5D,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACxD,WAAW,CAAC,qEAAqE,CAAC;KAClF,cAAc,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;KAClE,cAAc,CAAC,oBAAoB,EAAE,4BAA4B,CAAC;KAClE,MAAM,CAAC,0BAA0B,EAAE,kCAAkC,CAAC;KACtE,MAAM,CAAC,eAAe,EAAE,kEAAkE,CAAC;KAC3F,MAAM,CAAC,mBAAmB,EAAE,qCAAqC,CAAC;KAClE,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;KAC3C,MAAM,CACL,KAAK,EAAE,OAON,EAAE,EAAE;IACH,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAa,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAe,CAAC;QACtD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW;YACrC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAc;YAC/C,CAAC,CAAC,SAAS,CAAC;QAEd,MAAM,IAAI,GAAG,MAAM,UAAU,CAA0B,cAAc,EAAE;YACrE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACnB,KAAK;gBACL,KAAK;gBACL,WAAW;gBACX,gBAAgB,EAAE,OAAO,CAAC,QAAQ;gBAClC,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,MAAM,EAAE,OAAO,CAAC,GAAG;aACpB,CAAC;SACH,CAAC,CAAC;QAEH,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,YAAY,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;QAC1E,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,6DAA6D,IAAI,CAAC,MAAM,qBAAqB,CAAC,CAAC;QAC7G,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CACF,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, requireAuth } from "../lib/api-client.js";
|
|
2
|
+
import { apiRequest, requireAuth, ApiError } from "../lib/api-client.js";
|
|
3
3
|
export const apiKeyCreateCommand = new Command("create")
|
|
4
4
|
.description("Create an API key")
|
|
5
5
|
.argument("<name>", "Key name")
|
|
@@ -23,7 +23,8 @@ export const apiKeyCreateCommand = new Command("create")
|
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
|
-
|
|
26
|
+
const _msg = err instanceof ApiError ? err.message : String(err);
|
|
27
|
+
console.error(`Error: ${_msg}`);
|
|
27
28
|
process.exit(1);
|
|
28
29
|
}
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.create.js","sourceRoot":"","sources":["../../src/commands/api-key.create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-key.create.js","sourceRoot":"","sources":["../../src/commands/api-key.create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AASzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACrD,WAAW,CAAC,mBAAmB,CAAC;KAChC,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC;KAC9B,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,oBAAoB,EAAE,gBAAgB,CAAC;KAC9C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAA6C,EAAE,EAAE;IAC5E,WAAW,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAiB,WAAW,EAAE;YACzD,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,SAAS,EAAE,CAAC;SAC/E,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,CAAC,EAAE,IAAI,SAAS,EAAE,CAAC,CAAC;QAC1D,IAAI,MAAM,EAAE,CAAC;YACX,0GAA0G;YAC1G,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK;gBACxC,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,UAAU,aAAa,EAAE,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, requireAuth } from "../lib/api-client.js";
|
|
2
|
+
import { apiRequest, requireAuth, ApiError } from "../lib/api-client.js";
|
|
3
3
|
export const apiKeyRevokeCommand = new Command("revoke")
|
|
4
4
|
.description("Revoke an API key")
|
|
5
5
|
.argument("<id>", "API key ID to revoke")
|
|
@@ -10,7 +10,8 @@ export const apiKeyRevokeCommand = new Command("revoke")
|
|
|
10
10
|
console.log(`✓ API key ${id} revoked`);
|
|
11
11
|
}
|
|
12
12
|
catch (err) {
|
|
13
|
-
|
|
13
|
+
const _msg = err instanceof ApiError ? err.message : String(err);
|
|
14
|
+
console.error(`Error: ${_msg}`);
|
|
14
15
|
process.exit(1);
|
|
15
16
|
}
|
|
16
17
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api-key.revoke.js","sourceRoot":"","sources":["../../src/commands/api-key.revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"api-key.revoke.js","sourceRoot":"","sources":["../../src/commands/api-key.revoke.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEzE,MAAM,CAAC,MAAM,mBAAmB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACrD,WAAW,CAAC,mBAAmB,CAAC;KAChC,QAAQ,CAAC,MAAM,EAAE,sBAAsB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,EAAU,EAAE,EAAE;IAC3B,WAAW,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,UAAU,CAAC,aAAa,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -10,7 +10,8 @@ export const authLoginCommand = new Command("login")
|
|
|
10
10
|
console.error("Error: email and password are required");
|
|
11
11
|
process.exit(1);
|
|
12
12
|
}
|
|
13
|
-
|
|
13
|
+
if (process.stdout.isTTY)
|
|
14
|
+
console.log(`Authenticating as ${options.email}...`);
|
|
14
15
|
try {
|
|
15
16
|
const data = await apiRequest("/auth/sign-in/email", {
|
|
16
17
|
method: "POST",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.login.js","sourceRoot":"","sources":["../../src/commands/auth.login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACjD,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IAC/D,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.login.js","sourceRoot":"","sources":["../../src/commands/auth.login.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAQ/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC;KACjD,WAAW,CAAC,0BAA0B,CAAC;KACvC,MAAM,CAAC,qBAAqB,EAAE,eAAe,CAAC;KAC9C,MAAM,CAAC,2BAA2B,EAAE,UAAU,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,OAA8C,EAAE,EAAE;IAC/D,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;QACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC;IAC/E,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAgB,qBAAqB,EAAE;YAClE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC3E,CAAC,CAAC;QACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC;QAChD,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QACpD,WAAW,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,KAAK,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, requireAuth } from "../lib/api-client.js";
|
|
2
|
+
import { apiRequest, requireAuth, ApiError } from "../lib/api-client.js";
|
|
3
3
|
import { readConfig } from "../lib/config.js";
|
|
4
4
|
export const authWhoamiCommand = new Command("whoami")
|
|
5
5
|
.description("Show current user and organization")
|
|
@@ -13,7 +13,8 @@ export const authWhoamiCommand = new Command("whoami")
|
|
|
13
13
|
console.log(`Workspace: ${data.workspace?.slug ?? cfg.workspaceSlug ?? "none"}`);
|
|
14
14
|
}
|
|
15
15
|
catch (err) {
|
|
16
|
-
|
|
16
|
+
const _msg = err instanceof ApiError ? err.message : String(err);
|
|
17
|
+
console.error(`Error: ${_msg}`);
|
|
17
18
|
process.exit(1);
|
|
18
19
|
}
|
|
19
20
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.whoami.js","sourceRoot":"","sources":["../../src/commands/auth.whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.whoami.js","sourceRoot":"","sources":["../../src/commands/auth.whoami.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAQ9C,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACnD,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,WAAW,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAa,UAAU,CAAC,CAAC;QACtD,MAAM,GAAG,GAAG,UAAU,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;QACtD,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,GAAG,CAAC,OAAO,IAAI,MAAM,EAAE,CAAC,CAAC;QACxE,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,GAAG,CAAC,aAAa,IAAI,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
|
-
import { apiRequest, requireAuth } from "../lib/api-client.js";
|
|
2
|
+
import { apiRequest, requireAuth, ApiError } from "../lib/api-client.js";
|
|
3
3
|
export const billingStatusCommand = new Command("status")
|
|
4
4
|
.description("Show current subscription and credit balance")
|
|
5
5
|
.option("--org <slug>", "Organization slug")
|
|
@@ -23,7 +23,8 @@ export const billingStatusCommand = new Command("status")
|
|
|
23
23
|
console.log(`Credits: $${balance.toFixed(2)}`);
|
|
24
24
|
}
|
|
25
25
|
catch (err) {
|
|
26
|
-
|
|
26
|
+
const _msg = err instanceof ApiError ? err.message : String(err);
|
|
27
|
+
console.error(`Error: ${_msg}`);
|
|
27
28
|
process.exit(1);
|
|
28
29
|
}
|
|
29
30
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"billing.status.js","sourceRoot":"","sources":["../../src/commands/billing.status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"billing.status.js","sourceRoot":"","sources":["../../src/commands/billing.status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAG,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAY1E,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC;KACtD,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAyB,EAAE,EAAE;IAC1C,WAAW,EAAE,CAAC;IACd,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,MAAM,UAAU,CAAuB,wBAAwB,EAAE,EAAE,CAAC,CAAC;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9B,IAAI,GAAG,EAAE,CAAC;YACR,OAAO,CAAC,GAAG,CAAC,SAAS,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,SAAS,EAAE,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC;YAClD,IAAI,GAAG,CAAC,gBAAgB;gBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,gBAAgB,EAAE,CAAC,CAAC;QAC3E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QACzC,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,aAAa,EAAE,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC;QACxE,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,GAAG,YAAY,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,UAAU,IAAI,EAAE,CAAC,CAAC;QAClG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC"}
|