@mysten-incubation/memwal 0.0.1 → 0.0.2-dev.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/manual.d.ts CHANGED
@@ -52,6 +52,11 @@ export declare class MemWalManual {
52
52
  * @param config.accountId - MemWalAccount object ID (for SEAL seal_approve)
53
53
  */
54
54
  static create(config: MemWalManualConfig): MemWalManual;
55
+ /**
56
+ * Securely wipe the delegate private and public keys from memory.
57
+ * Prevents key extraction from V8 heap dumps.
58
+ */
59
+ destroy(): void;
55
60
  /** Whether this client uses a connected wallet signer (vs raw keypair) */
56
61
  get isWalletMode(): boolean;
57
62
  private getSuiClient;
@@ -61,6 +66,8 @@ export declare class MemWalManual {
61
66
  /** Sign and execute a transaction — via wallet popup or programmatic keypair */
62
67
  private signAndExecuteTransaction;
63
68
  private getSealClient;
69
+ /** MED-10: SEAL threshold — must match sidecar SEAL_THRESHOLD (default 2). */
70
+ private get sealThreshold();
64
71
  private getWalrusClient;
65
72
  /**
66
73
  * Remember (hybrid flow):
@@ -80,10 +87,36 @@ export declare class MemWalManual {
80
87
  /** Create a signer adapter — either from wallet or keypair */
81
88
  private createSigner;
82
89
  private embed;
90
+ /**
91
+ * SEAL-encrypt a payload.
92
+ *
93
+ * LOW-24: The `id` passed to SEAL is the on-chain policy identifier used
94
+ * by `seal_approve` to gate decryption. Previously this was just the
95
+ * owner's Sui address, which meant every memory the owner ever encrypted
96
+ * shared one decryption scope — a delegate authorized for namespace "A"
97
+ * could obtain keys for namespace "B" ciphertext.
98
+ *
99
+ * We now include both the account id and the namespace:
100
+ * id = hex(accountId) || ":" || hex(utf8(namespace))
101
+ *
102
+ * NOTE (breaking change): Ciphertext produced before this fix was scoped
103
+ * by ownerAddress only. Legacy blobs created with the old id will still
104
+ * decrypt against SEAL (the id travels inside the EncryptedObject), but
105
+ * any on-chain `seal_approve` policy that now expects namespace-scoped
106
+ * ids will need to be updated in lockstep.
107
+ */
83
108
  private sealEncrypt;
84
109
  private walrusUpload;
85
110
  private walrusDownload;
86
111
  private getDelegatePublicKey;
112
+ /**
113
+ * Make a signed request to the server.
114
+ *
115
+ * Signature format (LOW-1 + MED-1 + LOW-23):
116
+ * "{timestamp}.{method}.{path_and_query}.{body_sha256}.{nonce}.{account_id}"
117
+ *
118
+ * Headers sent: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id.
119
+ */
87
120
  private signedRequest;
88
121
  /**
89
122
  * Restore a namespace — server downloads all blobs from Walrus,
@@ -1 +1 @@
1
- {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAElB,oBAAoB,EACpB,kBAAkB,EAElB,aAAa,EAChB,MAAM,YAAY,CAAC;AAuBpB,qBAAa,YAAY;IACrB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO;IAcP;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAIvD,0EAA0E;IAC1E,IAAI,YAAY,IAAI,OAAO,CAE1B;YASa,YAAY;YA8BZ,UAAU;IAaxB,yEAAyE;YAC3D,eAAe;IAQ7B,gFAAgF;YAClE,yBAAyB;YAYzB,aAAa;YAyBb,eAAe;IAyB7B;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAqBrF;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2HtG,8DAA8D;YAChD,YAAY;YAuBZ,KAAK;YAsCL,WAAW;YAkBX,YAAY;YAiCZ,cAAc;YAoBd,oBAAoB;YAQpB,aAAa;IAyC3B;;;;;;OAMG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAM/E"}
1
+ {"version":3,"file":"manual.d.ts","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAElB,oBAAoB,EACpB,kBAAkB,EAElB,aAAa,EAChB,MAAM,YAAY,CAAC;AAwBpB,qBAAa,YAAY;IACrB,OAAO,CAAC,kBAAkB,CAAa;IACvC,OAAO,CAAC,iBAAiB,CAA2B;IACpD,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,YAAY,CAAsB;IAC1C,OAAO,CAAC,SAAS,CAAS;IAG1B,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO;IAgBP;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAIvD;;;OAGG;IACH,OAAO,IAAI,IAAI;IASf,0EAA0E;IAC1E,IAAI,YAAY,IAAI,OAAO,CAE1B;YASa,YAAY;YA8BZ,UAAU;IAaxB,yEAAyE;YAC3D,eAAe;IAQ7B,gFAAgF;YAClE,yBAAyB;YAYzB,aAAa;IAyB3B,8EAA8E;IAC9E,OAAO,KAAK,aAAa,GAExB;YAEa,eAAe;IAyB7B;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAuBrF;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA6HtG,8DAA8D;YAChD,YAAY;YAuBZ,KAAK;IAsCnB;;;;;;;;;;;;;;;;;OAiBG;YACW,WAAW;YAyBX,YAAY;YAiCZ,cAAc;YAoBd,oBAAoB;IAQlC;;;;;;;OAOG;YACW,aAAa;IA0D3B;;;;;;OAMG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;CAM/E"}
package/dist/manual.js CHANGED
@@ -26,7 +26,7 @@
26
26
  * const result = await memwal.recallManual("food allergies")
27
27
  * ```
28
28
  */
29
- import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
29
+ import { sha256hex, hexToBytes, bytesToHex, normalizeServerUrl, sanitizeServerError } from "./utils.js";
30
30
  // ============================================================
31
31
  // Constants
32
32
  // ============================================================
@@ -34,7 +34,8 @@ import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
34
34
  // Users can override via SEAL_KEY_SERVERS in their environment
35
35
  const DEFAULT_KEY_SERVERS = {
36
36
  mainnet: [
37
- "0x145540d931f182fef76467dd8074c9839aea126852d90d18e1556fcbbd1208b6", // Overclock (Open)
37
+ "0x145540d931f182fef76467dd8074c9839aea126852d90d18e1556fcbbd1208b6", // Overclock (Open)
38
+ "0xe0eb52eba9261b96e895bbb4deca10dcd64fbc626a1133017adcd5131353fd10", // Studio Mirai (Open)
38
39
  ],
39
40
  testnet: [
40
41
  "0x73d05d62c18d9374e3ea529e8e0ed6161da1a141a94d3f76ae3fe4e99356db75",
@@ -63,8 +64,10 @@ export class MemWalManual {
63
64
  if (config.suiPrivateKey && config.walletSigner) {
64
65
  throw new Error("MemWalManual: provide suiPrivateKey OR walletSigner, not both");
65
66
  }
66
- this.delegatePrivateKey = hexToBytes(config.key);
67
- this.serverUrl = (config.serverUrl ?? "http://localhost:8000").replace(/\/$/, "");
67
+ this.delegatePrivateKey = typeof config.key === "string" ? hexToBytes(config.key) : config.key;
68
+ // LOW-22: default to HTTPS; warn (do not throw) on plaintext HTTP
69
+ // against non-localhost hosts.
70
+ this.serverUrl = normalizeServerUrl(config.serverUrl ?? "https://relayer.memwal.ai/");
68
71
  this.walletSigner = config.walletSigner ?? null;
69
72
  this.config = config;
70
73
  this.namespace = config.namespace ?? "default";
@@ -84,6 +87,18 @@ export class MemWalManual {
84
87
  static create(config) {
85
88
  return new MemWalManual(config);
86
89
  }
90
+ /**
91
+ * Securely wipe the delegate private and public keys from memory.
92
+ * Prevents key extraction from V8 heap dumps.
93
+ */
94
+ destroy() {
95
+ if (this.delegatePrivateKey) {
96
+ this.delegatePrivateKey.fill(0);
97
+ }
98
+ if (this.delegatePublicKey) {
99
+ this.delegatePublicKey.fill(0);
100
+ }
101
+ }
87
102
  /** Whether this client uses a connected wallet signer (vs raw keypair) */
88
103
  get isWalletMode() {
89
104
  return this.walletSigner !== null;
@@ -171,11 +186,15 @@ export class MemWalManual {
171
186
  objectId: id,
172
187
  weight: 1,
173
188
  })),
174
- verifyKeyServers: false,
189
+ verifyKeyServers: true,
175
190
  });
176
191
  }
177
192
  return this._sealClient;
178
193
  }
194
+ /** MED-10: SEAL threshold — must match sidecar SEAL_THRESHOLD (default 2). */
195
+ get sealThreshold() {
196
+ return this.config.sealThreshold ?? 2;
197
+ }
179
198
  async getWalrusClient() {
180
199
  if (!this._walrusClient) {
181
200
  // @ts-ignore — optional peer dependency
@@ -210,9 +229,11 @@ export class MemWalManual {
210
229
  throw new Error("Text cannot be empty");
211
230
  const ns = namespace ?? this.namespace;
212
231
  // Step 1 & 2: Embed + SEAL encrypt concurrently
232
+ // LOW-24: Scope SEAL encryption id by namespace so a delegate key
233
+ // authorized for one namespace cannot unwrap ciphertext for another.
213
234
  const [vector, encrypted] = await Promise.all([
214
235
  this.embed(text),
215
- this.sealEncrypt(new TextEncoder().encode(text)),
236
+ this.sealEncrypt(new TextEncoder().encode(text), ns),
216
237
  ]);
217
238
  // Step 3: Send encrypted bytes (base64) + vector to server.
218
239
  // Server will upload to Walrus via upload-relay and return the blob_id.
@@ -278,11 +299,13 @@ export class MemWalManual {
278
299
  // Create signer (wallet adapter or keypair)
279
300
  const signer = await this.createSigner(callerAddress);
280
301
  // Create session key ONCE (triggers one wallet popup)
302
+ // HIGH-7 / LOW-13: Reduced from 30 to 5 minutes to limit the exposure
303
+ // window if a session token is compromised.
281
304
  try {
282
305
  sessionKey = await SessionKey.create({
283
306
  address: callerAddress,
284
307
  packageId: this.config.packageId,
285
- ttlMin: 30,
308
+ ttlMin: 5,
286
309
  signer,
287
310
  suiClient,
288
311
  });
@@ -313,7 +336,7 @@ export class MemWalManual {
313
336
  ids: [fullId],
314
337
  txBytes,
315
338
  sessionKey,
316
- threshold: 1,
339
+ threshold: this.sealThreshold,
317
340
  });
318
341
  // Decrypt locally
319
342
  const plaintext = await sealClient.decrypt({
@@ -385,13 +408,37 @@ export class MemWalManual {
385
408
  // ============================================================
386
409
  // Internal: SEAL Encrypt
387
410
  // ============================================================
388
- async sealEncrypt(plaintext) {
411
+ /**
412
+ * SEAL-encrypt a payload.
413
+ *
414
+ * LOW-24: The `id` passed to SEAL is the on-chain policy identifier used
415
+ * by `seal_approve` to gate decryption. Previously this was just the
416
+ * owner's Sui address, which meant every memory the owner ever encrypted
417
+ * shared one decryption scope — a delegate authorized for namespace "A"
418
+ * could obtain keys for namespace "B" ciphertext.
419
+ *
420
+ * We now include both the account id and the namespace:
421
+ * id = hex(accountId) || ":" || hex(utf8(namespace))
422
+ *
423
+ * NOTE (breaking change): Ciphertext produced before this fix was scoped
424
+ * by ownerAddress only. Legacy blobs created with the old id will still
425
+ * decrypt against SEAL (the id travels inside the EncryptedObject), but
426
+ * any on-chain `seal_approve` policy that now expects namespace-scoped
427
+ * ids will need to be updated in lockstep.
428
+ */
429
+ async sealEncrypt(plaintext, namespace) {
389
430
  const sealClient = await this.getSealClient();
390
- const ownerAddress = await this.getOwnerAddress();
431
+ // Build a namespace-scoped SEAL id. Hex-encode both components so
432
+ // the id is a stable ASCII hex string (SEAL expects a hex id).
433
+ const accountHex = this.config.accountId.startsWith("0x")
434
+ ? this.config.accountId.slice(2)
435
+ : this.config.accountId;
436
+ const nsHex = bytesToHex(new TextEncoder().encode(namespace));
437
+ const scopedId = `${accountHex}${nsHex}`;
391
438
  const result = await sealClient.encrypt({
392
- threshold: 1,
439
+ threshold: this.sealThreshold,
393
440
  packageId: this.config.packageId,
394
- id: ownerAddress,
441
+ id: scopedId,
395
442
  data: plaintext,
396
443
  });
397
444
  return new Uint8Array(result.encryptedObject);
@@ -452,12 +499,24 @@ export class MemWalManual {
452
499
  }
453
500
  return this.delegatePublicKey;
454
501
  }
502
+ /**
503
+ * Make a signed request to the server.
504
+ *
505
+ * Signature format (LOW-1 + MED-1 + LOW-23):
506
+ * "{timestamp}.{method}.{path_and_query}.{body_sha256}.{nonce}.{account_id}"
507
+ *
508
+ * Headers sent: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id.
509
+ */
455
510
  async signedRequest(method, path, body) {
456
511
  const ed = await import("@noble/ed25519");
457
512
  const timestamp = Math.floor(Date.now() / 1000).toString();
458
513
  const bodyStr = JSON.stringify(body);
459
514
  const bodySha256 = await sha256hex(bodyStr);
460
- const message = `${timestamp}.${method}.${path}.${bodySha256}`;
515
+ // MED-1: per-request nonce for replay protection.
516
+ const nonce = crypto.randomUUID();
517
+ // LOW-23: include x-account-id in the canonical signed message so an
518
+ // intermediary cannot rebind a signed request to a different account.
519
+ const message = `${timestamp}.${method}.${path}.${bodySha256}.${nonce}.${this.config.accountId}`;
461
520
  const msgBytes = new TextEncoder().encode(message);
462
521
  const signature = await ed.signAsync(msgBytes, this.delegatePrivateKey);
463
522
  const publicKey = await this.getDelegatePublicKey();
@@ -469,12 +528,21 @@ export class MemWalManual {
469
528
  "x-public-key": bytesToHex(publicKey),
470
529
  "x-signature": bytesToHex(signature),
471
530
  "x-timestamp": timestamp,
531
+ "x-nonce": nonce,
532
+ "x-account-id": this.config.accountId,
472
533
  },
473
534
  body: bodyStr,
474
535
  });
475
536
  if (!res.ok) {
476
- const errText = await res.text();
477
- throw new Error(`MemWal API error (${res.status}): ${errText}`);
537
+ // LOW-26: sanitize server error bodies before re-throwing.
538
+ const raw = await res.text();
539
+ const { message: sanitized, serverCode } = sanitizeServerError(res.status, raw);
540
+ const err = new Error(sanitized);
541
+ err.status = res.status;
542
+ if (serverCode)
543
+ err.serverCode = serverCode;
544
+ err.cause = raw;
545
+ throw err;
478
546
  }
479
547
  return res.json();
480
548
  }
@@ -1 +1 @@
1
- {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manual.js","sourceRoot":"","sources":["../src/manual.ts"],"names":[],"mappings":"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"}
package/dist/memwal.d.ts CHANGED
@@ -33,14 +33,23 @@ export declare class MemWal {
33
33
  private serverUrl;
34
34
  private namespace;
35
35
  private accountId;
36
+ private sessionCache;
37
+ private serverConfig;
38
+ /** Single-flight guard so concurrent requests share one SessionKey build. */
39
+ private sessionBuildPromise;
36
40
  private constructor();
37
41
  /**
38
42
  * Create a new MemWal client instance.
39
43
  *
40
44
  * @param config.key - Ed25519 private key (hex string) — the delegate key
41
- * @param config.serverUrl - Server URL (default: http://localhost:8000)
45
+ * @param config.serverUrl - Server URL (default: https://relayer.memwal.ai/)
42
46
  */
43
47
  static create(config: MemWalConfig): MemWal;
48
+ /**
49
+ * Securely wipe the private and public keys from memory.
50
+ * Prevents key extraction from V8 heap dumps.
51
+ */
52
+ destroy(): void;
44
53
  /**
45
54
  * Remember something — server handles: verify → embed → encrypt → Walrus upload → store
46
55
  *
@@ -75,6 +84,10 @@ export declare class MemWal {
75
84
  * Remember (manual mode) — user handles SEAL encrypt, embedding,
76
85
  * and Walrus upload externally. Server only stores the vector ↔ blobId mapping.
77
86
  *
87
+ * Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
88
+ * this request. Manual-mode handlers on the server never invoke SEAL
89
+ * decrypt, so the key stays client-side as the name implies.
90
+ *
78
91
  * @param opts.blobId - Walrus blob ID (user already uploaded encrypted data)
79
92
  * @param opts.vector - Embedding vector (user already generated, e.g. 1536-dim)
80
93
  * @returns RememberManualResult with id, blob_id, owner
@@ -95,6 +108,10 @@ export declare class MemWal {
95
108
  * Server returns matching blobIds + distances.
96
109
  * User then downloads from Walrus + SEAL decrypts on their own.
97
110
  *
111
+ * Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
112
+ * this request. Server returns blob IDs only; decryption happens entirely
113
+ * on the client.
114
+ *
98
115
  * @param opts.vector - Pre-computed query embedding vector
99
116
  * @param opts.limit - Max results (default: 10)
100
117
  * @returns RecallManualResult with blob_id + distance pairs (no decrypted text)
@@ -153,6 +170,13 @@ export declare class MemWal {
153
170
  restore(namespace: string, limit?: number): Promise<RestoreResult>;
154
171
  /**
155
172
  * Check server health.
173
+ *
174
+ * INFO-7: The health endpoint is currently public/unsigned server-side,
175
+ * but we send the same signed-request envelope as every other call so
176
+ * that (a) the channel is authenticated whenever the server opts in, and
177
+ * (b) a MitM cannot trivially forge a "healthy" response for a client
178
+ * that has no way to tell. If the server ignores the signature headers
179
+ * on `/health`, this is still a harmless no-op.
156
180
  */
157
181
  health(): Promise<HealthResult>;
158
182
  /**
@@ -160,14 +184,34 @@ export declare class MemWal {
160
184
  */
161
185
  getPublicKeyHex(): Promise<string>;
162
186
  private getPublicKey;
187
+ private fetchServerConfig;
188
+ private buildSealSessionInner;
189
+ private buildSealSession;
163
190
  /**
164
191
  * Make a signed request to the server.
165
192
  *
166
- * Signature format: "{timestamp}.{method}.{path}.{body_sha256}"
167
- * Headers: x-public-key, x-signature, x-timestamp
193
+ * Signature format (LOW-23 updated):
194
+ * "{timestamp}.{method}.{path}.{body_sha256}.{nonce}.{account_id}"
195
+ *
196
+ * Headers: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id
197
+ *
198
+ * The nonce is a UUID v4 generated per-request and tracked server-side
199
+ * in Redis (TTL=600s) to prevent replay attacks.
200
+ *
201
+ * LOW-23: x-account-id is now included in the signed canonical message so
202
+ * an intermediary cannot swap the account hint without invalidating the
203
+ * signature. Server-side verification in services/server/src/auth.rs must
204
+ * use the matching message format.
205
+ *
206
+ * ENG-1696: Callers set `includeDelegateKey: false` on Manual-mode routes
207
+ * so the delegate private key is not transmitted. Manual-mode docstrings
208
+ * promise the key stays client-side; the server does not need it on those
209
+ * routes because Manual-mode handlers never invoke SEAL decrypt.
168
210
  *
169
- * The server uses x-public-key to look up the owner via onchain
170
- * MemWalAccount.delegate_keys no need to send owner in the body.
211
+ * ENG-1697: On Relayer-mode routes the SDK builds a SEAL SessionKey
212
+ * client-side (emitted via `x-seal-session`). The SessionKey is ephemeral
213
+ * (5-min TTL, scoped to the server's `packageId`) so a wire capture has
214
+ * a bounded blast radius. Requires `@mysten/seal` and `@mysten/sui`.
171
215
  */
172
216
  private signedRequest;
173
217
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EAChB,MAAM,YAAY,CAAC;AAmBpB,qBAAa,MAAM;IACf,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAE1B,OAAO;IAOP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAQ3C;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAY1F;;;;;;;;;;;;;;;;;OAiBG;IACG,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAQhF;;;;;;;;;;;;;;;;;;;;;;;;OAwBG;IACG,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAQ1E;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvE;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAO5E;;OAEG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAQrC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;YAS1B,YAAY;IAQ1B;;;;;;;;OAQG;YACW,aAAa;CAyC9B"}
1
+ {"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EACR,YAAY,EACZ,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,aAAa,EACb,YAAY,EACZ,qBAAqB,EACrB,oBAAoB,EACpB,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EAChB,MAAM,YAAY,CAAC;AAyCpB,qBAAa,MAAM;IACf,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,SAAS,CAA2B;IAC5C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAS;IAI1B,OAAO,CAAC,YAAY,CAAkC;IACtD,OAAO,CAAC,YAAY,CAA6B;IACjD,6EAA6E;IAC7E,OAAO,CAAC,mBAAmB,CAAgC;IAE3D,OAAO;IAUP;;;;;OAKG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;IAI3C;;;OAGG;IACH,OAAO,IAAI,IAAI;IAiBf;;;;;;;;;;;OAWG;IACG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAOzE;;;;;;;;;;;;;;;OAeG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAkB1F;;;;;;;;;;;;;;;;;;;;;OAqBG;IACG,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAahF;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACG,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAa1E;;;;;OAKG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAI/C;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC;IAOvE;;;;;;;;;;;;OAYG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAO5E;;;;;;;;;OASG;IACG,MAAM,IAAI,OAAO,CAAC,YAAY,CAAC;IAerC;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,MAAM,CAAC;YAS1B,YAAY;YA8BZ,iBAAiB;YAkBjB,qBAAqB;YAsFrB,gBAAgB;IAc9B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;YACW,aAAa;CAiE9B"}
package/dist/memwal.js CHANGED
@@ -26,7 +26,7 @@
26
26
  * console.log(result.results[0].text) // "I'm allergic to peanuts"
27
27
  * ```
28
28
  */
29
- import { sha256hex, hexToBytes, bytesToHex } from "./utils.js";
29
+ import { sha256hex, hexToBytes, bytesToHex, normalizeServerUrl, sanitizeServerError } from "./utils.js";
30
30
  // ============================================================
31
31
  // Ed25519 Signing (lazy-loaded)
32
32
  // ============================================================
@@ -37,30 +37,57 @@ async function getEd() {
37
37
  }
38
38
  return _ed;
39
39
  }
40
- // ============================================================
41
- // MemWal Client
42
- // ============================================================
40
+ const SEAL_SESSION_TTL_MIN = 5;
41
+ // Refresh 30 seconds before SEAL's 5-minute TTL to avoid the window where
42
+ // the client thinks the session is valid but a just-received request hits
43
+ // a key server that sees it as expired.
44
+ const SEAL_SESSION_SAFETY_MARGIN_MS = 30_000;
43
45
  export class MemWal {
44
46
  privateKey;
45
47
  publicKey = null;
46
48
  serverUrl;
47
49
  namespace;
48
50
  accountId;
51
+ // ENG-1697 state — all internal, never surfaced to user code.
52
+ // The public API (`MemWal.create({ key, accountId })`) is unchanged.
53
+ sessionCache = null;
54
+ serverConfig = null;
55
+ /** Single-flight guard so concurrent requests share one SessionKey build. */
56
+ sessionBuildPromise = null;
49
57
  constructor(config) {
50
- this.privateKey = hexToBytes(config.key);
58
+ this.privateKey = typeof config.key === "string" ? hexToBytes(config.key) : config.key;
51
59
  this.accountId = config.accountId;
52
- this.serverUrl = (config.serverUrl ?? "http://localhost:8000").replace(/\/$/, "");
60
+ // LOW-22: default to HTTPS for production usage; normalizeServerUrl
61
+ // warns (does not throw) if a user passes plain http:// for a
62
+ // non-localhost host.
63
+ this.serverUrl = normalizeServerUrl(config.serverUrl ?? "https://relayer.memwal.ai/");
53
64
  this.namespace = config.namespace ?? "default";
54
65
  }
55
66
  /**
56
67
  * Create a new MemWal client instance.
57
68
  *
58
69
  * @param config.key - Ed25519 private key (hex string) — the delegate key
59
- * @param config.serverUrl - Server URL (default: http://localhost:8000)
70
+ * @param config.serverUrl - Server URL (default: https://relayer.memwal.ai/)
60
71
  */
61
72
  static create(config) {
62
73
  return new MemWal(config);
63
74
  }
75
+ /**
76
+ * Securely wipe the private and public keys from memory.
77
+ * Prevents key extraction from V8 heap dumps.
78
+ */
79
+ destroy() {
80
+ if (this.privateKey) {
81
+ this.privateKey.fill(0);
82
+ }
83
+ if (this.publicKey) {
84
+ this.publicKey.fill(0);
85
+ }
86
+ // ENG-1697: drop cached session material too — once destroyed the
87
+ // instance must not leak authorization tokens either.
88
+ this.sessionCache = null;
89
+ this.serverConfig = null;
90
+ }
64
91
  // ============================================================
65
92
  // Core API
66
93
  // ============================================================
@@ -99,11 +126,18 @@ export class MemWal {
99
126
  * ```
100
127
  */
101
128
  async recall(query, limit = 10, namespace) {
102
- return this.signedRequest("POST", "/api/recall", {
103
- query,
104
- limit,
105
- namespace: namespace ?? this.namespace,
106
- });
129
+ const ac = new AbortController();
130
+ const tid = setTimeout(() => ac.abort(), 15000);
131
+ try {
132
+ return await this.signedRequest("POST", "/api/recall", {
133
+ query,
134
+ limit,
135
+ namespace: namespace ?? this.namespace,
136
+ }, { signal: ac.signal });
137
+ }
138
+ finally {
139
+ clearTimeout(tid);
140
+ }
107
141
  }
108
142
  // ============================================================
109
143
  // Manual API (user handles SEAL + embedding + Walrus)
@@ -112,6 +146,10 @@ export class MemWal {
112
146
  * Remember (manual mode) — user handles SEAL encrypt, embedding,
113
147
  * and Walrus upload externally. Server only stores the vector ↔ blobId mapping.
114
148
  *
149
+ * Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
150
+ * this request. Manual-mode handlers on the server never invoke SEAL
151
+ * decrypt, so the key stays client-side as the name implies.
152
+ *
115
153
  * @param opts.blobId - Walrus blob ID (user already uploaded encrypted data)
116
154
  * @param opts.vector - Embedding vector (user already generated, e.g. 1536-dim)
117
155
  * @returns RememberManualResult with id, blob_id, owner
@@ -131,13 +169,17 @@ export class MemWal {
131
169
  blob_id: opts.blobId,
132
170
  vector: opts.vector,
133
171
  namespace: opts.namespace ?? this.namespace,
134
- });
172
+ }, { includeDelegateKey: false });
135
173
  }
136
174
  /**
137
175
  * Recall (manual mode) — user provides a pre-computed query vector.
138
176
  * Server returns matching blobIds + distances.
139
177
  * User then downloads from Walrus + SEAL decrypts on their own.
140
178
  *
179
+ * Trust boundary (ENG-1696): the delegate private key is NOT transmitted on
180
+ * this request. Server returns blob IDs only; decryption happens entirely
181
+ * on the client.
182
+ *
141
183
  * @param opts.vector - Pre-computed query embedding vector
142
184
  * @param opts.limit - Max results (default: 10)
143
185
  * @returns RecallManualResult with blob_id + distance pairs (no decrypted text)
@@ -163,7 +205,7 @@ export class MemWal {
163
205
  vector: opts.vector,
164
206
  limit: opts.limit ?? 10,
165
207
  namespace: opts.namespace ?? this.namespace,
166
- });
208
+ }, { includeDelegateKey: false });
167
209
  }
168
210
  /**
169
211
  * Generate an embedding vector for text (no storage).
@@ -214,13 +256,28 @@ export class MemWal {
214
256
  }
215
257
  /**
216
258
  * Check server health.
259
+ *
260
+ * INFO-7: The health endpoint is currently public/unsigned server-side,
261
+ * but we send the same signed-request envelope as every other call so
262
+ * that (a) the channel is authenticated whenever the server opts in, and
263
+ * (b) a MitM cannot trivially forge a "healthy" response for a client
264
+ * that has no way to tell. If the server ignores the signature headers
265
+ * on `/health`, this is still a harmless no-op.
217
266
  */
218
267
  async health() {
219
- const res = await fetch(`${this.serverUrl}/health`);
220
- if (!res.ok) {
221
- throw new Error(`Health check failed: ${res.status}`);
268
+ try {
269
+ return await this.signedRequest("GET", "/health", {});
270
+ }
271
+ catch (err) {
272
+ // Fall back to a plain GET for servers that reject bodies on GET /health.
273
+ const res = await fetch(`${this.serverUrl}/health`);
274
+ if (!res.ok) {
275
+ throw err instanceof Error
276
+ ? err
277
+ : new Error(`Health check failed: ${res.status}`);
278
+ }
279
+ return res.json();
222
280
  }
223
- return res.json();
224
281
  }
225
282
  /**
226
283
  * Get the public key (hex string).
@@ -239,43 +296,208 @@ export class MemWal {
239
296
  }
240
297
  return this.publicKey;
241
298
  }
299
+ // ============================================================
300
+ // ENG-1697: SEAL SessionKey discovery & build
301
+ //
302
+ // The SDK used to transmit the raw delegate private key in
303
+ // `x-delegate-key` on every request. That credential, once captured,
304
+ // lets an attacker retroactively decrypt every ciphertext the account
305
+ // ever produced (until the user rotates on-chain) and sign arbitrary
306
+ // Sui transactions from the delegate address.
307
+ //
308
+ // We now build a SEAL `SessionKey` on the client (ephemeral, scoped to
309
+ // a single `packageId`, 5-minute TTL, signed by the delegate key) and
310
+ // ship only the exported session bytes via `x-seal-session`. The raw
311
+ // private key never leaves the client.
312
+ //
313
+ // `packageId` is fetched from the server's public `/config` endpoint
314
+ // the first time it's needed so the user API (`new MemWal({ key,
315
+ // accountId })`) stays unchanged — past users upgrading to v0.4 do not
316
+ // have to touch their config.
317
+ //
318
+ // Requires `@mysten/seal` and `@mysten/sui` peer dependencies.
319
+ // ============================================================
320
+ async fetchServerConfig() {
321
+ if (this.serverConfig)
322
+ return this.serverConfig;
323
+ const res = await fetch(`${this.serverUrl}/config`, { method: "GET" });
324
+ if (!res.ok) {
325
+ throw new Error(`GET /config returned ${res.status}`);
326
+ }
327
+ const body = (await res.json());
328
+ if (!body.packageId || !body.network || !body.suiRpcUrl) {
329
+ throw new Error("GET /config response missing packageId / network / suiRpcUrl");
330
+ }
331
+ this.serverConfig = {
332
+ packageId: body.packageId,
333
+ network: body.network,
334
+ suiRpcUrl: body.suiRpcUrl,
335
+ };
336
+ return this.serverConfig;
337
+ }
338
+ async buildSealSessionInner() {
339
+ const cfg = await this.fetchServerConfig();
340
+ // @mysten/sui renamed/moved `SuiClient` between minor versions:
341
+ // - pre-2.6: `SuiClient` in `@mysten/sui/client`
342
+ // - 2.6+: `SuiJsonRpcClient` in `@mysten/sui/jsonRpc`
343
+ // Probe both paths so the SDK works across the supported range.
344
+ const sealMod = (await import("@mysten/seal"));
345
+ const ed25519Mod = (await import("@mysten/sui/keypairs/ed25519"));
346
+ const SessionKey = sealMod.SessionKey;
347
+ const Ed25519Keypair = ed25519Mod.Ed25519Keypair;
348
+ let SuiClient = undefined;
349
+ try {
350
+ const mod = (await import("@mysten/sui/client"));
351
+ SuiClient = mod.SuiClient;
352
+ }
353
+ catch {
354
+ /* not present on this version */
355
+ }
356
+ if (typeof SuiClient !== "function") {
357
+ try {
358
+ const mod = (await import("@mysten/sui/jsonRpc"));
359
+ SuiClient = mod.SuiJsonRpcClient ?? mod.SuiClient;
360
+ }
361
+ catch {
362
+ /* not present on this version either */
363
+ }
364
+ }
365
+ if (typeof SuiClient !== "function" || typeof Ed25519Keypair !== "function") {
366
+ throw new Error("SuiClient/SuiJsonRpcClient or Ed25519Keypair not found in @mysten/sui. " +
367
+ "Ensure @mysten/sui >=2.5.0 and @mysten/seal >=1.1.0 are installed.");
368
+ }
369
+ const keypair = Ed25519Keypair.fromSecretKey(this.privateKey);
370
+ const suiClient = new SuiClient({ url: cfg.suiRpcUrl });
371
+ const session = await SessionKey.create({
372
+ address: keypair.getPublicKey().toSuiAddress(),
373
+ packageId: cfg.packageId,
374
+ ttlMin: SEAL_SESSION_TTL_MIN,
375
+ signer: keypair,
376
+ suiClient: suiClient,
377
+ });
378
+ // Eagerly sign the personal message so the exported envelope is
379
+ // fully self-contained. `SessionKey.create()` defers this signing
380
+ // until first use, which would break the migration: the sidecar
381
+ // imports without a signer and must be able to get a certificate
382
+ // from the exported state alone. Calling
383
+ // setPersonalMessageSignature() here populates the
384
+ // `personalMessageSignature` field in the subsequent export().
385
+ const personalMessage = session.getPersonalMessage();
386
+ const signResult = await keypair.signPersonalMessage(personalMessage);
387
+ await session.setPersonalMessageSignature(signResult.signature);
388
+ const exported = session.export();
389
+ // SEAL intentionally installs a throwing `toJSON` on the
390
+ // exported object to catch accidental serialization. The
391
+ // migration to `x-seal-session` IS the intended on-wire
392
+ // format, so we project the primitive fields into a fresh
393
+ // object before stringifying. The sidecar's
394
+ // `SessionKey.import()` expects this exact shape.
395
+ const jsonStr = JSON.stringify({
396
+ address: exported.address,
397
+ packageId: exported.packageId,
398
+ mvrName: exported.mvrName,
399
+ creationTimeMs: exported.creationTimeMs,
400
+ ttlMin: exported.ttlMin,
401
+ personalMessageSignature: exported.personalMessageSignature,
402
+ sessionKey: exported.sessionKey,
403
+ });
404
+ const bytes = typeof btoa === "function"
405
+ ? btoa(jsonStr)
406
+ : Buffer.from(jsonStr, "utf8").toString("base64");
407
+ this.sessionCache = {
408
+ bytes,
409
+ expiresAt: Date.now() +
410
+ SEAL_SESSION_TTL_MIN * 60_000 -
411
+ SEAL_SESSION_SAFETY_MARGIN_MS,
412
+ };
413
+ return bytes;
414
+ }
415
+ async buildSealSession() {
416
+ // Fast path: cached session still fresh.
417
+ if (this.sessionCache && Date.now() < this.sessionCache.expiresAt) {
418
+ return this.sessionCache.bytes;
419
+ }
420
+ // Single-flight: concurrent requests share one build.
421
+ if (this.sessionBuildPromise)
422
+ return this.sessionBuildPromise;
423
+ this.sessionBuildPromise = this.buildSealSessionInner().finally(() => {
424
+ this.sessionBuildPromise = null;
425
+ });
426
+ return this.sessionBuildPromise;
427
+ }
242
428
  /**
243
429
  * Make a signed request to the server.
244
430
  *
245
- * Signature format: "{timestamp}.{method}.{path}.{body_sha256}"
246
- * Headers: x-public-key, x-signature, x-timestamp
431
+ * Signature format (LOW-23 updated):
432
+ * "{timestamp}.{method}.{path}.{body_sha256}.{nonce}.{account_id}"
247
433
  *
248
- * The server uses x-public-key to look up the owner via onchain
249
- * MemWalAccount.delegate_keys — no need to send owner in the body.
434
+ * Headers: x-public-key, x-signature, x-timestamp, x-nonce, x-account-id
435
+ *
436
+ * The nonce is a UUID v4 generated per-request and tracked server-side
437
+ * in Redis (TTL=600s) to prevent replay attacks.
438
+ *
439
+ * LOW-23: x-account-id is now included in the signed canonical message so
440
+ * an intermediary cannot swap the account hint without invalidating the
441
+ * signature. Server-side verification in services/server/src/auth.rs must
442
+ * use the matching message format.
443
+ *
444
+ * ENG-1696: Callers set `includeDelegateKey: false` on Manual-mode routes
445
+ * so the delegate private key is not transmitted. Manual-mode docstrings
446
+ * promise the key stays client-side; the server does not need it on those
447
+ * routes because Manual-mode handlers never invoke SEAL decrypt.
448
+ *
449
+ * ENG-1697: On Relayer-mode routes the SDK builds a SEAL SessionKey
450
+ * client-side (emitted via `x-seal-session`). The SessionKey is ephemeral
451
+ * (5-min TTL, scoped to the server's `packageId`) so a wire capture has
452
+ * a bounded blast radius. Requires `@mysten/seal` and `@mysten/sui`.
250
453
  */
251
- async signedRequest(method, path, body) {
454
+ async signedRequest(method, path, body, options = {}) {
252
455
  const ed = await getEd();
253
456
  const timestamp = Math.floor(Date.now() / 1000).toString();
254
457
  const bodyStr = JSON.stringify(body);
255
458
  const bodySha256 = await sha256hex(bodyStr);
256
- // Build message to sign
257
- const message = `${timestamp}.${method}.${path}.${bodySha256}`;
459
+ // MED-1 fix: Generate per-request nonce (UUID v4) for replay protection
460
+ const nonce = crypto.randomUUID();
461
+ // LOW-23: Build message to sign — now includes nonce AND account id
462
+ const message = `${timestamp}.${method}.${path}.${bodySha256}.${nonce}.${this.accountId}`;
258
463
  const msgBytes = new TextEncoder().encode(message);
259
464
  // Sign with Ed25519
260
465
  const signature = await ed.signAsync(msgBytes, this.privateKey);
261
466
  const publicKey = await this.getPublicKey();
262
467
  // Make HTTP request
263
468
  const url = `${this.serverUrl}${path}`;
469
+ const headers = {
470
+ "Content-Type": "application/json",
471
+ "x-public-key": bytesToHex(publicKey),
472
+ "x-signature": bytesToHex(signature),
473
+ "x-timestamp": timestamp,
474
+ "x-nonce": nonce, // MED-1: replay protection
475
+ "x-account-id": this.accountId,
476
+ };
477
+ // ENG-1696 / ENG-1697: attach a SEAL credential only on Relayer-
478
+ // mode routes where the server needs it for server-side SEAL
479
+ // decrypt. Manual-mode methods (rememberManual, recallManual) opt
480
+ // out and transmit no decrypt credential at all.
481
+ if (options.includeDelegateKey !== false) {
482
+ headers["x-seal-session"] = await this.buildSealSession();
483
+ }
264
484
  const res = await fetch(url, {
265
485
  method,
266
- headers: {
267
- "Content-Type": "application/json",
268
- "x-public-key": bytesToHex(publicKey),
269
- "x-signature": bytesToHex(signature),
270
- "x-timestamp": timestamp,
271
- "x-delegate-key": bytesToHex(this.privateKey),
272
- "x-account-id": this.accountId,
273
- },
486
+ headers,
274
487
  body: bodyStr,
488
+ signal: options.signal,
275
489
  });
276
490
  if (!res.ok) {
277
- const errText = await res.text();
278
- throw new Error(`MemWal API error (${res.status}): ${errText}`);
491
+ // LOW-26: sanitize server error bodies before surfacing to callers.
492
+ const raw = await res.text();
493
+ const { message, serverCode } = sanitizeServerError(res.status, raw);
494
+ const err = new Error(message);
495
+ err.status = res.status;
496
+ if (serverCode)
497
+ err.serverCode = serverCode;
498
+ // Preserve raw body on `cause` for in-process debugging only.
499
+ err.cause = raw;
500
+ throw err;
279
501
  }
280
502
  return res.json();
281
503
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memwal.js","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memwal.js","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -5,8 +5,8 @@
5
5
  * the MemWal Rust server (TEE).
6
6
  */
7
7
  export interface MemWalConfig {
8
- /** Ed25519 private key (hex string). This is the delegate key from app.memwal.com */
9
- key: string;
8
+ /** Ed25519 private key (hex string or Uint8Array). This is the delegate key from app.memwal.com */
9
+ key: string | Uint8Array;
10
10
  /** MemWalAccount object ID on Sui (ensures correct account when delegate key exists in multiple accounts) */
11
11
  accountId: string;
12
12
  /** Server URL (default: http://localhost:8000) */
@@ -93,8 +93,8 @@ export interface RestoreResult {
93
93
  }
94
94
  /** Config for MemWalManual (full client-side: SEAL + Walrus + embedding) */
95
95
  export interface MemWalManualConfig {
96
- /** Ed25519 delegate private key (hex) for server auth */
97
- key: string;
96
+ /** Ed25519 delegate private key (hex or Uint8Array) for server auth */
97
+ key: string | Uint8Array;
98
98
  /** Server URL (default: http://localhost:8000) */
99
99
  serverUrl?: string;
100
100
  /**
@@ -132,6 +132,12 @@ export interface MemWalManualConfig {
132
132
  * If omitted, uses built-in defaults for the selected suiNetwork.
133
133
  */
134
134
  sealKeyServers?: string[];
135
+ /**
136
+ * SEAL threshold — number of key server shares required for encrypt/decrypt.
137
+ * Must be ≤ number of entries in sealKeyServers.
138
+ * Default: 2 (matches sidecar SEAL_THRESHOLD default).
139
+ */
140
+ sealThreshold?: number;
135
141
  /** Walrus storage epochs (default: 50) */
136
142
  walrusEpochs?: number;
137
143
  /** Walrus aggregator URL for direct blob downloads (default: mainnet aggregator) */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/utils.d.ts CHANGED
@@ -7,8 +7,39 @@
7
7
  * Isomorphic SHA-256 hash — uses Web Crypto API (browser) or Node.js crypto (server).
8
8
  */
9
9
  export declare function sha256hex(data: string): Promise<string>;
10
+ /**
11
+ * Decode a hex string into bytes.
12
+ *
13
+ * LOW-25: Strict validation — rejects non-hex characters, odd-length input,
14
+ * and empty strings. Previously, `parseInt("zz", 16)` silently produced `NaN`
15
+ * which was coerced to `0`, yielding a wrong-but-valid-looking key.
16
+ */
10
17
  export declare function hexToBytes(hex: string): Uint8Array;
11
18
  export declare function bytesToHex(bytes: Uint8Array): string;
19
+ /**
20
+ * LOW-22: Normalize a user-supplied server URL.
21
+ *
22
+ * - Strips trailing slash.
23
+ * - Emits a console.warn when a non-HTTPS URL is used against a
24
+ * non-localhost host (plaintext HTTP on the open internet exposes
25
+ * signed requests and any server-side secrets to passive interception).
26
+ * - Localhost / 127.0.0.1 / ::1 are exempt from the warning (common in dev).
27
+ * - Does NOT throw — explicit user-supplied `http://` is honored.
28
+ */
29
+ export declare function normalizeServerUrl(url: string): string;
30
+ /**
31
+ * LOW-26: Sanitize a raw server error body before surfacing it to callers.
32
+ *
33
+ * - Strips ASCII control characters.
34
+ * - Truncates to at most 200 chars so stack traces / dumps don't leak.
35
+ * - Leaves the untrimmed payload accessible via the returned `raw`
36
+ * field for debug logging (never included in the thrown message).
37
+ */
38
+ export declare function sanitizeServerError(status: number, rawBody: string): {
39
+ message: string;
40
+ raw: string;
41
+ serverCode?: string;
42
+ };
12
43
  /**
13
44
  * Derive the Sui address from an Ed25519 delegate key (private key hex).
14
45
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7D;AAMD,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAOlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGvF"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH;;GAEG;AACH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAY7D;AAMD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAqBlD;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAIpD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsBtD;AAMD;;;;;;;GAOG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAChB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,CAwBvD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,uBAAuB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAcpF;AAED;;;;;GAKG;AACH,wBAAsB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAGvF"}
package/dist/utils.js CHANGED
@@ -25,8 +25,27 @@ export async function sha256hex(data) {
25
25
  // ============================================================
26
26
  // Hex Encoding
27
27
  // ============================================================
28
+ /**
29
+ * Decode a hex string into bytes.
30
+ *
31
+ * LOW-25: Strict validation — rejects non-hex characters, odd-length input,
32
+ * and empty strings. Previously, `parseInt("zz", 16)` silently produced `NaN`
33
+ * which was coerced to `0`, yielding a wrong-but-valid-looking key.
34
+ */
28
35
  export function hexToBytes(hex) {
29
- const clean = hex.startsWith("0x") ? hex.slice(2) : hex;
36
+ if (typeof hex !== "string") {
37
+ throw new TypeError("hexToBytes: expected string input");
38
+ }
39
+ const clean = hex.startsWith("0x") || hex.startsWith("0X") ? hex.slice(2) : hex;
40
+ if (clean.length === 0) {
41
+ throw new Error("hexToBytes: empty hex string");
42
+ }
43
+ if (clean.length % 2 !== 0) {
44
+ throw new Error(`hexToBytes: odd-length hex string (length=${clean.length}); hex must have an even number of digits`);
45
+ }
46
+ if (!/^[0-9a-fA-F]+$/.test(clean)) {
47
+ throw new Error("hexToBytes: input contains non-hex characters");
48
+ }
30
49
  const bytes = new Uint8Array(clean.length / 2);
31
50
  for (let i = 0; i < bytes.length; i++) {
32
51
  bytes[i] = parseInt(clean.substring(i * 2, i * 2 + 2), 16);
@@ -39,6 +58,77 @@ export function bytesToHex(bytes) {
39
58
  .join("");
40
59
  }
41
60
  // ============================================================
61
+ // Transport Security Helpers
62
+ // ============================================================
63
+ /**
64
+ * LOW-22: Normalize a user-supplied server URL.
65
+ *
66
+ * - Strips trailing slash.
67
+ * - Emits a console.warn when a non-HTTPS URL is used against a
68
+ * non-localhost host (plaintext HTTP on the open internet exposes
69
+ * signed requests and any server-side secrets to passive interception).
70
+ * - Localhost / 127.0.0.1 / ::1 are exempt from the warning (common in dev).
71
+ * - Does NOT throw — explicit user-supplied `http://` is honored.
72
+ */
73
+ export function normalizeServerUrl(url) {
74
+ const trimmed = url.replace(/\/$/, "");
75
+ try {
76
+ const parsed = new URL(trimmed);
77
+ const host = parsed.hostname.toLowerCase();
78
+ const isLocal = host === "localhost" ||
79
+ host === "127.0.0.1" ||
80
+ host === "::1" ||
81
+ host.endsWith(".localhost");
82
+ if (parsed.protocol === "http:" && !isLocal) {
83
+ // eslint-disable-next-line no-console
84
+ console.warn(`[memwal] serverUrl "${trimmed}" uses plaintext HTTP on a non-localhost host. ` +
85
+ `Signed requests and any bearer material will be visible to the network. ` +
86
+ `Use https:// in production.`);
87
+ }
88
+ }
89
+ catch {
90
+ // invalid URL — let the fetch call surface the error at request time
91
+ }
92
+ return trimmed;
93
+ }
94
+ // ============================================================
95
+ // Error Sanitization (LOW-26)
96
+ // ============================================================
97
+ /**
98
+ * LOW-26: Sanitize a raw server error body before surfacing it to callers.
99
+ *
100
+ * - Strips ASCII control characters.
101
+ * - Truncates to at most 200 chars so stack traces / dumps don't leak.
102
+ * - Leaves the untrimmed payload accessible via the returned `raw`
103
+ * field for debug logging (never included in the thrown message).
104
+ */
105
+ export function sanitizeServerError(status, rawBody) {
106
+ const MAX = 200;
107
+ let serverCode;
108
+ let text = rawBody;
109
+ // Try to parse JSON error bodies and extract a known code field.
110
+ try {
111
+ const parsed = JSON.parse(rawBody);
112
+ if (parsed && typeof parsed === "object") {
113
+ if (typeof parsed.code === "string")
114
+ serverCode = parsed.code;
115
+ else if (typeof parsed.error === "string")
116
+ serverCode = parsed.error;
117
+ if (typeof parsed.message === "string")
118
+ text = parsed.message;
119
+ }
120
+ }
121
+ catch {
122
+ // not JSON — keep rawBody
123
+ }
124
+ // Strip ASCII control chars (0x00-0x1F, 0x7F) that could corrupt logs.
125
+ // eslint-disable-next-line no-control-regex
126
+ const stripped = text.replace(/[\u0000-\u001F\u007F]/g, " ").trim();
127
+ const truncated = stripped.length > MAX ? `${stripped.slice(0, MAX)}...` : stripped;
128
+ const message = `MemWal server error (${status}): ${truncated || "<no message>"}`;
129
+ return { message, raw: rawBody, serverCode };
130
+ }
131
+ // ============================================================
42
132
  // Delegate Key → Sui Address Derivation
43
133
  // ============================================================
44
134
  /**
package/dist/utils.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,+DAA+D;AAC/D,uBAAuB;AACvB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,IAAY;IACxC,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7C,sDAAsD;IACtD,IAAI,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1D,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACxE,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;aACrC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IACD,6BAA6B;IAC7B,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;IACtC,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAClE,CAAC;AAED,+DAA+D;AAC/D,eAAe;AACf,+DAA+D;AAE/D,MAAM,UAAU,UAAU,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACxD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,KAAiB;IACxC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;SACnB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SAC3C,IAAI,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,+DAA+D;AAC/D,wCAAwC;AACxC,+DAA+D;AAE/D;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,aAAqB;IAC/D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,EAAE,OAAO,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAE5D,MAAM,UAAU,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC;IAC7C,MAAM,SAAS,GAAG,MAAM,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAEzD,uDAAuD;IACvD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,sBAAsB;IACvC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IAExB,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,IAAI,GAAG,UAAU,CAAC,YAAY,CAAC,CAAC;AAC3C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,aAAqB;IAC9D,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1C,OAAO,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mysten-incubation/memwal",
3
- "version": "0.0.1",
3
+ "version": "0.0.2-dev.1",
4
4
  "description": "MemWal — Privacy-first AI memory SDK with Ed25519 delegate key auth",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,12 +51,6 @@
51
51
  "zod": {
52
52
  "optional": true
53
53
  },
54
- "@mysten/sui": {
55
- "optional": true
56
- },
57
- "@mysten/seal": {
58
- "optional": true
59
- },
60
54
  "@mysten/walrus": {
61
55
  "optional": true
62
56
  }
@@ -78,10 +72,11 @@
78
72
  "license": "Apache-2.0",
79
73
  "repository": {
80
74
  "type": "git",
81
- "url": "https://github.com/MystenLabs/MemWal.git",
75
+ "url": "git+https://github.com/MystenLabs/MemWal.git",
82
76
  "directory": "packages/sdk"
83
77
  },
84
78
  "publishConfig": {
85
79
  "access": "public",
86
80
  "registry": "https://registry.npmjs.org/"
87
- }}
81
+ }
82
+ }