@ravi-hq/ravi 0.5.4 → 0.5.5

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 (79) hide show
  1. package/README.md +56 -69
  2. package/dist/auth.d.ts +2 -0
  3. package/dist/auth.d.ts.map +1 -1
  4. package/dist/auth.js.map +1 -1
  5. package/dist/bin/ravi-secrets.d.ts +3 -3
  6. package/dist/bin/ravi-secrets.js +7 -7
  7. package/dist/bin/ravi-secrets.js.map +1 -1
  8. package/dist/channels/email-trusted.d.ts.map +1 -1
  9. package/dist/channels/email-trusted.js +5 -7
  10. package/dist/channels/email-trusted.js.map +1 -1
  11. package/dist/channels/email-untrusted.d.ts.map +1 -1
  12. package/dist/channels/email-untrusted.js +5 -7
  13. package/dist/channels/email-untrusted.js.map +1 -1
  14. package/dist/channels/email.d.ts +12 -12
  15. package/dist/channels/email.d.ts.map +1 -1
  16. package/dist/channels/email.js +48 -49
  17. package/dist/channels/email.js.map +1 -1
  18. package/dist/cli.d.ts +15 -2
  19. package/dist/cli.d.ts.map +1 -1
  20. package/dist/cli.js +271 -211
  21. package/dist/cli.js.map +1 -1
  22. package/dist/client.d.ts +62 -22
  23. package/dist/client.d.ts.map +1 -1
  24. package/dist/client.js +75 -33
  25. package/dist/client.js.map +1 -1
  26. package/dist/index.d.ts +5 -9
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +17 -26
  29. package/dist/index.js.map +1 -1
  30. package/dist/sse-pool.d.ts +5 -2
  31. package/dist/sse-pool.d.ts.map +1 -1
  32. package/dist/sse-pool.js +9 -7
  33. package/dist/sse-pool.js.map +1 -1
  34. package/dist/sse.d.ts +7 -21
  35. package/dist/sse.d.ts.map +1 -1
  36. package/dist/sse.js +10 -33
  37. package/dist/sse.js.map +1 -1
  38. package/dist/tools/contacts.d.ts +14 -0
  39. package/dist/tools/contacts.d.ts.map +1 -0
  40. package/dist/tools/contacts.js +186 -0
  41. package/dist/tools/contacts.js.map +1 -0
  42. package/dist/tools/email-send.d.ts.map +1 -1
  43. package/dist/tools/email-send.js +11 -4
  44. package/dist/tools/email-send.js.map +1 -1
  45. package/dist/tools/identity.d.ts +2 -2
  46. package/dist/tools/identity.d.ts.map +1 -1
  47. package/dist/tools/identity.js +14 -6
  48. package/dist/tools/identity.js.map +1 -1
  49. package/dist/tools/inbox.js +7 -7
  50. package/dist/tools/inbox.js.map +1 -1
  51. package/dist/tools/passwords.d.ts.map +1 -1
  52. package/dist/tools/passwords.js +20 -7
  53. package/dist/tools/passwords.js.map +1 -1
  54. package/dist/tools/secrets.d.ts +15 -0
  55. package/dist/tools/secrets.d.ts.map +1 -0
  56. package/dist/tools/{vault.js → secrets.js} +23 -23
  57. package/dist/tools/secrets.js.map +1 -0
  58. package/dist/tools/sms-send.d.ts.map +1 -1
  59. package/dist/tools/sms-send.js +3 -1
  60. package/dist/tools/sms-send.js.map +1 -1
  61. package/dist/types.d.ts +18 -12
  62. package/dist/types.d.ts.map +1 -1
  63. package/openclaw.plugin.json +1 -1
  64. package/package.json +4 -13
  65. package/dist/channels/sms-trusted.d.ts +0 -161
  66. package/dist/channels/sms-trusted.d.ts.map +0 -1
  67. package/dist/channels/sms-trusted.js +0 -306
  68. package/dist/channels/sms-trusted.js.map +0 -1
  69. package/dist/channels/sms-untrusted.d.ts +0 -124
  70. package/dist/channels/sms-untrusted.d.ts.map +0 -1
  71. package/dist/channels/sms-untrusted.js +0 -269
  72. package/dist/channels/sms-untrusted.js.map +0 -1
  73. package/dist/channels/sms.d.ts +0 -269
  74. package/dist/channels/sms.d.ts.map +0 -1
  75. package/dist/channels/sms.js +0 -380
  76. package/dist/channels/sms.js.map +0 -1
  77. package/dist/tools/vault.d.ts +0 -15
  78. package/dist/tools/vault.d.ts.map +0 -1
  79. package/dist/tools/vault.js.map +0 -1
