@ravi-hq/ravi 0.7.3 → 0.7.4
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 +8 -25
- package/dist/config.d.ts +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +1 -1
- package/dist/config.js.map +1 -1
- package/dist/tools/feedback.js +1 -1
- package/dist/tools/feedback.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/@ravi-hq/openclaw-plugin)
|
|
4
4
|
[](LICENSE)
|
|
5
5
|
|
|
6
|
-
OpenClaw plugin for [Ravi](https://ravi.
|
|
6
|
+
OpenClaw plugin for [Ravi](https://ravi.id) -- identity provider for AI agents.
|
|
7
7
|
Gives your agent a real email address, phone number, password manager, and
|
|
8
8
|
encrypted secrets store through a single plugin.
|
|
9
9
|
|
|
@@ -11,9 +11,7 @@ encrypted secrets store through a single plugin.
|
|
|
11
11
|
|
|
12
12
|
- **2 messaging channels** -- real-time email via cursor-based polling (owner, trusted)
|
|
13
13
|
- **29 agent tools** -- manage identities, inboxes, passwords, secrets, contacts, and more
|
|
14
|
-
- **E2E encryption** -- PIN-based Argon2id + NaCl SealedBox, compatible with Ravi CLI
|
|
15
14
|
- **DM policy controls** -- allowlist or open policy per channel account
|
|
16
|
-
- **Lazy crypto** -- encryption keys derived on first use, not at startup
|
|
17
15
|
|
|
18
16
|
## Installation
|
|
19
17
|
|
|
@@ -52,8 +50,8 @@ use different identities, or to customize channel DM policies.
|
|
|
52
50
|
```yaml
|
|
53
51
|
plugins:
|
|
54
52
|
ravi:
|
|
55
|
-
# Ravi API base URL (default: https://ravi.
|
|
56
|
-
apiUrl: "https://ravi.
|
|
53
|
+
# Ravi API base URL (default: https://ravi.id)
|
|
54
|
+
apiUrl: "https://ravi.id"
|
|
57
55
|
|
|
58
56
|
# Identity UUID -- set automatically by 'openclaw ravi onboard'.
|
|
59
57
|
# Override here only for multi-agent setups.
|
|
@@ -66,7 +64,7 @@ plugins:
|
|
|
66
64
|
"identity-uuid-here":
|
|
67
65
|
identityUuid: "identity-uuid-here"
|
|
68
66
|
identityName: "My Agent"
|
|
69
|
-
email: "agent@in.ravi.
|
|
67
|
+
email: "agent@in.ravi.id"
|
|
70
68
|
dm:
|
|
71
69
|
policy: "allowlist" # "allowlist" or "open"
|
|
72
70
|
allowFrom:
|
|
@@ -166,21 +164,6 @@ Run these via `openclaw ravi <command>`:
|
|
|
166
164
|
| `status` | Show auth status and list available identities |
|
|
167
165
|
| `create-agent-key <uuid> [label]` | Create an identity key for a sub-agent (requires management key) |
|
|
168
166
|
|
|
169
|
-
## E2E Encryption
|
|
170
|
-
|
|
171
|
-
All sensitive data (passwords, secrets, email content at rest) is encrypted
|
|
172
|
-
end-to-end using a 6-digit PIN.
|
|
173
|
-
|
|
174
|
-
- **Key derivation:** PIN + server-stored salt -> Argon2id (time=3, mem=64MB, threads=1) -> 32-byte seed
|
|
175
|
-
- **Encryption:** NaCl SealedBox (ephemeral X25519 keypair + Poly1305 MAC)
|
|
176
|
-
- **Ciphertext format:** `e2e::<base64>` -- same format used by the Ravi CLI
|
|
177
|
-
- **First-time setup:** Choose + confirm 6-digit PIN, derive keypair, upload public key to server
|
|
178
|
-
- **Returning login:** Enter PIN (3 attempts), verify against server verifier + public key match
|
|
179
|
-
- **Recovery key:** Saved to `~/.ravi/recovery-key.txt` during first-time setup
|
|
180
|
-
|
|
181
|
-
After login, the derived keypair is stored in `~/.ravi/config.json`. Subsequent operations
|
|
182
|
-
use the stored keypair directly — no PIN re-entry needed.
|
|
183
|
-
|
|
184
167
|
## Secrets Provider
|
|
185
168
|
|
|
186
169
|
The plugin ships a `ravi-secrets` binary that implements the OpenClaw exec
|
|
@@ -223,7 +206,7 @@ Agent (OpenClaw runtime)
|
|
|
223
206
|
|
|
|
224
207
|
+-- Tools (29 agent tools)
|
|
225
208
|
| '-- REST calls --> GET/POST/DELETE /api/...
|
|
226
|
-
| Identity-scoped
|
|
209
|
+
| Identity-scoped (identity_uuid in token)
|
|
227
210
|
| Returns MCP-style content arrays
|
|
228
211
|
|
|
|
229
212
|
'-- Crypto layer (lazy-initialized)
|
|
@@ -241,8 +224,8 @@ Key points:
|
|
|
241
224
|
client-side using the PIN-derived keypair.
|
|
242
225
|
- **Tool responses** return MCP-style content arrays (e.g. `[{ type: "text", text: "..." }]`),
|
|
243
226
|
letting the runtime render structured results natively.
|
|
244
|
-
- **Authentication** uses
|
|
245
|
-
Identity is resolved from
|
|
227
|
+
- **Authentication** uses identity-scoped tokens with `identity_uuid` baked in.
|
|
228
|
+
Identity is resolved from token claims.
|
|
246
229
|
|
|
247
230
|
## Development
|
|
248
231
|
|
|
@@ -261,7 +244,7 @@ npm install
|
|
|
261
244
|
|
|
262
245
|
```bash
|
|
263
246
|
make build # Local dev build (reads .env.local for API URL)
|
|
264
|
-
make build-prod # Production build (always uses https://ravi.
|
|
247
|
+
make build-prod # Production build (always uses https://ravi.id)
|
|
265
248
|
make test # Run all tests
|
|
266
249
|
make lint # Type-check without emitting (tsc --noEmit)
|
|
267
250
|
```
|
package/dist/config.d.ts
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* For local development: create .env.local with RAVI_API_URL=http://localhost:8000
|
|
6
6
|
* For production builds: defaults to https://ravi.id
|
|
7
7
|
*/
|
|
8
|
-
export declare const RAVI_API_URL = "https://ravi.
|
|
8
|
+
export declare const RAVI_API_URL = "https://ravi.id";
|
|
9
9
|
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,oBAAoB,CAAC"}
|
package/dist/config.js
CHANGED
|
@@ -5,5 +5,5 @@
|
|
|
5
5
|
* For local development: create .env.local with RAVI_API_URL=http://localhost:8000
|
|
6
6
|
* For production builds: defaults to https://ravi.id
|
|
7
7
|
*/
|
|
8
|
-
export const RAVI_API_URL = "https://ravi.
|
|
8
|
+
export const RAVI_API_URL = "https://ravi.id";
|
|
9
9
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,iBAAiB,CAAC"}
|
package/dist/tools/feedback.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"feedback.js","sourceRoot":"","sources":["../../src/tools/feedback.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,MAAM,cAAc,GAAG,kBAAkB,CAAC;AAE1C,gDAAgD;AAChD,MAAM,CAAC,MAAM,aAAa,GAAqB;IAC7C;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EACT,4EAA4E;QAC9E,UAAU,EAAE;YACV,IAAI,EAAE,QAAQ;YACd,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EACT,wEAAwE;wBACxE,oDAAoD;iBACvD;gBACD,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,CAAC;oBACzD,WAAW,EACT,0EAA0E;wBAC1E,+FAA+F;iBAClG;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;QACD,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAoB,EAAE,EAAE;YAC9C,MAAM,QAAQ,GAAI,MAAM,CAAC,QAAmB,IAAI,OAAO,CAAC;YACxD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAiB,CAAC;YACzC,MAAM,OAAO,GAAG,IAAI,QAAQ,kBAAkB,CAAC;YAE/C,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,MAAM,CAAC,YAAY,CAC/B,cAAc,EACd,OAAO,EACP,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;gBACF,OAAO;oBACL,MAAM,EAAE,MAAM;oBACd,OAAO,EAAE,oBAAoB,cAAc,GAAG;iBAC/C,CAAC;YACJ,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,MAAM,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChE,OAAO;oBACL,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,4BAA4B,MAAM,EAAE;iBAC9C,CAAC;YACJ,CAAC;QACH,CAAC;KACF;CACF,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ravi-hq/ravi",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.4",
|
|
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",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
},
|
|
11
11
|
"scripts": {
|
|
12
12
|
"build": "bash scripts/build.sh",
|
|
13
|
-
"build:prod": "RAVI_API_URL=https://ravi.
|
|
13
|
+
"build:prod": "RAVI_API_URL=https://ravi.id bash scripts/build.sh",
|
|
14
14
|
"test": "vitest run",
|
|
15
15
|
"test:watch": "vitest",
|
|
16
16
|
"lint": "tsc --noEmit"
|