@kweaver-ai/kweaver-sdk 0.5.0 → 0.5.1
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/api/vega.js +1 -0
- package/dist/cli.js +1 -0
- package/dist/commands/auth.js +68 -1
- package/package.json +1 -1
package/dist/api/vega.js
CHANGED
package/dist/cli.js
CHANGED
|
@@ -19,6 +19,7 @@ Usage:
|
|
|
19
19
|
kweaver auth <platform-url> [--alias name] [-u user] [-p pass] [--playwright] [--insecure|-k]
|
|
20
20
|
kweaver auth login <platform-url> (alias for auth <url>)
|
|
21
21
|
kweaver auth login <url> --client-id ID --client-secret S --refresh-token T (run on host without browser)
|
|
22
|
+
kweaver auth whoami [platform-url|alias] [--json]
|
|
22
23
|
kweaver auth export [platform-url|alias] [--json]
|
|
23
24
|
kweaver auth status [platform-url|alias]
|
|
24
25
|
kweaver auth list
|
package/dist/commands/auth.js
CHANGED
|
@@ -6,6 +6,7 @@ export async function runAuthCommand(args) {
|
|
|
6
6
|
if (!target || target === "--help" || target === "-h") {
|
|
7
7
|
console.log(`kweaver auth login <url> [options] Login to a platform (browser OAuth2 by default)
|
|
8
8
|
kweaver auth <url> Login (shorthand; same options as login)
|
|
9
|
+
kweaver auth whoami [url|alias] Show current user identity (from id_token)
|
|
9
10
|
kweaver auth export [url|alias] [--json] Export credentials; run printed command on a headless host
|
|
10
11
|
kweaver auth status [url|alias] Show current auth status
|
|
11
12
|
kweaver auth list List saved platforms
|
|
@@ -40,10 +41,13 @@ Login options:
|
|
|
40
41
|
}
|
|
41
42
|
return runAuthCommand([url, ...rest.slice(1)]);
|
|
42
43
|
}
|
|
44
|
+
if (target === "whoami") {
|
|
45
|
+
return runAuthWhoamiCommand(rest);
|
|
46
|
+
}
|
|
43
47
|
if (target === "export") {
|
|
44
48
|
return runAuthExportCommand(rest);
|
|
45
49
|
}
|
|
46
|
-
const LOGIN_SUBCOMMANDS = new Set(["status", "list", "use", "delete", "logout", "export"]);
|
|
50
|
+
const LOGIN_SUBCOMMANDS = new Set(["status", "list", "use", "delete", "logout", "export", "whoami"]);
|
|
47
51
|
if (target && !LOGIN_SUBCOMMANDS.has(target)) {
|
|
48
52
|
try {
|
|
49
53
|
const normalizedTarget = normalizeBaseUrl(target);
|
|
@@ -237,6 +241,7 @@ Login options:
|
|
|
237
241
|
return 0;
|
|
238
242
|
}
|
|
239
243
|
console.error("Usage: kweaver auth login <platform-url> [--alias <name>] [-u user] [-p pass] [--playwright]");
|
|
244
|
+
console.error(" kweaver auth whoami [platform-url|alias]");
|
|
240
245
|
console.error(" kweaver auth export [platform-url|alias] [--json]");
|
|
241
246
|
console.error(" kweaver auth status [platform-url|alias]");
|
|
242
247
|
console.error(" kweaver auth list");
|
|
@@ -245,6 +250,68 @@ Login options:
|
|
|
245
250
|
console.error(" kweaver auth delete <platform-url|alias>");
|
|
246
251
|
return 1;
|
|
247
252
|
}
|
|
253
|
+
function decodeJwtPayload(jwt) {
|
|
254
|
+
const parts = jwt.split(".");
|
|
255
|
+
if (parts.length !== 3)
|
|
256
|
+
return null;
|
|
257
|
+
try {
|
|
258
|
+
const base64 = parts[1].replace(/-/g, "+").replace(/_/g, "/");
|
|
259
|
+
const json = Buffer.from(base64, "base64").toString("utf8");
|
|
260
|
+
return JSON.parse(json);
|
|
261
|
+
}
|
|
262
|
+
catch {
|
|
263
|
+
return null;
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
function runAuthWhoamiCommand(args) {
|
|
267
|
+
if (args[0] === "--help" || args[0] === "-h") {
|
|
268
|
+
console.log(`kweaver auth whoami [platform-url|alias] [--json]
|
|
269
|
+
|
|
270
|
+
Show current user identity decoded from the saved id_token.
|
|
271
|
+
|
|
272
|
+
Options:
|
|
273
|
+
--json Output as JSON (machine-readable)`);
|
|
274
|
+
return 0;
|
|
275
|
+
}
|
|
276
|
+
const jsonOutput = args.includes("--json");
|
|
277
|
+
const positional = args.find((a) => !a.startsWith("-"));
|
|
278
|
+
const resolved = positional ? resolvePlatformIdentifier(positional) : null;
|
|
279
|
+
const platform = resolved && /^https?:\/\//.test(resolved) ? normalizeBaseUrl(resolved) : resolved ?? getCurrentPlatform();
|
|
280
|
+
if (!platform) {
|
|
281
|
+
console.error("No active platform. Run `kweaver auth login <platform-url>` first.");
|
|
282
|
+
return 1;
|
|
283
|
+
}
|
|
284
|
+
const token = loadTokenConfig(platform);
|
|
285
|
+
if (!token) {
|
|
286
|
+
console.error(`No saved token for ${platform}.`);
|
|
287
|
+
return 1;
|
|
288
|
+
}
|
|
289
|
+
if (!token.idToken) {
|
|
290
|
+
console.error(`No id_token saved for ${platform}. Re-login to obtain one.`);
|
|
291
|
+
return 1;
|
|
292
|
+
}
|
|
293
|
+
const payload = decodeJwtPayload(token.idToken);
|
|
294
|
+
if (!payload) {
|
|
295
|
+
console.error("Failed to decode id_token.");
|
|
296
|
+
return 1;
|
|
297
|
+
}
|
|
298
|
+
if (jsonOutput) {
|
|
299
|
+
console.log(JSON.stringify({ platform, ...payload }, null, 2));
|
|
300
|
+
return 0;
|
|
301
|
+
}
|
|
302
|
+
console.log(`Platform: ${platform}`);
|
|
303
|
+
console.log(`User ID: ${payload.sub ?? "(unknown)"}`);
|
|
304
|
+
console.log(`Issuer: ${payload.iss ?? "(unknown)"}`);
|
|
305
|
+
if (payload.sid)
|
|
306
|
+
console.log(`Session: ${payload.sid}`);
|
|
307
|
+
if (payload.iat) {
|
|
308
|
+
console.log(`Issued: ${new Date(payload.iat * 1000).toISOString()}`);
|
|
309
|
+
}
|
|
310
|
+
if (payload.exp) {
|
|
311
|
+
console.log(`Expires: ${new Date(payload.exp * 1000).toISOString()}`);
|
|
312
|
+
}
|
|
313
|
+
return 0;
|
|
314
|
+
}
|
|
248
315
|
async function runAuthExportCommand(args) {
|
|
249
316
|
if (args[0] === "--help" || args[0] === "-h") {
|
|
250
317
|
console.log(`kweaver auth export [platform-url|alias] [--json]
|
package/package.json
CHANGED