faces-cli 1.5.7 → 1.5.9
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/dist/commands/auth/whoami.js +77 -11
- package/dist/commands/config/set.js +4 -0
- package/oclif.manifest.json +409 -409
- package/package.json +1 -1
|
@@ -1,24 +1,90 @@
|
|
|
1
1
|
import { BaseCommand } from '../../base.js';
|
|
2
|
-
import { FacesAPIError } from '../../client.js';
|
|
2
|
+
import { FacesClient, FacesAPIError } from '../../client.js';
|
|
3
|
+
import { resolveBaseUrl, resolveToken, resolveApiKey } from '../../config.js';
|
|
3
4
|
export default class AuthWhoami extends BaseCommand {
|
|
4
|
-
static description = 'Print current user profile';
|
|
5
|
+
static description = 'Print current user profile and auth diagnostic';
|
|
5
6
|
static flags = {
|
|
6
7
|
...BaseCommand.baseFlags,
|
|
7
8
|
};
|
|
8
9
|
async run() {
|
|
9
10
|
const { flags } = await this.parse(AuthWhoami);
|
|
10
|
-
const
|
|
11
|
-
|
|
11
|
+
const baseUrl = resolveBaseUrl(flags['base-url']);
|
|
12
|
+
const token = resolveToken(flags.token);
|
|
13
|
+
const apiKey = resolveApiKey(flags['api-key']);
|
|
14
|
+
const json = this.jsonEnabled();
|
|
15
|
+
const diag = {
|
|
16
|
+
base_url: baseUrl,
|
|
17
|
+
jwt_configured: Boolean(token),
|
|
18
|
+
api_key_configured: Boolean(apiKey),
|
|
19
|
+
api_key_prefix: apiKey ? apiKey.slice(0, 12) + '...' : null,
|
|
20
|
+
};
|
|
21
|
+
// Try API key first (priority), then JWT
|
|
22
|
+
const credential = apiKey || token;
|
|
23
|
+
const method = apiKey ? 'api_key' : token ? 'jwt' : null;
|
|
24
|
+
if (!credential) {
|
|
25
|
+
diag.authenticated = false;
|
|
26
|
+
diag.auth_method = null;
|
|
27
|
+
diag.error = 'No credentials configured (no API key, no JWT)';
|
|
28
|
+
if (!json) {
|
|
29
|
+
process.stderr.write('Auth diagnostic:\n');
|
|
30
|
+
process.stderr.write(` base_url: ${baseUrl}\n`);
|
|
31
|
+
process.stderr.write(` jwt: not configured\n`);
|
|
32
|
+
process.stderr.write(` api_key: not configured\n`);
|
|
33
|
+
process.stderr.write(` status: not authenticated\n`);
|
|
34
|
+
}
|
|
35
|
+
return diag;
|
|
36
|
+
}
|
|
37
|
+
const client = new FacesClient(baseUrl, token, apiKey);
|
|
12
38
|
try {
|
|
13
|
-
data = await client.get('/auth/me'
|
|
39
|
+
const data = await client.get('/auth/me');
|
|
40
|
+
const inner = (data.data ?? data);
|
|
41
|
+
diag.authenticated = true;
|
|
42
|
+
diag.auth_method = method;
|
|
43
|
+
diag.user_id = inner.user_id;
|
|
44
|
+
diag.username = inner.username;
|
|
45
|
+
diag.email = inner.email;
|
|
46
|
+
diag.name = inner.name;
|
|
47
|
+
diag.is_admin = inner.is_admin;
|
|
48
|
+
if (!json) {
|
|
49
|
+
process.stderr.write('Auth diagnostic:\n');
|
|
50
|
+
process.stderr.write(` base_url: ${baseUrl}\n`);
|
|
51
|
+
process.stderr.write(` jwt: ${token ? 'configured' : 'not configured'}\n`);
|
|
52
|
+
process.stderr.write(` api_key: ${apiKey ? diag.api_key_prefix : 'not configured'}\n`);
|
|
53
|
+
process.stderr.write(` auth_method: ${method}\n`);
|
|
54
|
+
process.stderr.write(` status: authenticated\n`);
|
|
55
|
+
process.stderr.write('\n');
|
|
56
|
+
process.stderr.write(` user_id: ${inner.user_id}\n`);
|
|
57
|
+
process.stderr.write(` username: ${inner.username}\n`);
|
|
58
|
+
process.stderr.write(` email: ${inner.email}\n`);
|
|
59
|
+
process.stderr.write(` name: ${inner.name}\n`);
|
|
60
|
+
}
|
|
61
|
+
return diag;
|
|
14
62
|
}
|
|
15
63
|
catch (err) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
64
|
+
const errMsg = err instanceof FacesAPIError ? `${err.statusCode}: ${err.message}` : String(err);
|
|
65
|
+
diag.authenticated = false;
|
|
66
|
+
diag.auth_method = method;
|
|
67
|
+
diag.error = errMsg;
|
|
68
|
+
// If API key failed, also report JWT state
|
|
69
|
+
if (method === 'api_key' && token) {
|
|
70
|
+
diag.jwt_status = 'configured but not tried (API key takes priority)';
|
|
71
|
+
}
|
|
72
|
+
if (method === 'jwt') {
|
|
73
|
+
diag.jwt_status = 'failed';
|
|
74
|
+
if (apiKey) {
|
|
75
|
+
diag.api_key_status = 'configured but not valid for this endpoint';
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (!json) {
|
|
79
|
+
process.stderr.write('Auth diagnostic:\n');
|
|
80
|
+
process.stderr.write(` base_url: ${baseUrl}\n`);
|
|
81
|
+
process.stderr.write(` jwt: ${token ? 'configured' : 'not configured'}\n`);
|
|
82
|
+
process.stderr.write(` api_key: ${apiKey ? diag.api_key_prefix : 'not configured'}\n`);
|
|
83
|
+
process.stderr.write(` auth_method: ${method}\n`);
|
|
84
|
+
process.stderr.write(` status: failed\n`);
|
|
85
|
+
process.stderr.write(` error: ${errMsg}\n`);
|
|
86
|
+
}
|
|
87
|
+
return diag;
|
|
19
88
|
}
|
|
20
|
-
if (!this.jsonEnabled())
|
|
21
|
-
this.printHuman(data);
|
|
22
|
-
return data;
|
|
23
89
|
}
|
|
24
90
|
}
|
|
@@ -12,6 +12,10 @@ export default class ConfigSet extends BaseCommand {
|
|
|
12
12
|
};
|
|
13
13
|
async run() {
|
|
14
14
|
const { args } = await this.parse(ConfigSet);
|
|
15
|
+
// Validate api_key prefix
|
|
16
|
+
if (args.key === 'api_key' && args.value && !args.value.startsWith('sk-faces-')) {
|
|
17
|
+
this.error('Faces API keys start with sk-faces-. This does not look like a Faces API key.');
|
|
18
|
+
}
|
|
15
19
|
setConfigKey(args.key, args.value);
|
|
16
20
|
this.log(`Set ${args.key}.`);
|
|
17
21
|
return { key: args.key, status: 'set' };
|
package/oclif.manifest.json
CHANGED
|
@@ -53,151 +53,10 @@
|
|
|
53
53
|
"state.js"
|
|
54
54
|
]
|
|
55
55
|
},
|
|
56
|
-
"
|
|
57
|
-
"aliases": [],
|
|
58
|
-
"args": {
|
|
59
|
-
"provider": {
|
|
60
|
-
"description": "OAuth provider to connect",
|
|
61
|
-
"name": "provider",
|
|
62
|
-
"options": [
|
|
63
|
-
"openai"
|
|
64
|
-
],
|
|
65
|
-
"required": true
|
|
66
|
-
}
|
|
67
|
-
},
|
|
68
|
-
"description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
|
|
69
|
-
"examples": [
|
|
70
|
-
"<%= config.bin %> auth connect openai",
|
|
71
|
-
"<%= config.bin %> auth connect openai --manual"
|
|
72
|
-
],
|
|
73
|
-
"flags": {
|
|
74
|
-
"json": {
|
|
75
|
-
"description": "Format output as json.",
|
|
76
|
-
"helpGroup": "GLOBAL",
|
|
77
|
-
"name": "json",
|
|
78
|
-
"allowNo": false,
|
|
79
|
-
"type": "boolean"
|
|
80
|
-
},
|
|
81
|
-
"base-url": {
|
|
82
|
-
"description": "API base URL",
|
|
83
|
-
"env": "FACES_BASE_URL",
|
|
84
|
-
"name": "base-url",
|
|
85
|
-
"hasDynamicHelp": false,
|
|
86
|
-
"multiple": false,
|
|
87
|
-
"type": "option"
|
|
88
|
-
},
|
|
89
|
-
"token": {
|
|
90
|
-
"description": "JWT bearer token",
|
|
91
|
-
"env": "FACES_TOKEN",
|
|
92
|
-
"name": "token",
|
|
93
|
-
"hasDynamicHelp": false,
|
|
94
|
-
"multiple": false,
|
|
95
|
-
"type": "option"
|
|
96
|
-
},
|
|
97
|
-
"api-key": {
|
|
98
|
-
"description": "API key",
|
|
99
|
-
"env": "FACES_API_KEY",
|
|
100
|
-
"name": "api-key",
|
|
101
|
-
"hasDynamicHelp": false,
|
|
102
|
-
"multiple": false,
|
|
103
|
-
"type": "option"
|
|
104
|
-
},
|
|
105
|
-
"manual": {
|
|
106
|
-
"description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
|
|
107
|
-
"name": "manual",
|
|
108
|
-
"allowNo": false,
|
|
109
|
-
"type": "boolean"
|
|
110
|
-
}
|
|
111
|
-
},
|
|
112
|
-
"hasDynamicHelp": false,
|
|
113
|
-
"hiddenAliases": [],
|
|
114
|
-
"id": "auth:connect",
|
|
115
|
-
"pluginAlias": "faces-cli",
|
|
116
|
-
"pluginName": "faces-cli",
|
|
117
|
-
"pluginType": "core",
|
|
118
|
-
"strict": true,
|
|
119
|
-
"enableJsonFlag": true,
|
|
120
|
-
"isESM": true,
|
|
121
|
-
"relativePath": [
|
|
122
|
-
"dist",
|
|
123
|
-
"commands",
|
|
124
|
-
"auth",
|
|
125
|
-
"connect.js"
|
|
126
|
-
]
|
|
127
|
-
},
|
|
128
|
-
"auth:connections": {
|
|
56
|
+
"billing:balance": {
|
|
129
57
|
"aliases": [],
|
|
130
58
|
"args": {},
|
|
131
|
-
"description": "
|
|
132
|
-
"examples": [
|
|
133
|
-
"<%= config.bin %> auth connections",
|
|
134
|
-
"<%= config.bin %> auth connections --json"
|
|
135
|
-
],
|
|
136
|
-
"flags": {
|
|
137
|
-
"json": {
|
|
138
|
-
"description": "Format output as json.",
|
|
139
|
-
"helpGroup": "GLOBAL",
|
|
140
|
-
"name": "json",
|
|
141
|
-
"allowNo": false,
|
|
142
|
-
"type": "boolean"
|
|
143
|
-
},
|
|
144
|
-
"base-url": {
|
|
145
|
-
"description": "API base URL",
|
|
146
|
-
"env": "FACES_BASE_URL",
|
|
147
|
-
"name": "base-url",
|
|
148
|
-
"hasDynamicHelp": false,
|
|
149
|
-
"multiple": false,
|
|
150
|
-
"type": "option"
|
|
151
|
-
},
|
|
152
|
-
"token": {
|
|
153
|
-
"description": "JWT bearer token",
|
|
154
|
-
"env": "FACES_TOKEN",
|
|
155
|
-
"name": "token",
|
|
156
|
-
"hasDynamicHelp": false,
|
|
157
|
-
"multiple": false,
|
|
158
|
-
"type": "option"
|
|
159
|
-
},
|
|
160
|
-
"api-key": {
|
|
161
|
-
"description": "API key",
|
|
162
|
-
"env": "FACES_API_KEY",
|
|
163
|
-
"name": "api-key",
|
|
164
|
-
"hasDynamicHelp": false,
|
|
165
|
-
"multiple": false,
|
|
166
|
-
"type": "option"
|
|
167
|
-
}
|
|
168
|
-
},
|
|
169
|
-
"hasDynamicHelp": false,
|
|
170
|
-
"hiddenAliases": [],
|
|
171
|
-
"id": "auth:connections",
|
|
172
|
-
"pluginAlias": "faces-cli",
|
|
173
|
-
"pluginName": "faces-cli",
|
|
174
|
-
"pluginType": "core",
|
|
175
|
-
"strict": true,
|
|
176
|
-
"enableJsonFlag": true,
|
|
177
|
-
"isESM": true,
|
|
178
|
-
"relativePath": [
|
|
179
|
-
"dist",
|
|
180
|
-
"commands",
|
|
181
|
-
"auth",
|
|
182
|
-
"connections.js"
|
|
183
|
-
]
|
|
184
|
-
},
|
|
185
|
-
"auth:disconnect": {
|
|
186
|
-
"aliases": [],
|
|
187
|
-
"args": {
|
|
188
|
-
"provider": {
|
|
189
|
-
"description": "OAuth provider to disconnect",
|
|
190
|
-
"name": "provider",
|
|
191
|
-
"options": [
|
|
192
|
-
"openai"
|
|
193
|
-
],
|
|
194
|
-
"required": true
|
|
195
|
-
}
|
|
196
|
-
},
|
|
197
|
-
"description": "Disconnect a linked OAuth provider account",
|
|
198
|
-
"examples": [
|
|
199
|
-
"<%= config.bin %> auth disconnect openai"
|
|
200
|
-
],
|
|
59
|
+
"description": "Show credit balance and payment method status",
|
|
201
60
|
"flags": {
|
|
202
61
|
"json": {
|
|
203
62
|
"description": "Format output as json.",
|
|
@@ -233,7 +92,7 @@
|
|
|
233
92
|
},
|
|
234
93
|
"hasDynamicHelp": false,
|
|
235
94
|
"hiddenAliases": [],
|
|
236
|
-
"id": "
|
|
95
|
+
"id": "billing:balance",
|
|
237
96
|
"pluginAlias": "faces-cli",
|
|
238
97
|
"pluginName": "faces-cli",
|
|
239
98
|
"pluginType": "core",
|
|
@@ -243,14 +102,14 @@
|
|
|
243
102
|
"relativePath": [
|
|
244
103
|
"dist",
|
|
245
104
|
"commands",
|
|
246
|
-
"
|
|
247
|
-
"
|
|
105
|
+
"billing",
|
|
106
|
+
"balance.js"
|
|
248
107
|
]
|
|
249
108
|
},
|
|
250
|
-
"
|
|
109
|
+
"billing:card-setup": {
|
|
251
110
|
"aliases": [],
|
|
252
111
|
"args": {},
|
|
253
|
-
"description": "
|
|
112
|
+
"description": "Get a Stripe card setup URL to save a payment method",
|
|
254
113
|
"flags": {
|
|
255
114
|
"json": {
|
|
256
115
|
"description": "Format output as json.",
|
|
@@ -282,27 +141,11 @@
|
|
|
282
141
|
"hasDynamicHelp": false,
|
|
283
142
|
"multiple": false,
|
|
284
143
|
"type": "option"
|
|
285
|
-
},
|
|
286
|
-
"email": {
|
|
287
|
-
"description": "Account email",
|
|
288
|
-
"name": "email",
|
|
289
|
-
"required": true,
|
|
290
|
-
"hasDynamicHelp": false,
|
|
291
|
-
"multiple": false,
|
|
292
|
-
"type": "option"
|
|
293
|
-
},
|
|
294
|
-
"password": {
|
|
295
|
-
"description": "Account password",
|
|
296
|
-
"name": "password",
|
|
297
|
-
"required": true,
|
|
298
|
-
"hasDynamicHelp": false,
|
|
299
|
-
"multiple": false,
|
|
300
|
-
"type": "option"
|
|
301
144
|
}
|
|
302
145
|
},
|
|
303
146
|
"hasDynamicHelp": false,
|
|
304
147
|
"hiddenAliases": [],
|
|
305
|
-
"id": "
|
|
148
|
+
"id": "billing:card-setup",
|
|
306
149
|
"pluginAlias": "faces-cli",
|
|
307
150
|
"pluginName": "faces-cli",
|
|
308
151
|
"pluginType": "core",
|
|
@@ -312,14 +155,14 @@
|
|
|
312
155
|
"relativePath": [
|
|
313
156
|
"dist",
|
|
314
157
|
"commands",
|
|
315
|
-
"
|
|
316
|
-
"
|
|
158
|
+
"billing",
|
|
159
|
+
"card-setup.js"
|
|
317
160
|
]
|
|
318
161
|
},
|
|
319
|
-
"
|
|
162
|
+
"billing:checkout": {
|
|
320
163
|
"aliases": [],
|
|
321
164
|
"args": {},
|
|
322
|
-
"description": "
|
|
165
|
+
"description": "Get a Stripe checkout URL to upgrade your subscription plan",
|
|
323
166
|
"flags": {
|
|
324
167
|
"json": {
|
|
325
168
|
"description": "Format output as json.",
|
|
@@ -351,64 +194,22 @@
|
|
|
351
194
|
"hasDynamicHelp": false,
|
|
352
195
|
"multiple": false,
|
|
353
196
|
"type": "option"
|
|
354
|
-
}
|
|
355
|
-
},
|
|
356
|
-
"hasDynamicHelp": false,
|
|
357
|
-
"hiddenAliases": [],
|
|
358
|
-
"id": "auth:logout",
|
|
359
|
-
"pluginAlias": "faces-cli",
|
|
360
|
-
"pluginName": "faces-cli",
|
|
361
|
-
"pluginType": "core",
|
|
362
|
-
"strict": true,
|
|
363
|
-
"enableJsonFlag": true,
|
|
364
|
-
"isESM": true,
|
|
365
|
-
"relativePath": [
|
|
366
|
-
"dist",
|
|
367
|
-
"commands",
|
|
368
|
-
"auth",
|
|
369
|
-
"logout.js"
|
|
370
|
-
]
|
|
371
|
-
},
|
|
372
|
-
"auth:refresh": {
|
|
373
|
-
"aliases": [],
|
|
374
|
-
"args": {},
|
|
375
|
-
"description": "Exchange current JWT for a fresh one",
|
|
376
|
-
"flags": {
|
|
377
|
-
"json": {
|
|
378
|
-
"description": "Format output as json.",
|
|
379
|
-
"helpGroup": "GLOBAL",
|
|
380
|
-
"name": "json",
|
|
381
|
-
"allowNo": false,
|
|
382
|
-
"type": "boolean"
|
|
383
|
-
},
|
|
384
|
-
"base-url": {
|
|
385
|
-
"description": "API base URL",
|
|
386
|
-
"env": "FACES_BASE_URL",
|
|
387
|
-
"name": "base-url",
|
|
388
|
-
"hasDynamicHelp": false,
|
|
389
|
-
"multiple": false,
|
|
390
|
-
"type": "option"
|
|
391
197
|
},
|
|
392
|
-
"
|
|
393
|
-
"description": "
|
|
394
|
-
"
|
|
395
|
-
"
|
|
396
|
-
"hasDynamicHelp": false,
|
|
397
|
-
"multiple": false,
|
|
398
|
-
"type": "option"
|
|
399
|
-
},
|
|
400
|
-
"api-key": {
|
|
401
|
-
"description": "API key",
|
|
402
|
-
"env": "FACES_API_KEY",
|
|
403
|
-
"name": "api-key",
|
|
198
|
+
"plan": {
|
|
199
|
+
"description": "Plan to subscribe to",
|
|
200
|
+
"name": "plan",
|
|
201
|
+
"default": "connect",
|
|
404
202
|
"hasDynamicHelp": false,
|
|
405
203
|
"multiple": false,
|
|
204
|
+
"options": [
|
|
205
|
+
"connect"
|
|
206
|
+
],
|
|
406
207
|
"type": "option"
|
|
407
208
|
}
|
|
408
209
|
},
|
|
409
210
|
"hasDynamicHelp": false,
|
|
410
211
|
"hiddenAliases": [],
|
|
411
|
-
"id": "
|
|
212
|
+
"id": "billing:checkout",
|
|
412
213
|
"pluginAlias": "faces-cli",
|
|
413
214
|
"pluginName": "faces-cli",
|
|
414
215
|
"pluginType": "core",
|
|
@@ -418,14 +219,14 @@
|
|
|
418
219
|
"relativePath": [
|
|
419
220
|
"dist",
|
|
420
221
|
"commands",
|
|
421
|
-
"
|
|
422
|
-
"
|
|
222
|
+
"billing",
|
|
223
|
+
"checkout.js"
|
|
423
224
|
]
|
|
424
225
|
},
|
|
425
|
-
"
|
|
226
|
+
"billing:llm-costs": {
|
|
426
227
|
"aliases": [],
|
|
427
228
|
"args": {},
|
|
428
|
-
"description": "
|
|
229
|
+
"description": "List available LLMs and their per-token costs",
|
|
429
230
|
"flags": {
|
|
430
231
|
"json": {
|
|
431
232
|
"description": "Format output as json.",
|
|
@@ -458,60 +259,17 @@
|
|
|
458
259
|
"multiple": false,
|
|
459
260
|
"type": "option"
|
|
460
261
|
},
|
|
461
|
-
"
|
|
462
|
-
"description": "
|
|
463
|
-
"name": "
|
|
464
|
-
"required": true,
|
|
465
|
-
"hasDynamicHelp": false,
|
|
466
|
-
"multiple": false,
|
|
467
|
-
"type": "option"
|
|
468
|
-
},
|
|
469
|
-
"password": {
|
|
470
|
-
"description": "Password",
|
|
471
|
-
"name": "password",
|
|
472
|
-
"required": true,
|
|
473
|
-
"hasDynamicHelp": false,
|
|
474
|
-
"multiple": false,
|
|
475
|
-
"type": "option"
|
|
476
|
-
},
|
|
477
|
-
"name": {
|
|
478
|
-
"description": "Display name (defaults to username)",
|
|
479
|
-
"name": "name",
|
|
480
|
-
"hasDynamicHelp": false,
|
|
481
|
-
"multiple": false,
|
|
482
|
-
"type": "option"
|
|
483
|
-
},
|
|
484
|
-
"username": {
|
|
485
|
-
"description": "Username (lowercase, dashes, numbers)",
|
|
486
|
-
"name": "username",
|
|
487
|
-
"required": true,
|
|
488
|
-
"hasDynamicHelp": false,
|
|
489
|
-
"multiple": false,
|
|
490
|
-
"type": "option"
|
|
491
|
-
},
|
|
492
|
-
"invite-key": {
|
|
493
|
-
"description": "Invite key (if required)",
|
|
494
|
-
"name": "invite-key",
|
|
495
|
-
"hasDynamicHelp": false,
|
|
496
|
-
"multiple": false,
|
|
497
|
-
"type": "option"
|
|
498
|
-
},
|
|
499
|
-
"plan": {
|
|
500
|
-
"description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
|
|
501
|
-
"name": "plan",
|
|
502
|
-
"default": "free",
|
|
262
|
+
"provider": {
|
|
263
|
+
"description": "Filter by provider (e.g. openai, anthropic)",
|
|
264
|
+
"name": "provider",
|
|
503
265
|
"hasDynamicHelp": false,
|
|
504
266
|
"multiple": false,
|
|
505
|
-
"options": [
|
|
506
|
-
"free",
|
|
507
|
-
"connect"
|
|
508
|
-
],
|
|
509
267
|
"type": "option"
|
|
510
268
|
}
|
|
511
269
|
},
|
|
512
270
|
"hasDynamicHelp": false,
|
|
513
271
|
"hiddenAliases": [],
|
|
514
|
-
"id": "
|
|
272
|
+
"id": "billing:llm-costs",
|
|
515
273
|
"pluginAlias": "faces-cli",
|
|
516
274
|
"pluginName": "faces-cli",
|
|
517
275
|
"pluginType": "core",
|
|
@@ -521,14 +279,14 @@
|
|
|
521
279
|
"relativePath": [
|
|
522
280
|
"dist",
|
|
523
281
|
"commands",
|
|
524
|
-
"
|
|
525
|
-
"
|
|
282
|
+
"billing",
|
|
283
|
+
"llm-costs.js"
|
|
526
284
|
]
|
|
527
285
|
},
|
|
528
|
-
"
|
|
286
|
+
"billing:quota": {
|
|
529
287
|
"aliases": [],
|
|
530
288
|
"args": {},
|
|
531
|
-
"description": "
|
|
289
|
+
"description": "Show compile token quota and per-face stats",
|
|
532
290
|
"flags": {
|
|
533
291
|
"json": {
|
|
534
292
|
"description": "Format output as json.",
|
|
@@ -564,7 +322,7 @@
|
|
|
564
322
|
},
|
|
565
323
|
"hasDynamicHelp": false,
|
|
566
324
|
"hiddenAliases": [],
|
|
567
|
-
"id": "
|
|
325
|
+
"id": "billing:quota",
|
|
568
326
|
"pluginAlias": "faces-cli",
|
|
569
327
|
"pluginName": "faces-cli",
|
|
570
328
|
"pluginType": "core",
|
|
@@ -574,14 +332,14 @@
|
|
|
574
332
|
"relativePath": [
|
|
575
333
|
"dist",
|
|
576
334
|
"commands",
|
|
577
|
-
"
|
|
578
|
-
"
|
|
335
|
+
"billing",
|
|
336
|
+
"quota.js"
|
|
579
337
|
]
|
|
580
338
|
},
|
|
581
|
-
"
|
|
339
|
+
"billing:subscription": {
|
|
582
340
|
"aliases": [],
|
|
583
341
|
"args": {},
|
|
584
|
-
"description": "
|
|
342
|
+
"description": "Show current plan, face count, and renewal date",
|
|
585
343
|
"flags": {
|
|
586
344
|
"json": {
|
|
587
345
|
"description": "Format output as json.",
|
|
@@ -613,23 +371,11 @@
|
|
|
613
371
|
"hasDynamicHelp": false,
|
|
614
372
|
"multiple": false,
|
|
615
373
|
"type": "option"
|
|
616
|
-
},
|
|
617
|
-
"fix": {
|
|
618
|
-
"description": "Rebuild missing or stale catalog entries from API",
|
|
619
|
-
"name": "fix",
|
|
620
|
-
"allowNo": false,
|
|
621
|
-
"type": "boolean"
|
|
622
|
-
},
|
|
623
|
-
"generate": {
|
|
624
|
-
"description": "Fix + generate missing descriptions via LLM",
|
|
625
|
-
"name": "generate",
|
|
626
|
-
"allowNo": false,
|
|
627
|
-
"type": "boolean"
|
|
628
374
|
}
|
|
629
375
|
},
|
|
630
376
|
"hasDynamicHelp": false,
|
|
631
377
|
"hiddenAliases": [],
|
|
632
|
-
"id": "
|
|
378
|
+
"id": "billing:subscription",
|
|
633
379
|
"pluginAlias": "faces-cli",
|
|
634
380
|
"pluginName": "faces-cli",
|
|
635
381
|
"pluginType": "core",
|
|
@@ -639,14 +385,14 @@
|
|
|
639
385
|
"relativePath": [
|
|
640
386
|
"dist",
|
|
641
387
|
"commands",
|
|
642
|
-
"
|
|
643
|
-
"
|
|
388
|
+
"billing",
|
|
389
|
+
"subscription.js"
|
|
644
390
|
]
|
|
645
391
|
},
|
|
646
|
-
"
|
|
392
|
+
"billing:topup": {
|
|
647
393
|
"aliases": [],
|
|
648
394
|
"args": {},
|
|
649
|
-
"description": "
|
|
395
|
+
"description": "Top up credit balance using saved payment method",
|
|
650
396
|
"flags": {
|
|
651
397
|
"json": {
|
|
652
398
|
"description": "Format output as json.",
|
|
@@ -678,11 +424,26 @@
|
|
|
678
424
|
"hasDynamicHelp": false,
|
|
679
425
|
"multiple": false,
|
|
680
426
|
"type": "option"
|
|
427
|
+
},
|
|
428
|
+
"amount": {
|
|
429
|
+
"description": "Top-up amount in USD (min $1)",
|
|
430
|
+
"name": "amount",
|
|
431
|
+
"required": true,
|
|
432
|
+
"hasDynamicHelp": false,
|
|
433
|
+
"multiple": false,
|
|
434
|
+
"type": "option"
|
|
435
|
+
},
|
|
436
|
+
"payment-ref": {
|
|
437
|
+
"description": "Payment reference (admin/test path)",
|
|
438
|
+
"name": "payment-ref",
|
|
439
|
+
"hasDynamicHelp": false,
|
|
440
|
+
"multiple": false,
|
|
441
|
+
"type": "option"
|
|
681
442
|
}
|
|
682
443
|
},
|
|
683
444
|
"hasDynamicHelp": false,
|
|
684
445
|
"hiddenAliases": [],
|
|
685
|
-
"id": "
|
|
446
|
+
"id": "billing:topup",
|
|
686
447
|
"pluginAlias": "faces-cli",
|
|
687
448
|
"pluginName": "faces-cli",
|
|
688
449
|
"pluginType": "core",
|
|
@@ -692,14 +453,14 @@
|
|
|
692
453
|
"relativePath": [
|
|
693
454
|
"dist",
|
|
694
455
|
"commands",
|
|
695
|
-
"
|
|
696
|
-
"
|
|
456
|
+
"billing",
|
|
457
|
+
"topup.js"
|
|
697
458
|
]
|
|
698
459
|
},
|
|
699
|
-
"
|
|
460
|
+
"billing:usage": {
|
|
700
461
|
"aliases": [],
|
|
701
462
|
"args": {},
|
|
702
|
-
"description": "
|
|
463
|
+
"description": "Aggregated usage analytics",
|
|
703
464
|
"flags": {
|
|
704
465
|
"json": {
|
|
705
466
|
"description": "Format output as json.",
|
|
@@ -732,37 +493,37 @@
|
|
|
732
493
|
"multiple": false,
|
|
733
494
|
"type": "option"
|
|
734
495
|
},
|
|
735
|
-
"
|
|
736
|
-
"description": "
|
|
737
|
-
"name": "
|
|
496
|
+
"group-by": {
|
|
497
|
+
"description": "Group results",
|
|
498
|
+
"name": "group-by",
|
|
738
499
|
"hasDynamicHelp": false,
|
|
739
500
|
"multiple": false,
|
|
501
|
+
"options": [
|
|
502
|
+
"api_key",
|
|
503
|
+
"model",
|
|
504
|
+
"llm",
|
|
505
|
+
"date"
|
|
506
|
+
],
|
|
740
507
|
"type": "option"
|
|
741
508
|
},
|
|
742
|
-
"
|
|
743
|
-
"description": "
|
|
744
|
-
"name": "
|
|
509
|
+
"from": {
|
|
510
|
+
"description": "Start date (YYYY-MM-DD)",
|
|
511
|
+
"name": "from",
|
|
745
512
|
"hasDynamicHelp": false,
|
|
746
513
|
"multiple": false,
|
|
747
514
|
"type": "option"
|
|
748
515
|
},
|
|
749
|
-
"
|
|
750
|
-
"description": "
|
|
751
|
-
"name": "
|
|
516
|
+
"to": {
|
|
517
|
+
"description": "End date (YYYY-MM-DD)",
|
|
518
|
+
"name": "to",
|
|
752
519
|
"hasDynamicHelp": false,
|
|
753
520
|
"multiple": false,
|
|
754
521
|
"type": "option"
|
|
755
|
-
},
|
|
756
|
-
"refresh": {
|
|
757
|
-
"description": "Force refresh the skill index (ignore cache)",
|
|
758
|
-
"name": "refresh",
|
|
759
|
-
"allowNo": false,
|
|
760
|
-
"type": "boolean"
|
|
761
522
|
}
|
|
762
523
|
},
|
|
763
524
|
"hasDynamicHelp": false,
|
|
764
525
|
"hiddenAliases": [],
|
|
765
|
-
"id": "
|
|
526
|
+
"id": "billing:usage",
|
|
766
527
|
"pluginAlias": "faces-cli",
|
|
767
528
|
"pluginName": "faces-cli",
|
|
768
529
|
"pluginType": "core",
|
|
@@ -772,14 +533,27 @@
|
|
|
772
533
|
"relativePath": [
|
|
773
534
|
"dist",
|
|
774
535
|
"commands",
|
|
775
|
-
"
|
|
776
|
-
"
|
|
536
|
+
"billing",
|
|
537
|
+
"usage.js"
|
|
777
538
|
]
|
|
778
539
|
},
|
|
779
|
-
"
|
|
540
|
+
"auth:connect": {
|
|
780
541
|
"aliases": [],
|
|
781
|
-
"args": {
|
|
782
|
-
|
|
542
|
+
"args": {
|
|
543
|
+
"provider": {
|
|
544
|
+
"description": "OAuth provider to connect",
|
|
545
|
+
"name": "provider",
|
|
546
|
+
"options": [
|
|
547
|
+
"openai"
|
|
548
|
+
],
|
|
549
|
+
"required": true
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"description": "Connect an OAuth provider account to Faces (e.g. ChatGPT Plus/Pro)",
|
|
553
|
+
"examples": [
|
|
554
|
+
"<%= config.bin %> auth connect openai",
|
|
555
|
+
"<%= config.bin %> auth connect openai --manual"
|
|
556
|
+
],
|
|
783
557
|
"flags": {
|
|
784
558
|
"json": {
|
|
785
559
|
"description": "Format output as json.",
|
|
@@ -811,11 +585,17 @@
|
|
|
811
585
|
"hasDynamicHelp": false,
|
|
812
586
|
"multiple": false,
|
|
813
587
|
"type": "option"
|
|
588
|
+
},
|
|
589
|
+
"manual": {
|
|
590
|
+
"description": "Manual mode for headless environments: prints the authorize URL and prompts you to paste the callback URL after approving in any browser.",
|
|
591
|
+
"name": "manual",
|
|
592
|
+
"allowNo": false,
|
|
593
|
+
"type": "boolean"
|
|
814
594
|
}
|
|
815
595
|
},
|
|
816
596
|
"hasDynamicHelp": false,
|
|
817
597
|
"hiddenAliases": [],
|
|
818
|
-
"id": "
|
|
598
|
+
"id": "auth:connect",
|
|
819
599
|
"pluginAlias": "faces-cli",
|
|
820
600
|
"pluginName": "faces-cli",
|
|
821
601
|
"pluginType": "core",
|
|
@@ -825,14 +605,18 @@
|
|
|
825
605
|
"relativePath": [
|
|
826
606
|
"dist",
|
|
827
607
|
"commands",
|
|
828
|
-
"
|
|
829
|
-
"
|
|
608
|
+
"auth",
|
|
609
|
+
"connect.js"
|
|
830
610
|
]
|
|
831
611
|
},
|
|
832
|
-
"
|
|
612
|
+
"auth:connections": {
|
|
833
613
|
"aliases": [],
|
|
834
614
|
"args": {},
|
|
835
|
-
"description": "
|
|
615
|
+
"description": "List connected OAuth provider accounts",
|
|
616
|
+
"examples": [
|
|
617
|
+
"<%= config.bin %> auth connections",
|
|
618
|
+
"<%= config.bin %> auth connections --json"
|
|
619
|
+
],
|
|
836
620
|
"flags": {
|
|
837
621
|
"json": {
|
|
838
622
|
"description": "Format output as json.",
|
|
@@ -868,7 +652,7 @@
|
|
|
868
652
|
},
|
|
869
653
|
"hasDynamicHelp": false,
|
|
870
654
|
"hiddenAliases": [],
|
|
871
|
-
"id": "
|
|
655
|
+
"id": "auth:connections",
|
|
872
656
|
"pluginAlias": "faces-cli",
|
|
873
657
|
"pluginName": "faces-cli",
|
|
874
658
|
"pluginType": "core",
|
|
@@ -878,14 +662,26 @@
|
|
|
878
662
|
"relativePath": [
|
|
879
663
|
"dist",
|
|
880
664
|
"commands",
|
|
881
|
-
"
|
|
882
|
-
"
|
|
665
|
+
"auth",
|
|
666
|
+
"connections.js"
|
|
883
667
|
]
|
|
884
668
|
},
|
|
885
|
-
"
|
|
669
|
+
"auth:disconnect": {
|
|
886
670
|
"aliases": [],
|
|
887
|
-
"args": {
|
|
888
|
-
|
|
671
|
+
"args": {
|
|
672
|
+
"provider": {
|
|
673
|
+
"description": "OAuth provider to disconnect",
|
|
674
|
+
"name": "provider",
|
|
675
|
+
"options": [
|
|
676
|
+
"openai"
|
|
677
|
+
],
|
|
678
|
+
"required": true
|
|
679
|
+
}
|
|
680
|
+
},
|
|
681
|
+
"description": "Disconnect a linked OAuth provider account",
|
|
682
|
+
"examples": [
|
|
683
|
+
"<%= config.bin %> auth disconnect openai"
|
|
684
|
+
],
|
|
889
685
|
"flags": {
|
|
890
686
|
"json": {
|
|
891
687
|
"description": "Format output as json.",
|
|
@@ -917,22 +713,11 @@
|
|
|
917
713
|
"hasDynamicHelp": false,
|
|
918
714
|
"multiple": false,
|
|
919
715
|
"type": "option"
|
|
920
|
-
},
|
|
921
|
-
"plan": {
|
|
922
|
-
"description": "Plan to subscribe to",
|
|
923
|
-
"name": "plan",
|
|
924
|
-
"default": "connect",
|
|
925
|
-
"hasDynamicHelp": false,
|
|
926
|
-
"multiple": false,
|
|
927
|
-
"options": [
|
|
928
|
-
"connect"
|
|
929
|
-
],
|
|
930
|
-
"type": "option"
|
|
931
716
|
}
|
|
932
717
|
},
|
|
933
718
|
"hasDynamicHelp": false,
|
|
934
719
|
"hiddenAliases": [],
|
|
935
|
-
"id": "
|
|
720
|
+
"id": "auth:disconnect",
|
|
936
721
|
"pluginAlias": "faces-cli",
|
|
937
722
|
"pluginName": "faces-cli",
|
|
938
723
|
"pluginType": "core",
|
|
@@ -942,14 +727,14 @@
|
|
|
942
727
|
"relativePath": [
|
|
943
728
|
"dist",
|
|
944
729
|
"commands",
|
|
945
|
-
"
|
|
946
|
-
"
|
|
730
|
+
"auth",
|
|
731
|
+
"disconnect.js"
|
|
947
732
|
]
|
|
948
733
|
},
|
|
949
|
-
"
|
|
734
|
+
"auth:login": {
|
|
950
735
|
"aliases": [],
|
|
951
736
|
"args": {},
|
|
952
|
-
"description": "
|
|
737
|
+
"description": "Login and save JWT credentials",
|
|
953
738
|
"flags": {
|
|
954
739
|
"json": {
|
|
955
740
|
"description": "Format output as json.",
|
|
@@ -982,9 +767,18 @@
|
|
|
982
767
|
"multiple": false,
|
|
983
768
|
"type": "option"
|
|
984
769
|
},
|
|
985
|
-
"
|
|
986
|
-
"description": "
|
|
987
|
-
"name": "
|
|
770
|
+
"email": {
|
|
771
|
+
"description": "Account email",
|
|
772
|
+
"name": "email",
|
|
773
|
+
"required": true,
|
|
774
|
+
"hasDynamicHelp": false,
|
|
775
|
+
"multiple": false,
|
|
776
|
+
"type": "option"
|
|
777
|
+
},
|
|
778
|
+
"password": {
|
|
779
|
+
"description": "Account password",
|
|
780
|
+
"name": "password",
|
|
781
|
+
"required": true,
|
|
988
782
|
"hasDynamicHelp": false,
|
|
989
783
|
"multiple": false,
|
|
990
784
|
"type": "option"
|
|
@@ -992,7 +786,7 @@
|
|
|
992
786
|
},
|
|
993
787
|
"hasDynamicHelp": false,
|
|
994
788
|
"hiddenAliases": [],
|
|
995
|
-
"id": "
|
|
789
|
+
"id": "auth:login",
|
|
996
790
|
"pluginAlias": "faces-cli",
|
|
997
791
|
"pluginName": "faces-cli",
|
|
998
792
|
"pluginType": "core",
|
|
@@ -1002,14 +796,14 @@
|
|
|
1002
796
|
"relativePath": [
|
|
1003
797
|
"dist",
|
|
1004
798
|
"commands",
|
|
1005
|
-
"
|
|
1006
|
-
"
|
|
799
|
+
"auth",
|
|
800
|
+
"login.js"
|
|
1007
801
|
]
|
|
1008
802
|
},
|
|
1009
|
-
"
|
|
803
|
+
"auth:logout": {
|
|
1010
804
|
"aliases": [],
|
|
1011
805
|
"args": {},
|
|
1012
|
-
"description": "
|
|
806
|
+
"description": "Clear saved credentials",
|
|
1013
807
|
"flags": {
|
|
1014
808
|
"json": {
|
|
1015
809
|
"description": "Format output as json.",
|
|
@@ -1045,7 +839,7 @@
|
|
|
1045
839
|
},
|
|
1046
840
|
"hasDynamicHelp": false,
|
|
1047
841
|
"hiddenAliases": [],
|
|
1048
|
-
"id": "
|
|
842
|
+
"id": "auth:logout",
|
|
1049
843
|
"pluginAlias": "faces-cli",
|
|
1050
844
|
"pluginName": "faces-cli",
|
|
1051
845
|
"pluginType": "core",
|
|
@@ -1055,14 +849,14 @@
|
|
|
1055
849
|
"relativePath": [
|
|
1056
850
|
"dist",
|
|
1057
851
|
"commands",
|
|
1058
|
-
"
|
|
1059
|
-
"
|
|
852
|
+
"auth",
|
|
853
|
+
"logout.js"
|
|
1060
854
|
]
|
|
1061
855
|
},
|
|
1062
|
-
"
|
|
856
|
+
"auth:refresh": {
|
|
1063
857
|
"aliases": [],
|
|
1064
858
|
"args": {},
|
|
1065
|
-
"description": "
|
|
859
|
+
"description": "Exchange current JWT for a fresh one",
|
|
1066
860
|
"flags": {
|
|
1067
861
|
"json": {
|
|
1068
862
|
"description": "Format output as json.",
|
|
@@ -1098,7 +892,7 @@
|
|
|
1098
892
|
},
|
|
1099
893
|
"hasDynamicHelp": false,
|
|
1100
894
|
"hiddenAliases": [],
|
|
1101
|
-
"id": "
|
|
895
|
+
"id": "auth:refresh",
|
|
1102
896
|
"pluginAlias": "faces-cli",
|
|
1103
897
|
"pluginName": "faces-cli",
|
|
1104
898
|
"pluginType": "core",
|
|
@@ -1108,14 +902,14 @@
|
|
|
1108
902
|
"relativePath": [
|
|
1109
903
|
"dist",
|
|
1110
904
|
"commands",
|
|
1111
|
-
"
|
|
1112
|
-
"
|
|
905
|
+
"auth",
|
|
906
|
+
"refresh.js"
|
|
1113
907
|
]
|
|
1114
908
|
},
|
|
1115
|
-
"
|
|
909
|
+
"auth:register": {
|
|
1116
910
|
"aliases": [],
|
|
1117
911
|
"args": {},
|
|
1118
|
-
"description": "
|
|
912
|
+
"description": "Create a new Faces account",
|
|
1119
913
|
"flags": {
|
|
1120
914
|
"json": {
|
|
1121
915
|
"description": "Format output as json.",
|
|
@@ -1148,25 +942,60 @@
|
|
|
1148
942
|
"multiple": false,
|
|
1149
943
|
"type": "option"
|
|
1150
944
|
},
|
|
1151
|
-
"
|
|
1152
|
-
"description": "
|
|
1153
|
-
"name": "
|
|
945
|
+
"email": {
|
|
946
|
+
"description": "Email address",
|
|
947
|
+
"name": "email",
|
|
948
|
+
"required": true,
|
|
949
|
+
"hasDynamicHelp": false,
|
|
950
|
+
"multiple": false,
|
|
951
|
+
"type": "option"
|
|
952
|
+
},
|
|
953
|
+
"password": {
|
|
954
|
+
"description": "Password",
|
|
955
|
+
"name": "password",
|
|
956
|
+
"required": true,
|
|
957
|
+
"hasDynamicHelp": false,
|
|
958
|
+
"multiple": false,
|
|
959
|
+
"type": "option"
|
|
960
|
+
},
|
|
961
|
+
"name": {
|
|
962
|
+
"description": "Display name (defaults to username)",
|
|
963
|
+
"name": "name",
|
|
964
|
+
"hasDynamicHelp": false,
|
|
965
|
+
"multiple": false,
|
|
966
|
+
"type": "option"
|
|
967
|
+
},
|
|
968
|
+
"username": {
|
|
969
|
+
"description": "Username (lowercase, dashes, numbers)",
|
|
970
|
+
"name": "username",
|
|
1154
971
|
"required": true,
|
|
1155
972
|
"hasDynamicHelp": false,
|
|
1156
973
|
"multiple": false,
|
|
1157
974
|
"type": "option"
|
|
1158
975
|
},
|
|
1159
|
-
"
|
|
1160
|
-
"description": "
|
|
1161
|
-
"name": "
|
|
976
|
+
"invite-key": {
|
|
977
|
+
"description": "Invite key (if required)",
|
|
978
|
+
"name": "invite-key",
|
|
979
|
+
"hasDynamicHelp": false,
|
|
980
|
+
"multiple": false,
|
|
981
|
+
"type": "option"
|
|
982
|
+
},
|
|
983
|
+
"plan": {
|
|
984
|
+
"description": "Plan to subscribe to: \"free\" ($5 activation) or \"connect\" ($17/mo, no activation fee)",
|
|
985
|
+
"name": "plan",
|
|
986
|
+
"default": "free",
|
|
1162
987
|
"hasDynamicHelp": false,
|
|
1163
988
|
"multiple": false,
|
|
989
|
+
"options": [
|
|
990
|
+
"free",
|
|
991
|
+
"connect"
|
|
992
|
+
],
|
|
1164
993
|
"type": "option"
|
|
1165
994
|
}
|
|
1166
995
|
},
|
|
1167
996
|
"hasDynamicHelp": false,
|
|
1168
997
|
"hiddenAliases": [],
|
|
1169
|
-
"id": "
|
|
998
|
+
"id": "auth:register",
|
|
1170
999
|
"pluginAlias": "faces-cli",
|
|
1171
1000
|
"pluginName": "faces-cli",
|
|
1172
1001
|
"pluginType": "core",
|
|
@@ -1176,14 +1005,14 @@
|
|
|
1176
1005
|
"relativePath": [
|
|
1177
1006
|
"dist",
|
|
1178
1007
|
"commands",
|
|
1179
|
-
"
|
|
1180
|
-
"
|
|
1008
|
+
"auth",
|
|
1009
|
+
"register.js"
|
|
1181
1010
|
]
|
|
1182
1011
|
},
|
|
1183
|
-
"
|
|
1012
|
+
"auth:whoami": {
|
|
1184
1013
|
"aliases": [],
|
|
1185
1014
|
"args": {},
|
|
1186
|
-
"description": "
|
|
1015
|
+
"description": "Print current user profile and auth diagnostic",
|
|
1187
1016
|
"flags": {
|
|
1188
1017
|
"json": {
|
|
1189
1018
|
"description": "Format output as json.",
|
|
@@ -1215,38 +1044,11 @@
|
|
|
1215
1044
|
"hasDynamicHelp": false,
|
|
1216
1045
|
"multiple": false,
|
|
1217
1046
|
"type": "option"
|
|
1218
|
-
},
|
|
1219
|
-
"group-by": {
|
|
1220
|
-
"description": "Group results",
|
|
1221
|
-
"name": "group-by",
|
|
1222
|
-
"hasDynamicHelp": false,
|
|
1223
|
-
"multiple": false,
|
|
1224
|
-
"options": [
|
|
1225
|
-
"api_key",
|
|
1226
|
-
"model",
|
|
1227
|
-
"llm",
|
|
1228
|
-
"date"
|
|
1229
|
-
],
|
|
1230
|
-
"type": "option"
|
|
1231
|
-
},
|
|
1232
|
-
"from": {
|
|
1233
|
-
"description": "Start date (YYYY-MM-DD)",
|
|
1234
|
-
"name": "from",
|
|
1235
|
-
"hasDynamicHelp": false,
|
|
1236
|
-
"multiple": false,
|
|
1237
|
-
"type": "option"
|
|
1238
|
-
},
|
|
1239
|
-
"to": {
|
|
1240
|
-
"description": "End date (YYYY-MM-DD)",
|
|
1241
|
-
"name": "to",
|
|
1242
|
-
"hasDynamicHelp": false,
|
|
1243
|
-
"multiple": false,
|
|
1244
|
-
"type": "option"
|
|
1245
1047
|
}
|
|
1246
1048
|
},
|
|
1247
1049
|
"hasDynamicHelp": false,
|
|
1248
1050
|
"hiddenAliases": [],
|
|
1249
|
-
"id": "
|
|
1051
|
+
"id": "auth:whoami",
|
|
1250
1052
|
"pluginAlias": "faces-cli",
|
|
1251
1053
|
"pluginName": "faces-cli",
|
|
1252
1054
|
"pluginType": "core",
|
|
@@ -1256,8 +1058,8 @@
|
|
|
1256
1058
|
"relativePath": [
|
|
1257
1059
|
"dist",
|
|
1258
1060
|
"commands",
|
|
1259
|
-
"
|
|
1260
|
-
"
|
|
1061
|
+
"auth",
|
|
1062
|
+
"whoami.js"
|
|
1261
1063
|
]
|
|
1262
1064
|
},
|
|
1263
1065
|
"chat:chat": {
|
|
@@ -1753,6 +1555,204 @@
|
|
|
1753
1555
|
"upload.js"
|
|
1754
1556
|
]
|
|
1755
1557
|
},
|
|
1558
|
+
"catalog:doctor": {
|
|
1559
|
+
"aliases": [],
|
|
1560
|
+
"args": {},
|
|
1561
|
+
"description": "Diagnose and repair the local face catalog",
|
|
1562
|
+
"flags": {
|
|
1563
|
+
"json": {
|
|
1564
|
+
"description": "Format output as json.",
|
|
1565
|
+
"helpGroup": "GLOBAL",
|
|
1566
|
+
"name": "json",
|
|
1567
|
+
"allowNo": false,
|
|
1568
|
+
"type": "boolean"
|
|
1569
|
+
},
|
|
1570
|
+
"base-url": {
|
|
1571
|
+
"description": "API base URL",
|
|
1572
|
+
"env": "FACES_BASE_URL",
|
|
1573
|
+
"name": "base-url",
|
|
1574
|
+
"hasDynamicHelp": false,
|
|
1575
|
+
"multiple": false,
|
|
1576
|
+
"type": "option"
|
|
1577
|
+
},
|
|
1578
|
+
"token": {
|
|
1579
|
+
"description": "JWT bearer token",
|
|
1580
|
+
"env": "FACES_TOKEN",
|
|
1581
|
+
"name": "token",
|
|
1582
|
+
"hasDynamicHelp": false,
|
|
1583
|
+
"multiple": false,
|
|
1584
|
+
"type": "option"
|
|
1585
|
+
},
|
|
1586
|
+
"api-key": {
|
|
1587
|
+
"description": "API key",
|
|
1588
|
+
"env": "FACES_API_KEY",
|
|
1589
|
+
"name": "api-key",
|
|
1590
|
+
"hasDynamicHelp": false,
|
|
1591
|
+
"multiple": false,
|
|
1592
|
+
"type": "option"
|
|
1593
|
+
},
|
|
1594
|
+
"fix": {
|
|
1595
|
+
"description": "Rebuild missing or stale catalog entries from API",
|
|
1596
|
+
"name": "fix",
|
|
1597
|
+
"allowNo": false,
|
|
1598
|
+
"type": "boolean"
|
|
1599
|
+
},
|
|
1600
|
+
"generate": {
|
|
1601
|
+
"description": "Fix + generate missing descriptions via LLM",
|
|
1602
|
+
"name": "generate",
|
|
1603
|
+
"allowNo": false,
|
|
1604
|
+
"type": "boolean"
|
|
1605
|
+
}
|
|
1606
|
+
},
|
|
1607
|
+
"hasDynamicHelp": false,
|
|
1608
|
+
"hiddenAliases": [],
|
|
1609
|
+
"id": "catalog:doctor",
|
|
1610
|
+
"pluginAlias": "faces-cli",
|
|
1611
|
+
"pluginName": "faces-cli",
|
|
1612
|
+
"pluginType": "core",
|
|
1613
|
+
"strict": true,
|
|
1614
|
+
"enableJsonFlag": true,
|
|
1615
|
+
"isESM": true,
|
|
1616
|
+
"relativePath": [
|
|
1617
|
+
"dist",
|
|
1618
|
+
"commands",
|
|
1619
|
+
"catalog",
|
|
1620
|
+
"doctor.js"
|
|
1621
|
+
]
|
|
1622
|
+
},
|
|
1623
|
+
"catalog:list": {
|
|
1624
|
+
"aliases": [],
|
|
1625
|
+
"args": {},
|
|
1626
|
+
"description": "List all faces in the local catalog",
|
|
1627
|
+
"flags": {
|
|
1628
|
+
"json": {
|
|
1629
|
+
"description": "Format output as json.",
|
|
1630
|
+
"helpGroup": "GLOBAL",
|
|
1631
|
+
"name": "json",
|
|
1632
|
+
"allowNo": false,
|
|
1633
|
+
"type": "boolean"
|
|
1634
|
+
},
|
|
1635
|
+
"base-url": {
|
|
1636
|
+
"description": "API base URL",
|
|
1637
|
+
"env": "FACES_BASE_URL",
|
|
1638
|
+
"name": "base-url",
|
|
1639
|
+
"hasDynamicHelp": false,
|
|
1640
|
+
"multiple": false,
|
|
1641
|
+
"type": "option"
|
|
1642
|
+
},
|
|
1643
|
+
"token": {
|
|
1644
|
+
"description": "JWT bearer token",
|
|
1645
|
+
"env": "FACES_TOKEN",
|
|
1646
|
+
"name": "token",
|
|
1647
|
+
"hasDynamicHelp": false,
|
|
1648
|
+
"multiple": false,
|
|
1649
|
+
"type": "option"
|
|
1650
|
+
},
|
|
1651
|
+
"api-key": {
|
|
1652
|
+
"description": "API key",
|
|
1653
|
+
"env": "FACES_API_KEY",
|
|
1654
|
+
"name": "api-key",
|
|
1655
|
+
"hasDynamicHelp": false,
|
|
1656
|
+
"multiple": false,
|
|
1657
|
+
"type": "option"
|
|
1658
|
+
}
|
|
1659
|
+
},
|
|
1660
|
+
"hasDynamicHelp": false,
|
|
1661
|
+
"hiddenAliases": [],
|
|
1662
|
+
"id": "catalog:list",
|
|
1663
|
+
"pluginAlias": "faces-cli",
|
|
1664
|
+
"pluginName": "faces-cli",
|
|
1665
|
+
"pluginType": "core",
|
|
1666
|
+
"strict": true,
|
|
1667
|
+
"enableJsonFlag": true,
|
|
1668
|
+
"isESM": true,
|
|
1669
|
+
"relativePath": [
|
|
1670
|
+
"dist",
|
|
1671
|
+
"commands",
|
|
1672
|
+
"catalog",
|
|
1673
|
+
"list.js"
|
|
1674
|
+
]
|
|
1675
|
+
},
|
|
1676
|
+
"catalog:manyfaced": {
|
|
1677
|
+
"aliases": [],
|
|
1678
|
+
"args": {},
|
|
1679
|
+
"description": "Browse and install community manyfaced skills from github.com/facessh/manyfaced",
|
|
1680
|
+
"flags": {
|
|
1681
|
+
"json": {
|
|
1682
|
+
"description": "Format output as json.",
|
|
1683
|
+
"helpGroup": "GLOBAL",
|
|
1684
|
+
"name": "json",
|
|
1685
|
+
"allowNo": false,
|
|
1686
|
+
"type": "boolean"
|
|
1687
|
+
},
|
|
1688
|
+
"base-url": {
|
|
1689
|
+
"description": "API base URL",
|
|
1690
|
+
"env": "FACES_BASE_URL",
|
|
1691
|
+
"name": "base-url",
|
|
1692
|
+
"hasDynamicHelp": false,
|
|
1693
|
+
"multiple": false,
|
|
1694
|
+
"type": "option"
|
|
1695
|
+
},
|
|
1696
|
+
"token": {
|
|
1697
|
+
"description": "JWT bearer token",
|
|
1698
|
+
"env": "FACES_TOKEN",
|
|
1699
|
+
"name": "token",
|
|
1700
|
+
"hasDynamicHelp": false,
|
|
1701
|
+
"multiple": false,
|
|
1702
|
+
"type": "option"
|
|
1703
|
+
},
|
|
1704
|
+
"api-key": {
|
|
1705
|
+
"description": "API key",
|
|
1706
|
+
"env": "FACES_API_KEY",
|
|
1707
|
+
"name": "api-key",
|
|
1708
|
+
"hasDynamicHelp": false,
|
|
1709
|
+
"multiple": false,
|
|
1710
|
+
"type": "option"
|
|
1711
|
+
},
|
|
1712
|
+
"skill": {
|
|
1713
|
+
"description": "Show details for a specific skill",
|
|
1714
|
+
"name": "skill",
|
|
1715
|
+
"hasDynamicHelp": false,
|
|
1716
|
+
"multiple": false,
|
|
1717
|
+
"type": "option"
|
|
1718
|
+
},
|
|
1719
|
+
"install": {
|
|
1720
|
+
"description": "Install a skill by name",
|
|
1721
|
+
"name": "install",
|
|
1722
|
+
"hasDynamicHelp": false,
|
|
1723
|
+
"multiple": false,
|
|
1724
|
+
"type": "option"
|
|
1725
|
+
},
|
|
1726
|
+
"skills-dir": {
|
|
1727
|
+
"description": "Directory to install skills into (required for --install)",
|
|
1728
|
+
"name": "skills-dir",
|
|
1729
|
+
"hasDynamicHelp": false,
|
|
1730
|
+
"multiple": false,
|
|
1731
|
+
"type": "option"
|
|
1732
|
+
},
|
|
1733
|
+
"refresh": {
|
|
1734
|
+
"description": "Force refresh the skill index (ignore cache)",
|
|
1735
|
+
"name": "refresh",
|
|
1736
|
+
"allowNo": false,
|
|
1737
|
+
"type": "boolean"
|
|
1738
|
+
}
|
|
1739
|
+
},
|
|
1740
|
+
"hasDynamicHelp": false,
|
|
1741
|
+
"hiddenAliases": [],
|
|
1742
|
+
"id": "catalog:manyfaced",
|
|
1743
|
+
"pluginAlias": "faces-cli",
|
|
1744
|
+
"pluginName": "faces-cli",
|
|
1745
|
+
"pluginType": "core",
|
|
1746
|
+
"strict": true,
|
|
1747
|
+
"enableJsonFlag": true,
|
|
1748
|
+
"isESM": true,
|
|
1749
|
+
"relativePath": [
|
|
1750
|
+
"dist",
|
|
1751
|
+
"commands",
|
|
1752
|
+
"catalog",
|
|
1753
|
+
"manyfaced.js"
|
|
1754
|
+
]
|
|
1755
|
+
},
|
|
1756
1756
|
"config:clear": {
|
|
1757
1757
|
"aliases": [],
|
|
1758
1758
|
"args": {},
|
|
@@ -4231,5 +4231,5 @@
|
|
|
4231
4231
|
]
|
|
4232
4232
|
}
|
|
4233
4233
|
},
|
|
4234
|
-
"version": "1.5.
|
|
4234
|
+
"version": "1.5.9"
|
|
4235
4235
|
}
|