@@ -3,13 +3,16 @@ import { RaviSSEClient, type RaviSSEClientConfig } from "./sse.js";
3
3
  * Get or create a shared SSE client for the given identity.
4
4
  * First caller's config (including onAuthFailure) is used to create the client.
5
5
  * Subsequent callers get the existing client (their config is ignored except for token updates).
6
+ *
7
+ * @param config - SSE client configuration.
8
+ * @param poolKey - Key to deduplicate SSE connections (typically the identity UUID / account ID).
6
9
  */
7
- export declare function acquireSSEClient(config: RaviSSEClientConfig): RaviSSEClient;
10
+ export declare function acquireSSEClient(config: RaviSSEClientConfig, poolKey: string): RaviSSEClient;
8
11
  /**
9
12
  * Release a reference to the shared SSE client.
10
13
  * Disconnects when the last reference is released.
11
14
  */
12
- export declare function releaseSSEClient(identityUuid: string): void;
15
+ export declare function releaseSSEClient(poolKey: string): void;
13
16
  /** Reset the pool — for testing only. */
14
17
  export declare function resetSSEPool(): void;
15
18
  //# sourceMappingURL=sse-pool.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sse-pool.d.ts","sourceRoot":"","sources":["../src/sse-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AASnE;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,GAAG,aAAa,CAY3E;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAQ3D;AAED,yCAAyC;AACzC,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
