@ravi-hq/ravi 0.6.2 → 0.7.0

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 (76) 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 +12 -5
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +178 -307
  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 +13 -1
  29. package/dist/index.d.ts.map +1 -1
  30. package/dist/index.js +86 -73
  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/contacts.d.ts.map +1 -1
  37. package/dist/tools/contacts.js +8 -21
  38. package/dist/tools/contacts.js.map +1 -1
  39. package/dist/tools/email-send.d.ts.map +1 -1
  40. package/dist/tools/email-send.js +6 -23
  41. package/dist/tools/email-send.js.map +1 -1
  42. package/dist/tools/feedback.d.ts.map +1 -1
  43. package/dist/tools/feedback.js +1 -5
  44. package/dist/tools/feedback.js.map +1 -1
  45. package/dist/tools/identity.d.ts +0 -7
  46. package/dist/tools/identity.d.ts.map +1 -1
  47. package/dist/tools/identity.js +6 -26
  48. package/dist/tools/identity.js.map +1 -1
  49. package/dist/tools/inbox.d.ts.map +1 -1
  50. package/dist/tools/inbox.js +4 -24
  51. package/dist/tools/inbox.js.map +1 -1
  52. package/dist/tools/passwords.d.ts +1 -7
  53. package/dist/tools/passwords.d.ts.map +1 -1
  54. package/dist/tools/passwords.js +24 -81
  55. package/dist/tools/passwords.js.map +1 -1
  56. package/dist/tools/secrets.d.ts +1 -3
  57. package/dist/tools/secrets.d.ts.map +1 -1
  58. package/dist/tools/secrets.js +13 -49
  59. package/dist/tools/secrets.js.map +1 -1
  60. package/dist/tools/sms-send.d.ts.map +1 -1
  61. package/dist/tools/sms-send.js +1 -6
  62. package/dist/tools/sms-send.js.map +1 -1
  63. package/dist/types.d.ts +31 -6
  64. package/dist/types.d.ts.map +1 -1
  65. package/dist/types.js +1 -2
  66. package/dist/types.js.map +1 -1
  67. package/dist/utils.d.ts +0 -6
  68. package/dist/utils.d.ts.map +1 -1
  69. package/dist/utils.js +0 -18
  70. package/dist/utils.js.map +1 -1
  71. package/openclaw.plugin.json +1 -0
  72. package/package.json +1 -5
  73. package/dist/crypto.d.ts +0 -156
  74. package/dist/crypto.d.ts.map +0 -1
  75. package/dist/crypto.js +0 -350
  76. package/dist/crypto.js.map +0 -1
@@ -2,52 +2,30 @@
2
2
  * Password management tools for the Ravi OpenClaw plugin.
3
3
  *
4
4
  * Provides tools to list, retrieve, create, and delete website credentials
5
- * stored in the Ravi password manager. When a {@link CryptoManager} is
6
- * available in the tool context, sensitive fields (username, password, notes)
7
- * are automatically decrypted on read and encrypted on write using E2E
8
- * NaCl SealedBox encryption.
9
- *
10
- * List view intentionally hides password values — use the detail tool
11
- * (`ravi_passwords_get`) to retrieve the decrypted password for a specific entry.
5
+ * stored in the Ravi password manager.
12
6
  *
13
7
  * @module tools/passwords
14
8
  */
15
- import { tryDecrypt } from "../utils.js";
16
9
  // ─── Password Tools ─────────────────────────────────────────────────────────
17
10
  /** Tools for managing website credentials (list, get, create, delete). */
