@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.
- package/dist/cjs/index.js +125 -2
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/lifi/chain-map.js +39 -0
- package/dist/cjs/lifi/chain-map.js.map +1 -0
- package/dist/cjs/lifi/fallback.js +135 -0
- package/dist/cjs/lifi/fallback.js.map +1 -0
- package/dist/cjs/lifi/index.js +34 -0
- package/dist/cjs/lifi/index.js.map +1 -0
- package/dist/cjs/lifi/lifi-provider.js +496 -0
- package/dist/cjs/lifi/lifi-provider.js.map +1 -0
- package/dist/cjs/lifi/token-map.js +75 -0
- package/dist/cjs/lifi/token-map.js.map +1 -0
- package/dist/cjs/lifi/types.js +3 -0
- package/dist/cjs/lifi/types.js.map +1 -0
- package/dist/cjs/lifi/utils.js +45 -0
- package/dist/cjs/lifi/utils.js.map +1 -0
- package/dist/cjs/yellow/channel-state-manager.js +167 -0
- package/dist/cjs/yellow/channel-state-manager.js.map +1 -0
- package/dist/cjs/yellow/clear-node-connection.js +390 -0
- package/dist/cjs/yellow/clear-node-connection.js.map +1 -0
- package/dist/cjs/yellow/event-mapper.js +254 -0
- package/dist/cjs/yellow/event-mapper.js.map +1 -0
- package/dist/cjs/yellow/serialization.js +130 -0
- package/dist/cjs/yellow/serialization.js.map +1 -0
- package/dist/cjs/yellow/session-key-manager.js +308 -0
- package/dist/cjs/yellow/session-key-manager.js.map +1 -0
- package/dist/cjs/yellow/types.js +12 -0
- package/dist/cjs/yellow/types.js.map +1 -0
- package/dist/cjs/yellow/yellow-provider.js +1545 -0
- package/dist/cjs/yellow/yellow-provider.js.map +1 -0
- package/dist/esm/index.js +102 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/lifi/chain-map.js +35 -0
- package/dist/esm/lifi/chain-map.js.map +1 -0
- package/dist/esm/lifi/fallback.js +128 -0
- package/dist/esm/lifi/fallback.js.map +1 -0
- package/dist/esm/lifi/index.js +19 -0
- package/dist/esm/lifi/index.js.map +1 -0
- package/dist/esm/lifi/lifi-provider.js +492 -0
- package/dist/esm/lifi/lifi-provider.js.map +1 -0
- package/dist/esm/lifi/token-map.js +71 -0
- package/dist/esm/lifi/token-map.js.map +1 -0
- package/dist/esm/lifi/types.js +2 -0
- package/dist/esm/lifi/types.js.map +1 -0
- package/dist/esm/lifi/utils.js +41 -0
- package/dist/esm/lifi/utils.js.map +1 -0
- package/dist/esm/yellow/channel-state-manager.js +163 -0
- package/dist/esm/yellow/channel-state-manager.js.map +1 -0
- package/dist/esm/yellow/clear-node-connection.js +385 -0
- package/dist/esm/yellow/clear-node-connection.js.map +1 -0
- package/dist/esm/yellow/event-mapper.js +248 -0
- package/dist/esm/yellow/event-mapper.js.map +1 -0
- package/dist/esm/yellow/serialization.js +125 -0
- package/dist/esm/yellow/serialization.js.map +1 -0
- package/dist/esm/yellow/session-key-manager.js +302 -0
- package/dist/esm/yellow/session-key-manager.js.map +1 -0
- package/dist/esm/yellow/types.js +11 -0
- package/dist/esm/yellow/types.js.map +1 -0
- package/dist/esm/yellow/yellow-provider.js +1538 -0
- package/dist/esm/yellow/yellow-provider.js.map +1 -0
- package/dist/types/index.d.ts +104 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/lifi/chain-map.d.ts +27 -0
- package/dist/types/lifi/chain-map.d.ts.map +1 -0
- package/dist/types/lifi/fallback.d.ts +58 -0
- package/dist/types/lifi/fallback.d.ts.map +1 -0
- package/dist/types/lifi/index.d.ts +18 -0
- package/dist/types/lifi/index.d.ts.map +1 -0
- package/dist/types/lifi/lifi-provider.d.ts +133 -0
- package/dist/types/lifi/lifi-provider.d.ts.map +1 -0
- package/dist/types/lifi/token-map.d.ts +34 -0
- package/dist/types/lifi/token-map.d.ts.map +1 -0
- package/dist/types/lifi/types.d.ts +52 -0
- package/dist/types/lifi/types.d.ts.map +1 -0
- package/dist/types/lifi/utils.d.ts +29 -0
- package/dist/types/lifi/utils.d.ts.map +1 -0
- package/dist/types/yellow/channel-state-manager.d.ts +106 -0
- package/dist/types/yellow/channel-state-manager.d.ts.map +1 -0
- package/dist/types/yellow/clear-node-connection.d.ts +202 -0
- package/dist/types/yellow/clear-node-connection.d.ts.map +1 -0
- package/dist/types/yellow/event-mapper.d.ts +74 -0
- package/dist/types/yellow/event-mapper.d.ts.map +1 -0
- package/dist/types/yellow/serialization.d.ts +52 -0
- package/dist/types/yellow/serialization.d.ts.map +1 -0
- package/dist/types/yellow/session-key-manager.d.ts +179 -0
- package/dist/types/yellow/session-key-manager.d.ts.map +1 -0
- package/dist/types/yellow/types.d.ts +177 -0
- package/dist/types/yellow/types.d.ts.map +1 -0
- package/dist/types/yellow/yellow-provider.d.ts +303 -0
- package/dist/types/yellow/yellow-provider.d.ts.map +1 -0
- 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"}
|