@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.
Files changed (60) hide show
  1. package/README.md +14 -9
  2. package/dist/auth.d.ts +31 -28
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js +28 -51
  5. package/dist/auth.js.map +1 -1
  6. package/dist/bin/ravi-secrets.d.ts +1 -2
  7. package/dist/bin/ravi-secrets.d.ts.map +1 -1
  8. package/dist/bin/ravi-secrets.js +7 -34
  9. package/dist/bin/ravi-secrets.js.map +1 -1
  10. package/dist/channels/email-trusted.d.ts +2 -0
  11. package/dist/channels/email-trusted.d.ts.map +1 -1
  12. package/dist/channels/email-trusted.js +18 -51
  13. package/dist/channels/email-trusted.js.map +1 -1
  14. package/dist/channels/email.d.ts +2 -0
  15. package/dist/channels/email.d.ts.map +1 -1
  16. package/dist/channels/email.js +18 -60
  17. package/dist/channels/email.js.map +1 -1
  18. package/dist/cli.d.ts +13 -6
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +65 -382
  21. package/dist/cli.js.map +1 -1
  22. package/dist/client.d.ts +13 -28
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +22 -63
  25. package/dist/client.js.map +1 -1
  26. package/dist/config.d.ts +1 -1
  27. package/dist/config.js +1 -1
  28. package/dist/index.d.ts +17 -3
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +156 -45
  31. package/dist/index.js.map +1 -1
  32. package/dist/polling.d.ts +2 -12
  33. package/dist/polling.d.ts.map +1 -1
  34. package/dist/polling.js +2 -36
  35. package/dist/polling.js.map +1 -1
  36. package/dist/tools/identity.d.ts +0 -7
  37. package/dist/tools/identity.d.ts.map +1 -1
  38. package/dist/tools/identity.js.map +1 -1
  39. package/dist/tools/passwords.d.ts +1 -7
  40. package/dist/tools/passwords.d.ts.map +1 -1
  41. package/dist/tools/passwords.js +18 -58
  42. package/dist/tools/passwords.js.map +1 -1
  43. package/dist/tools/secrets.d.ts +1 -3
  44. package/dist/tools/secrets.d.ts.map +1 -1
  45. package/dist/tools/secrets.js +11 -37
  46. package/dist/tools/secrets.js.map +1 -1
  47. package/dist/types.d.ts +85 -6
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/types.js +1 -2
  50. package/dist/types.js.map +1 -1
  51. package/dist/utils.d.ts +0 -6
  52. package/dist/utils.d.ts.map +1 -1
  53. package/dist/utils.js +0 -18
  54. package/dist/utils.js.map +1 -1
  55. package/openclaw.plugin.json +1 -0
  56. package/package.json +1 -5
  57. package/dist/crypto.d.ts +0 -156
  58. package/dist/crypto.d.ts.map +0 -1
  59. package/dist/crypto.js +0 -350
  60. 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, RaviApiError } from "./client.js";
5
- import { loadAuth, saveAuth, updateAuth, saveConfig, saveRecoveryKey } from "./auth.js";
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
- * Prompt the user for a 6-digit PIN via stdin (hidden input).
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, token: tokenData.access });
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
- access_token: tokenData.access,
200
- refresh_token: tokenData.refresh,
55
+ management_key: tokenData.management_key,
201
56
  user_email: tokenData.user.email,
202
57
  };
203
- // Step 4: Encryption setup derive keypair and store in auth.json
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/auth.json\n\n`);
288
- return { client, authData, userEmail: tokenData.user.email };
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 onboard`, `openclaw ravi status`, etc.
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
- // ── onboard ─────────────────────────────────────────────────────────────
88
+ // ── status ──────────────────────────────────────────────────────────────
316
89
  {
317
- name: "onboard",
318
- description: "Full first-time setup: authenticate, select identity, configure OpenClaw and secrets provider.",
90
+ name: "status",
91
+ description: "Show authentication status and current identity.",
319
92
  handler: async (_args, _config) => {
320
- const apiUrl = RAVI_API_URL;
321
- let client;
322
- // Step 1: Check existing auth — skip login if already authenticated
323
- const existingAuth = loadAuth();
324
- if (existingAuth?.access_token) {
325
- client = new RaviClient({
326
- apiUrl,
327
- token: existingAuth.access_token,
328
- refreshToken: existingAuth.refresh_token,
329
- onTokenRefresh: (newToken) => {
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
- const result = await performLogin();
337
- client = result.client;
105
+ output += `Identity key: not set (run 'openclaw provider add ravi' to configure)\n`;
338
106
  }
339
- // Step 2: Identity selection
340
- let selectedUuid;
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
- catch (err) {
386
- const detail = err instanceof Error ? err.message : String(err);
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
- // Step 3: Bind identity to get identity-scoped tokens
390
- if (selectedUuid) {
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 bindResult = await client.bindIdentity(selectedUuid);
393
- updateAuth({
394
- bound_access_token: bindResult.access,
395
- bound_refresh_token: bindResult.refresh,
396
- });
397
- process.stderr.write(`Identity bound — identity-scoped tokens saved.\n`);
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
- process.stderr.write(`WARNING: Failed to bind identity: ${detail}\n`);
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
- // Step 4: Auto-configure OpenClaw with the selected identity
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 identities = await client.listIdentities();
451
- const hasKeypair = !!(auth.public_key && auth.private_key);
452
- let output = `Authenticated to ${apiUrl}\n`;
453
- output += `E2E encryption: ${hasKeypair ? "Yes" : "No"}\n`;
454
- output += `\nIdentities (${identities.length}):\n`;
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
- if (err instanceof RaviApiError && (err.status === 401 || err.status === 403)) {
470
- return `Token expired or invalid. Run 'openclaw ravi login' to re-authenticate.`;
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":"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"}
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
- /** JWT bearer token for authentication. */
7
- token: string;
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
- * Handles authentication via JWT bearer tokens and provides methods for
30
- * every Ravi API endpoint. Identity scoping is embedded in the JWT claims
31
- * (obtained via {@link bindIdentity}), not via HTTP headers.
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", token: "ey..." });
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 token;
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
- * Bind to an identity by obtaining identity-scoped JWT tokens.
47
+ * Create an identity-scoped API key for the given identity.
63
48
  *
64
- * Calls POST /api/auth/bind-identity/ with the unbound token to get
65
- * a new token pair with identity_uuid baked into the JWT claims.
49
+ * Calls POST /api/auth/keys/identity/ with the management key to obtain
50
+ * an identity key for identity-scoped operations.
66
51
  */
67
- bindIdentity(identityUuid: string): Promise<{
68
- access: string;
69
- refresh: string;
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[]>;