18
11
  export const passwordTools = [
19
12
  {
20
13
  name: "ravi_passwords_list",
21
- description: "List all saved website credentials. Returns domain, username (decrypted), and notes for each entry. " +
22
- "Passwords are intentionally hidden in list view for security — use ravi_passwords_get with a specific UUID " +
23
- "to retrieve the decrypted password when you actually need it. " +
24
- "For API keys and env vars, use ravi_secrets_list instead — passwords are for website credentials only.",
14
+ description: "List all saved website credentials. Passwords are hidden use ravi_passwords_get for the actual value.",
25
15
  parameters: {
26
16
  type: "object",
27
17
  properties: {},
28
18
  required: [],
29
19
  },
30
- handler: async (_params, { client, crypto }) => {
20
+ handler: async (_params, { client }) => {
31
21
  const entries = await client.listPasswords();
32
22
  // Never expose passwords in list view — only in detail view.
33
- // Build new objects to avoid mutating the API response.
34
- return Promise.all(entries.map(async (entry) => {
35
- const result = { ...entry, password: "[hidden]" };
36
- if (crypto) {
37
- if (entry.username)
38
- result.username = await tryDecrypt(crypto, entry.username, "password.username");
39
- if (entry.notes)
40
- result.notes = await tryDecrypt(crypto, entry.notes, "password.notes");
41
- }
42
- return result;
43
- }));
23
+ return entries.map((entry) => ({ ...entry, password: "[hidden]" }));
44
24
  },
45
25
  },
46
26
  {
47
27
  name: "ravi_passwords_get",
48
- description: "Get a specific password entry with the full decrypted password. " +
49
- "Use the UUID from ravi_passwords_list. Returns domain, username, password, and notes — " +
50
- "all decrypted. Use this when you need to log in to a website or service.",
28
+ description: "Get a specific password entry with the full decrypted password.",
51
29
  parameters: {
52
30
  type: "object",
53
31
  properties: {
@@ -58,28 +36,13 @@ export const passwordTools = [
58
36
  },
59
37
  required: ["uuid"],
60
38
  },
61
- handler: async (params, { client, crypto }) => {
62
- const entry = await client.getPassword(params.uuid);
63
- if (crypto) {
64
- if (entry.username)
65
- entry.username = await tryDecrypt(crypto, entry.username, "password.username");
66
- if (entry.password)
67
- entry.password = await tryDecrypt(crypto, entry.password, "password.password");
68
- if (entry.notes)
69
- entry.notes = await tryDecrypt(crypto, entry.notes, "password.notes");
70
- }
71
- return entry;
39
+ handler: async (params, { client }) => {
40
+ return client.getPassword(params.uuid);
72
41
  },
73
42
  },
74
43
  {
75
44
  name: "ravi_passwords_create",
76
- description: "Create a new password entry for a website. All sensitive fields (username, password, notes) " +
77
- "are E2E encrypted before being sent to the server. " +
78
- "Domain auto-cleaning: URLs like 'https://mail.google.com/inbox' are normalized to 'google.com'. " +
79
- "If no password is provided, a strong random password is auto-generated and returned in the response. " +
80
- "Best practice: store credentials immediately after signing up for a service, so you " +
81
- "don't lose the password. " +
82
- "For API keys and env vars (not website logins), use ravi_secrets_set instead.",
45
+ description: "Store website credentials (domain + username + password). Auto-generates a strong password if omitted.",
83
46
  parameters: {
84
47
  type: "object",
85
48
  properties: {
@@ -93,7 +56,7 @@ export const passwordTools = [
93
56
  },
94
57
  password: {
95
58
  type: "string",
96
- description: "Password for the account. Will be E2E encrypted before storage. " +
59
+ description: "Password for the account. " +
97
60
  "If omitted, a strong random password is auto-generated.",
98
61
  },
99
62
  notes: {
@@ -103,30 +66,22 @@ export const passwordTools = [
103
66
  },
104
67
  required: ["domain"],
105
68
  },
106
- handler: async (params, { client, crypto }) => {
107
- if (!crypto) {
108
- return {
109
- error: "Cannot create password entry: E2E encryption is not configured. " +
110
- "Add your PIN to the plugin config to enable encrypted storage.",
111
- };
112
- }
69
+ handler: async (params, { client }) => {
113
70
  const data = {
114
71
  domain: params.domain,
115
72
  };
116
- if (params.username !== undefined) {
117
- data.username = await crypto.encrypt(params.username);
118
- }
73
+ if (params.username !== undefined)
74
+ data.username = params.username;
75
+ if (params.notes !== undefined)
76
+ data.notes = params.notes;
119
77
  // Auto-generate a strong password when none is provided
120
78
  let generatedPassword;
121
79
  if (params.password !== undefined) {
122
- data.password = await crypto.encrypt(params.password);
80
+ data.password = params.password;
123
81
  }
124
82
  else {
125
83
  generatedPassword = await client.generatePassword({});
126
- data.password = await crypto.encrypt(generatedPassword);
127
- }
128
- if (params.notes !== undefined) {
129
- data.notes = await crypto.encrypt(params.notes);
84
+ data.password = generatedPassword;
130
85
  }
131
86
  const entry = await client.createPassword(data);
132
87
  // Include the plaintext generated password so the agent can use it
@@ -138,10 +93,7 @@ export const passwordTools = [
138
93
  },
139
94
  {
140
95
  name: "ravi_passwords_update",
141
- description: "Update an existing password entry. Use ravi_passwords_list to find the UUID. " +
142
- "Only provide the fields you want to change — omitted fields are left unchanged. " +
143
- "All sensitive fields (username, password, notes) are E2E encrypted before storage. " +
144
- "Domain auto-cleaning: URLs like 'https://mail.google.com/inbox' are normalized to 'google.com'.",
96
+ description: "Update an existing password entry. Only provided fields are changed.",
145
97
  parameters: {
146
98
  type: "object",
147
99
  properties: {
@@ -159,7 +111,7 @@ export const passwordTools = [
159
111
  },
160
112
  password: {
161
113
  type: "string",
162
- description: "New password. Will be E2E encrypted before storage.",
114
+ description: "New password.",
163
115
  },
164
116
  notes: {
165
117
  type: "string",
@@ -168,30 +120,22 @@ export const passwordTools = [
168
120
  },
169
121
  required: ["uuid"],
170
122
  },
171
- handler: async (params, { client, crypto }) => {
172
- if (!crypto) {
173
- return {
174
- error: "Cannot update password entry: E2E encryption is not configured. " +
175
- "Add your PIN to the plugin config to enable encrypted storage.",
176
- };
177
- }
123
+ handler: async (params, { client }) => {
178
124
  const data = {};
179
125
  if (params.domain !== undefined)
180
126
  data.domain = params.domain;
181
127
  if (params.username !== undefined)
182
- data.username = await crypto.encrypt(params.username);
128
+ data.username = params.username;
183
129
  if (params.password !== undefined)
184
- data.password = await crypto.encrypt(params.password);
130
+ data.password = params.password;
185
131
  if (params.notes !== undefined)
186
- data.notes = await crypto.encrypt(params.notes);
132
+ data.notes = params.notes;
187
133
  return client.updatePassword(params.uuid, data);
188
134
  },
189
135
  },
190
136
  {
191
137
  name: "ravi_generate_password",
192
- description: "Generate a random password without storing it. Useful for creating strong passwords " +
193
- "before signing up for a service. Default: 16 characters with uppercase, lowercase, digits, and special chars. " +
194
- "Returns just the generated password string. Use ravi_passwords_create to store it afterward.",
138
+ description: "Generate a random password without storing it.",
195
139
  parameters: {
196
140
  type: "object",
197
141
  properties: {
@@ -230,8 +174,7 @@ export const passwordTools = [
230
174
  },
231
175
  {
232
176
  name: "ravi_passwords_delete",
233
- description: "Delete a password entry by UUID. This is permanent and cannot be undone. " +
234
- "Use ravi_passwords_list to find the UUID of the entry to delete.",
177
+ description: "Delete a password entry by UUID. Permanent and cannot be undone.",
235
178
  parameters: {
236
179
  type: "object",
237
180
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"passwords.js","sourceRoot":"","sources":["../../src/tools/passwords.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"passwords.js","sourceRoot":"","sources":["../../src/tools/passwords.ts"],"names":[],"mappings":"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"}
@@ -2,9 +2,7 @@
2
2
  * Secret management tools for the Ravi OpenClaw plugin.
3
3
  *
4
4
  * Provides tools to list, retrieve, and store key-value secrets in the Ravi
5
- * secrets store. When a {@link CryptoManager} is available in the tool context, values
6
- * are automatically decrypted on read and encrypted on write using E2E
7
- * NaCl SealedBox encryption.
5
+ * secrets store.
8
6
  *
9
7
  * @module tools/secrets
10
8
  */
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAIjE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAI5C,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,cAAc,EAiHxC,CAAC"}
1
+ {"version":3,"file":"secrets.d.ts","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAI5C,6EAA6E;AAC7E,eAAO,MAAM,YAAY,EAAE,cAAc,EAsFxC,CAAC"}
@@ -2,43 +2,29 @@
2
2
  * Secret management tools for the Ravi OpenClaw plugin.
3
3
  *
4
4
  * Provides tools to list, retrieve, and store key-value secrets in the Ravi
5
- * secrets store. When a {@link CryptoManager} is available in the tool context, values
6
- * are automatically decrypted on read and encrypted on write using E2E
7
- * NaCl SealedBox encryption.
5
+ * secrets store.
8
6
  *
9
7
  * @module tools/secrets
10
8
  */
11
- import { tryDecrypt } from "../utils.js";
12
9
  // ─── Secrets Tools ──────────────────────────────────────────────────────────
13
10
  /** Tools for managing secrets in the Ravi secrets store (list, get, set). */
14
11
  export const secretsTools = [
15
12
  {
16
13
  name: "ravi_secrets_list",
17
- description: "List all secret keys stored in the Ravi secrets store. Returns key names and UUIDs — " +
18
- "values are hidden in list view for security. Use ravi_secrets_get with a specific key to retrieve the value. " +
19
- "For website credentials (domain + username + password), use ravi_passwords_list instead.",
14
+ description: "List all secret keys. Values are hidden use ravi_secrets_get to retrieve.",
20
15
  parameters: {
21
16
  type: "object",
22
17
  properties: {},
23
18
  required: [],
24
19
  },
25
- handler: async (_params, { client, crypto }) => {
20
+ handler: async (_params, { client }) => {
26
21
  const secrets = await client.listSecrets();
27
- return Promise.all(secrets.map(async (s) => {
28
- const result = { ...s, value: "[hidden]" };
29
- if (crypto && s.notes) {
30
- result.notes = await tryDecrypt(crypto, s.notes, "secrets.notes");
31
- }
32
- return result;
33
- }));
22
+ return secrets.map((s) => ({ ...s, value: "[hidden]" }));
34
23
  },
35
24
  },
36
25
  {
37
26
  name: "ravi_secrets_get",
38
- description: "Get a secret from the Ravi secrets store by key name. The value is automatically decrypted. " +
39
- "Response includes the secret's UUID (needed for ravi_secrets_delete). " +
40
- "Use this to retrieve API keys, tokens, or any sensitive configuration values at runtime. " +
41
- "Keys follow the convention: UPPERCASE_WITH_UNDERSCORES (e.g. OPENAI_API_KEY, STRIPE_SECRET_KEY).",
27
+ description: "Get a secret value by key name.",
42
28
  parameters: {
43
29
  type: "object",
44
30
  properties: {
@@ -50,24 +36,13 @@ export const secretsTools = [
50
36
  },
51
37
  required: ["key"],
52
38
  },
53
- handler: async (params, { client, crypto }) => {
54
- const secret = await client.getSecret(params.key);
55
- if (crypto) {
56
- if (secret.value)
57
- secret.value = await tryDecrypt(crypto, secret.value, "secrets.value");
58
- if (secret.notes)
59
- secret.notes = await tryDecrypt(crypto, secret.notes, "secrets.notes");
60
- }
61
- return secret;
39
+ handler: async (params, { client }) => {
40
+ return client.getSecret(params.key);
62
41
  },
63
42
  },
64
43
  {
65
44
  name: "ravi_secrets_set",
66
- description: "Store a secret in the Ravi secrets store. The value is E2E encrypted before being sent to the server. " +
67
- "Fails if a secret with the same key already exists — use ravi_secrets_delete first, then re-create. " +
68
- "Use this to store API keys, tokens, or any sensitive configuration values securely. " +
69
- "Keys must be UPPERCASE_WITH_UNDERSCORES (e.g. OPENAI_API_KEY). " +
70
- "For website login credentials (domain + username + password), use ravi_passwords_create instead.",
45
+ description: "Store a key-value secret. Fails if key already exists.",
71
46
  parameters: {
72
47
  type: "object",
73
48
  properties: {
@@ -78,33 +53,22 @@ export const secretsTools = [
78
53
  },
79
54
  value: {
80
55
  type: "string",
81
- description: "The secret value to store (will be E2E encrypted before transmission)",
56
+ description: "The secret value to store",
82
57
  },
83
58
  notes: {
84
59
  type: "string",
85
- description: "Optional notes about the secret (will be E2E encrypted before transmission)",
60
+ description: "Optional notes about the secret",
86
61
  },
87
62
  },
88
63
  required: ["key", "value"],
89
64
  },
90
- handler: async (params, { client, crypto }) => {
91
- if (!crypto) {
92
- return {
93
- error: "Cannot store secret: E2E encryption is not configured. " +
94
- "Add your PIN to the plugin config to enable encrypted storage.",
95
- };
96
- }
97
- const value = await crypto.encrypt(params.value);
98
- const notes = params.notes !== undefined
99
- ? await crypto.encrypt(params.notes)
100
- : undefined;
101
- return client.setSecret(params.key, value, notes);
65
+ handler: async (params, { client }) => {
66
+ return client.setSecret(params.key, params.value, params.notes);
102
67
  },
103
68
  },
104
69
  {
105
70
  name: "ravi_secrets_delete",
106
- description: "Delete a secret from the Ravi secrets store by UUID. This is permanent and cannot be undone. " +
107
- "Use ravi_secrets_list or ravi_secrets_get to find the UUID of the secret to delete.",
71
+ description: "Delete a secret by UUID. Permanent and cannot be undone.",
108
72
  parameters: {
109
73
  type: "object",
110
74
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,+EAA+E;AAE/E,6EAA6E;AAC7E,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,mBAAmB;QACzB,WAAW,EACT,6EAA6E;QAC/E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACb;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACrC,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,EAAE,UAAoB,EAAE,CAAC,CAAC,CAAC;QACrE,CAAC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,iCAAiC;QACnC,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,oEAAoE;wBACpE,sFAAsF;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,CAAC;SAClB;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,GAAa,CAAC,CAAC;QAChD,CAAC;KACF;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EACT,wDAAwD;QAC1D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,GAAG,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,sFAAsF;wBACtF,kDAAkD;iBACrD;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2BAA2B;iBACzC;gBACD,KAAK,EAAE;oBACL,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,iCAAiC;iBAC/C;aACF;YACD,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC;SAC3B;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,SAAS,CACrB,MAAM,CAAC,GAAa,EACpB,MAAM,CAAC,KAAe,EACtB,MAAM,CAAC,KAA2B,CACnC,CAAC;QACJ,CAAC;KACF;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,0DAA0D;QAC5D,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,2EAA2E;iBACzF;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,MAAM,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAc,CAAC,CAAC;YACjD,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;QAClD,CAAC;KACF;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sms-send.d.ts","sourceRoot":"","sources":["../../src/tools/sms-send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAEjE,qCAAqC;AACrC,eAAO,MAAM,YAAY,EAAE,cAAc,EA8BxC,CAAC"}
1
+ {"version":3,"file":"sms-send.d.ts","sourceRoot":"","sources":["../../src/tools/sms-send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAEjE,qCAAqC;AACrC,eAAO,MAAM,YAAY,EAAE,cAAc,EAyBxC,CAAC"}
@@ -9,12 +9,7 @@
9
9
  export const smsSendTools = [
10
10
  {
11
11
  name: "ravi_sms_send",
12
- description: "Send an SMS message from the active identity's phone number. " +
13
- "IMPORTANT: If you only have the recipient's name (e.g. 'text Bob'), use ravi_contacts_search first " +
14
- "to look up their phone number. If multiple contacts match, confirm with the user before sending. " +
15
- "The identity must have a provisioned phone number (check with ravi_get_info). " +
16
- "SMS messages are plain text only, max 1600 characters. " +
17
- "The sent message will appear in the SMS inbox as an outgoing message.",
12
+ description: "Send an SMS message from the active identity's phone number.",
18
13
  parameters: {
19
14
  type: "object",
20
15
  properties: {
@@ -1 +1 @@
1
- {"version":3,"file":"sms-send.js","sourceRoot":"","sources":["../../src/tools/sms-send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,+DAA+D;YAC/D,qGAAqG;YACrG,mGAAmG;YACnG,gFAAgF;YAChF,yDAAyD;YACzD,uEAAuE;QACzE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,qEAAqE;wBACrE,sDAAsD;iBACzD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;SAChC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAmB,EAAE,MAAM,CAAC,IAAc,CAAC,CAAC;QAC3E,CAAC;KACF;CACF,CAAC"}
1
+ {"version":3,"file":"sms-send.js","sourceRoot":"","sources":["../../src/tools/sms-send.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,qCAAqC;AACrC,MAAM,CAAC,MAAM,YAAY,GAAqB;IAC5C;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,8DAA8D;QAChE,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,SAAS,EAAE;oBACT,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,qEAAqE;wBACrE,sDAAsD;iBACzD;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,oDAAoD;iBAClE;aACF;YACD,QAAQ,EAAE,CAAC,WAAW,EAAE,MAAM,CAAC;SAChC;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;YACpC,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAmB,EAAE,MAAM,CAAC,IAAc,CAAC,CAAC;QAC3E,CAAC;KACF;CACF,CAAC"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,8 @@ export interface Identity {
6
6
  inbox: string | null;
7
7
  phone: string | null;
8
8
  created_dt: string;
9
+ /** API key returned on identity creation (agent-created identities only). */
10
+ api_key?: string;
9
11
  }
10
12
  /** Email thread from GET /api/email-inbox/ */
11
13
  export interface EmailThread {
@@ -89,11 +91,8 @@ export interface PresignResponse {
89
91
  export interface PasswordEntry {
90
92
  uuid: string;
91
93
  domain: string;
92
- /** E2E encrypted */
93
94
  username: string;
94
- /** E2E encrypted */
95
95
  password: string;
96
- /** E2E encrypted */
97
96
  notes: string;
98
97
  created_dt: string;
99
98
  updated_dt: string;
@@ -102,9 +101,7 @@ export interface PasswordEntry {
102
101
  export interface SecretEntry {
103
102
  uuid: string;
104
103
  key: string;
105
- /** E2E encrypted */
106
104
  value: string;
107
- /** E2E encrypted */
108
105
  notes: string;
109
106
  created_dt: string;
110
107
  updated_dt: string;
@@ -173,6 +170,10 @@ export interface GatewayLogger {
173
170
  * If the OpenClaw runtime API changes, TypeScript will flag breakage here.
174
171
  */
175
172
  export interface PluginRuntimeSubset {
173
+ config: {
174
+ loadConfig(): Record<string, unknown>;
175
+ writeConfigFile(cfg: Record<string, unknown>): Promise<void>;
176
+ };
176
177
  channel: {
177
178
  routing: {
178
179
  resolveAgentRoute(opts: {
@@ -218,10 +219,31 @@ export interface BaseGatewayContext<TAccount> {
218
219
  /** Structured logger; may be absent in minimal environments. */
219
220
  log?: GatewayLogger;
220
221
  }
222
+ /** Response from POST /api/auth/device/token/ after successful authorization. */
223
+ export interface DeviceTokenResponse {
224
+ management_key: string;
225
+ user: {
226
+ id: number;
227
+ email: string;
228
+ first_name: string;
229
+ last_name: string;
230
+ };
231
+ identity_key?: string;
232
+ identity?: {
233
+ uuid: string;
234
+ name: string;
235
+ email: string | null;
236
+ };
237
+ identities?: Array<{
238
+ uuid: string;
239
+ name: string;
240
+ email: string | null;
241
+ }>;
242
+ }
221
243
  /**
222
244
  * Configuration shape for the Ravi OpenClaw plugin.
223
245
  *
224
- * Auth credentials (tokens, keypair) are stored in ~/.ravi/auth.json
246
+ * Auth credentials (tokens, keypair) are stored in ~/.ravi/config.json
225
247
  * (managed by `openclaw ravi onboard`). The OpenClaw config only needs
226
248
  * the identity UUID to scope this agent to a specific Ravi identity.
227
249
  */
@@ -230,5 +252,8 @@ export interface RaviPluginConfig {
230
252
  * Set in the OpenClaw agent config (each agent binds to one identity).
231
253
  * Optional at install time; set automatically by `openclaw ravi onboard`. */
232
254
  identityUuid?: string;
255
+ /** Identity API key (ravi_id_...). Set per-agent for multi-agent setups.
256
+ * When present, takes precedence over the file-based identity_key. */
257
+ identityKey?: string;
233
258
  }
234
259
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -1,7 +1,6 @@
1
1
  // ─── API Response Types ──────────────────────────────────────────────────────
2
2
  // TypeScript interfaces mirroring the Ravi backend Django REST Framework
3
- // serializers. Email/SMS fields are server-side encrypted (plaintext in API).
4
- // Vault fields (passwords/secrets) are E2E encrypted ("e2e::<base64>").
3
+ // serializers. All fields are server-side encrypted (plaintext in API).
5
4
  // ─────────────────────────────────────────────────────────────────────────────
6
5
  export {};
7
6
  //# sourceMappingURL=types.js.map
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yEAAyE;AACzE,8EAA8E;AAC9E,wEAAwE;AACxE,gFAAgF"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yEAAyE;AACzE,wEAAwE;AACxE,gFAAgF"}
package/dist/utils.d.ts CHANGED
@@ -3,7 +3,6 @@
3
3
  *
4
4
  * @module utils
5
5
  */
6
- import type { CryptoManager } from "./crypto.js";
7
6
  /**
8
7
  * Prepare text for email sending as HTML.
9
8
  *
@@ -12,9 +11,4 @@ import type { CryptoManager } from "./crypto.js";
12
11
  * and the result is wrapped in a `<div>` element.
13
12
  */
14
13
  export declare function wrapInHtml(text: string): string;
15
- /**
16
- * Try to decrypt a value, returning a fallback on failure.
17
- * Logs the first decryption failure to help diagnose wrong-PIN issues.
18
- */
19
- export declare function tryDecrypt(crypto: CryptoManager, value: string, context: string): Promise<string>;
20
14
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU/C;AAID;;;GAGG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAWjB"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAU/C"}
package/dist/utils.js CHANGED
@@ -21,22 +21,4 @@ export function wrapInHtml(text) {
21
21
  .replace(/\n/g, "<br>");
22
22
  return `<div>${escaped}</div>`;
23
23
  }
24
- let decryptionWarningLogged = false;
25
- /**
26
- * Try to decrypt a value, returning a fallback on failure.
27
- * Logs the first decryption failure to help diagnose wrong-PIN issues.
28
- */
29
- export async function tryDecrypt(crypto, value, context) {
30
- try {
31
- return await crypto.decrypt(value);
32
- }
33
- catch (err) {
34
- if (!decryptionWarningLogged) {
35
- const detail = err instanceof Error ? err.message : String(err);
36
- console.error(`[ravi] Decryption failed (${context}): ${detail}. Wrong PIN?`);
37
- decryptionWarningLogged = true;
38
- }
39
- return "[decryption failed]";
40
- }
41
- }
42
24
  //# sourceMappingURL=utils.js.map
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI;SACjB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,QAAQ,OAAO,QAAQ,CAAC;AACjC,CAAC;AAED,IAAI,uBAAuB,GAAG,KAAK,CAAC;AAEpC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,MAAqB,EACrB,KAAa,EACb,OAAe;IAEf,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAC7B,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChE,OAAO,CAAC,KAAK,CAAC,6BAA6B,OAAO,MAAM,MAAM,cAAc,CAAC,CAAC;YAC9E,uBAAuB,GAAG,IAAI,CAAC;QACjC,CAAC;QACD,OAAO,qBAAqB,CAAC;IAC/B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,IAAI;SACjB,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1B,OAAO,QAAQ,OAAO,QAAQ,CAAC;AACjC,CAAC"}
@@ -6,6 +6,7 @@
6
6
  "type": "object",
7
7
  "properties": {
8
8
  "identityUuid": { "type": "string" },
9
+ "identityKey": { "type": "string", "description": "Identity API key (ravi_id_...). Set per-agent for multi-agent setups." },
9
10
  "externalEmail": {
10
11
  "type": "boolean",
11
12
  "default": true,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ravi-hq/ravi",
3
- "version": "0.6.2",
3
+ "version": "0.7.0",
4
4
  "description": "OpenClaw plugin for Ravi — identity provider for AI agents. Email channels + full agent toolbox.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -32,10 +32,6 @@
32
32
  }
33
33
  ]
34
34
  },
35
- "dependencies": {
36
- "hash-wasm": "^4.11.0",
37
- "tweetnacl": "^1.0.3"
38
- },
39
35
  "devDependencies": {
40
36
  "@types/node": "^22.0.0",
41
37
  "tsx": "^4.21.0",