@ravi-hq/ravi 0.6.3 → 0.7.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/README.md +14 -9
- package/dist/auth.d.ts +31 -28
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +28 -51
- package/dist/auth.js.map +1 -1
- package/dist/bin/ravi-secrets.d.ts +1 -2
- package/dist/bin/ravi-secrets.d.ts.map +1 -1
- package/dist/bin/ravi-secrets.js +7 -34
- package/dist/bin/ravi-secrets.js.map +1 -1
- package/dist/channels/email-trusted.d.ts +2 -0
- package/dist/channels/email-trusted.d.ts.map +1 -1
- package/dist/channels/email-trusted.js +18 -51
- package/dist/channels/email-trusted.js.map +1 -1
- package/dist/channels/email.d.ts +2 -0
- package/dist/channels/email.d.ts.map +1 -1
- package/dist/channels/email.js +18 -60
- package/dist/channels/email.js.map +1 -1
- package/dist/cli.d.ts +13 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +65 -382
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +13 -28
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +22 -63
- package/dist/client.js.map +1 -1
- package/dist/config.d.ts +1 -1
- package/dist/config.js +1 -1
- package/dist/index.d.ts +17 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +156 -45
- package/dist/index.js.map +1 -1
- package/dist/polling.d.ts +2 -12
- package/dist/polling.d.ts.map +1 -1
- package/dist/polling.js +2 -36
- package/dist/polling.js.map +1 -1
- package/dist/tools/identity.d.ts +0 -7
- package/dist/tools/identity.d.ts.map +1 -1
- package/dist/tools/identity.js.map +1 -1
- package/dist/tools/passwords.d.ts +1 -7
- package/dist/tools/passwords.d.ts.map +1 -1
- package/dist/tools/passwords.js +18 -58
- package/dist/tools/passwords.js.map +1 -1
- package/dist/tools/secrets.d.ts +1 -3
- package/dist/tools/secrets.d.ts.map +1 -1
- package/dist/tools/secrets.js +11 -37
- package/dist/tools/secrets.js.map +1 -1
- package/dist/types.d.ts +85 -6
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -2
- package/dist/types.js.map +1 -1
- package/dist/utils.d.ts +0 -6
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +0 -18
- package/dist/utils.js.map +1 -1
- package/openclaw.plugin.json +1 -0
- package/package.json +1 -5
- package/dist/crypto.d.ts +0 -156
- package/dist/crypto.d.ts.map +0 -1
- package/dist/crypto.js +0 -350
- package/dist/crypto.js.map +0 -1
package/dist/cli.js
CHANGED
|
@@ -1,149 +1,8 @@
|
|
|
1
|
-
import { execFile } from "node:child_process";
|
|
2
|
-
import { platform } from "node:os";
|
|
3
1
|
import { RAVI_API_URL } from "./config.js";
|
|
4
|
-
import { RaviClient
|
|
5
|
-
import { loadAuth, saveAuth,
|
|
6
|
-
/** Try to open a URL in the user's default browser. Non-fatal on failure. */
|
|
7
|
-
function openBrowser(url) {
|
|
8
|
-
const cmd = platform() === "darwin" ? "open" :
|
|
9
|
-
platform() === "win32" ? "cmd" :
|
|
10
|
-
"xdg-open";
|
|
11
|
-
const args = platform() === "win32" ? ["/c", "start", url] : [url];
|
|
12
|
-
execFile(cmd, args, () => {
|
|
13
|
-
// Silently ignore errors — user can open the URL manually
|
|
14
|
-
});
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* Try to set an OpenClaw config value via `openclaw config set`.
|
|
18
|
-
* Returns true on success, false on failure (command not found, schema error, etc.).
|
|
19
|
-
*/
|
|
20
|
-
function openclawConfigSet(path, value) {
|
|
21
|
-
return new Promise((resolve) => {
|
|
22
|
-
execFile("openclaw", ["config", "set", path, value], (err) => {
|
|
23
|
-
resolve(!err);
|
|
24
|
-
});
|
|
25
|
-
});
|
|
26
|
-
}
|
|
2
|
+
import { RaviClient } from "./client.js";
|
|
3
|
+
import { loadAuth, saveAuth, loadConfig } from "./auth.js";
|
|
27
4
|
/**
|
|
28
|
-
*
|
|
29
|
-
* Matches the CLI's interactive PIN prompt behavior.
|
|
30
|
-
*/
|
|
31
|
-
async function promptPIN(prompt) {
|
|
32
|
-
return new Promise((resolve, reject) => {
|
|
33
|
-
process.stderr.write(prompt);
|
|
34
|
-
const stdin = process.stdin;
|
|
35
|
-
const wasRaw = stdin.isRaw;
|
|
36
|
-
if (stdin.isTTY && stdin.setRawMode) {
|
|
37
|
-
stdin.setRawMode(true);
|
|
38
|
-
}
|
|
39
|
-
stdin.resume();
|
|
40
|
-
let pin = "";
|
|
41
|
-
const timeout = setTimeout(() => {
|
|
42
|
-
cleanup();
|
|
43
|
-
reject(new Error("PIN prompt timed out — no input received within 60 seconds."));
|
|
44
|
-
}, 60_000);
|
|
45
|
-
const cleanup = () => {
|
|
46
|
-
clearTimeout(timeout);
|
|
47
|
-
if (stdin.isTTY && stdin.setRawMode)
|
|
48
|
-
stdin.setRawMode(wasRaw ?? false);
|
|
49
|
-
stdin.removeListener("data", onData);
|
|
50
|
-
stdin.removeListener("end", onEnd);
|
|
51
|
-
stdin.pause();
|
|
52
|
-
};
|
|
53
|
-
const onEnd = () => {
|
|
54
|
-
cleanup();
|
|
55
|
-
reject(new Error("stdin closed — cannot read PIN in non-interactive mode."));
|
|
56
|
-
};
|
|
57
|
-
const onData = (key) => {
|
|
58
|
-
const ch = key.toString();
|
|
59
|
-
if (ch === "\r" || ch === "\n") {
|
|
60
|
-
cleanup();
|
|
61
|
-
process.stderr.write("\n");
|
|
62
|
-
resolve(pin);
|
|
63
|
-
}
|
|
64
|
-
else if (ch === "\x03") {
|
|
65
|
-
// Ctrl+C
|
|
66
|
-
cleanup();
|
|
67
|
-
reject(new Error("Cancelled"));
|
|
68
|
-
}
|
|
69
|
-
else if (ch === "\x7f" || ch === "\b") {
|
|
70
|
-
// Backspace
|
|
71
|
-
pin = pin.slice(0, -1);
|
|
72
|
-
}
|
|
73
|
-
else if (/^\d$/.test(ch)) {
|
|
74
|
-
pin += ch;
|
|
75
|
-
}
|
|
76
|
-
};
|
|
77
|
-
stdin.on("data", onData);
|
|
78
|
-
stdin.on("end", onEnd);
|
|
79
|
-
});
|
|
80
|
-
}
|
|
81
|
-
/**
|
|
82
|
-
* Prompt for PIN with choose + confirm (first-time setup),
|
|
83
|
-
* or just enter PIN (returning user). Validates 6-digit format.
|
|
84
|
-
*/
|
|
85
|
-
async function promptAndConfirmPIN() {
|
|
86
|
-
const pin = await promptPIN("Choose a 6-digit encryption PIN: ");
|
|
87
|
-
if (!/^\d{6}$/.test(pin)) {
|
|
88
|
-
throw new Error("PIN must be exactly 6 digits.");
|
|
89
|
-
}
|
|
90
|
-
const confirm = await promptPIN("Confirm PIN: ");
|
|
91
|
-
if (pin !== confirm) {
|
|
92
|
-
throw new Error("PINs do not match.");
|
|
93
|
-
}
|
|
94
|
-
return pin;
|
|
95
|
-
}
|
|
96
|
-
async function promptExistingPIN() {
|
|
97
|
-
const pin = await promptPIN("Enter your 6-digit encryption PIN: ");
|
|
98
|
-
if (!/^\d{6}$/.test(pin)) {
|
|
99
|
-
throw new Error("PIN must be exactly 6 digits.");
|
|
100
|
-
}
|
|
101
|
-
return pin;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Prompt the user to choose from a numbered list via stdin.
|
|
105
|
-
* Returns the 0-based index of the chosen item.
|
|
106
|
-
*/
|
|
107
|
-
async function promptChoice(prompt, count) {
|
|
108
|
-
return new Promise((resolve, reject) => {
|
|
109
|
-
process.stderr.write(prompt);
|
|
110
|
-
const stdin = process.stdin;
|
|
111
|
-
stdin.resume();
|
|
112
|
-
let input = "";
|
|
113
|
-
const timeout = setTimeout(() => {
|
|
114
|
-
cleanup();
|
|
115
|
-
reject(new Error("Selection timed out — no input received within 60 seconds."));
|
|
116
|
-
}, 60_000);
|
|
117
|
-
const cleanup = () => {
|
|
118
|
-
clearTimeout(timeout);
|
|
119
|
-
stdin.removeListener("data", onData);
|
|
120
|
-
stdin.removeListener("end", onEnd);
|
|
121
|
-
stdin.pause();
|
|
122
|
-
};
|
|
123
|
-
const onEnd = () => {
|
|
124
|
-
cleanup();
|
|
125
|
-
reject(new Error("stdin closed — cannot read selection in non-interactive mode."));
|
|
126
|
-
};
|
|
127
|
-
const onData = (chunk) => {
|
|
128
|
-
input += chunk.toString();
|
|
129
|
-
if (input.includes("\n") || input.includes("\r")) {
|
|
130
|
-
cleanup();
|
|
131
|
-
const num = parseInt(input.trim(), 10);
|
|
132
|
-
if (isNaN(num) || num < 1 || num > count) {
|
|
133
|
-
reject(new Error(`Invalid selection: enter a number between 1 and ${count}`));
|
|
134
|
-
}
|
|
135
|
-
else {
|
|
136
|
-
resolve(num - 1);
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
stdin.on("data", onData);
|
|
141
|
-
stdin.on("end", onEnd);
|
|
142
|
-
});
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Run the full device-code authentication flow: initiate → poll → encryption
|
|
146
|
-
* setup → save credentials. Does NOT select an identity or configure OpenClaw.
|
|
5
|
+
* Run the full device-code authentication flow: initiate → poll → save credentials.
|
|
147
6
|
*/
|
|
148
7
|
export async function performLogin() {
|
|
149
8
|
const apiUrl = RAVI_API_URL;
|
|
@@ -162,10 +21,8 @@ export async function performLogin() {
|
|
|
162
21
|
const url = new URL(data.verification_uri);
|
|
163
22
|
url.searchParams.set("user_code", data.user_code);
|
|
164
23
|
const verifyUrl = url.toString();
|
|
165
|
-
openBrowser(verifyUrl);
|
|
166
24
|
process.stderr.write(`\nTo authenticate, visit: ${verifyUrl}\n`);
|
|
167
|
-
process.stderr.write(`Code: ${data.user_code}\n`);
|
|
168
|
-
process.stderr.write(`(Attempting to open browser automatically)\n\n`);
|
|
25
|
+
process.stderr.write(`Code: ${data.user_code}\n\n`);
|
|
169
26
|
process.stderr.write(`Waiting for authorization...\n`);
|
|
170
27
|
// Step 3: Poll for token until authorized or expired
|
|
171
28
|
const intervalMs = (data.interval || 5) * 1000;
|
|
@@ -192,100 +49,16 @@ export async function performLogin() {
|
|
|
192
49
|
consecutiveNetworkErrors = 0;
|
|
193
50
|
if (tokenResponse.ok) {
|
|
194
51
|
const tokenData = (await tokenResponse.json());
|
|
195
|
-
const client = new RaviClient({ apiUrl,
|
|
52
|
+
const client = new RaviClient({ apiUrl, apiKey: tokenData.management_key });
|
|
196
53
|
process.stderr.write(`\nAuthenticated as ${tokenData.user.email}\n\n`);
|
|
197
|
-
// Build auth.json — tokens first, encryption keys added below
|
|
198
54
|
const authData = {
|
|
199
|
-
|
|
200
|
-
refresh_token: tokenData.refresh,
|
|
55
|
+
management_key: tokenData.management_key,
|
|
201
56
|
user_email: tokenData.user.email,
|
|
202
57
|
};
|
|
203
|
-
//
|
|
204
|
-
let meta = null;
|
|
205
|
-
try {
|
|
206
|
-
meta = await client.getEncryptionMeta();
|
|
207
|
-
}
|
|
208
|
-
catch (err) {
|
|
209
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
210
|
-
process.stderr.write(`WARNING: Could not check encryption status: ${msg}\n\n`);
|
|
211
|
-
}
|
|
212
|
-
if (meta && !meta.public_key) {
|
|
213
|
-
// First-time setup — prompt for PIN, derive keypair, store keys
|
|
214
|
-
try {
|
|
215
|
-
const pin = await promptAndConfirmPIN();
|
|
216
|
-
const { setupEncryption } = await import("./crypto.js");
|
|
217
|
-
const setup = await setupEncryption(pin);
|
|
218
|
-
const recoveryPath = saveRecoveryKey(setup.recoveryKey);
|
|
219
|
-
await client.updateEncryptionMeta({
|
|
220
|
-
salt: setup.salt,
|
|
221
|
-
public_key: setup.publicKey,
|
|
222
|
-
verifier: setup.verifier,
|
|
223
|
-
});
|
|
224
|
-
// Store derived keypair in auth.json (returned by setupEncryption)
|
|
225
|
-
const { bytesToBase64 } = await import("./crypto.js");
|
|
226
|
-
authData.pin_salt = setup.salt;
|
|
227
|
-
authData.public_key = setup.publicKey;
|
|
228
|
-
authData.private_key = bytesToBase64(setup.keyPair.secretKey);
|
|
229
|
-
process.stderr.write(`E2E encryption set up successfully!\n`);
|
|
230
|
-
process.stderr.write(`Recovery key saved to ${recoveryPath} — back this up!\n\n`);
|
|
231
|
-
}
|
|
232
|
-
catch (err) {
|
|
233
|
-
if (err instanceof Error && err.message === "Cancelled")
|
|
234
|
-
throw err;
|
|
235
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
236
|
-
process.stderr.write(`PIN setup skipped: ${msg}\n`);
|
|
237
|
-
process.stderr.write(`Run 'openclaw ravi login' again to set up encryption.\n\n`);
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
else if (meta && meta.public_key) {
|
|
241
|
-
// Existing encryption — verify PIN, derive and store keypair (up to 3 attempts)
|
|
242
|
-
const { deriveKeyPair, verify, bytesToBase64 } = await import("./crypto.js");
|
|
243
|
-
let pinVerified = false;
|
|
244
|
-
for (let attempt = 1; attempt <= 3; attempt++) {
|
|
245
|
-
try {
|
|
246
|
-
const pin = await promptExistingPIN();
|
|
247
|
-
const kp = await deriveKeyPair(pin, meta.salt);
|
|
248
|
-
const valid = await verify(kp, meta.verifier);
|
|
249
|
-
if (!valid) {
|
|
250
|
-
const remaining = 3 - attempt;
|
|
251
|
-
if (remaining > 0) {
|
|
252
|
-
process.stderr.write(`Incorrect PIN. ${remaining} attempt${remaining === 1 ? "" : "s"} remaining.\n`);
|
|
253
|
-
}
|
|
254
|
-
else {
|
|
255
|
-
process.stderr.write(`Incorrect PIN. No attempts remaining.\n`);
|
|
256
|
-
}
|
|
257
|
-
continue;
|
|
258
|
-
}
|
|
259
|
-
// Extra safety: verify derived public key matches server's stored key
|
|
260
|
-
const derivedPubB64 = bytesToBase64(kp.publicKey);
|
|
261
|
-
if (derivedPubB64 !== meta.public_key) {
|
|
262
|
-
process.stderr.write(`WARNING: Derived public key does not match server record — possible data corruption.\n`);
|
|
263
|
-
process.stderr.write(`Run 'openclaw ravi login' again or contact support.\n\n`);
|
|
264
|
-
break;
|
|
265
|
-
}
|
|
266
|
-
authData.pin_salt = meta.salt;
|
|
267
|
-
authData.public_key = meta.public_key;
|
|
268
|
-
authData.private_key = bytesToBase64(kp.secretKey);
|
|
269
|
-
pinVerified = true;
|
|
270
|
-
process.stderr.write(`PIN verified — E2E encryption is ready.\n\n`);
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
catch (err) {
|
|
274
|
-
if (err instanceof Error && err.message === "Cancelled")
|
|
275
|
-
throw err;
|
|
276
|
-
const msg = err instanceof Error ? err.message : String(err);
|
|
277
|
-
process.stderr.write(`PIN entry failed: ${msg}\n\n`);
|
|
278
|
-
break;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
if (!pinVerified) {
|
|
282
|
-
process.stderr.write(`Encryption keys not saved. Run 'openclaw ravi login' to try again.\n\n`);
|
|
283
|
-
}
|
|
284
|
-
}
|
|
285
|
-
// Save auth to ~/.ravi/auth.json (like CLI)
|
|
58
|
+
// Save auth to ~/.ravi/config.json (like CLI)
|
|
286
59
|
saveAuth(authData);
|
|
287
|
-
process.stderr.write(`Credentials saved to ~/.ravi/
|
|
288
|
-
return { client,
|
|
60
|
+
process.stderr.write(`Credentials saved to ~/.ravi/config.json\n\n`);
|
|
61
|
+
return { client, userEmail: tokenData.user.email, tokenData };
|
|
289
62
|
}
|
|
290
63
|
// Check whether the error is "still waiting" or a terminal failure
|
|
291
64
|
const error = (await tokenResponse.json().catch(() => ({})));
|
|
@@ -300,7 +73,7 @@ export async function performLogin() {
|
|
|
300
73
|
* All CLI commands exposed by the Ravi plugin.
|
|
301
74
|
*
|
|
302
75
|
* OpenClaw registers these so the user can run `openclaw ravi login`,
|
|
303
|
-
* `openclaw ravi
|
|
76
|
+
* `openclaw provider add ravi`, `openclaw ravi status`, etc.
|
|
304
77
|
*/
|
|
305
78
|
export const cliCommands = [
|
|
306
79
|
// ── login ───────────────────────────────────────────────────────────────
|
|
@@ -312,168 +85,78 @@ export const cliCommands = [
|
|
|
312
85
|
return "Login complete.";
|
|
313
86
|
},
|
|
314
87
|
},
|
|
315
|
-
// ──
|
|
88
|
+
// ── status ──────────────────────────────────────────────────────────────
|
|
316
89
|
{
|
|
317
|
-
name: "
|
|
318
|
-
description: "
|
|
90
|
+
name: "status",
|
|
91
|
+
description: "Show authentication status and current identity.",
|
|
319
92
|
handler: async (_args, _config) => {
|
|
320
|
-
const
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
updateAuth({ access_token: newToken });
|
|
331
|
-
},
|
|
332
|
-
});
|
|
333
|
-
process.stderr.write(`Already authenticated — skipping login.\n\n`);
|
|
93
|
+
const auth = loadAuth();
|
|
94
|
+
const config = loadConfig();
|
|
95
|
+
if (!auth?.management_key) {
|
|
96
|
+
return `Not logged in. Run 'openclaw provider add ravi' to authenticate.`;
|
|
97
|
+
}
|
|
98
|
+
const maskKey = (key) => `${key.slice(0, 12)}...${key.slice(-4)}`;
|
|
99
|
+
let output = `Authenticated to ${RAVI_API_URL}\n`;
|
|
100
|
+
output += `\nManagement key: ${maskKey(auth.management_key)}\n`;
|
|
101
|
+
if (config?.identity_key) {
|
|
102
|
+
output += `Identity key: ${maskKey(config.identity_key)}\n`;
|
|
334
103
|
}
|
|
335
104
|
else {
|
|
336
|
-
|
|
337
|
-
client = result.client;
|
|
105
|
+
output += `Identity key: not set (run 'openclaw provider add ravi' to configure)\n`;
|
|
338
106
|
}
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
try {
|
|
342
|
-
const identities = await client.listIdentities();
|
|
343
|
-
if (identities.length === 1) {
|
|
344
|
-
selectedUuid = identities[0].uuid;
|
|
345
|
-
saveConfig({
|
|
346
|
-
identity_uuid: identities[0].uuid,
|
|
347
|
-
identity_name: identities[0].name,
|
|
348
|
-
});
|
|
349
|
-
process.stderr.write(`Auto-selected identity: ${identities[0].name}\n\n`);
|
|
350
|
-
}
|
|
351
|
-
else if (identities.length > 1) {
|
|
352
|
-
// Interactive identity selection (matches Go CLI behavior)
|
|
353
|
-
process.stderr.write(`Select an identity:\n`);
|
|
354
|
-
for (let i = 0; i < identities.length; i++) {
|
|
355
|
-
const id = identities[i];
|
|
356
|
-
const details = [id.inbox, id.phone].filter(Boolean).join(", ");
|
|
357
|
-
process.stderr.write(` ${i + 1}. ${id.name}${details ? ` (${details})` : ""}\n`);
|
|
358
|
-
}
|
|
359
|
-
try {
|
|
360
|
-
const idx = await promptChoice(`Enter number [1-${identities.length}]: `, identities.length);
|
|
361
|
-
const selected = identities[idx];
|
|
362
|
-
selectedUuid = selected.uuid;
|
|
363
|
-
saveConfig({
|
|
364
|
-
identity_uuid: selected.uuid,
|
|
365
|
-
identity_name: selected.name,
|
|
366
|
-
});
|
|
367
|
-
process.stderr.write(`Selected: ${selected.name}\n\n`);
|
|
368
|
-
}
|
|
369
|
-
catch (err) {
|
|
370
|
-
if (err instanceof Error && err.message === "Cancelled")
|
|
371
|
-
throw err;
|
|
372
|
-
// Fallback to first if prompt fails (non-interactive)
|
|
373
|
-
selectedUuid = identities[0].uuid;
|
|
374
|
-
saveConfig({
|
|
375
|
-
identity_uuid: identities[0].uuid,
|
|
376
|
-
identity_name: identities[0].name,
|
|
377
|
-
});
|
|
378
|
-
process.stderr.write(`Defaulting to: ${identities[0].name}\n\n`);
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
else {
|
|
382
|
-
process.stderr.write(`No identities found. Create one with the ravi_identity_create tool.\n`);
|
|
383
|
-
}
|
|
107
|
+
if (config?.identity_name || config?.identity_uuid) {
|
|
108
|
+
output += `\nIdentity: ${config.identity_name ?? "(unnamed)"} (${config.identity_uuid ?? ""})\n`;
|
|
384
109
|
}
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
process.stderr.write(`Could not list identities: ${detail}\nAdd identityUuid to your config manually.\n`);
|
|
110
|
+
else {
|
|
111
|
+
output += `\nNo identity selected. Run 'openclaw provider add ravi' to select one.\n`;
|
|
388
112
|
}
|
|
389
|
-
|
|
390
|
-
|
|
113
|
+
if (auth.user_email) {
|
|
114
|
+
output += `Account: ${auth.user_email}\n`;
|
|
115
|
+
}
|
|
116
|
+
return output;
|
|
117
|
+
},
|
|
118
|
+
},
|
|
119
|
+
// ── create-agent-key ──────────────────────────────────────────────────
|
|
120
|
+
{
|
|
121
|
+
name: "create-agent-key",
|
|
122
|
+
description: "Create an identity key for a sub-agent (requires management key).",
|
|
123
|
+
args: [
|
|
124
|
+
{ name: "<uuid>", description: "Identity UUID" },
|
|
125
|
+
{ name: "[label]", description: "Key label" },
|
|
126
|
+
],
|
|
127
|
+
handler: async (args, _config) => {
|
|
128
|
+
const auth = loadConfig();
|
|
129
|
+
if (!auth?.management_key) {
|
|
130
|
+
return "Error: Management key required. Only the main agent can create identity keys.\nRun 'openclaw provider add ravi' to authenticate with a management key.";
|
|
131
|
+
}
|
|
132
|
+
const client = new RaviClient({ apiUrl: RAVI_API_URL, apiKey: auth.management_key });
|
|
133
|
+
const identityUuid = args[0];
|
|
134
|
+
if (!identityUuid) {
|
|
391
135
|
try {
|
|
392
|
-
const
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
}
|
|
397
|
-
|
|
136
|
+
const identities = await client.listIdentities();
|
|
137
|
+
let output = "Usage: openclaw ravi create-agent-key <identity-uuid> [label]\n\nAvailable identities:\n";
|
|
138
|
+
for (const id of identities) {
|
|
139
|
+
output += ` ${id.uuid} ${id.name}\n`;
|
|
140
|
+
}
|
|
141
|
+
return output;
|
|
398
142
|
}
|
|
399
143
|
catch (err) {
|
|
400
144
|
const detail = err instanceof Error ? err.message : String(err);
|
|
401
|
-
|
|
402
|
-
process.stderr.write(`Identity-scoped operations may not work. Run 'openclaw ravi onboard' to retry.\n\n`);
|
|
145
|
+
return `Error listing identities: ${detail}`;
|
|
403
146
|
}
|
|
404
147
|
}
|
|
405
|
-
|
|
406
|
-
if (selectedUuid) {
|
|
407
|
-
const configPath = "plugins.entries.ravi.config.identityUuid";
|
|
408
|
-
const ok = await openclawConfigSet(configPath, selectedUuid);
|
|
409
|
-
if (ok) {
|
|
410
|
-
process.stderr.write(`OpenClaw config updated automatically (identityUuid set).\n`);
|
|
411
|
-
}
|
|
412
|
-
else {
|
|
413
|
-
process.stderr.write(`To complete setup, run:\n\n`);
|
|
414
|
-
process.stderr.write(` openclaw config set ${configPath} "${selectedUuid}"\n\n`);
|
|
415
|
-
}
|
|
416
|
-
}
|
|
417
|
-
// Step 5: Auto-configure secrets provider
|
|
418
|
-
const srcOk = await openclawConfigSet("secrets.providers.ravi.source", "exec");
|
|
419
|
-
const cmdOk = await openclawConfigSet("secrets.providers.ravi.command", "ravi-secrets");
|
|
420
|
-
if (srcOk && cmdOk) {
|
|
421
|
-
process.stderr.write(`Secrets provider configured (ravi-secrets).\n`);
|
|
422
|
-
}
|
|
423
|
-
else {
|
|
424
|
-
process.stderr.write(`To configure the secrets provider manually, run:\n\n`);
|
|
425
|
-
process.stderr.write(` openclaw config set secrets.providers.ravi.source exec\n`);
|
|
426
|
-
process.stderr.write(` openclaw config set secrets.providers.ravi.command ravi-secrets\n\n`);
|
|
427
|
-
}
|
|
428
|
-
return "Onboard complete.";
|
|
429
|
-
},
|
|
430
|
-
},
|
|
431
|
-
// ── status ──────────────────────────────────────────────────────────────
|
|
432
|
-
{
|
|
433
|
-
name: "status",
|
|
434
|
-
description: "Show authentication status and available identities.",
|
|
435
|
-
handler: async (_args, _config) => {
|
|
436
|
-
const auth = loadAuth();
|
|
437
|
-
if (!auth?.access_token) {
|
|
438
|
-
return `Not logged in. Run 'openclaw ravi login' to authenticate.`;
|
|
439
|
-
}
|
|
440
|
-
const apiUrl = RAVI_API_URL;
|
|
441
|
-
const client = new RaviClient({
|
|
442
|
-
apiUrl,
|
|
443
|
-
token: auth.access_token,
|
|
444
|
-
refreshToken: auth.refresh_token,
|
|
445
|
-
onTokenRefresh: (newToken) => {
|
|
446
|
-
updateAuth({ access_token: newToken });
|
|
447
|
-
},
|
|
448
|
-
});
|
|
148
|
+
const label = args[1] || `sub-agent-${Date.now()}`;
|
|
449
149
|
try {
|
|
450
|
-
const
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
output += `
|
|
454
|
-
output +=
|
|
455
|
-
for (const identity of identities) {
|
|
456
|
-
output += ` - ${identity.name} (${identity.uuid})\n`;
|
|
457
|
-
if (identity.inbox)
|
|
458
|
-
output += ` Email: ${identity.inbox}\n`;
|
|
459
|
-
if (identity.phone)
|
|
460
|
-
output += ` Phone: ${identity.phone}\n`;
|
|
461
|
-
}
|
|
462
|
-
if (!hasKeypair) {
|
|
463
|
-
output += `\nWARNING: No encryption keypair — encrypted data (passwords, secrets) will not be readable.\n`;
|
|
464
|
-
output += `Run 'openclaw ravi login' to set up E2E encryption.\n`;
|
|
465
|
-
}
|
|
150
|
+
const keyResp = await client.createIdentityKey(identityUuid, label);
|
|
151
|
+
let output = `Identity key created.\n\n`;
|
|
152
|
+
output += `To configure the sub-agent, run:\n\n`;
|
|
153
|
+
output += ` openclaw config set plugins.entries.ravi.config.identityKey "${keyResp.key}"\n`;
|
|
154
|
+
output += ` openclaw config set plugins.entries.ravi.config.identityUuid "${identityUuid}"\n`;
|
|
466
155
|
return output;
|
|
467
156
|
}
|
|
468
157
|
catch (err) {
|
|
469
|
-
|
|
470
|
-
|
|
471
|
-
}
|
|
472
|
-
if (err instanceof RaviApiError && err.status === 402) {
|
|
473
|
-
return `Billing issue (HTTP 402). Please check your Ravi subscription.`;
|
|
474
|
-
}
|
|
475
|
-
const message = err instanceof Error ? err.message : String(err);
|
|
476
|
-
return `Failed to fetch status: ${message}\n\nIf this persists, check your network connection and API URL.`;
|
|
158
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
159
|
+
return `Error creating identity key: ${detail}`;
|
|
477
160
|
}
|
|
478
161
|
},
|
|
479
162
|
},
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,EAAmB,MAAM,WAAW,CAAC;AAGzG,6EAA6E;AAC7E,SAAS,WAAW,CAAC,GAAW;IAC9B,MAAM,GAAG,GACP,QAAQ,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAClC,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAChC,UAAU,CAAC;IACb,MAAM,IAAI,GAAG,QAAQ,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnE,QAAQ,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE;QACvB,0DAA0D;IAC5D,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,SAAS,iBAAiB,CAAC,IAAY,EAAE,KAAa;IACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,QAAQ,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE;YAC3D,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,SAAS,CAAC,MAAc;IACrC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,MAAM,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QAC3B,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACpC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACnF,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU;gBAAE,KAAK,CAAC,UAAU,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;YACvE,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,GAAW,EAAE,EAAE;YAC7B,MAAM,EAAE,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,EAAE,KAAK,IAAI,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBAC/B,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;YACf,CAAC;iBAAM,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;gBACzB,SAAS;gBACT,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,IAAI,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC;YACjC,CAAC;iBAAM,IAAI,EAAE,KAAK,MAAM,IAAI,EAAE,KAAK,IAAI,EAAE,CAAC;gBACxC,YAAY;gBACZ,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;gBAC3B,GAAG,IAAI,EAAE,CAAC;YACZ,CAAC;QACH,CAAC,CAAC;QACF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,mBAAmB;IAChC,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,mCAAmC,CAAC,CAAC;IACjE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,eAAe,CAAC,CAAC;IACjD,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,KAAK,UAAU,iBAAiB;IAC9B,MAAM,GAAG,GAAG,MAAM,SAAS,CAAC,qCAAqC,CAAC,CAAC;IACnE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,KAAa;IACvD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC7B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;QAC5B,KAAK,CAAC,MAAM,EAAE,CAAC;QAEf,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;YAC9B,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAC,CAAC;QAClF,CAAC,EAAE,MAAM,CAAC,CAAC;QAEX,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,KAAK,CAAC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YACrC,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACnC,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,CAAC,CAAC;QAEF,MAAM,KAAK,GAAG,GAAG,EAAE;YACjB,OAAO,EAAE,CAAC;YACV,MAAM,CAAC,IAAI,KAAK,CAAC,+DAA+D,CAAC,CAAC,CAAC;QACrF,CAAC,CAAC;QAEF,MAAM,MAAM,GAAG,CAAC,KAAa,EAAE,EAAE;YAC/B,KAAK,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC1B,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjD,OAAO,EAAE,CAAC;gBACV,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,CAAC;gBACvC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,KAAK,EAAE,CAAC;oBACzC,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,KAAK,EAAE,CAAC,CAAC,CAAC;gBAChF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;gBACnB,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzB,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AA6BD;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,MAAM,GAAG,YAAY,CAAC;IAE5B,oCAAoC;IACpC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,mBAAmB,EAAE;QACzD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;KAChD,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;QACrD,MAAM,IAAI,KAAK,CACb,6CAA6C,QAAQ,CAAC,MAAM,MAAM,MAAM,EAAE,CAC3E,CAAC;IACJ,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAMlC,CAAC;IAEF,6CAA6C;IAC7C,sFAAsF;IACtF,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC3C,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;IACjC,WAAW,CAAC,SAAS,CAAC,CAAC;IAEvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,SAAS,IAAI,CAAC,CAAC;IACjE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;IAClD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACvE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IAEvD,qDAAqD;IACrD,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IACrD,IAAI,wBAAwB,GAAG,CAAC,CAAC;IAEjC,OAAO,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,EAAE,CAAC;QAC7B,MAAM,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAEhE,IAAI,aAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,yBAAyB,EAAE;gBAC9D,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;aACxD,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB,EAAE,CAAC;YAC3B,IAAI,wBAAwB,IAAI,CAAC,EAAE,CAAC;gBAClC,MAAM,IAAI,KAAK,CACb,uCAAuC,wBAAwB,sBAAsB;oBACrF,0CAA0C,MAAM,gBAAgB,CACjE,CAAC;YACJ,CAAC;YACD,SAAS;QACX,CAAC;QAED,wBAAwB,GAAG,CAAC,CAAC;QAE7B,IAAI,aAAa,CAAC,EAAE,EAAE,CAAC;YACrB,MAAM,SAAS,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAI5C,CAAC;YAEF,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;YACnE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,CAAC;YAEvE,8DAA8D;YAC9D,MAAM,QAAQ,GAAe;gBAC3B,YAAY,EAAE,SAAS,CAAC,MAAM;gBAC9B,aAAa,EAAE,SAAS,CAAC,OAAO;gBAChC,UAAU,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK;aACjC,CAAC;YAEF,mEAAmE;YACnE,IAAI,IAAI,GAAkE,IAAI,CAAC;YAC/E,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,MAAM,CAAC,iBAAiB,EAAE,CAAC;YAC1C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,GAAG,MAAM,CAAC,CAAC;YACjF,CAAC;YAED,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;gBAC7B,gEAAgE;gBAChE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,mBAAmB,EAAE,CAAC;oBACxC,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBACxD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,GAAG,CAAC,CAAC;oBACzC,MAAM,YAAY,GAAG,eAAe,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAExD,MAAM,MAAM,CAAC,oBAAoB,CAAC;wBAChC,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,UAAU,EAAE,KAAK,CAAC,SAAS;wBAC3B,QAAQ,EAAE,KAAK,CAAC,QAAQ;qBACzB,CAAC,CAAC;oBAEH,mEAAmE;oBACnE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;oBACtD,QAAQ,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC;oBAC/B,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;oBACtC,QAAQ,CAAC,WAAW,GAAG,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;oBAE9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;oBAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,YAAY,sBAAsB,CAAC,CAAC;gBACpF,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;wBAAE,MAAM,GAAG,CAAC;oBACnE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,GAAG,IAAI,CAAC,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2DAA2D,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;gBACnC,gFAAgF;gBAChF,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;gBAC7E,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,CAAC;oBAC9C,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,iBAAiB,EAAE,CAAC;wBACtC,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;wBAC/C,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;wBAE9C,IAAI,CAAC,KAAK,EAAE,CAAC;4BACX,MAAM,SAAS,GAAG,CAAC,GAAG,OAAO,CAAC;4BAC9B,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;gCAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,SAAS,WAAW,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;4BACxG,CAAC;iCAAM,CAAC;gCACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;4BAClE,CAAC;4BACD,SAAS;wBACX,CAAC;wBAED,sEAAsE;wBACtE,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBAClD,IAAI,aAAa,KAAK,IAAI,CAAC,UAAU,EAAE,CAAC;4BACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wFAAwF,CAAC,CAAC;4BAC/G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;4BAChF,MAAM;wBACR,CAAC;wBAED,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;wBAC9B,QAAQ,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;wBACtC,QAAQ,CAAC,WAAW,GAAG,aAAa,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;wBACnD,WAAW,GAAG,IAAI,CAAC;wBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;wBACpE,MAAM;oBACR,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;4BAAE,MAAM,GAAG,CAAC;wBACnE,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAC7D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,GAAG,MAAM,CAAC,CAAC;wBACrD,MAAM;oBACR,CAAC;gBACH,CAAC;gBAED,IAAI,CAAC,WAAW,EAAE,CAAC;oBACjB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBACjG,CAAC;YACH,CAAC;YAED,4CAA4C;YAC5C,QAAQ,CAAC,QAAQ,CAAC,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAEnE,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/D,CAAC;QAED,mEAAmE;QACnE,MAAM,KAAK,GAAG,CAAC,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAE1D,CAAC;QACF,IAAI,KAAK,CAAC,KAAK,KAAK,uBAAuB,EAAE,CAAC;YAC5C,MAAM,IAAI,KAAK,CACb,4BAA4B,KAAK,CAAC,KAAK,IAAI,QAAQ,aAAa,CAAC,MAAM,EAAE,EAAE,CAC5E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAE/E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,2EAA2E;IAC3E;QACE,IAAI,EAAE,OAAO;QACb,WAAW,EACT,2EAA2E;QAC7E,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,YAAY,EAAE,CAAC;YACrB,OAAO,iBAAiB,CAAC;QAC3B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EACT,gGAAgG;QAClG,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,IAAI,MAAkB,CAAC;YAEvB,oEAAoE;YACpE,MAAM,YAAY,GAAG,QAAQ,EAAE,CAAC;YAChC,IAAI,YAAY,EAAE,YAAY,EAAE,CAAC;gBAC/B,MAAM,GAAG,IAAI,UAAU,CAAC;oBACtB,MAAM;oBACN,KAAK,EAAE,YAAY,CAAC,YAAY;oBAChC,YAAY,EAAE,YAAY,CAAC,aAAa;oBACxC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE;wBACnC,UAAU,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;oBACzC,CAAC;iBACF,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;gBACpC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YACzB,CAAC;YAED,6BAA6B;YAC7B,IAAI,YAAgC,CAAC;YACrC,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAEjD,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC5B,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;oBAClC,UAAU,CAAC;wBACT,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;wBACjC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;qBAClC,CAAC,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;gBAC5E,CAAC;qBAAM,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjC,2DAA2D;oBAC3D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;oBAC9C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;wBAC3C,MAAM,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBACzB,MAAM,OAAO,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;wBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;oBACpF,CAAC;oBACD,IAAI,CAAC;wBACH,MAAM,GAAG,GAAG,MAAM,YAAY,CAAC,mBAAmB,UAAU,CAAC,MAAM,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC;wBAC7F,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;wBACjC,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC;wBAC7B,UAAU,CAAC;4BACT,aAAa,EAAE,QAAQ,CAAC,IAAI;4BAC5B,aAAa,EAAE,QAAQ,CAAC,IAAI;yBAC7B,CAAC,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,QAAQ,CAAC,IAAI,MAAM,CAAC,CAAC;oBACzD,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,KAAK,WAAW;4BAAE,MAAM,GAAG,CAAC;wBACnE,sDAAsD;wBACtD,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;wBAClC,UAAU,CAAC;4BACT,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;4BACjC,aAAa,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI;yBAClC,CAAC,CAAC;wBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kBAAkB,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC;oBACnE,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;gBAChG,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,MAAM,+CAA+C,CAAC,CAAC;YAC5G,CAAC;YAED,sDAAsD;YACtD,IAAI,YAAY,EAAE,CAAC;gBACjB,IAAI,CAAC;oBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC;oBAC3D,UAAU,CAAC;wBACT,kBAAkB,EAAE,UAAU,CAAC,MAAM;wBACrC,mBAAmB,EAAE,UAAU,CAAC,OAAO;qBACxC,CAAC,CAAC;oBACH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;gBAC3E,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qCAAqC,MAAM,IAAI,CAAC,CAAC;oBACtE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oFAAoF,CAAC,CAAC;gBAC7G,CAAC;YACH,CAAC;YAED,6DAA6D;YAC7D,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,UAAU,GAAG,0CAA0C,CAAC;gBAC9D,MAAM,EAAE,GAAG,MAAM,iBAAiB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;gBAC7D,IAAI,EAAE,EAAE,CAAC;oBACP,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;gBACtF,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;oBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,UAAU,KAAK,YAAY,OAAO,CAAC,CAAC;gBACpF,CAAC;YACH,CAAC;YAED,0CAA0C;YAC1C,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,+BAA+B,EAAE,MAAM,CAAC,CAAC;YAC/E,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,gCAAgC,EAAE,cAAc,CAAC,CAAC;YACxF,IAAI,KAAK,IAAI,KAAK,EAAE,CAAC;gBACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;gBAC7E,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;gBACnF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;YAChG,CAAC;YAED,OAAO,mBAAmB,CAAC;QAC7B,CAAC;KACF;IAED,2EAA2E;IAC3E;QACE,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,sDAAsD;QACnE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YAChC,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;YACxB,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC;gBACxB,OAAO,2DAA2D,CAAC;YACrE,CAAC;YAED,MAAM,MAAM,GAAG,YAAY,CAAC;YAC5B,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;gBAC5B,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,YAAY;gBACxB,YAAY,EAAE,IAAI,CAAC,aAAa;gBAChC,cAAc,EAAE,CAAC,QAAgB,EAAE,EAAE;oBACnC,UAAU,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACzC,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBACjD,MAAM,UAAU,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC;gBAE3D,IAAI,MAAM,GAAG,oBAAoB,MAAM,IAAI,CAAC;gBAC5C,MAAM,IAAI,mBAAmB,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;gBAC3D,MAAM,IAAI,iBAAiB,UAAU,CAAC,MAAM,MAAM,CAAC;gBAEnD,KAAK,MAAM,QAAQ,IAAI,UAAU,EAAE,CAAC;oBAClC,MAAM,IAAI,OAAO,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC,IAAI,KAAK,CAAC;oBACtD,IAAI,QAAQ,CAAC,KAAK;wBAAE,MAAM,IAAI,cAAc,QAAQ,CAAC,KAAK,IAAI,CAAC;oBAC/D,IAAI,QAAQ,CAAC,KAAK;wBAAE,MAAM,IAAI,cAAc,QAAQ,CAAC,KAAK,IAAI,CAAC;gBACjE,CAAC;gBAED,IAAI,CAAC,UAAU,EAAE,CAAC;oBAChB,MAAM,IAAI,gGAAgG,CAAC;oBAC3G,MAAM,IAAI,uDAAuD,CAAC;gBACpE,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,GAAG,YAAY,YAAY,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,EAAE,CAAC;oBAC9E,OAAO,yEAAyE,CAAC;gBACnF,CAAC;gBACD,IAAI,GAAG,YAAY,YAAY,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;oBACtD,OAAO,gEAAgE,CAAC;gBAC1E,CAAC;gBACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBACjE,OAAO,2BAA2B,OAAO,kEAAkE,CAAC;YAC9G,CAAC;QACH,CAAC;KACF;CAEF,CAAC"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/dist/client.d.ts
CHANGED
|
@@ -3,12 +3,8 @@ import type { Identity, EmailThread, EmailMessage, EmailThreadDetail, SmsConvers
|
|
|
3
3
|
export interface RaviClientConfig {
|
|
4
4
|
/** Base URL of the Ravi API (e.g. "https://api.ravi.dev"). */
|
|
5
5
|
apiUrl: string;
|
|
6
|
-
/**
|
|
7
|
-
|
|
8
|
-
/** Optional refresh token for automatic access token renewal on 401. */
|
|
9
|
-
refreshToken?: string;
|
|
10
|
-
/** Callback invoked after a successful token refresh — use to persist the new token. */
|
|
11
|
-
onTokenRefresh?: (newToken: string) => void;
|
|
6
|
+
/** API key (ravi_mgmt_ or ravi_id_ prefixed). */
|
|
7
|
+
apiKey: string;
|
|
12
8
|
}
|
|
13
9
|
/**
|
|
14
10
|
* Error thrown when the Ravi API returns a non-OK response.
|
|
@@ -26,47 +22,36 @@ export declare class RaviApiError extends Error {
|
|
|
26
22
|
/**
|
|
27
23
|
* Typed HTTP client for the Ravi REST API.
|
|
28
24
|
*
|
|
29
|
-
*
|
|
30
|
-
*
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* All methods return typed promises and throw {@link RaviApiError} on
|
|
34
|
-
* non-OK responses.
|
|
25
|
+
* Authenticates via API keys and provides methods for every Ravi API
|
|
26
|
+
* endpoint. All methods return typed promises and throw {@link RaviApiError}
|
|
27
|
+
* on non-OK responses.
|
|
35
28
|
*
|
|
36
29
|
* @example
|
|
37
30
|
* ```ts
|
|
38
|
-
* const client = new RaviClient({ apiUrl: "https://api.ravi.dev",
|
|
31
|
+
* const client = new RaviClient({ apiUrl: "https://api.ravi.dev", apiKey: "ravi_id_..." });
|
|
39
32
|
* const identities = await client.listIdentities();
|
|
40
|
-
* const bound = await client.bindIdentity(identities[0].uuid);
|
|
41
|
-
* // Use bound.access / bound.refresh for identity-scoped operations
|
|
42
33
|
* ```
|
|
43
34
|
*/
|
|
44
35
|
export declare class RaviClient {
|
|
45
36
|
private apiUrl;
|
|
46
|
-
private
|
|
47
|
-
private refreshToken?;
|
|
48
|
-
private refreshPromise;
|
|
49
|
-
private onTokenRefresh?;
|
|
37
|
+
private apiKey;
|
|
50
38
|
constructor(config: RaviClientConfig);
|
|
51
39
|
/**
|
|
52
40
|
* Internal helper that executes an authenticated HTTP request against the
|
|
53
41
|
* Ravi API and returns the parsed JSON response.
|
|
54
42
|
*
|
|
55
|
-
* On a 401 response, if a refresh token is available, automatically
|
|
56
|
-
* attempts to refresh the access token and retries the request once.
|
|
57
|
-
*
|
|
58
43
|
* @throws {RaviApiError} When the server returns a non-2xx status code.
|
|
59
44
|
*/
|
|
60
45
|
private request;
|
|
61
46
|
/**
|
|
62
|
-
*
|
|
47
|
+
* Create an identity-scoped API key for the given identity.
|
|
63
48
|
*
|
|
64
|
-
* Calls POST /api/auth/
|
|
65
|
-
*
|
|
49
|
+
* Calls POST /api/auth/keys/identity/ with the management key to obtain
|
|
50
|
+
* an identity key for identity-scoped operations.
|
|
66
51
|
*/
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
52
|
+
createIdentityKey(identityUuid: string, label: string): Promise<{
|
|
53
|
+
key: string;
|
|
54
|
+
uuid: string;
|
|
70
55
|
}>;
|
|
71
56
|
/** List all identities belonging to the authenticated user. */
|
|
72
57
|
listIdentities(): Promise<Identity[]>;
|