1
+ {"version":3,"file":"sse-pool.d.ts","sourceRoot":"","sources":["../src/sse-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,UAAU,CAAC;AASnE;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,GAAG,aAAa,CAW5F;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQtD;AAED,yCAAyC;AACzC,wBAAgB,YAAY,IAAI,IAAI,CAKnC"}
package/dist/sse-pool.js CHANGED
@@ -4,16 +4,18 @@ const pool = new Map();
4
4
  * Get or create a shared SSE client for the given identity.
5
5
  * First caller's config (including onAuthFailure) is used to create the client.
6
6
  * Subsequent callers get the existing client (their config is ignored except for token updates).
7
+ *
8
+ * @param config - SSE client configuration.
9
+ * @param poolKey - Key to deduplicate SSE connections (typically the identity UUID / account ID).
7
10
  */
8
- export function acquireSSEClient(config) {
9
- const key = config.identityUuid;
10
- const existing = pool.get(key);
11
+ export function acquireSSEClient(config, poolKey) {
12
+ const existing = pool.get(poolKey);
11
13
  if (existing) {
12
14
  existing.refCount++;
13
15
  return existing.sse;
14
16
  }
15
17
  const sse = new RaviSSEClient(config);
16
- pool.set(key, { sse, refCount: 1 });
18
+ pool.set(poolKey, { sse, refCount: 1 });
17
19
  sse.connect();
18
20
  return sse;
19
21
  }
@@ -21,14 +23,14 @@ export function acquireSSEClient(config) {
21
23
  * Release a reference to the shared SSE client.
22
24
  * Disconnects when the last reference is released.
23
25
  */
24
- export function releaseSSEClient(identityUuid) {
25
- const entry = pool.get(identityUuid);
26
+ export function releaseSSEClient(poolKey) {
27
+ const entry = pool.get(poolKey);
26
28
  if (!entry)
27
29
  return;
28
30
  entry.refCount--;
29
31
  if (entry.refCount <= 0) {
30
32
  entry.sse.disconnect();
31
- pool.delete(identityUuid);
33
+ pool.delete(poolKey);
32
34
  }
33
35
  }
34
36
  /** Reset the pool — for testing only. */
@@ -1 +1 @@
1
- {"version":3,"file":"sse-pool.js","sourceRoot":"","sources":["../src/sse-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAOnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE1C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA2B;IAC1D,MAAM,GAAG,GAAG,MAAM,CAAC,YAAY,CAAC;IAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACpC,GAAG,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,YAAoB;IACnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACrC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAC5B,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,YAAY;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"sse-pool.js","sourceRoot":"","sources":["../src/sse-pool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA4B,MAAM,UAAU,CAAC;AAOnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAqB,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAA2B,EAAE,OAAe;IAC3E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,IAAI,QAAQ,EAAE,CAAC;QACb,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACpB,OAAO,QAAQ,CAAC,GAAG,CAAC;IACtB,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IACtC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACxC,GAAG,CAAC,OAAO,EAAE,CAAC;IACd,OAAO,GAAG,CAAC;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAe;IAC9C,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO;IACnB,KAAK,CAAC,QAAQ,EAAE,CAAC;IACjB,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACvB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED,yCAAyC;AACzC,MAAM,UAAU,YAAY;IAC1B,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC;QAClC,KAAK,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;IACzB,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;AACf,CAAC"}
package/dist/sse.d.ts CHANGED
@@ -1,14 +1,12 @@
1
- import type { EmailEvent, SmsEvent } from "./types.js";
1
+ import type { EmailEvent } from "./types.js";
2
2
  /** Callback invoked when a typed SSE event is received. */
3
3
  export type SSEEventHandler<T> = (event: T) => void;
4
4
  /** Options for constructing a {@link RaviSSEClient}. */
5
5
  export interface RaviSSEClientConfig {
6
6
  /** Base URL of the Ravi API (e.g. "https://api.ravi.dev"). */
7
7
  apiUrl: string;
8
- /** JWT bearer token for authentication. */
8
+ /** JWT bearer token for authentication (identity is embedded in JWT claims). */
9
9
  token: string;
10
- /** Identity UUID for scoped event streaming. */
11
- identityUuid: string;
12
10
  /**
13
11
  * Optional callback invoked when SSE receives a 401/403 response.
14
12
  * Return a fresh token to retry the connection, or `null` to stop.
@@ -19,21 +17,19 @@ export interface RaviSSEClientConfig {
19
17
  * Server-Sent Events client for the Ravi real-time event stream.
20
18
  *
21
19
  * Connects to `GET /api/events/stream/` and dispatches typed events
22
- * (email_owner, email_trusted, email_untrusted, sms_owner, sms_trusted,
23
- * sms_untrusted) to registered handlers. Automatically reconnects with
24
- * exponential backoff on connection loss and monitors server heartbeats
25
- * to detect stale connections.
20
+ * (email_owner, email_trusted, email_untrusted) to registered handlers. Identity scoping is embedded
21
+ * in the JWT token (obtained via bind-identity). Automatically reconnects
22
+ * with exponential backoff on connection loss and monitors server
23
+ * heartbeats to detect stale connections.
26
24
  *
27
25
  * @example
28
26
  * ```ts
29
27
  * const sse = new RaviSSEClient({
30
28
  * apiUrl: "https://api.ravi.dev",
31
- * token: "ey...",
32
- * identityUuid: "abc-123",
29
+ * token: "ey...", // bound token with identity in JWT claims
33
30
  * });
34
31
  *
35
32
  * sse.onEmailOwner((event) => console.log("New email:", event.subject));
36
- * sse.onSmsOwner((event) => console.log("New SMS:", event.body));
37
33
  * sse.connect();
38
34
  *
39
35
  * // Later...
@@ -43,7 +39,6 @@ export interface RaviSSEClientConfig {
43
39
  export declare class RaviSSEClient {
44
40
  private apiUrl;
45
41
  private token;
46
- private identityUuid;
47
42
  private controller;
48
43
  private reconnectDelay;
49
44
  private maxReconnectDelay;
@@ -51,9 +46,6 @@ export declare class RaviSSEClient {
51
46
  private emailOwnerHandlers;
52
47
  private emailTrustedHandlers;
53
48
  private emailUntrustedHandlers;
54
- private smsOwnerHandlers;
55
- private smsTrustedHandlers;
56
- private smsUntrustedHandlers;
57
49
  private reconnectHandlers;
58
50
  private running;
59
51
  private heartbeatTimeout;
@@ -70,12 +62,6 @@ export declare class RaviSSEClient {
70
62
  onEmailTrusted(handler: SSEEventHandler<EmailEvent>): void;
71
63
  /** Register a handler for email events from untrusted senders. */
72
64
  onEmailUntrusted(handler: SSEEventHandler<EmailEvent>): void;
73
- /** Register a handler for SMS events from the identity owner. */
74
- onSmsOwner(handler: SSEEventHandler<SmsEvent>): void;
75
- /** Register a handler for SMS events from trusted senders. */
76
- onSmsTrusted(handler: SSEEventHandler<SmsEvent>): void;
77
- /** Register a handler for SMS events from untrusted senders. */
78
- onSmsUntrusted(handler: SSEEventHandler<SmsEvent>): void;
79
65
  /**
80
66
  * Register a handler that fires whenever the client reconnects after a
81
67
  * connection drop. Useful for re-fetching state that may have been missed
package/dist/sse.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAIvD,2DAA2D;AAC3D,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAIpD,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,2CAA2C;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,gDAAgD;IAChD,YAAY,EAAE,MAAM,CAAC;IACrB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAID;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,gBAAgB,CAAmC;IAC3D,OAAO,CAAC,kBAAkB,CAAmC;IAC7D,OAAO,CAAC,oBAAoB,CAAmC;IAC/D,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAA8C;IACtE,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB,CAAU;IACnC,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAAS;IACjC,6DAA6D;IAC7D,OAAO,CAAC,aAAa,CAAC,CAA+B;gBAEzC,MAAM,EAAE,mBAAmB;IAOvC,mEAAmE;IACnE,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAIxD,gEAAgE;IAChE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAI1D,kEAAkE;IAClE,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAI5D,iEAAiE;IACjE,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIpD,8DAA8D;IAC9D,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI;IAItD,gEAAgE;IAChE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,IAAI;IAIxD;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;OAKG;IACH,UAAU,IAAI,IAAI;IAOlB;;;;OAIG;YACW,eAAe;IAgJ7B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IAgCrB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAS3B,0CAA0C;IAC1C,OAAO,CAAC,mBAAmB;CAM5B"}
1
+ {"version":3,"file":"sse.d.ts","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAI7C,2DAA2D;AAC3D,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,IAAI,CAAC;AAIpD,wDAAwD;AACxD,MAAM,WAAW,mBAAmB;IAClC,8DAA8D;IAC9D,MAAM,EAAE,MAAM,CAAC;IACf,gFAAgF;IAChF,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;CAC9C;AAID;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,cAAc,CAAQ;IAC9B,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,oBAAoB,CAAqC;IACjE,OAAO,CAAC,sBAAsB,CAAqC;IACnE,OAAO,CAAC,iBAAiB,CAAyB;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,gBAAgB,CAA8C;IACtE,+EAA+E;IAC/E,OAAO,CAAC,iBAAiB,CAAU;IACnC,+DAA+D;IAC/D,OAAO,CAAC,gBAAgB,CAAS;IACjC,6DAA6D;IAC7D,OAAO,CAAC,aAAa,CAAC,CAA+B;gBAEzC,MAAM,EAAE,mBAAmB;IAMvC,mEAAmE;IACnE,YAAY,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAIxD,gEAAgE;IAChE,cAAc,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAI1D,kEAAkE;IAClE,gBAAgB,CAAC,OAAO,EAAE,eAAe,CAAC,UAAU,CAAC,GAAG,IAAI;IAI5D;;;;OAIG;IACH,WAAW,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,IAAI;IAItC;;;;;OAKG;IACH,OAAO,IAAI,IAAI;IAOf;;;;;OAKG;IACH,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIhC;;;;;OAKG;IACH,UAAU,IAAI,IAAI;IAOlB;;;;OAIG;YACW,eAAe;IA+I7B;;;;;OAKG;IACH,OAAO,CAAC,aAAa;IA6BrB;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB;IAS3B,0CAA0C;IAC1C,OAAO,CAAC,mBAAmB;CAM5B"}
package/dist/sse.js CHANGED
@@ -3,21 +3,19 @@
3
3
  * Server-Sent Events client for the Ravi real-time event stream.
4
4
  *
5
5
  * Connects to `GET /api/events/stream/` and dispatches typed events
6
- * (email_owner, email_trusted, email_untrusted, sms_owner, sms_trusted,
7
- * sms_untrusted) to registered handlers. Automatically reconnects with
8
- * exponential backoff on connection loss and monitors server heartbeats
9
- * to detect stale connections.
6
+ * (email_owner, email_trusted, email_untrusted) to registered handlers. Identity scoping is embedded
7
+ * in the JWT token (obtained via bind-identity). Automatically reconnects
8
+ * with exponential backoff on connection loss and monitors server
9
+ * heartbeats to detect stale connections.
10
10
  *
11
11
  * @example
12
12
  * ```ts
13
13
  * const sse = new RaviSSEClient({
14
14
  * apiUrl: "https://api.ravi.dev",
15
- * token: "ey...",
16
- * identityUuid: "abc-123",
15
+ * token: "ey...", // bound token with identity in JWT claims
17
16
  * });
18
17
  *
19
18
  * sse.onEmailOwner((event) => console.log("New email:", event.subject));
20
- * sse.onSmsOwner((event) => console.log("New SMS:", event.body));
21
19
  * sse.connect();
22
20
  *
23
21
  * // Later...
@@ -27,7 +25,6 @@
27
25
  export class RaviSSEClient {
28
26
  apiUrl;
29
27
  token;
30
- identityUuid;
31
28
  controller = null;
32
29
  reconnectDelay = 1000;
33
30
  maxReconnectDelay = 30000;
@@ -35,9 +32,6 @@ export class RaviSSEClient {
35
32
  emailOwnerHandlers = [];
36
33
  emailTrustedHandlers = [];
37
34
  emailUntrustedHandlers = [];
38
- smsOwnerHandlers = [];
39
- smsTrustedHandlers = [];
40
- smsUntrustedHandlers = [];
41
35
  reconnectHandlers = [];
42
36
  running = false;
43
37
  heartbeatTimeout = null;
@@ -50,7 +44,6 @@ export class RaviSSEClient {
50
44
  constructor(config) {
51
45
  this.apiUrl = config.apiUrl.replace(/\/$/, "");
52
46
  this.token = config.token;
53
- this.identityUuid = config.identityUuid;
54
47
  this.onAuthFailure = config.onAuthFailure;
55
48
  }
56
49
  /** Register a handler for email events from the identity owner. */
@@ -65,18 +58,6 @@ export class RaviSSEClient {
65
58
  onEmailUntrusted(handler) {
66
59
  this.emailUntrustedHandlers.push(handler);
67
60
  }
68
- /** Register a handler for SMS events from the identity owner. */
69
- onSmsOwner(handler) {
70
- this.smsOwnerHandlers.push(handler);
71
- }
72
- /** Register a handler for SMS events from trusted senders. */
73
- onSmsTrusted(handler) {
74
- this.smsTrustedHandlers.push(handler);
75
- }
76
- /** Register a handler for SMS events from untrusted senders. */
77
- onSmsUntrusted(handler) {
78
- this.smsUntrustedHandlers.push(handler);
79
- }
80
61
  /**
81
62
  * Register a handler that fires whenever the client reconnects after a
82
63
  * connection drop. Useful for re-fetching state that may have been missed
@@ -132,7 +113,6 @@ export class RaviSSEClient {
132
113
  this.controller = new AbortController();
133
114
  const headers = {
134
115
  Authorization: `Bearer ${this.token}`,
135
- "X-Ravi-Identity": this.identityUuid,
136
116
  Accept: "text/event-stream",
137
117
  };
138
118
  if (this.lastEventId) {
@@ -153,14 +133,14 @@ export class RaviSSEClient {
153
133
  }
154
134
  catch (refreshErr) {
155
135
  const detail = refreshErr instanceof Error ? refreshErr.message : String(refreshErr);
156
- console.error(`[ravi] SSE auth refresh callback failed for identity ${this.identityUuid}: ${detail}`);
136
+ console.error(`[ravi] SSE auth refresh callback failed: ${detail}`);
157
137
  }
158
138
  if (newToken) {
159
139
  this.token = newToken;
160
140
  continue; // retry with refreshed token
161
141
  }
162
142
  }
163
- console.error(`[ravi] SSE auth failed (${status}) for identity ${this.identityUuid} — stopping`);
143
+ console.error(`[ravi] SSE auth failed (${status}) — stopping`);
164
144
  this.running = false;
165
145
  return;
166
146
  }
@@ -242,7 +222,7 @@ export class RaviSSEClient {
242
222
  if (!this.running)
243
223
  return;
244
224
  const errorMsg = error instanceof Error ? error.message : String(error);
245
- console.error(`[ravi] SSE connection error for ${this.identityUuid}: ${errorMsg}`);
225
+ console.error(`[ravi] SSE connection error: ${errorMsg}`);
246
226
  // Heartbeat-triggered aborts are expected — don't count as failures
247
227
  if (this.isHeartbeatAbort) {
248
228
  this.isHeartbeatAbort = false;
@@ -251,7 +231,7 @@ export class RaviSSEClient {
251
231
  consecutiveFailures++;
252
232
  }
253
233
  if (consecutiveFailures >= 50) {
254
- console.error(`[ravi] SSE for ${this.identityUuid}: giving up after ${consecutiveFailures} consecutive failures`);
234
+ console.error(`[ravi] SSE giving up after ${consecutiveFailures} consecutive failures`);
255
235
  this.running = false;
256
236
  return;
257
237
  }
@@ -280,10 +260,7 @@ export class RaviSSEClient {
280
260
  const handlers = eventType === "email_owner" ? this.emailOwnerHandlers
281
261
  : eventType === "email_trusted" ? this.emailTrustedHandlers
282
262
  : eventType === "email_untrusted" ? this.emailUntrustedHandlers
283
- : eventType === "sms_owner" ? this.smsOwnerHandlers
284
- : eventType === "sms_trusted" ? this.smsTrustedHandlers
285
- : eventType === "sms_untrusted" ? this.smsUntrustedHandlers
286
- : null;
263
+ : null;
287
264
  if (!handlers) {
288
265
  console.warn(`[ravi] Received unhandled SSE event type: ${eventType}`);
289
266
  return;
package/dist/sse.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sse.js","sourceRoot":"","sources":["../src/sse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Contact management tools for the Ravi OpenClaw plugin.
3
+ *
4
+ * Provides tools to list, search, retrieve, create, update, and delete
5
+ * contacts associated with the current identity. Contacts track people
6
+ * the identity has interacted with via email or SMS.
7
+ *
8
+ * @module tools/contacts
9
+ */
10
+ import type { ToolDefinition, ToolContext } from "./identity.js";
11
+ export type { ToolDefinition, ToolContext };
12
+ /** Tools for managing contacts in the Ravi contacts store. */
13
+ export declare const contactsTools: ToolDefinition[];
14
+ //# sourceMappingURL=contacts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.d.ts","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAGjE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,CAAC;AAI5C,8DAA8D;AAC9D,eAAO,MAAM,aAAa,EAAE,cAAc,EA4KzC,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Contact management tools for the Ravi OpenClaw plugin.
3
+ *
4
+ * Provides tools to list, search, retrieve, create, update, and delete
5
+ * contacts associated with the current identity. Contacts track people
6
+ * the identity has interacted with via email or SMS.
7
+ *
8
+ * @module tools/contacts
9
+ */
10
+ // ─── Contacts Tools ─────────────────────────────────────────────────────────
11
+ /** Tools for managing contacts in the Ravi contacts store. */
12
+ export const contactsTools = [
13
+ {
14
+ name: "ravi_contacts_list",
15
+ description: "List all contacts for the current identity. Returns contact details including email, phone number, " +
16
+ "display name, nickname, source (auto or manual), and interaction count. " +
17
+ "Use ravi_contacts_search instead for fuzzy search by name — especially when resolving a recipient's name " +
18
+ "to an email address or phone number before sending. " +
19
+ "Each contact includes an is_trusted flag indicating whether emails from this contact are routed to the trusted SSE channel.",
20
+ parameters: {
21
+ type: "object",
22
+ properties: {},
23
+ required: [],
24
+ },
25
+ handler: async (_params, { client }) => {
26
+ return client.listContacts();
27
+ },
28
+ },
29
+ {
30
+ name: "ravi_contacts_search",
31
+ description: "Fuzzy search contacts by name, nickname, or email. Returns matching contacts ranked by relevance. " +
32
+ "IMPORTANT: Use this to resolve a person's name to their email or phone before sending email (ravi_email_compose) " +
33
+ "or SMS (ravi_sms_send). Example: 'email Alice' or 'text Bob' → search contacts first to find their address/number. " +
34
+ "When multiple contacts match, confirm with the user which one they mean before proceeding. " +
35
+ "For listing all contacts, use ravi_contacts_list instead.",
36
+ parameters: {
37
+ type: "object",
38
+ properties: {
39
+ query: {
40
+ type: "string",
41
+ description: "Search query — matches against display name, nickname, and email address using fuzzy search. " +
42
+ "Phone numbers are not fuzzy-searched — use ravi_contacts_list to find contacts by phone.",
43
+ },
44
+ },
45
+ required: ["query"],
46
+ },
47
+ handler: async (params, { client }) => {
48
+ return client.searchContacts(params.query);
49
+ },
50
+ },
51
+ {
52
+ name: "ravi_contacts_get",
53
+ description: "Get a specific contact by UUID. Returns full contact details including email, phone number, " +
54
+ "display name, nickname, source, interaction count, and timestamps. " +
55
+ "Use ravi_contacts_list or ravi_contacts_search to find the UUID.",
56
+ parameters: {
57
+ type: "object",
58
+ properties: {
59
+ uuid: {
60
+ type: "string",
61
+ description: "UUID of the contact to retrieve (from ravi_contacts_list or ravi_contacts_search)",
62
+ },
63
+ },
64
+ required: ["uuid"],
65
+ },
66
+ handler: async (params, { client }) => {
67
+ return client.getContact(params.uuid);
68
+ },
69
+ },
70
+ {
71
+ name: "ravi_contacts_create",
72
+ description: "Create a new contact for the current identity. At least one of email or phone_number is required. " +
73
+ "Use this to manually add contacts — auto-discovered contacts are created automatically from email/SMS interactions.",
74
+ parameters: {
75
+ type: "object",
76
+ properties: {
77
+ email: {
78
+ type: "string",
79
+ description: "Contact's email address",
80
+ },
81
+ phone_number: {
82
+ type: "string",
83
+ description: "Contact's phone number in E.164 format (e.g. '+14155551234')",
84
+ },
85
+ display_name: {
86
+ type: "string",
87
+ description: "Contact's display name (e.g. 'Jane Smith')",
88
+ },
89
+ nickname: {
90
+ type: "string",
91
+ description: "Short nickname for the contact (e.g. 'Jane')",
92
+ },
93
+ is_trusted: {
94
+ type: "boolean",
95
+ description: "Mark this contact as trusted. Emails from trusted contacts are routed to the email_trusted SSE channel " +
96
+ "instead of email_untrusted. Defaults to false.",
97
+ },
98
+ },
99
+ required: [],
100
+ },
101
+ handler: async (params, { client }) => {
102
+ const data = {};
103
+ if (params.email !== undefined)
104
+ data.email = params.email;
105
+ if (params.phone_number !== undefined)
106
+ data.phone_number = params.phone_number;
107
+ if (params.display_name !== undefined)
108
+ data.display_name = params.display_name;
109
+ if (params.nickname !== undefined)
110
+ data.nickname = params.nickname;
111
+ if (params.is_trusted !== undefined)
112
+ data.is_trusted = params.is_trusted;
113
+ return client.createContact(data);
114
+ },
115
+ },
116
+ {
117
+ name: "ravi_contacts_update",
118
+ description: "Update an existing contact's fields. Only provided fields are changed — omitted fields remain unchanged. " +
119
+ "Use ravi_contacts_list or ravi_contacts_search to find the UUID of the contact to update.",
120
+ parameters: {
121
+ type: "object",
122
+ properties: {
123
+ uuid: {
124
+ type: "string",
125
+ description: "UUID of the contact to update (from ravi_contacts_list or ravi_contacts_search)",
126
+ },
127
+ email: {
128
+ type: "string",
129
+ description: "New email address for the contact",
130
+ },
131
+ phone_number: {
132
+ type: "string",
133
+ description: "New phone number in E.164 format (e.g. '+14155551234')",
134
+ },
135
+ display_name: {
136
+ type: "string",
137
+ description: "New display name for the contact",
138
+ },
139
+ nickname: {
140
+ type: "string",
141
+ description: "New nickname for the contact",
142
+ },
143
+ is_trusted: {
144
+ type: "boolean",
145
+ description: "Set whether this contact is trusted. Emails from trusted contacts are routed to the email_trusted SSE channel.",
146
+ },
147
+ },
148
+ required: ["uuid"],
149
+ },
150
+ handler: async (params, { client }) => {
151
+ const uuid = params.uuid;
152
+ const data = {};
153
+ if (params.email !== undefined)
154
+ data.email = params.email;
155
+ if (params.phone_number !== undefined)
156
+ data.phone_number = params.phone_number;
157
+ if (params.display_name !== undefined)
158
+ data.display_name = params.display_name;
159
+ if (params.nickname !== undefined)
160
+ data.nickname = params.nickname;
161
+ if (params.is_trusted !== undefined)
162
+ data.is_trusted = params.is_trusted;
163
+ return client.updateContact(uuid, data);
164
+ },
165
+ },
166
+ {
167
+ name: "ravi_contacts_delete",
168
+ description: "Delete a contact by UUID. This is permanent and cannot be undone. " +
169
+ "Use ravi_contacts_list or ravi_contacts_search to find the UUID of the contact to delete.",
170
+ parameters: {
171
+ type: "object",
172
+ properties: {
173
+ uuid: {
174
+ type: "string",
175
+ description: "UUID of the contact to delete (from ravi_contacts_list or ravi_contacts_search)",
176
+ },
177
+ },
178
+ required: ["uuid"],
179
+ },
180
+ handler: async (params, { client }) => {
181
+ await client.deleteContact(params.uuid);
182
+ return { status: "deleted", uuid: params.uuid };
183
+ },
184
+ },
185
+ ];
186
+ //# sourceMappingURL=contacts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contacts.js","sourceRoot":"","sources":["../../src/tools/contacts.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAwCjE,oDAAoD;AACpD,eAAO,MAAM,cAAc,EAAE,cAAc,EAsM1C,CAAC"}
1
+ {"version":3,"file":"email-send.d.ts","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAe,MAAM,eAAe,CAAC;AAwCjE,oDAAoD;AACpD,eAAO,MAAM,cAAc,EAAE,cAAc,EA6M1C,CAAC"}
@@ -42,7 +42,9 @@ export const emailSendTools = [
42
42
  {
43
43
  name: "ravi_email_compose",
44
44
  description: "Compose and send a new email. Body is plain text (auto-converted to HTML) — or include your own " +
45
- "HTML tags (<p>, <h2>, <a href>). See Email Writing Best Practices in the Ravi Quick Reference for formatting tips. " +
45
+ "HTML tags (<p>, <h2>, <a href>). See the ravi-email-writing skill for formatting tips. " +
46
+ "IMPORTANT: If you only have the recipient's name (e.g. 'email Alice'), use ravi_contacts_search first " +
47
+ "to look up their email address. If multiple contacts match, confirm with the user before sending. " +
46
48
  "Use ravi_get_info to get your identity name for signatures. " +
47
49
  "Rate limits: 60/hour, 500/day. Supports CC, BCC, and file attachments (max 10 MB each).",
48
50
  parameters: {
@@ -90,6 +92,7 @@ export const emailSendTools = [
90
92
  name: "ravi_email_reply",
91
93
  description: "Reply to an existing email message (threaded with correct headers). " +
92
94
  "Read the thread with ravi_read_email first to understand context and see CC recipients. " +
95
+ "If adding new recipients by name (e.g. 'reply and CC Alice'), use ravi_contacts_search to look up their email first. " +
93
96
  "Subject is required — copy it from the thread (it's E2E encrypted on the server). " +
94
97
  "Body is plain text (auto-converted) or HTML. Supports reply_all, CC, BCC, and file attachments.",
95
98
  parameters: {
@@ -111,13 +114,16 @@ export const emailSendTools = [
111
114
  },
112
115
  reply_all: {
113
116
  type: "boolean",
114
- description: "If true, reply to all recipients (To + CC). Defaults to false (reply to sender only).",
117
+ description: "If true, reply to all original recipients (To + CC from the original message) automatically. " +
118
+ "Defaults to false (reply to sender only). " +
119
+ "The cc parameter adds additional recipients on top of those included by reply_all.",
115
120
  },
116
121
  cc: {
117
122
  type: "array",
118
123
  items: { type: "string" },
119
- description: "Optional array of CC recipient email addresses. " +
120
- "These recipients are visible to all other recipients.",
124
+ description: "Optional array of additional CC recipient email addresses. " +
125
+ "With reply_all=true, original CC recipients are included automatically " +
126
+ "use this to add new people to the thread. These recipients are visible to all.",
121
127
  },
122
128
  bcc: {
123
129
  type: "array",
@@ -147,6 +153,7 @@ export const emailSendTools = [
147
153
  name: "ravi_email_forward",
148
154
  description: "Forward an email to a new recipient. The original message content is included automatically. " +
149
155
  "Read the thread with ravi_read_email first to review content. " +
156
+ "If you only have the recipient's name (e.g. 'forward this to Bob'), use ravi_contacts_search first to look up their email. " +
150
157
  "Subject is required — copy it from the thread (it's E2E encrypted on the server). " +
151
158
  "Supports CC, BCC, and file attachments.",
152
159
  parameters: {
@@ -1 +1 @@
1
- {"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"email-send.js","sourceRoot":"","sources":["../../src/tools/email-send.ts"],"names":[],"mappings":"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"}
@@ -2,7 +2,7 @@
2
2
  * Identity management tools for the Ravi OpenClaw plugin.
3
3
  *
4
4
  * Provides tools to list, create, and inspect Ravi identities. Each identity
5
- * bundles an email address, phone number, and encrypted vault into a coherent
5
+ * bundles an email address, phone number, and encrypted secrets store into a coherent
6
6
  * persona for AI agents.
7
7
  *
8
8
  * @module tools/identity
@@ -30,7 +30,7 @@ export interface ToolDefinition {
30
30
  *
31
31
  * Always includes an authenticated {@link RaviClient}. The optional
32
32
  * {@link CryptoManager} is present when the user has provided an encryption
33
- * PIN, enabling E2E encrypt/decrypt operations on vault data.
33
+ * PIN, enabling E2E encrypt/decrypt operations on encrypted data.
34
34
  */
35
35
  export interface ToolContext {
36
36
  /** Authenticated Ravi API client. */