@ravi-hq/ravi 0.5.4 → 0.6.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.
- package/README.md +56 -69
- package/dist/auth.d.ts +2 -0
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js.map +1 -1
- package/dist/bin/ravi-secrets.d.ts +3 -3
- package/dist/bin/ravi-secrets.js +7 -7
- package/dist/bin/ravi-secrets.js.map +1 -1
- package/dist/channels/email-trusted.d.ts.map +1 -1
- package/dist/channels/email-trusted.js +5 -7
- package/dist/channels/email-trusted.js.map +1 -1
- package/dist/channels/email-untrusted.d.ts.map +1 -1
- package/dist/channels/email-untrusted.js +5 -7
- package/dist/channels/email-untrusted.js.map +1 -1
- package/dist/channels/email.d.ts +12 -14
- package/dist/channels/email.d.ts.map +1 -1
- package/dist/channels/email.js +50 -52
- package/dist/channels/email.js.map +1 -1
- package/dist/cli.d.ts +15 -2
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +271 -211
- package/dist/cli.js.map +1 -1
- package/dist/client.d.ts +64 -26
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +79 -39
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +5 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -26
- package/dist/index.js.map +1 -1
- package/dist/sse-pool.d.ts +5 -2
- package/dist/sse-pool.d.ts.map +1 -1
- package/dist/sse-pool.js +9 -7
- package/dist/sse-pool.js.map +1 -1
- package/dist/sse.d.ts +7 -21
- package/dist/sse.d.ts.map +1 -1
- package/dist/sse.js +10 -33
- package/dist/sse.js.map +1 -1
- package/dist/tools/contacts.d.ts +14 -0
- package/dist/tools/contacts.d.ts.map +1 -0
- package/dist/tools/contacts.js +186 -0
- package/dist/tools/contacts.js.map +1 -0
- package/dist/tools/email-send.d.ts.map +1 -1
- package/dist/tools/email-send.js +18 -21
- package/dist/tools/email-send.js.map +1 -1
- package/dist/tools/identity.d.ts +2 -2
- package/dist/tools/identity.d.ts.map +1 -1
- package/dist/tools/identity.js +14 -6
- package/dist/tools/identity.js.map +1 -1
- package/dist/tools/inbox.d.ts +0 -3
- package/dist/tools/inbox.d.ts.map +1 -1
- package/dist/tools/inbox.js +13 -58
- package/dist/tools/inbox.js.map +1 -1
- package/dist/tools/passwords.d.ts.map +1 -1
- package/dist/tools/passwords.js +20 -7
- package/dist/tools/passwords.js.map +1 -1
- package/dist/tools/secrets.d.ts +15 -0
- package/dist/tools/secrets.d.ts.map +1 -0
- package/dist/tools/{vault.js → secrets.js} +23 -23
- package/dist/tools/secrets.js.map +1 -0
- package/dist/tools/sms-send.d.ts.map +1 -1
- package/dist/tools/sms-send.js +3 -1
- package/dist/tools/sms-send.js.map +1 -1
- package/dist/types.d.ts +18 -20
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +2 -2
- package/dist/types.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +4 -13
- package/dist/channels/sms-trusted.d.ts +0 -161
- package/dist/channels/sms-trusted.d.ts.map +0 -1
- package/dist/channels/sms-trusted.js +0 -306
- package/dist/channels/sms-trusted.js.map +0 -1
- package/dist/channels/sms-untrusted.d.ts +0 -124
- package/dist/channels/sms-untrusted.d.ts.map +0 -1
- package/dist/channels/sms-untrusted.js +0 -269
- package/dist/channels/sms-untrusted.js.map +0 -1
- package/dist/channels/sms.d.ts +0 -269
- package/dist/channels/sms.d.ts.map +0 -1
- package/dist/channels/sms.js +0 -380
- package/dist/channels/sms.js.map +0 -1
- package/dist/tools/vault.d.ts +0 -15
- package/dist/tools/vault.d.ts.map +0 -1
- package/dist/tools/vault.js.map +0 -1
package/dist/tools/passwords.js
CHANGED
|
@@ -21,7 +21,7 @@ export const passwordTools = [
|
|
|
21
21
|
description: "List all saved website credentials. Returns domain, username (decrypted), and notes for each entry. " +
|
|
22
22
|
"Passwords are intentionally hidden in list view for security — use ravi_passwords_get with a specific UUID " +
|
|
23
23
|
"to retrieve the decrypted password when you actually need it. " +
|
|
24
|
-
"For API keys and env vars, use
|
|
24
|
+
"For API keys and env vars, use ravi_secrets_list instead — passwords are for website credentials only.",
|
|
25
25
|
parameters: {
|
|
26
26
|
type: "object",
|
|
27
27
|
properties: {},
|
|
@@ -76,9 +76,10 @@ export const passwordTools = [
|
|
|
76
76
|
description: "Create a new password entry for a website. All sensitive fields (username, password, notes) " +
|
|
77
77
|
"are E2E encrypted before being sent to the server. " +
|
|
78
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. " +
|
|
79
80
|
"Best practice: store credentials immediately after signing up for a service, so you " +
|
|
80
|
-
"don't lose the password.
|
|
81
|
-
"For API keys and env vars (not website logins), use
|
|
81
|
+
"don't lose the password. " +
|
|
82
|
+
"For API keys and env vars (not website logins), use ravi_secrets_set instead.",
|
|
82
83
|
parameters: {
|
|
83
84
|
type: "object",
|
|
84
85
|
properties: {
|
|
@@ -92,11 +93,12 @@ export const passwordTools = [
|
|
|
92
93
|
},
|
|
93
94
|
password: {
|
|
94
95
|
type: "string",
|
|
95
|
-
description: "Password for the account. Will be E2E encrypted before storage."
|
|
96
|
+
description: "Password for the account. Will be E2E encrypted before storage. " +
|
|
97
|
+
"If omitted, a strong random password is auto-generated.",
|
|
96
98
|
},
|
|
97
99
|
notes: {
|
|
98
100
|
type: "string",
|
|
99
|
-
description: "Optional notes (e.g. '2FA enabled', 'recovery codes
|
|
101
|
+
description: "Optional notes (e.g. '2FA enabled', 'recovery codes stored securely')",
|
|
100
102
|
},
|
|
101
103
|
},
|
|
102
104
|
required: ["domain"],
|
|
@@ -114,13 +116,24 @@ export const passwordTools = [
|
|
|
114
116
|
if (params.username !== undefined) {
|
|
115
117
|
data.username = await crypto.encrypt(params.username);
|
|
116
118
|
}
|
|
119
|
+
// Auto-generate a strong password when none is provided
|
|
120
|
+
let generatedPassword;
|
|
117
121
|
if (params.password !== undefined) {
|
|
118
122
|
data.password = await crypto.encrypt(params.password);
|
|
119
123
|
}
|
|
124
|
+
else {
|
|
125
|
+
generatedPassword = await client.generatePassword({});
|
|
126
|
+
data.password = await crypto.encrypt(generatedPassword);
|
|
127
|
+
}
|
|
120
128
|
if (params.notes !== undefined) {
|
|
121
129
|
data.notes = await crypto.encrypt(params.notes);
|
|
122
130
|
}
|
|
123
|
-
|
|
131
|
+
const entry = await client.createPassword(data);
|
|
132
|
+
// Include the plaintext generated password so the agent can use it
|
|
133
|
+
if (generatedPassword) {
|
|
134
|
+
return { ...entry, generated_password: generatedPassword };
|
|
135
|
+
}
|
|
136
|
+
return entry;
|
|
124
137
|
},
|
|
125
138
|
},
|
|
126
139
|
{
|
|
@@ -150,7 +163,7 @@ export const passwordTools = [
|
|
|
150
163
|
},
|
|
151
164
|
notes: {
|
|
152
165
|
type: "string",
|
|
153
|
-
description: "New notes (e.g. '2FA enabled', 'recovery codes
|
|
166
|
+
description: "New notes (e.g. '2FA enabled', 'recovery codes stored securely')",
|
|
154
167
|
},
|
|
155
168
|
},
|
|
156
169
|
required: ["uuid"],
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"passwords.js","sourceRoot":"","sources":["../../src/tools/passwords.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAKzC,+EAA+E;AAE/E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,qBAAqB;QAC3B,WAAW,EACT,sGAAsG;YACtG,6GAA6G;YAC7G,gEAAgE;YAChE,
|
|
1
|
+
{"version":3,"file":"passwords.js","sourceRoot":"","sources":["../../src/tools/passwords.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Secret management tools for the Ravi OpenClaw plugin.
|
|
3
|
+
*
|
|
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.
|
|
8
|
+
*
|
|
9
|
+
* @module tools/secrets
|
|
10
|
+
*/
|
|
11
|
+
import type { ToolDefinition, ToolContext } from "./identity.js";
|
|
12
|
+
export type { ToolDefinition, ToolContext };
|
|
13
|
+
/** Tools for managing secrets in the Ravi secrets store (list, get, set). */
|
|
14
|
+
export declare const secretsTools: ToolDefinition[];
|
|
15
|
+
//# sourceMappingURL=secrets.d.ts.map
|
|
@@ -0,0 +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,21 +1,21 @@
|
|
|
1
1
|
/**
|
|
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
|
-
*
|
|
5
|
+
* secrets store. When a {@link CryptoManager} is available in the tool context, values
|
|
6
6
|
* are automatically decrypted on read and encrypted on write using E2E
|
|
7
7
|
* NaCl SealedBox encryption.
|
|
8
8
|
*
|
|
9
|
-
* @module tools/
|
|
9
|
+
* @module tools/secrets
|
|
10
10
|
*/
|
|
11
11
|
import { tryDecrypt } from "../utils.js";
|
|
12
|
-
// ───
|
|
13
|
-
/** Tools for managing secrets in the Ravi
|
|
14
|
-
export const
|
|
12
|
+
// ─── Secrets Tools ──────────────────────────────────────────────────────────
|
|
13
|
+
/** Tools for managing secrets in the Ravi secrets store (list, get, set). */
|
|
14
|
+
export const secretsTools = [
|
|
15
15
|
{
|
|
16
|
-
name: "
|
|
17
|
-
description: "List all secret keys stored in the Ravi
|
|
18
|
-
"values are hidden in list view for security. Use
|
|
16
|
+
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
19
|
"For website credentials (domain + username + password), use ravi_passwords_list instead.",
|
|
20
20
|
parameters: {
|
|
21
21
|
type: "object",
|
|
@@ -27,16 +27,16 @@ export const vaultTools = [
|
|
|
27
27
|
return Promise.all(secrets.map(async (s) => {
|
|
28
28
|
const result = { ...s, value: "[hidden]" };
|
|
29
29
|
if (crypto && s.notes) {
|
|
30
|
-
result.notes = await tryDecrypt(crypto, s.notes, "
|
|
30
|
+
result.notes = await tryDecrypt(crypto, s.notes, "secrets.notes");
|
|
31
31
|
}
|
|
32
32
|
return result;
|
|
33
33
|
}));
|
|
34
34
|
},
|
|
35
35
|
},
|
|
36
36
|
{
|
|
37
|
-
name: "
|
|
38
|
-
description: "Get a secret from the Ravi
|
|
39
|
-
"Response includes the secret's UUID (needed for
|
|
37
|
+
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
40
|
"Use this to retrieve API keys, tokens, or any sensitive configuration values at runtime. " +
|
|
41
41
|
"Keys follow the convention: UPPERCASE_WITH_UNDERSCORES (e.g. OPENAI_API_KEY, STRIPE_SECRET_KEY).",
|
|
42
42
|
parameters: {
|
|
@@ -54,17 +54,17 @@ export const vaultTools = [
|
|
|
54
54
|
const secret = await client.getSecret(params.key);
|
|
55
55
|
if (crypto) {
|
|
56
56
|
if (secret.value)
|
|
57
|
-
secret.value = await tryDecrypt(crypto, secret.value, "
|
|
57
|
+
secret.value = await tryDecrypt(crypto, secret.value, "secrets.value");
|
|
58
58
|
if (secret.notes)
|
|
59
|
-
secret.notes = await tryDecrypt(crypto, secret.notes, "
|
|
59
|
+
secret.notes = await tryDecrypt(crypto, secret.notes, "secrets.notes");
|
|
60
60
|
}
|
|
61
61
|
return secret;
|
|
62
62
|
},
|
|
63
63
|
},
|
|
64
64
|
{
|
|
65
|
-
name: "
|
|
66
|
-
description: "Store a secret in the Ravi
|
|
67
|
-
"
|
|
65
|
+
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
68
|
"Use this to store API keys, tokens, or any sensitive configuration values securely. " +
|
|
69
69
|
"Keys must be UPPERCASE_WITH_UNDERSCORES (e.g. OPENAI_API_KEY). " +
|
|
70
70
|
"For website login credentials (domain + username + password), use ravi_passwords_create instead.",
|
|
@@ -102,15 +102,15 @@ export const vaultTools = [
|
|
|
102
102
|
},
|
|
103
103
|
},
|
|
104
104
|
{
|
|
105
|
-
name: "
|
|
106
|
-
description: "Delete a secret from the Ravi
|
|
107
|
-
"Use
|
|
105
|
+
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.",
|
|
108
108
|
parameters: {
|
|
109
109
|
type: "object",
|
|
110
110
|
properties: {
|
|
111
111
|
uuid: {
|
|
112
112
|
type: "string",
|
|
113
|
-
description: "UUID of the
|
|
113
|
+
description: "UUID of the secret to delete (from ravi_secrets_list or ravi_secrets_get)",
|
|
114
114
|
},
|
|
115
115
|
},
|
|
116
116
|
required: ["uuid"],
|
|
@@ -121,4 +121,4 @@ export const vaultTools = [
|
|
|
121
121
|
},
|
|
122
122
|
},
|
|
123
123
|
];
|
|
124
|
-
//# sourceMappingURL=
|
|
124
|
+
//# sourceMappingURL=secrets.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secrets.js","sourceRoot":"","sources":["../../src/tools/secrets.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,
|
|
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"}
|
package/dist/tools/sms-send.js
CHANGED
|
@@ -10,9 +10,11 @@ export const smsSendTools = [
|
|
|
10
10
|
{
|
|
11
11
|
name: "ravi_sms_send",
|
|
12
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. " +
|
|
13
15
|
"The identity must have a provisioned phone number (check with ravi_get_info). " +
|
|
14
16
|
"SMS messages are plain text only, max 1600 characters. " +
|
|
15
|
-
"The sent message will appear in the SMS inbox as an
|
|
17
|
+
"The sent message will appear in the SMS inbox as an outgoing message.",
|
|
16
18
|
parameters: {
|
|
17
19
|
type: "object",
|
|
18
20
|
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,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,+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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -10,9 +10,7 @@ export interface Identity {
|
|
|
10
10
|
/** Email thread from GET /api/email-inbox/ */
|
|
11
11
|
export interface EmailThread {
|
|
12
12
|
thread_id: string;
|
|
13
|
-
/** May be E2E encrypted ("e2e::...") */
|
|
14
13
|
subject: string;
|
|
15
|
-
/** May be E2E encrypted */
|
|
16
14
|
preview: string;
|
|
17
15
|
from_email: string;
|
|
18
16
|
/** Inbox address that received the thread */
|
|
@@ -32,11 +30,8 @@ export interface EmailMessage {
|
|
|
32
30
|
to_email: string;
|
|
33
31
|
/** Comma-separated CC recipient email addresses */
|
|
34
32
|
cc: string;
|
|
35
|
-
/** May be E2E encrypted */
|
|
36
33
|
subject: string;
|
|
37
|
-
/** May be E2E encrypted */
|
|
38
34
|
text_content: string;
|
|
39
|
-
/** May be E2E encrypted */
|
|
40
35
|
html_content: string;
|
|
41
36
|
is_read: boolean;
|
|
42
37
|
created_dt: string;
|
|
@@ -46,7 +41,6 @@ export interface EmailMessage {
|
|
|
46
41
|
/** Detailed email thread with messages from GET /api/email-inbox/{thread_id}/ */
|
|
47
42
|
export interface EmailThreadDetail {
|
|
48
43
|
thread_id: string;
|
|
49
|
-
/** May be E2E encrypted ("e2e::...") */
|
|
50
44
|
subject: string;
|
|
51
45
|
message_count: number;
|
|
52
46
|
messages: EmailMessage[];
|
|
@@ -59,7 +53,6 @@ export interface SmsConversation {
|
|
|
59
53
|
phone: string;
|
|
60
54
|
/** Identity's phone number (E.164 format) */
|
|
61
55
|
phone_number: string;
|
|
62
|
-
/** May be E2E encrypted */
|
|
63
56
|
preview: string;
|
|
64
57
|
message_count: number;
|
|
65
58
|
unread_count: number;
|
|
@@ -70,7 +63,6 @@ export interface SmsMessage {
|
|
|
70
63
|
id: number;
|
|
71
64
|
from_number: string;
|
|
72
65
|
to_number: string;
|
|
73
|
-
/** May be E2E encrypted */
|
|
74
66
|
body: string;
|
|
75
67
|
direction: "incoming" | "outgoing";
|
|
76
68
|
is_read: boolean;
|
|
@@ -104,7 +96,7 @@ export interface PasswordEntry {
|
|
|
104
96
|
created_dt: string;
|
|
105
97
|
updated_dt: string;
|
|
106
98
|
}
|
|
107
|
-
/**
|
|
99
|
+
/** Secret entry from GET /api/secrets/ */
|
|
108
100
|
export interface SecretEntry {
|
|
109
101
|
uuid: string;
|
|
110
102
|
key: string;
|
|
@@ -115,6 +107,20 @@ export interface SecretEntry {
|
|
|
115
107
|
created_dt: string;
|
|
116
108
|
updated_dt: string;
|
|
117
109
|
}
|
|
110
|
+
/** Contact entry from GET /api/contacts/ */
|
|
111
|
+
export interface ContactEntry {
|
|
112
|
+
uuid: string;
|
|
113
|
+
email: string;
|
|
114
|
+
phone_number: string;
|
|
115
|
+
display_name: string;
|
|
116
|
+
nickname: string;
|
|
117
|
+
is_trusted: boolean;
|
|
118
|
+
source: "auto" | "manual";
|
|
119
|
+
interaction_count: number;
|
|
120
|
+
last_interaction_dt: string | null;
|
|
121
|
+
created_dt: string;
|
|
122
|
+
updated_dt: string;
|
|
123
|
+
}
|
|
118
124
|
/** Encryption metadata from GET /api/encryption/ */
|
|
119
125
|
export interface EncryptionMeta {
|
|
120
126
|
id: number;
|
|
@@ -141,14 +147,6 @@ export interface EmailEvent {
|
|
|
141
147
|
attachments: number;
|
|
142
148
|
in_reply_to: string | null;
|
|
143
149
|
}
|
|
144
|
-
/** Real-time SMS event from the SSE stream */
|
|
145
|
-
export interface SmsEvent {
|
|
146
|
-
id: string;
|
|
147
|
-
from_number: string;
|
|
148
|
-
body: string;
|
|
149
|
-
conversation_id: string;
|
|
150
|
-
created_dt: string;
|
|
151
|
-
}
|
|
152
150
|
/** Structured logger available to gateway adapters. */
|
|
153
151
|
export interface GatewayLogger {
|
|
154
152
|
info: (...args: unknown[]) => void;
|
|
@@ -194,7 +192,7 @@ export interface PluginRuntimeSubset {
|
|
|
194
192
|
*
|
|
195
193
|
* Passed by the ChannelManager to `gateway.startAccount()`. The generic
|
|
196
194
|
* parameter `TAccount` is the channel-specific account config type
|
|
197
|
-
* (e.g. {@link EmailAccountConfig}
|
|
195
|
+
* (e.g. {@link EmailAccountConfig}).
|
|
198
196
|
*/
|
|
199
197
|
export interface BaseGatewayContext<TAccount> {
|
|
200
198
|
/** Full OpenClaw gateway configuration. */
|
|
@@ -212,13 +210,13 @@ export interface BaseGatewayContext<TAccount> {
|
|
|
212
210
|
* Configuration shape for the Ravi OpenClaw plugin.
|
|
213
211
|
*
|
|
214
212
|
* Auth credentials (tokens, keypair) are stored in ~/.ravi/auth.json
|
|
215
|
-
* (managed by `openclaw ravi
|
|
213
|
+
* (managed by `openclaw ravi onboard`). The OpenClaw config only needs
|
|
216
214
|
* the identity UUID to scope this agent to a specific Ravi identity.
|
|
217
215
|
*/
|
|
218
216
|
export interface RaviPluginConfig {
|
|
219
217
|
/** Identity UUID — maps this OpenClaw agent to a Ravi identity.
|
|
220
218
|
* Set in the OpenClaw agent config (each agent binds to one identity).
|
|
221
|
-
* Optional at install time; set automatically by `openclaw ravi
|
|
219
|
+
* Optional at install time; set automatically by `openclaw ravi onboard`. */
|
|
222
220
|
identityUuid?: string;
|
|
223
221
|
/** When false, emails from unknown senders are silently dropped. Defaults to true. */
|
|
224
222
|
externalEmail?: boolean;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAMA,yCAAyC;AACzC,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8CAA8C;AAC9C,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,
|
|
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,7 @@
|
|
|
1
1
|
// ─── API Response Types ──────────────────────────────────────────────────────
|
|
2
2
|
// TypeScript interfaces mirroring the Ravi backend Django REST Framework
|
|
3
|
-
// serializers.
|
|
4
|
-
//
|
|
3
|
+
// serializers. Email/SMS fields are server-side encrypted (plaintext in API).
|
|
4
|
+
// Vault fields (passwords/secrets) are E2E encrypted ("e2e::<base64>").
|
|
5
5
|
// ─────────────────────────────────────────────────────────────────────────────
|
|
6
6
|
export {};
|
|
7
7
|
//# 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,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,gFAAgF;AAChF,yEAAyE;AACzE,8EAA8E;AAC9E,wEAAwE;AACxE,gFAAgF"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "ravi",
|
|
3
3
|
"name": "Ravi",
|
|
4
|
-
"description": "Identity provider for AI agents — email, phone, passwords,
|
|
4
|
+
"description": "Identity provider for AI agents — email, phone, passwords, secrets, and more.",
|
|
5
5
|
"configSchema": {
|
|
6
6
|
"type": "object",
|
|
7
7
|
"properties": {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ravi-hq/ravi",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "OpenClaw plugin for Ravi — identity provider for AI agents. Email
|
|
3
|
+
"version": "0.6.0",
|
|
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",
|
|
7
7
|
"type": "module",
|
|
@@ -21,23 +21,14 @@
|
|
|
21
21
|
],
|
|
22
22
|
"channels": [
|
|
23
23
|
{
|
|
24
|
-
"id": "ravi-email",
|
|
24
|
+
"id": "ravi-email-owner",
|
|
25
25
|
"label": "Ravi Email",
|
|
26
|
-
"docsPath": "/channels/ravi-email",
|
|
26
|
+
"docsPath": "/channels/ravi-email-owner",
|
|
27
27
|
"blurb": "Email channel for AI agents via Ravi identity provider",
|
|
28
28
|
"aliases": [
|
|
29
29
|
"ravi-mail",
|
|
30
30
|
"ravi"
|
|
31
31
|
]
|
|
32
|
-
},
|
|
33
|
-
{
|
|
34
|
-
"id": "ravi-sms",
|
|
35
|
-
"label": "Ravi SMS",
|
|
36
|
-
"docsPath": "/channels/ravi-sms",
|
|
37
|
-
"blurb": "SMS channel for AI agents via Ravi identity provider",
|
|
38
|
-
"aliases": [
|
|
39
|
-
"ravi-text"
|
|
40
|
-
]
|
|
41
32
|
}
|
|
42
33
|
]
|
|
43
34
|
},
|
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
import type { RaviClient } from "../client.js";
|
|
2
|
-
import type { SmsEvent, BaseGatewayContext } from "../types.js";
|
|
3
|
-
/** Configuration for a single SMS account within the ravi-sms-trusted channel. */
|
|
4
|
-
export interface SmsTrustedAccountConfig {
|
|
5
|
-
/** The identity UUID this account is bound to. */
|
|
6
|
-
identityUuid: string;
|
|
7
|
-
/** Human-readable identity name for display purposes. */
|
|
8
|
-
identityName: string;
|
|
9
|
-
/** The phone number provisioned for this identity (E.164 format). */
|
|
10
|
-
phone: string;
|
|
11
|
-
}
|
|
12
|
-
/** Normalized inbound message envelope produced by {@link normalizeInbound}. */
|
|
13
|
-
export interface SmsTrustedInboundEnvelope {
|
|
14
|
-
/** Sender's phone number (used as the sender ID). */
|
|
15
|
-
senderId: string;
|
|
16
|
-
/** Plain-text body of the SMS message. */
|
|
17
|
-
text: string;
|
|
18
|
-
/** Phone number that maps to the OpenClaw session key. */
|
|
19
|
-
threadId: string;
|
|
20
|
-
/** Additional SMS metadata passed through to the agent. */
|
|
21
|
-
metadata: {
|
|
22
|
-
conversationId: string;
|
|
23
|
-
};
|
|
24
|
-
}
|
|
25
|
-
/** Context passed by the ChannelManager to `gateway.startAccount()`. */
|
|
26
|
-
export type SmsTrustedGatewayContext = BaseGatewayContext<SmsTrustedAccountConfig>;
|
|
27
|
-
/**
|
|
28
|
-
* Creates the ravi-sms-trusted channel definition for OpenClaw.
|
|
29
|
-
*
|
|
30
|
-
* Notification-only channel for SMS from trusted senders (the identity owner's
|
|
31
|
-
* other phone numbers or known contacts). The agent processes the message as an
|
|
32
|
-
* instruction. Delivery calls sendSms — the agent can reply directly.
|
|
33
|
-
*
|
|
34
|
-
* @returns The ravi-sms-trusted channel definition object.
|
|
35
|
-
*/
|
|
36
|
-
export declare function createSmsTrustedChannel(): {
|
|
37
|
-
id: "ravi-sms-trusted";
|
|
38
|
-
meta: {
|
|
39
|
-
id: string;
|
|
40
|
-
label: string;
|
|
41
|
-
selectionLabel: string;
|
|
42
|
-
blurb: string;
|
|
43
|
-
aliases: string[];
|
|
44
|
-
};
|
|
45
|
-
capabilities: {
|
|
46
|
-
chatTypes: readonly ["direct"];
|
|
47
|
-
};
|
|
48
|
-
config: {
|
|
49
|
-
/**
|
|
50
|
-
* List all configured account IDs (identity UUIDs) for the ravi-sms-trusted channel.
|
|
51
|
-
*/
|
|
52
|
-
listAccountIds: (cfg: Record<string, unknown>) => string[];
|
|
53
|
-
/**
|
|
54
|
-
* Resolve an account configuration by its ID (identity UUID).
|
|
55
|
-
*/
|
|
56
|
-
resolveAccount: (cfg: Record<string, unknown>, accountId: string) => SmsTrustedAccountConfig;
|
|
57
|
-
};
|
|
58
|
-
/**
|
|
59
|
-
* Normalize an inbound SSE SMS event into a channel message envelope.
|
|
60
|
-
*
|
|
61
|
-
* Only trusted events reach this channel — no sender classification needed.
|
|
62
|
-
*/
|
|
63
|
-
normalizeInbound(event: SmsEvent, account: SmsTrustedAccountConfig): SmsTrustedInboundEnvelope | null;
|
|
64
|
-
outbound: {
|
|
65
|
-
deliveryMode: "direct";
|
|
66
|
-
/**
|
|
67
|
-
* Send an SMS reply to the phone number that triggered this session.
|
|
68
|
-
*
|
|
69
|
-
* Trusted SMS get full reply delivery — the agent can respond directly.
|
|
70
|
-
*/
|
|
71
|
-
sendText: (params: {
|
|
72
|
-
text: string;
|
|
73
|
-
client: RaviClient;
|
|
74
|
-
threadContext?: {
|
|
75
|
-
phoneNumber: string;
|
|
76
|
-
};
|
|
77
|
-
}) => Promise<{
|
|
78
|
-
ok: boolean;
|
|
79
|
-
error?: string;
|
|
80
|
-
}>;
|
|
81
|
-
};
|
|
82
|
-
/**
|
|
83
|
-
* Generate the session key for this channel.
|
|
84
|
-
*
|
|
85
|
-
* Format: `agent:{agentId}:ravi-sms-trusted:{accountId}:dm:{phoneNumber}`
|
|
86
|
-
*/
|
|
87
|
-
getSessionKey(agentId: string, accountId: string, phoneNumber: string): string;
|
|
88
|
-
gateway: {
|
|
89
|
-
/**
|
|
90
|
-
* Start monitoring inbound trusted SMS for a single identity account.
|
|
91
|
-
*
|
|
92
|
-
* Trusted SMS trigger an agent turn with CommandAuthorized: true.
|
|
93
|
-
* Replies are delivered via SMS.
|
|
94
|
-
*/
|
|
95
|
-
startAccount: (ctx: SmsTrustedGatewayContext) => Promise<void>;
|
|
96
|
-
};
|
|
97
|
-
};
|
|
98
|
-
/** The singleton ravi-sms-trusted channel instance. */
|
|
99
|
-
export declare const raviSmsTrustedChannel: {
|
|
100
|
-
id: "ravi-sms-trusted";
|
|
101
|
-
meta: {
|
|
102
|
-
id: string;
|
|
103
|
-
label: string;
|
|
104
|
-
selectionLabel: string;
|
|
105
|
-
blurb: string;
|
|
106
|
-
aliases: string[];
|
|
107
|
-
};
|
|
108
|
-
capabilities: {
|
|
109
|
-
chatTypes: readonly ["direct"];
|
|
110
|
-
};
|
|
111
|
-
config: {
|
|
112
|
-
/**
|
|
113
|
-
* List all configured account IDs (identity UUIDs) for the ravi-sms-trusted channel.
|
|
114
|
-
*/
|
|
115
|
-
listAccountIds: (cfg: Record<string, unknown>) => string[];
|
|
116
|
-
/**
|
|
117
|
-
* Resolve an account configuration by its ID (identity UUID).
|
|
118
|
-
*/
|
|
119
|
-
resolveAccount: (cfg: Record<string, unknown>, accountId: string) => SmsTrustedAccountConfig;
|
|
120
|
-
};
|
|
121
|
-
/**
|
|
122
|
-
* Normalize an inbound SSE SMS event into a channel message envelope.
|
|
123
|
-
*
|
|
124
|
-
* Only trusted events reach this channel — no sender classification needed.
|
|
125
|
-
*/
|
|
126
|
-
normalizeInbound(event: SmsEvent, account: SmsTrustedAccountConfig): SmsTrustedInboundEnvelope | null;
|
|
127
|
-
outbound: {
|
|
128
|
-
deliveryMode: "direct";
|
|
129
|
-
/**
|
|
130
|
-
* Send an SMS reply to the phone number that triggered this session.
|
|
131
|
-
*
|
|
132
|
-
* Trusted SMS get full reply delivery — the agent can respond directly.
|
|
133
|
-
*/
|
|
134
|
-
sendText: (params: {
|
|
135
|
-
text: string;
|
|
136
|
-
client: RaviClient;
|
|
137
|
-
threadContext?: {
|
|
138
|
-
phoneNumber: string;
|
|
139
|
-
};
|
|
140
|
-
}) => Promise<{
|
|
141
|
-
ok: boolean;
|
|
142
|
-
error?: string;
|
|
143
|
-
}>;
|
|
144
|
-
};
|
|
145
|
-
/**
|
|
146
|
-
* Generate the session key for this channel.
|
|
147
|
-
*
|
|
148
|
-
* Format: `agent:{agentId}:ravi-sms-trusted:{accountId}:dm:{phoneNumber}`
|
|
149
|
-
*/
|
|
150
|
-
getSessionKey(agentId: string, accountId: string, phoneNumber: string): string;
|
|
151
|
-
gateway: {
|
|
152
|
-
/**
|
|
153
|
-
* Start monitoring inbound trusted SMS for a single identity account.
|
|
154
|
-
*
|
|
155
|
-
* Trusted SMS trigger an agent turn with CommandAuthorized: true.
|
|
156
|
-
* Replies are delivered via SMS.
|
|
157
|
-
*/
|
|
158
|
-
startAccount: (ctx: SmsTrustedGatewayContext) => Promise<void>;
|
|
159
|
-
};
|
|
160
|
-
};
|
|
161
|
-
//# sourceMappingURL=sms-trusted.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sms-trusted.d.ts","sourceRoot":"","sources":["../../src/channels/sms-trusted.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,KAAK,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAIhE,kFAAkF;AAClF,MAAM,WAAW,uBAAuB;IACtC,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,qEAAqE;IACrE,KAAK,EAAE,MAAM,CAAC;CACf;AAID,gFAAgF;AAChF,MAAM,WAAW,yBAAyB;IACxC,qDAAqD;IACrD,QAAQ,EAAE,MAAM,CAAC;IACjB,0CAA0C;IAC1C,IAAI,EAAE,MAAM,CAAC;IACb,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,CAAC;IACjB,2DAA2D;IAC3D,QAAQ,EAAE;QACR,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAID,wEAAwE;AACxE,MAAM,MAAM,wBAAwB,GAAG,kBAAkB,CAAC,uBAAuB,CAAC,CAAC;AAInF;;;;;;;;GAQG;AACH,wBAAgB,uBAAuB;;;;;;;;;;;;;QAkBjC;;WAEG;8BACmB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,EAAE;QAiBxD;;WAEG;8BAEI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aACjB,MAAM,KAChB,uBAAuB;;IAe5B;;;;OAIG;4BAEM,QAAQ,WACN,uBAAuB,GAC/B,yBAAyB,GAAG,IAAI;;;QAcjC;;;;WAIG;2BACsB;YACvB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,UAAU,CAAC;YACnB,aAAa,CAAC,EAAE;gBAAE,WAAW,EAAE,MAAM,CAAA;aAAE,CAAC;SACzC,KAAG,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;;IAoB9C;;;;OAIG;2BACoB,MAAM,aAAa,MAAM,eAAe,MAAM,GAAG,MAAM;;QAO5E;;;;;WAKG;4BACuB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAAC;;EAiNvE;AAED,uDAAuD;AACvD,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;QAlU5B;;WAEG;8BACmB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAAM,EAAE;QAiBxD;;WAEG;8BAEI,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,aACjB,MAAM,KAChB,uBAAuB;;IAe5B;;;;OAIG;4BAEM,QAAQ,WACN,uBAAuB,GAC/B,yBAAyB,GAAG,IAAI;;;QAcjC;;;;WAIG;2BACsB;YACvB,IAAI,EAAE,MAAM,CAAC;YACb,MAAM,EAAE,UAAU,CAAC;YACnB,aAAa,CAAC,EAAE;gBAAE,WAAW,EAAE,MAAM,CAAA;aAAE,CAAC;SACzC,KAAG,OAAO,CAAC;YAAE,EAAE,EAAE,OAAO,CAAC;YAAC,KAAK,CAAC,EAAE,MAAM,CAAA;SAAE,CAAC;;IAoB9C;;;;OAIG;2BACoB,MAAM,aAAa,MAAM,eAAe,MAAM,GAAG,MAAM;;QAO5E;;;;;WAKG;4BACuB,wBAAwB,KAAG,OAAO,CAAC,IAAI,CAAC;;CAoNV,CAAC"}
|