@jack-kernel/sdk 1.0.0 → 1.2.1

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 (91) hide show
  1. package/dist/cjs/index.js +125 -2
  2. package/dist/cjs/index.js.map +1 -1
  3. package/dist/cjs/lifi/chain-map.js +39 -0
  4. package/dist/cjs/lifi/chain-map.js.map +1 -0
  5. package/dist/cjs/lifi/fallback.js +135 -0
  6. package/dist/cjs/lifi/fallback.js.map +1 -0
  7. package/dist/cjs/lifi/index.js +34 -0
  8. package/dist/cjs/lifi/index.js.map +1 -0
  9. package/dist/cjs/lifi/lifi-provider.js +496 -0
  10. package/dist/cjs/lifi/lifi-provider.js.map +1 -0
  11. package/dist/cjs/lifi/token-map.js +75 -0
  12. package/dist/cjs/lifi/token-map.js.map +1 -0
  13. package/dist/cjs/lifi/types.js +3 -0
  14. package/dist/cjs/lifi/types.js.map +1 -0
  15. package/dist/cjs/lifi/utils.js +45 -0
  16. package/dist/cjs/lifi/utils.js.map +1 -0
  17. package/dist/cjs/yellow/channel-state-manager.js +167 -0
  18. package/dist/cjs/yellow/channel-state-manager.js.map +1 -0
  19. package/dist/cjs/yellow/clear-node-connection.js +390 -0
  20. package/dist/cjs/yellow/clear-node-connection.js.map +1 -0
  21. package/dist/cjs/yellow/event-mapper.js +254 -0
  22. package/dist/cjs/yellow/event-mapper.js.map +1 -0
  23. package/dist/cjs/yellow/serialization.js +130 -0
  24. package/dist/cjs/yellow/serialization.js.map +1 -0
  25. package/dist/cjs/yellow/session-key-manager.js +308 -0
  26. package/dist/cjs/yellow/session-key-manager.js.map +1 -0
  27. package/dist/cjs/yellow/types.js +12 -0
  28. package/dist/cjs/yellow/types.js.map +1 -0
  29. package/dist/cjs/yellow/yellow-provider.js +1545 -0
  30. package/dist/cjs/yellow/yellow-provider.js.map +1 -0
  31. package/dist/esm/index.js +102 -1
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/lifi/chain-map.js +35 -0
  34. package/dist/esm/lifi/chain-map.js.map +1 -0
  35. package/dist/esm/lifi/fallback.js +128 -0
  36. package/dist/esm/lifi/fallback.js.map +1 -0
  37. package/dist/esm/lifi/index.js +19 -0
  38. package/dist/esm/lifi/index.js.map +1 -0
  39. package/dist/esm/lifi/lifi-provider.js +492 -0
  40. package/dist/esm/lifi/lifi-provider.js.map +1 -0
  41. package/dist/esm/lifi/token-map.js +71 -0
  42. package/dist/esm/lifi/token-map.js.map +1 -0
  43. package/dist/esm/lifi/types.js +2 -0
  44. package/dist/esm/lifi/types.js.map +1 -0
  45. package/dist/esm/lifi/utils.js +41 -0
  46. package/dist/esm/lifi/utils.js.map +1 -0
  47. package/dist/esm/yellow/channel-state-manager.js +163 -0
  48. package/dist/esm/yellow/channel-state-manager.js.map +1 -0
  49. package/dist/esm/yellow/clear-node-connection.js +385 -0
  50. package/dist/esm/yellow/clear-node-connection.js.map +1 -0
  51. package/dist/esm/yellow/event-mapper.js +248 -0
  52. package/dist/esm/yellow/event-mapper.js.map +1 -0
  53. package/dist/esm/yellow/serialization.js +125 -0
  54. package/dist/esm/yellow/serialization.js.map +1 -0
  55. package/dist/esm/yellow/session-key-manager.js +302 -0
  56. package/dist/esm/yellow/session-key-manager.js.map +1 -0
  57. package/dist/esm/yellow/types.js +11 -0
  58. package/dist/esm/yellow/types.js.map +1 -0
  59. package/dist/esm/yellow/yellow-provider.js +1538 -0
  60. package/dist/esm/yellow/yellow-provider.js.map +1 -0
  61. package/dist/types/index.d.ts +104 -2
  62. package/dist/types/index.d.ts.map +1 -1
  63. package/dist/types/lifi/chain-map.d.ts +27 -0
  64. package/dist/types/lifi/chain-map.d.ts.map +1 -0
  65. package/dist/types/lifi/fallback.d.ts +58 -0
  66. package/dist/types/lifi/fallback.d.ts.map +1 -0
  67. package/dist/types/lifi/index.d.ts +18 -0
  68. package/dist/types/lifi/index.d.ts.map +1 -0
  69. package/dist/types/lifi/lifi-provider.d.ts +133 -0
  70. package/dist/types/lifi/lifi-provider.d.ts.map +1 -0
  71. package/dist/types/lifi/token-map.d.ts +34 -0
  72. package/dist/types/lifi/token-map.d.ts.map +1 -0
  73. package/dist/types/lifi/types.d.ts +52 -0
  74. package/dist/types/lifi/types.d.ts.map +1 -0
  75. package/dist/types/lifi/utils.d.ts +29 -0
  76. package/dist/types/lifi/utils.d.ts.map +1 -0
  77. package/dist/types/yellow/channel-state-manager.d.ts +106 -0
  78. package/dist/types/yellow/channel-state-manager.d.ts.map +1 -0
  79. package/dist/types/yellow/clear-node-connection.d.ts +202 -0
  80. package/dist/types/yellow/clear-node-connection.d.ts.map +1 -0
  81. package/dist/types/yellow/event-mapper.d.ts +74 -0
  82. package/dist/types/yellow/event-mapper.d.ts.map +1 -0
  83. package/dist/types/yellow/serialization.d.ts +52 -0
  84. package/dist/types/yellow/serialization.d.ts.map +1 -0
  85. package/dist/types/yellow/session-key-manager.d.ts +179 -0
  86. package/dist/types/yellow/session-key-manager.d.ts.map +1 -0
  87. package/dist/types/yellow/types.d.ts +177 -0
  88. package/dist/types/yellow/types.d.ts.map +1 -0
  89. package/dist/types/yellow/yellow-provider.d.ts +303 -0
  90. package/dist/types/yellow/yellow-provider.d.ts.map +1 -0
  91. package/package.json +4 -1
