@ravi-hq/ravi 0.1.0 → 0.2.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 (63) hide show
  1. package/README.md +56 -6
  2. package/dist/auth.d.ts +39 -0
  3. package/dist/auth.d.ts.map +1 -0
  4. package/dist/auth.js +97 -0
  5. package/dist/auth.js.map +1 -0
  6. package/dist/bin/ravi-secrets.d.ts +23 -0
  7. package/dist/bin/ravi-secrets.d.ts.map +1 -0
  8. package/dist/bin/ravi-secrets.js +113 -0
  9. package/dist/bin/ravi-secrets.js.map +1 -0
  10. package/dist/cli.d.ts.map +1 -1
  11. package/dist/cli.js +142 -188
  12. package/dist/cli.js.map +1 -1
  13. package/dist/client.d.ts +4 -1
  14. package/dist/client.d.ts.map +1 -1
  15. package/dist/client.js +26 -17
  16. package/dist/client.js.map +1 -1
  17. package/dist/crypto.d.ts +13 -0
  18. package/dist/crypto.d.ts.map +1 -1
  19. package/dist/crypto.js +45 -5
  20. package/dist/crypto.js.map +1 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +68 -46
  23. package/dist/index.js.map +1 -1
  24. package/dist/service.d.ts +7 -0
  25. package/dist/service.d.ts.map +1 -1
  26. package/dist/service.js +11 -0
  27. package/dist/service.js.map +1 -1
  28. package/dist/sse.d.ts +9 -0
  29. package/dist/sse.d.ts.map +1 -1
  30. package/dist/sse.js +20 -2
  31. package/dist/sse.js.map +1 -1
  32. package/dist/tools/email-send.js +1 -1
  33. package/dist/tools/email-send.js.map +1 -1
  34. package/dist/tools/feedback.d.ts +2 -3
  35. package/dist/tools/feedback.d.ts.map +1 -1
  36. package/dist/tools/feedback.js +26 -18
  37. package/dist/tools/feedback.js.map +1 -1
  38. package/dist/tools/inbox.d.ts.map +1 -1
  39. package/dist/tools/inbox.js +15 -56
  40. package/dist/tools/inbox.js.map +1 -1
  41. package/dist/tools/passwords.d.ts.map +1 -1
  42. package/dist/tools/passwords.js +21 -51
  43. package/dist/tools/passwords.js.map +1 -1
  44. package/dist/tools/vault.d.ts.map +1 -1
  45. package/dist/tools/vault.js +4 -8
  46. package/dist/tools/vault.js.map +1 -1
  47. package/dist/types.d.ts +10 -9
  48. package/dist/types.d.ts.map +1 -1
  49. package/dist/utils.d.ts +6 -0
  50. package/dist/utils.d.ts.map +1 -1
  51. package/dist/utils.js +18 -0
  52. package/dist/utils.js.map +1 -1
  53. package/openclaw.plugin.json +3 -23
  54. package/package.json +5 -3
  55. package/skills/CLAUDE.md +0 -36
  56. package/skills/ravi/SKILL.md +0 -46
  57. package/skills/ravi-email-send/SKILL.md +0 -44
  58. package/skills/ravi-feedback/SKILL.md +0 -37
  59. package/skills/ravi-identity/SKILL.md +0 -50
  60. package/skills/ravi-inbox/SKILL.md +0 -58
  61. package/skills/ravi-login/SKILL.md +0 -42
  62. package/skills/ravi-passwords/SKILL.md +0 -48
  63. package/skills/ravi-vault/SKILL.md +0 -54
