@agentvault/secure-channel 0.1.2 → 0.4.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.
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Functional QA Test Suite — Agent Setup & Connection
3
+ *
4
+ * Tests the full agent lifecycle against the production API:
5
+ * 1. Package installation & CLI
6
+ * 2. Crypto operations (key gen, proof, fingerprint)
7
+ * 3. API connectivity & error handling
8
+ * 4. Full enrollment flow (create invite → enroll → approve → activate → connect)
9
+ *
10
+ * Requires env vars:
11
+ * CLERK_SECRET_KEY — Clerk backend secret for session token creation
12
+ * CLERK_SESSION_ID — Active Clerk session ID (for Eric's account)
13
+ * API_URL — Backend API URL (default: https://api.agentvault.chat)
14
+ *
15
+ * Rate limit note: enrollment is limited to 5 requests/IP/10min.
16
+ * This suite uses 2 enrollment calls (4.2 + 4.9). Error-case enrollment
17
+ * tests (3.3, 3.4) are removed to conserve rate limit budget.
18
+ * Test 4.2 will retry with backoff if rate-limited (up to 3 retries, 30s apart).
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=functional.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functional.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/functional.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=multi-session.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"multi-session.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/multi-session.test.ts"],"names":[],"mappings":""}
package/dist/channel.d.ts CHANGED
@@ -5,9 +5,9 @@ export declare class SecureChannel extends EventEmitter {
5
5
  private _state;
6
6
  private _deviceId;
7
7
  private _fingerprint;
8
- private _conversationId;
8
+ private _primaryConversationId;
9
9
  private _deviceJwt;
10
- private _ratchet;
10
+ private _sessions;
11
11
  private _ws;
12
12
  private _pollTimer;
13
13
  private _reconnectAttempt;
@@ -18,18 +18,61 @@ export declare class SecureChannel extends EventEmitter {
18
18
  get state(): ChannelState;
19
19
  get deviceId(): string | null;
20
20
  get fingerprint(): string | null;
21
+ /** Returns the primary conversation ID (backward-compatible). */
21
22
  get conversationId(): string | null;
23
+ /** Returns all active conversation IDs. */
24
+ get conversationIds(): string[];
25
+ /** Returns the number of active sessions. */
26
+ get sessionCount(): number;
22
27
  start(): Promise<void>;
28
+ /**
29
+ * Append a message to persistent history for cross-device replay.
30
+ */
31
+ private _appendHistory;
32
+ /**
33
+ * Encrypt and send a message to ALL owner devices (fanout).
34
+ * Each session gets the same plaintext encrypted independently.
35
+ */
23
36
  send(plaintext: string): Promise<void>;
24
37
  stop(): Promise<void>;
25
38
  private _enroll;
26
39
  private _poll;
27
40
  private _activate;
28
41
  private _connect;
42
+ /**
43
+ * Handle an incoming encrypted message from a specific conversation.
44
+ * Decrypts using the appropriate session ratchet, emits to the agent,
45
+ * and relays as sync messages to sibling sessions.
46
+ */
47
+ private _handleIncomingMessage;
48
+ /**
49
+ * Relay an owner's message to all sibling sessions as encrypted sync messages.
50
+ * This allows all owner devices to see messages from any single device.
51
+ */
52
+ private _relaySyncToSiblings;
53
+ /**
54
+ * Send stored message history to a newly-activated session.
55
+ * Batches all history into a single encrypted message.
56
+ */
57
+ private _replayHistoryToSession;
58
+ /**
59
+ * Handle a device_linked event: a new owner device has joined.
60
+ * Fetches the new device's public keys, performs X3DH, and initializes
61
+ * a new ratchet session.
62
+ */
63
+ private _handleDeviceLinked;
64
+ /**
65
+ * Sync missed messages across ALL sessions.
66
+ * For each conversation, fetches messages since last sync and decrypts.
67
+ */
29
68
  private _syncMissedMessages;
30
69
  private _scheduleReconnect;
31
70
  private _setState;
32
71
  private _handleError;
72
+ /**
73
+ * Persist all ratchet session states to disk.
74
+ * Syncs live ratchet states back into the persisted sessions map.
75
+ */
33
76
  private _persistState;
34
77
  }
35
78
  //# sourceMappingURL=channel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAY3C,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAGb,MAAM,YAAY,CAAC;AAkBpB,qBAAa,aAAc,SAAQ,YAAY;IAcjC,OAAO,CAAC,MAAM;IAb1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,eAAe,CAAuB;IAC9C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,QAAQ,CAA8B;IAC9C,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAA+B;gBAE7B,MAAM,EAAE,mBAAmB;IAI/C,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBtB,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBb,OAAO;IA+CrB,OAAO,CAAC,KAAK;YAgCC,SAAS;IAgDvB,OAAO,CAAC,QAAQ;YAgFF,mBAAmB;IAuDjC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;YAKN,aAAa;CAK5B"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../src/channel.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAa3C,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EAKb,MAAM,YAAY,CAAC;AAiDpB,qBAAa,aAAc,SAAQ,YAAY;IAiBjC,OAAO,CAAC,MAAM;IAhB1B,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,sBAAsB,CAAc;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,SAAS,CAGH;IACd,OAAO,CAAC,GAAG,CAA0B;IACrC,OAAO,CAAC,UAAU,CAA8C;IAChE,OAAO,CAAC,iBAAiB,CAAK;IAC9B,OAAO,CAAC,eAAe,CAA8C;IACrE,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,UAAU,CAA+B;gBAE7B,MAAM,EAAE,mBAAmB;IAI/C,IAAI,KAAK,IAAI,YAAY,CAExB;IAED,IAAI,QAAQ,IAAI,MAAM,GAAG,IAAI,CAE5B;IAED,IAAI,WAAW,IAAI,MAAM,GAAG,IAAI,CAE/B;IAED,iEAAiE;IACjE,IAAI,cAAc,IAAI,MAAM,GAAG,IAAI,CAElC;IAED,2CAA2C;IAC3C,IAAI,eAAe,IAAI,MAAM,EAAE,CAE9B;IAED,6CAA6C;IAC7C,IAAI,YAAY,IAAI,MAAM,CAEzB;IAEK,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAsC5B;;OAEG;IACH,OAAO,CAAC,cAAc;IAmBtB;;;OAGG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAsCtC,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBb,OAAO;IAgDrB,OAAO,CAAC,KAAK;YAgCC,SAAS;IA2HvB,OAAO,CAAC,QAAQ;IA4DhB;;;;OAIG;YACW,sBAAsB;IAoFpC;;;OAGG;YACW,oBAAoB;IAmClC;;;OAGG;YACW,uBAAuB;IAkCrC;;;;OAIG;YACW,mBAAmB;IAkEjC;;;OAGG;YACW,mBAAmB;IAwFjC,OAAO,CAAC,kBAAkB;IAgB1B,OAAO,CAAC,SAAS;IAOjB,OAAO,CAAC,YAAY;IAKpB;;;OAGG;YACW,aAAa;CAc5B"}