@@ -0,0 +1,308 @@
1
+ "use strict";
2
+ /**
3
+ * Session Key Manager for Yellow Network ClearNode Authentication
4
+ *
5
+ * Handles session key generation, EIP-712 authentication flow, and session lifecycle.
6
+ *
7
+ * Authentication flow:
8
+ * 1. Generate session keypair via viem's generatePrivateKey + privateKeyToAccount
9
+ * 2. Send auth_request message with session key address, allowances, expiry, scope
10
+ * 3. Receive auth_challenge from ClearNode
11
+ * 4. Sign challenge with main wallet via EIP-712 typed data
12
+ * 5. Send auth_verify with signed challenge
13
+ * 6. Receive confirmation and store session state
14
+ *
15
+ * Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
16
+ */
17
+ Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.SessionKeyManager = void 0;
19
+ exports.createAuthRequestMessage = createAuthRequestMessage;
20
+ exports.createEIP712AuthMessageSigner = createEIP712AuthMessageSigner;
21
+ const accounts_1 = require("viem/accounts");
22
+ // ============================================================================
23
+ // Message Factory Functions (local stubs for @erc7824/nitrolite)
24
+ // ============================================================================
25
+ /**
26
+ * Create an auth_request message for ClearNode.
27
+ *
28
+ * This is a local implementation matching the @erc7824/nitrolite
29
+ * createAuthRequestMessage API. It constructs a JSON-RPC style message
30
+ * with the session key details and allowances.
31
+ *
32
+ * @param params - Auth request parameters
33
+ * @returns JSON string of the auth_request message
34
+ */
35
+ function createAuthRequestMessage(params) {
36
+ return JSON.stringify({
37
+ method: 'auth_request',
38
+ params: {
39
+ wallet: params.wallet,
40
+ participant: params.participant,
41
+ allowances: params.allowances,
42
+ expire: params.expire,
43
+ scope: params.scope,
44
+ },
45
+ });
46
+ }
47
+ /**
48
+ * Create an EIP-712 auth message signer using the provided wallet client.
49
+ *
50
+ * This is a local implementation matching the @erc7824/nitrolite
51
+ * createEIP712AuthMessageSigner API. It returns a function that signs
52
+ * a challenge string using EIP-712 typed data via the wallet client.
53
+ *
54
+ * The EIP-712 domain and types follow the Yellow Network auth protocol:
55
+ * - Domain: { name: "Yellow ClearNode", version: "1" }
56
+ * - Types: { Auth: [{ name: "challenge", type: "string" }] }
57
+ *
58
+ * @param walletClient - The viem WalletClient to sign with
59
+ * @returns A function that takes a challenge string and returns the EIP-712 signature
60
+ */
61
+ function createEIP712AuthMessageSigner(walletClient) {
62
+ return async (challenge) => {
63
+ const account = walletClient.account;
64
+ if (!account) {
65
+ throw new Error('WalletClient must have an account attached for EIP-712 signing');
66
+ }
67
+ const signature = await walletClient.signTypedData({
68
+ account,
69
+ domain: {
70
+ name: 'Yellow ClearNode',
71
+ version: '1',
72
+ },
73
+ types: {
74
+ Auth: [{ name: 'challenge', type: 'string' }],
75
+ },
76
+ primaryType: 'Auth',
77
+ message: {
78
+ challenge,
79
+ },
80
+ });
81
+ return signature;
82
+ };
83
+ }
84
+ // ============================================================================
85
+ // SessionKeyManager
86
+ // ============================================================================
87
+ /** Default session expiry: 1 hour in seconds */
88
+ const DEFAULT_SESSION_EXPIRY = 3600;
89
+ /** Default application scope */
90
+ const DEFAULT_SCOPE = 'jack-kernel';
91
+ /** Timeout for auth messages in milliseconds */
92
+ const AUTH_TIMEOUT = 30_000;
93
+ /**
94
+ * Manages session key generation, ClearNode authentication, and session lifecycle.
95
+ *
96
+ * The SessionKeyManager generates ephemeral session keypairs for signing offchain
97
+ * messages, authenticates them with ClearNode via EIP-712, and tracks session expiry
98
+ * to support automatic re-authentication when the session expires.
99
+ *
100
+ * Requirements: 2.1, 2.2, 2.3, 2.4, 2.5, 2.6
101
+ */
102
+ class SessionKeyManager {
103
+ walletClient;
104
+ connection;
105
+ sessionAccount = null;
106
+ sessionPrivateKey = null;
107
+ _sessionInfo = null;
108
+ lastAuthParams = null;
109
+ /**
110
+ * @param walletClient - The main wallet's viem WalletClient for EIP-712 signing
111
+ * @param connection - The ClearNodeConnection for sending/receiving auth messages
112
+ */
113
+ constructor(walletClient, connection) {
114
+ this.walletClient = walletClient;
115
+ this.connection = connection;
116
+ }
117
+ /**
118
+ * Generate a session keypair and authenticate with ClearNode.
119
+ *
120
+ * Flow:
121
+ * 1. Generate session keypair (Requirement 2.1)
122
+ * 2. Send auth_request with session address, allowances, expiry, scope (Requirement 2.2)
123
+ * 3. Receive auth_challenge from ClearNode
124
+ * 4. Sign challenge with main wallet via EIP-712 (Requirement 2.3)
125
+ * 5. Send auth_verify with signed challenge
126
+ * 6. Receive confirmation and store session state (Requirement 2.4)
127
+ *
128
+ * @param params - Authentication parameters including allowances and optional expiry/scope
129
+ * @returns Session information including address, expiry, and authentication status
130
+ * @throws Error if authentication fails or times out (Requirement 2.5)
131
+ */
132
+ async authenticate(params) {
133
+ // Store params for potential re-authentication (Requirement 2.6)
134
+ this.lastAuthParams = params;
135
+ // Step 1: Generate session keypair (Requirement 2.1)
136
+ this.sessionPrivateKey = (0, accounts_1.generatePrivateKey)();
137
+ this.sessionAccount = (0, accounts_1.privateKeyToAccount)(this.sessionPrivateKey);
138
+ const sessionAddress = this.sessionAccount.address;
139
+ const walletAddress = this.walletClient.account?.address;
140
+ if (!walletAddress) {
141
+ throw new Error('WalletClient must have an account attached for authentication');
142
+ }
143
+ const expiresAt = params.expiresAt ?? Math.floor(Date.now() / 1000) + DEFAULT_SESSION_EXPIRY;
144
+ const scope = params.scope ?? DEFAULT_SCOPE;
145
+ // Step 2: Send auth_request (Requirement 2.2)
146
+ const authRequestMsg = createAuthRequestMessage({
147
+ wallet: walletAddress,
148
+ participant: sessionAddress,
149
+ allowances: params.allowances,
150
+ expire: expiresAt,
151
+ scope,
152
+ });
153
+ let challengeResponse;
154
+ try {
155
+ challengeResponse = await this.connection.sendAndWait(authRequestMsg, 'auth_challenge', AUTH_TIMEOUT);
156
+ }
157
+ catch (error) {
158
+ const message = error instanceof Error ? error.message : String(error);
159
+ throw new Error(`Authentication failed: could not receive auth_challenge - ${message}`);
160
+ }
161
+ // Step 3: Extract challenge and sign with main wallet via EIP-712 (Requirement 2.3)
162
+ const challenge = challengeResponse.challenge
163
+ ?? challengeResponse.data?.challenge;
164
+ if (!challenge || typeof challenge !== 'string') {
165
+ throw new Error('Authentication failed: invalid auth_challenge response - missing challenge string');
166
+ }
167
+ const eip712Signer = createEIP712AuthMessageSigner(this.walletClient);
168
+ let signature;
169
+ try {
170
+ signature = await eip712Signer(challenge);
171
+ }
172
+ catch (error) {
173
+ const message = error instanceof Error ? error.message : String(error);
174
+ throw new Error(`Authentication failed: EIP-712 signing error - ${message}`);
175
+ }
176
+ // Step 4: Send auth_verify with signed challenge
177
+ const authVerifyMsg = JSON.stringify({
178
+ method: 'auth_verify',
179
+ params: {
180
+ participant: sessionAddress,
181
+ signature,
182
+ challenge,
183
+ },
184
+ });
185
+ let verifyResponse;
186
+ try {
187
+ verifyResponse = await this.connection.sendAndWait(authVerifyMsg, 'auth_verify', AUTH_TIMEOUT);
188
+ }
189
+ catch (error) {
190
+ const message = error instanceof Error ? error.message : String(error);
191
+ throw new Error(`Authentication failed: could not receive auth_verify confirmation - ${message}`);
192
+ }
193
+ // Step 5: Validate confirmation and store session state (Requirement 2.4)
194
+ const isConfirmed = verifyResponse.data?.authenticated === true
195
+ || verifyResponse.status === 'ok'
196
+ || verifyResponse.data?.status === 'ok'
197
+ || verifyResponse.data?.status === 'authenticated';
198
+ if (!isConfirmed) {
199
+ throw new Error('Authentication failed: ClearNode rejected the auth_verify request');
200
+ }
201
+ this._sessionInfo = {
202
+ sessionAddress,
203
+ expiresAt,
204
+ authenticated: true,
205
+ };
206
+ return { ...this._sessionInfo };
207
+ }
208
+ /**
209
+ * Check if the current session is valid and not expired.
210
+ *
211
+ * Returns false if:
212
+ * - No session has been established
213
+ * - The session has been invalidated
214
+ * - The session has expired (Requirement 2.6)
215
+ */
216
+ get isAuthenticated() {
217
+ if (!this._sessionInfo || !this._sessionInfo.authenticated) {
218
+ return false;
219
+ }
220
+ // Check expiry (Requirement 2.6)
221
+ const now = Math.floor(Date.now() / 1000);
222
+ if (now >= this._sessionInfo.expiresAt) {
223
+ // Session has expired - mark as not authenticated
224
+ this._sessionInfo.authenticated = false;
225
+ return false;
226
+ }
227
+ return true;
228
+ }
229
+ /**
230
+ * Get the session signer function for signing offchain messages.
231
+ *
232
+ * The returned function signs arbitrary payloads using the session private key.
233
+ * This is used for signing state channel messages without exposing the main wallet.
234
+ *
235
+ * @throws Error if no authenticated session exists
236
+ */
237
+ get sessionSigner() {
238
+ if (!this.sessionAccount) {
239
+ throw new Error('No authenticated session - call authenticate() first');
240
+ }
241
+ const account = this.sessionAccount;
242
+ return async (payload) => {
243
+ const signature = await account.signMessage({
244
+ message: { raw: payload },
245
+ });
246
+ return signature;
247
+ };
248
+ }
249
+ /**
250
+ * Get the session key's Ethereum address.
251
+ *
252
+ * @throws Error if no session key has been generated
253
+ */
254
+ get sessionAddress() {
255
+ if (!this.sessionAccount) {
256
+ throw new Error('No session key generated - call authenticate() first');
257
+ }
258
+ return this.sessionAccount.address;
259
+ }
260
+ /**
261
+ * Invalidate the current session.
262
+ *
263
+ * Clears all session state including the keypair and authentication status.
264
+ * After invalidation, a new authenticate() call is required.
265
+ */
266
+ invalidate() {
267
+ this.sessionAccount = null;
268
+ this.sessionPrivateKey = null;
269
+ this._sessionInfo = null;
270
+ }
271
+ /**
272
+ * Re-authenticate using the last authentication parameters.
273
+ *
274
+ * This is called internally when a session has expired and a new operation
275
+ * requires an active session (Requirement 2.6).
276
+ *
277
+ * @returns Session information from the new authentication
278
+ * @throws Error if no previous auth params exist or re-authentication fails
279
+ */
280
+ async reauthenticate() {
281
+ if (!this.lastAuthParams) {
282
+ throw new Error('Cannot re-authenticate: no previous authentication parameters available');
283
+ }
284
+ // Invalidate current session before re-authenticating
285
+ this.invalidate();
286
+ return this.authenticate(this.lastAuthParams);
287
+ }
288
+ /**
289
+ * Ensure the session is authenticated, re-authenticating if expired.
290
+ *
291
+ * This is a convenience method for use by other components that need
292
+ * to ensure an active session before performing operations.
293
+ *
294
+ * Requirement 2.6: Auto-reauthentication on next operation when expired.
295
+ *
296
+ * @returns The current or newly created session info
297
+ * @throws Error if authentication fails
298
+ */
299
+ async ensureAuthenticated() {
300
+ if (this.isAuthenticated && this._sessionInfo) {
301
+ return { ...this._sessionInfo };
302
+ }
303
+ // Session expired or not established - re-authenticate
304
+ return this.reauthenticate();
305
+ }
306
+ }
307
+ exports.SessionKeyManager = SessionKeyManager;
308
+ //# sourceMappingURL=session-key-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session-key-manager.js","sourceRoot":"","sources":["../../../src/yellow/session-key-manager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ /**
3
+ * Yellow Network Integration - Shared Type Definitions
4
+ *
5
+ * This module defines all shared types for the Yellow Network integration layer.
6
+ * All BigInt-representable fields (allocations, challenge duration) use string type
7
+ * for JSON compatibility (Requirements 11.1, 11.2, 11.5).
8
+ *
9
+ * Requirements: 7.3, 11.1, 11.2, 11.5
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/yellow/types.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG"}