@@ -1,46 +0,0 @@
1
- ---
2
- name: ravi
3
- description: Overview of Ravi and when to use each tool. Ravi gives AI agents real email inboxes, phone numbers, and an encrypted credential vault. Do NOT use for tasks unrelated to agent identity, email, phone, or credentials.
4
- ---
5
-
6
- # Ravi — Identity Provider for AI Agents
7
-
8
- Ravi gives you (the agent) your own email address, phone number, and encrypted credential vault. One identity bundles all three into a coherent persona.
9
-
10
- ## When to Use Each Tool
11
-
12
- | I need to... | Use tool / skill |
13
- |--------------|------------------|
14
- | Get my email address and phone number | `ravi_get_info` |
15
- | List or create identities | `ravi_identity_list`, `ravi_identity_create` |
16
- | Read incoming SMS or email (OTPs, verification links) | `ravi_inbox_sms`, `ravi_inbox_email` |
17
- | Read a specific thread or conversation | `ravi_read_email`, `ravi_read_sms` |
18
- | Send an email or reply to one | `ravi_email_compose`, `ravi_email_reply` |
19
- | Store, retrieve, or delete website passwords | `ravi_passwords_create`, `ravi_passwords_get`, `ravi_passwords_delete` |
20
- | Store or retrieve API keys and secrets | `ravi_vault_set`, `ravi_vault_get` |
21
- | Submit feedback, report bugs | `ravi_feedback` |
22
-
23
- ## Quick Start
24
-
25
- ```
26
- # Get your email and phone
27
- ravi_get_info()
28
-
29
- # Check for unread SMS
30
- ravi_inbox_sms(unread: true)
31
-
32
- # Send an email
33
- ravi_email_compose(to: "user@example.com", subject: "Hello", body: "Hi there")
34
-
35
- # Store a website password
36
- ravi_passwords_create(domain: "example.com", username: "me@ravi.app", password: "S3cret!")
37
-
38
- # Store an API key
39
- ravi_vault_set(key: "OPENAI_API_KEY", value: "sk-...")
40
- ```
41
-
42
- ## Key Rules
43
-
44
- - **E2E encryption is transparent** — the plugin handles encrypt/decrypt. You see plaintext.
45
- - **Auth errors** — if tools fail with auth errors, ask the user to run `openclaw ravi login`.
46
- - **Install:** `openclaw plugin add ravi`
@@ -1,44 +0,0 @@
1
- ---
2
- name: ravi-email-send
3
- description: Send, compose, or reply to emails from your Ravi email address. Do NOT use for reading incoming email (use ravi-inbox) or for credentials (use ravi-passwords or ravi-vault).
4
- ---
5
-
6
- # Ravi Email — Send
7
-
8
- Compose new emails or reply to existing ones from your Ravi email address.
9
-
10
- ## Compose a New Email
11
-
12
- ```
13
- ravi_email_compose(
14
- to: "recipient@example.com",
15
- subject: "Subject line",
16
- body: "Plain text body content. Newlines are preserved."
17
- )
18
- ```
19
-
20
- The `body` is plain text. The plugin wraps it in HTML automatically.
21
-
22
- ## Reply to an Email
23
-
24
- ```
25
- # Reply to sender only
26
- ravi_email_reply(message_id: 42, body: "Thanks for the update.")
27
-
28
- # Reply to all recipients
29
- ravi_email_reply(message_id: 42, body: "Noted, thanks everyone.", reply_all: true)
30
- ```
31
-
32
- Get the `message_id` from `ravi_read_email` (the `id` field on each message).
33
-
34
- ## Workflow Example
35
-
36
- 1. Read inbox: `ravi_inbox_email(unread: true)`
37
- 2. Read thread: `ravi_read_email(thread_id: "abc123")`
38
- 3. Reply: `ravi_email_reply(message_id: 10, body: "Got it, thanks!")`
39
-
40
- ## Important Notes
41
-
42
- - **Plain text body** — the plugin converts plain text to HTML automatically. No need for HTML tags.
43
- - **Rate limits** — 60 emails/hour, 500/day. On 429 errors, wait and retry.
44
- - **To read emails**, use the `ravi-inbox` skill tools instead.
@@ -1,37 +0,0 @@
1
- ---
2
- name: ravi-feedback
3
- description: Send feedback to the Ravi team — bugs, feature requests, praise, frustrations, suggestions. Do NOT use for general email sending (use ravi-email-send).
4
- ---
5
-
6
- # Ravi Feedback
7
-
8
- Send feedback, bug reports, feature requests, or suggestions to the Ravi team.
9
-
10
- ## Send Feedback
11
-
12
- ```
13
- ravi_feedback(message: "The vault tools are great but batch import would be useful")
14
-
15
- # With a category
16
- ravi_feedback(message: "SMS delivery is slow in EU regions", category: "bug")
17
- ```
18
-
19
- **Categories:** `bug`, `feature`, `help`, `other`
20
-
21
- ## When to Use
22
-
23
- Proactively share feedback when you notice anything worth mentioning:
24
-
25
- - **Bugs** — something is not working as expected
26
- - **Friction** — a workflow that is harder than it should be
27
- - **Missing features** — something you wish existed
28
- - **Positive feedback** — something that works well
29
- - **Suggestions** — ideas that would improve the agent experience
30
- - **Confusion** — unclear behavior or naming
31
-
32
- The Ravi team reads every message and builds based on agent feedback.
33
-
34
- ## Important Notes
35
-
36
- - **Requires authentication** — the user must be logged in via `openclaw ravi login`
37
- - Feedback is sent from the user's Ravi account so the team can follow up
@@ -1,50 +0,0 @@
1
- ---
2
- name: ravi-identity
3
- description: Manage Ravi identities — list, create, and get your agent's email and phone. Do NOT use for reading messages (use ravi-inbox), sending email (use ravi-email-send), or credentials (use ravi-passwords or ravi-vault).
4
- ---
5
-
6
- # Ravi Identity
7
-
8
- You have access to Ravi tools that give you your own phone number, email address, and credential vault.
9
-
10
- ## Get Your Identity
11
-
12
- Use `ravi_get_info` to retrieve your active identity's email and phone:
13
-
14
- ```
15
- ravi_get_info()
16
- # Returns: { email: "janedoe@ravi.app", phone: "+15551234567" }
17
- ```
18
-
19
- Use this email for signups and this phone for SMS verification.
20
-
21
- ## List Identities
22
-
23
- ```
24
- ravi_identity_list()
25
- # Returns: [{ uuid, name, email, phone, created_dt }, ...]
26
- ```
27
-
28
- Each identity has its own email, phone, and vault.
29
-
30
- ## Create a New Identity
31
-
32
- Only create when the user explicitly asks for one. New identities require a paid plan.
33
-
34
- ```
35
- ravi_identity_create(name: "Project Name")
36
- # Provisions a new email, phone, and vault
37
- ```
38
-
39
- ## Important Notes
40
-
41
- - **Identities are permanent** — each has its own email, phone, and vault. Do not create new ones unless asked.
42
- - **Auth errors** — if tools fail, ask the user to run `openclaw ravi login`.
43
- - **Identity name for forms** — when signing up for services, use the identity name (from `ravi_identity_list`) as "your" name, not the account owner's name.
44
-
45
- ## Related Skills
46
-
47
- - **ravi-inbox** — Read SMS and email messages
48
- - **ravi-email-send** — Compose and reply to emails
49
- - **ravi-passwords** — Store and retrieve website credentials
50
- - **ravi-vault** — Store and retrieve key-value secrets
@@ -1,58 +0,0 @@
1
- ---
2
- name: ravi-inbox
3
- description: Read incoming SMS or email messages — OTPs, verification codes, verification links, incoming mail. Do NOT use for sending email (use ravi-email-send) or managing credentials (use ravi-passwords or ravi-vault).
4
- ---
5
-
6
- # Ravi Inbox
7
-
8
- Read SMS and email messages received at your Ravi identity. Use this after triggering verifications, 2FA, or when expecting incoming messages.
9
-
10
- ## SMS (OTPs, verification codes)
11
-
12
- ```
13
- # List SMS conversations (grouped by sender)
14
- ravi_inbox_sms()
15
-
16
- # Only conversations with unread messages
17
- ravi_inbox_sms(unread: true)
18
-
19
- # Read all messages in a specific conversation
20
- ravi_read_sms(conversation_id: "1_+15559876543")
21
- ```
22
-
23
- **Response shape — conversation list:**
24
- Each conversation includes `conversation_id`, `from_number`, `phone_number`, `preview`, `message_count`, `unread_count`, and `latest_message_dt`.
25
-
26
- **Response shape — conversation detail:**
27
- Each message includes `id`, `from_number`, `to_number`, `body`, `direction`, `is_read`, and `created_dt`.
28
-
29
- ## Email (verification links, confirmations)
30
-
31
- ```
32
- # List email threads
33
- ravi_inbox_email()
34
-
35
- # Only threads with unread messages
36
- ravi_inbox_email(unread: true)
37
-
38
- # Read all messages in a specific thread
39
- ravi_read_email(thread_id: "abc123")
40
- ```
41
-
42
- **Response shape — thread detail:**
43
- Each message includes `id`, `from_email`, `to_email`, `subject`, `text_content`, `html_content`, `is_read`, and `created_dt`.
44
-
45
- ## Quick Recipes
46
-
47
- ### Extract an OTP from SMS
48
-
49
- Call `ravi_inbox_sms(unread: true)`, then look for numeric codes (4-8 digits) in the `preview` field.
50
-
51
- ### Extract a verification link from email
52
-
53
- Call `ravi_inbox_email(unread: true)` to find the thread, then `ravi_read_email(thread_id: ...)` and look for URLs in `text_content`.
54
-
55
- ## Important Notes
56
-
57
- - **Poll, don't rush** — SMS/email delivery takes 2-10 seconds. Wait before checking.
58
- - **Encrypted fields are decrypted automatically** — you see plaintext subjects, previews, and bodies.
@@ -1,42 +0,0 @@
1
- ---
2
- name: ravi-login
3
- description: Sign up for and log into services using your Ravi identity — handles forms, 2FA, OTPs, and credential storage. Also covers authenticating the Ravi plugin itself.
4
- ---
5
-
6
- # Ravi Login
7
-
8
- End-to-end workflows for signing up, logging in, and completing verification using your Ravi identity.
9
-
10
- ## Authenticate the Plugin
11
-
12
- If tools fail with auth errors, the user needs to run the CLI login:
13
-
14
- ```
15
- openclaw ravi login
16
- ```
17
-
18
- This opens a browser for device-code authentication. The user saves the token to their OpenClaw config.
19
-
20
- Check status with: `openclaw ravi status`
21
-
22
- ## Sign Up for a Service
23
-
24
- 1. **Get your identity:** `ravi_get_info()` for your email and phone
25
- 2. **Get your name:** `ravi_identity_list()` and use the identity `name` field for form fields (not the account owner)
26
- 3. **Create credentials:** `ravi_passwords_create(domain: "example.com", username: email, password: "StrongPass!")`
27
- 4. **Fill the signup form** with your email, phone, name, and password
28
- 5. **Wait for verification:** pause 5 seconds, then check `ravi_inbox_sms(unread: true)` or `ravi_inbox_email(unread: true)`
29
- 6. **Extract OTP or link** from the message and complete verification
30
-
31
- ## Log Into a Service
32
-
33
- 1. **Find credentials:** `ravi_passwords_list()` and match by domain
34
- 2. **Get password:** `ravi_passwords_get(uuid: ...)` for the decrypted password
35
- 3. **Fill the login form** with username and password
36
- 4. **Handle 2FA:** if prompted, wait 5 seconds, then `ravi_inbox_sms(unread: true)` to get the OTP code
37
-
38
- ## Tips
39
-
40
- - **Poll, don't rush** — SMS/email delivery takes 2-10 seconds. Wait before checking inbox.
41
- - **Store credentials immediately** — create a password entry during signup so you do not lose it.
42
- - **Identity name for forms** — use the identity name from `ravi_identity_list`, not the owner name.
@@ -1,48 +0,0 @@
1
- ---
2
- name: ravi-passwords
3
- description: Store and retrieve website credentials — E2E encrypted password manager for domain/username/password entries. Do NOT use for API keys/secrets (use ravi-vault) or reading messages (use ravi-inbox).
4
- ---
5
-
6
- # Ravi Passwords
7
-
8
- Store and retrieve passwords for websites and services. All fields are E2E encrypted — the plugin handles encryption/decryption transparently.
9
-
10
- ## Tools
11
-
12
- ```
13
- # List all entries (passwords hidden in list view)
14
- ravi_passwords_list()
15
- # Returns: [{ uuid, domain, username, created_dt }, ...]
16
-
17
- # Get a specific entry with decrypted password
18
- ravi_passwords_get(uuid: "abc-123")
19
- # Returns: { uuid, domain, username, password, notes, created_dt }
20
-
21
- # Create a new entry
22
- ravi_passwords_create(domain: "github.com", username: "me@ravi.app", password: "S3cret!")
23
-
24
- # Create with just a domain (useful if you'll set password later)
25
- ravi_passwords_create(domain: "example.com")
26
-
27
- # Delete an entry
28
- ravi_passwords_delete(uuid: "abc-123")
29
- ```
30
-
31
- ## Signup Workflow
32
-
33
- 1. Get your identity: `ravi_get_info()` to get your email
34
- 2. Create credentials: `ravi_passwords_create(domain: "example.com", username: email, password: "StrongPass1!")`
35
- 3. Use the returned `password` in the signup form
36
- 4. Wait for verification: `ravi_inbox_sms(unread: true)` or `ravi_inbox_email(unread: true)`
37
-
38
- ## Login Workflow
39
-
40
- 1. Find credentials: `ravi_passwords_list()` and look for the matching domain
41
- 2. Get password: `ravi_passwords_get(uuid: ...)` to get the decrypted password
42
- 3. Use `username` and `password` to log in
43
-
44
- ## Important Notes
45
-
46
- - **Passwords hidden in list view** — `ravi_passwords_list` shows `[hidden]` for passwords. Use `ravi_passwords_get` to see the actual password.
47
- - **E2E encryption is transparent** — you see plaintext values.
48
- - **For API keys and env vars**, use `ravi_vault_set` / `ravi_vault_get` instead.
@@ -1,54 +0,0 @@
1
- ---
2
- name: ravi-vault
3
- description: Store and retrieve key-value secrets — E2E encrypted vault for API keys and env vars. Do NOT use for website passwords (use ravi-passwords) or reading messages (use ravi-inbox).
4
- ---
5
-
6
- # Ravi Vault
7
-
8
- Store and retrieve key-value secrets (API keys, environment variables, tokens). Values are E2E encrypted — the plugin handles encryption/decryption transparently. Keys are stored in plaintext for lookup.
9
-
10
- ## Tools
11
-
12
- ```
13
- # Store a secret (creates or updates)
14
- ravi_vault_set(key: "OPENAI_API_KEY", value: "sk-abc123...")
15
-
16
- # Retrieve a secret (decrypted)
17
- ravi_vault_get(key: "OPENAI_API_KEY")
18
- # Returns: { uuid, key, value, created_dt, updated_dt }
19
-
20
- # List all secret keys (values not included)
21
- ravi_vault_list()
22
- # Returns: [{ uuid, key, created_dt, updated_dt }, ...]
23
- ```
24
-
25
- ## Common Use Cases
26
-
27
- ### Store API keys for later use
28
-
29
- ```
30
- ravi_vault_set(key: "OPENAI_API_KEY", value: "sk-abc123...")
31
- ravi_vault_set(key: "ANTHROPIC_API_KEY", value: "sk-ant-...")
32
- ravi_vault_set(key: "GITHUB_TOKEN", value: "ghp_...")
33
- ```
34
-
35
- ### Retrieve a key at runtime
36
-
37
- ```
38
- result = ravi_vault_get(key: "OPENAI_API_KEY")
39
- # Use result.value in API calls
40
- ```
41
-
42
- ### List available keys
43
-
44
- ```
45
- ravi_vault_list()
46
- # See what secrets are stored without exposing values
47
- ```
48
-
49
- ## Important Notes
50
-
51
- - **Keys are unique per identity** — setting an existing key updates it.
52
- - **Keys are plaintext** — only values are encrypted. Use descriptive names like `OPENAI_API_KEY`.
53
- - **E2E encryption is transparent** — you see plaintext values.
54
- - **For website credentials** (domain + username + password), use `ravi_passwords_create` / `ravi_passwords_get` instead.