@mysten-incubation/memwal 0.0.7 → 0.1.0-dev.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.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAE5B,qDAAqD;AACrD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,sEAAsE;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EACH,uCAAuC,EACvC,wBAAwB,EACxB,2BAA2B,GAC9B,MAAM,oBAAoB,CAAC;AAE5B,qDAAqD;AACrD,OAAO,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAC7E,OAAO,EACH,0BAA0B,EAC1B,2BAA2B,GAC9B,MAAM,mBAAmB,CAAC"}
package/dist/manual.d.ts CHANGED
@@ -17,6 +17,7 @@
17
17
  * embeddingApiKey: process.env.OPENAI_API_KEY!,
18
18
  * packageId: "0x...",
19
19
  * accountId: "0x...",
20
+ * registryId: "0x...",
20
21
  * })
21
22
  *
22
23
  * // Remember — all client-side: embed → SEAL encrypt → Walrus upload → register
@@ -50,7 +51,9 @@ export declare class MemWalManual {
50
51
  * @param config.suiPrivateKey - Sui private key (bech32) for SEAL + Walrus (OR walletSigner)
51
52
  * @param config.walletSigner - Connected wallet signer from dapp-kit (OR suiPrivateKey)
52
53
  * @param config.embeddingApiKey - OpenAI/OpenRouter API key for embeddings
53
- * @param config.packageId - Walrus Memory contract package ID
54
+ * @param config.packageId - Immutable first-published package ID used by SEAL
55
+ * @param config.sealPolicyPackageId - Current seal_approve package after an upgrade
56
+ * @param config.registryId - AccountRegistry shared object ID (for SEAL seal_approve)
54
57
  * @param config.accountId - Walrus Memory account object ID (for SEAL seal_approve)
55
58
  */
56
59
  static create(config: MemWalManualConfig): MemWalManual;
@@ -67,10 +70,8 @@ export declare class MemWalManual {
67
70
  get isWalletMode(): boolean;
68
71
  private getSuiClient;
69
72
  private getKeypair;
70
- /** Get the owner address from wallet signer or derived from keypair */
71
- private getOwnerAddress;
72
- /** Sign and execute a transaction — via wallet popup or programmatic keypair */
73
- private signAndExecuteTransaction;
73
+ /** Get the transaction signer address from the wallet or configured keypair. */
74
+ private getSignerAddress;
74
75
  private getSealClient;
75
76
  /** MED-10: SEAL threshold — defaults to 2, capped to configured server weight. */
76
77
  private get sealThreshold();
@@ -97,38 +98,53 @@ export declare class MemWalManual {
97
98
  /**
98
99
  * SEAL-encrypt a payload.
99
100
  *
100
- * LOW-24 (namespace scoping): The `id` passed to SEAL is the on-chain
101
- * policy identifier used by `seal_approve` to gate decryption. We scope
102
- * encryption keys by namespace so a delegate authorized to decrypt
103
- * namespace "A" cannot unwrap ciphertext for namespace "B".
101
+ * Namespace scoping: the `id` passed to SEAL includes the namespace, so
102
+ * namespaces receive distinct keys. `seal_approve` authorizes delegates at
103
+ * account scope, however, so this does not isolate delegates from each
104
+ * other's namespaces.
104
105
  *
105
- * ENG-1725 fix: The on-chain `seal_approve` does
106
- * `has_suffix(id, bcs::to_bytes(account.owner))` for the owner-caller
107
- * branch. The id MUST therefore end with the caller's 32 raw address
108
- * bytes (in hex form on the SEAL side, raw on the Move side). The
109
- * previous LOW-24 layout — `hex(accountId) || hex(namespace)` — used
110
- * the MemWalAccount object id (not the owner address) and put the
111
- * namespace as the suffix, so `has_suffix` always failed and owners
112
- * could no longer recall their own manually-remembered data. (Delegate
113
- * decrypt still worked because the delegate branch skips the suffix
114
- * check.)
106
+ * ENG-1725 fix: The on-chain `seal_approve` matches the tail of the id
107
+ * against `bcs::to_bytes(account.owner)` for every caller — owner and
108
+ * delegate alike. The id MUST therefore carry the owner's 32 raw address
109
+ * bytes at that position (in hex form on the SEAL side, raw on the Move
110
+ * side). The previous LOW-24 layout — `hex(accountId) || hex(namespace)`
111
+ * — used the MemWalAccount object id (not the owner address) and put the
112
+ * namespace last, so the match always failed and owners could no longer
113
+ * recall their own manually-remembered data.
114
+ *
115
+ * Rotation: SEAL hands out one reusable secret key per identity, so an id
116
+ * fixed at `owner` would let any delegate that ever fetched the key keep
117
+ * decrypting new memories forever — removal on chain would not touch the
118
+ * copy in their hands. Tailing the id with the account's
119
+ * `access_counter_version` means a revocation bumps the counter, which
120
+ * changes the identity, which yields a key they cannot fetch.
115
121
  *
116
122
  * Layout:
117
- * id = hex(utf8(namespace)) || hex(callerAddress[2:])
123
+ * id = hex(utf8(namespace)) || hex(ownerAddress[2:]) || hex(u64le(counter))
118
124
  *
119
- * - namespace is the prefix still distinct keys per namespace, so the
120
- * LOW-24 isolation property is preserved (different ns different
121
- * SEAL key).
122
- * - caller address (32 bytes) is the suffix `has_suffix` passes for
123
- * owner mode; delegate mode still passes via the delegate-list check
124
- * in `seal_approve` regardless of suffix.
125
+ * - namespace is the prefix, so different namespaces use different SEAL
126
+ * keys. It is an organization boundary, not an authorization boundary:
127
+ * every account delegate may request every namespace key.
128
+ * - owner address (32 bytes) then counter (8 bytes) are the tail →
129
+ * `seal_approve` parses the counter off the end and rebuilds the
130
+ * expected `owner ‖ counter` suffix to compare.
125
131
  *
126
- * NOTE: Ciphertext written between the original LOW-24 fix and this fix
127
- * (id = accountHex + nsHex) is unrecoverable by the owner caller. There
128
- * is no production data in that window per the team; if recovery is
129
- * needed, decrypt via a delegate key (delegate branch ignores suffix).
132
+ * NOTE: Ciphertext written between the original LOW-24 fix and the
133
+ * ENG-1725 fix (id = accountHex + nsHex) is unrecoverable by the owner
134
+ * caller. There is no production data in that window per the team.
130
135
  */
131
136
  private sealEncrypt;
137
+ /**
138
+ * Read the account owner and SEAL rotation counter fresh from chain.
139
+ *
140
+ * Deliberately not cached, and it must stay that way: the counter's only
141
+ * job is to stop a just-removed delegate from reading what comes next, and
142
+ * a cached value would encrypt the next memory under the identity that
143
+ * delegate already holds a key for. One read per encrypt is the price of
144
+ * the property. Recall does not need this — `EncryptedObject.parse` gives
145
+ * back the id the blob was written under.
146
+ */
147
+ private fetchSealIdentity;
132
148
  private walrusUpload;
133
149
  private walrusDownload;
134
150
  private getDelegatePublicKey;
@@ -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,yBAAyB,EACzB,aAAa,EAEb,sBAAsB,EACzB,MAAM,YAAY,CAAC;AAiGpB,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;IAC1B,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,oBAAoB,CAAgD;IAG5E,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;IAWf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAItD,0EAA0E;IAC1E,IAAI,YAAY,IAAI,OAAO,CAE1B;YASa,YAAY;YA8BZ,UAAU;IAaxB,yEAAyE;YAC3D,eAAe;IAQ7B,gFAAgF;YAClE,yBAAyB;YAYzB,aAAa;IAsB3B,kFAAkF;IAClF,OAAO,KAAK,aAAa,GAOxB;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,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAC5F,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IA2InG,8DAA8D;YAChD,YAAY;YAuBZ,KAAK;IAsCnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;YACW,WAAW;YA4BX,YAAY;YAiCZ,cAAc;YAoBd,oBAAoB;YAQpB,uBAAuB;YAUvB,0BAA0B;IA0BxC;;;;;;;OAOG;YACW,aAAa;IA8D3B;;;;;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EACR,kBAAkB,EAElB,oBAAoB,EACpB,kBAAkB,EAElB,yBAAyB,EACzB,aAAa,EAEb,sBAAsB,EACzB,MAAM,YAAY,CAAC;AAiGpB,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;IAC1B,OAAO,CAAC,sBAAsB,CAAuC;IACrE,OAAO,CAAC,oBAAoB,CAAgD;IAG5E,OAAO,CAAC,UAAU,CAAa;IAC/B,OAAO,CAAC,WAAW,CAAa;IAChC,OAAO,CAAC,aAAa,CAAa;IAClC,OAAO,CAAC,QAAQ,CAAa;IAE7B,OAAO;IAgBP;;;;;;;;;;;;;OAaG;IACH,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY;IAIvD;;;OAGG;IACH,OAAO,IAAI,IAAI;IAWf;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAItD,0EAA0E;IAC1E,IAAI,YAAY,IAAI,OAAO,CAE1B;YASa,YAAY;YA8BZ,UAAU;IAaxB,gFAAgF;YAClE,gBAAgB;YAQhB,aAAa;IAsB3B,kFAAkF;IAClF,OAAO,KAAK,aAAa,GAOxB;YAEa,eAAe;IA0B7B;;;;;OAKG;IACG,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAsBrF;;;;;;OAMG;IACG,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAC5F,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAmKnG,8DAA8D;YAChD,YAAY;YAuBZ,KAAK;IAqCnB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAqCG;YACW,WAAW;IAqBzB;;;;;;;;;OASG;YACW,iBAAiB;YAgEjB,YAAY;YAiCZ,cAAc;YAqBd,oBAAoB;YAQpB,uBAAuB;YAUvB,0BAA0B;IA4BxC;;;;;;;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
@@ -17,6 +17,7 @@
17
17
  * embeddingApiKey: process.env.OPENAI_API_KEY!,
18
18
  * packageId: "0x...",
19
19
  * accountId: "0x...",
20
+ * registryId: "0x...",
20
21
  * })
21
22
  *
22
23
  * // Remember — all client-side: embed → SEAL encrypt → Walrus upload → register
@@ -26,8 +27,8 @@
26
27
  * const result = await memwal.recallManual("food allergies")
27
28
  * ```
28
29
  */
29
- import { sha256hex, hexToBytes, bytesToHex, normalizeServerUrl, sanitizeServerError, scoringWeightsToWire, } from "./utils.js";
30
- import { assertCompatibleRelayer, compatibilityErrorFromStatus, } from "./compatibility.js";
30
+ import { sha256hex, hexToBytes, bytesToHex, u64ToLeHex, normalizeServerUrl, sanitizeServerError, scoringWeightsToWire, } from "./utils.js";
31
+ import { assertCompatibleRelayer, compatibilityErrorFromStatus } from "./compatibility.js";
31
32
  // Default SEAL server configs per network.
32
33
  // Keep testnet on the legacy independent servers so Manual mode can decrypt
33
34
  // data written by the hosted testnet relayer. Committee aggregators remain
@@ -131,7 +132,9 @@ export class MemWalManual {
131
132
  * @param config.suiPrivateKey - Sui private key (bech32) for SEAL + Walrus (OR walletSigner)
132
133
  * @param config.walletSigner - Connected wallet signer from dapp-kit (OR suiPrivateKey)
133
134
  * @param config.embeddingApiKey - OpenAI/OpenRouter API key for embeddings
134
- * @param config.packageId - Walrus Memory contract package ID
135
+ * @param config.packageId - Immutable first-published package ID used by SEAL
136
+ * @param config.sealPolicyPackageId - Current seal_approve package after an upgrade
137
+ * @param config.registryId - AccountRegistry shared object ID (for SEAL seal_approve)
135
138
  * @param config.accountId - Walrus Memory account object ID (for SEAL seal_approve)
136
139
  */
137
140
  static create(config) {
@@ -207,26 +210,14 @@ export class MemWalManual {
207
210
  }
208
211
  return this._keypair;
209
212
  }
210
- /** Get the owner address from wallet signer or derived from keypair */
211
- async getOwnerAddress() {
213
+ /** Get the transaction signer address from the wallet or configured keypair. */
214
+ async getSignerAddress() {
212
215
  if (this.walletSigner) {
213
216
  return this.walletSigner.address;
214
217
  }
215
218
  const keypair = await this.getKeypair();
216
219
  return keypair.getPublicKey().toSuiAddress();
217
220
  }
218
- /** Sign and execute a transaction — via wallet popup or programmatic keypair */
219
- async signAndExecuteTransaction(transaction) {
220
- if (this.walletSigner) {
221
- return this.walletSigner.signAndExecuteTransaction({ transaction });
222
- }
223
- const keypair = await this.getKeypair();
224
- const suiClient = await this.getSuiClient();
225
- return suiClient.signAndExecuteTransaction({
226
- signer: keypair,
227
- transaction,
228
- });
229
- }
230
221
  async getSealClient() {
231
222
  if (!this._sealClient) {
232
223
  // @ts-ignore — optional peer dependency
@@ -288,9 +279,8 @@ export class MemWalManual {
288
279
  if (!text)
289
280
  throw new Error("Text cannot be empty");
290
281
  const ns = namespace ?? this.namespace;
291
- // Step 1 & 2: Embed + SEAL encrypt concurrently
292
- // LOW-24: Scope SEAL encryption id by namespace so a delegate key
293
- // authorized for one namespace cannot unwrap ciphertext for another.
282
+ // Step 1 & 2: Embed + SEAL encrypt concurrently. Namespace produces a
283
+ // distinct SEAL identity, but delegates remain authorized account-wide.
294
284
  const [vector, encrypted] = await Promise.all([
295
285
  this.embed(text),
296
286
  this.sealEncrypt(new TextEncoder().encode(text), ns),
@@ -307,9 +297,7 @@ export class MemWalManual {
307
297
  async recallManual(query, limitOrOptions = 10, namespace) {
308
298
  if (!query)
309
299
  throw new Error("Query cannot be empty");
310
- const options = typeof limitOrOptions === "number"
311
- ? { limit: limitOrOptions, namespace }
312
- : limitOrOptions;
300
+ const options = typeof limitOrOptions === "number" ? { limit: limitOrOptions, namespace } : limitOrOptions;
313
301
  const limit = options.limit ?? 10;
314
302
  const ns = options.namespace ?? this.namespace;
315
303
  // Step 1: Embed query
@@ -345,6 +333,7 @@ export class MemWalManual {
345
333
  let SessionKey;
346
334
  let EncryptedObject;
347
335
  let Transaction;
336
+ let normalizeSuiAddress;
348
337
  let sessionKey;
349
338
  try {
350
339
  sealClient = await this.getSealClient();
@@ -352,12 +341,33 @@ export class MemWalManual {
352
341
  // @ts-ignore — optional peer dependency
353
342
  ({ SessionKey, EncryptedObject } = await import("@mysten/seal"));
354
343
  ({ Transaction } = await import("@mysten/sui/transactions"));
344
+ ({ normalizeSuiAddress } = await import("@mysten/sui/utils"));
355
345
  }
356
346
  catch (err) {
357
- console.error('[MemWalManual] Failed to initialize SEAL/SUI clients:', err);
347
+ console.error("[MemWalManual] Failed to initialize SEAL/SUI clients:", err);
348
+ return { results: [], total: 0 };
349
+ }
350
+ const immutablePackageId = normalizeSuiAddress(this.config.packageId);
351
+ const parsedBlobs = [];
352
+ for (const blob of downloadedBlobs) {
353
+ let parsed;
354
+ try {
355
+ parsed = EncryptedObject.parse(blob.data);
356
+ }
357
+ catch (err) {
358
+ console.error(`[MemWalManual] SEAL decrypt failed for ${blob.blob_id}:`, err);
359
+ continue;
360
+ }
361
+ if (normalizeSuiAddress(parsed.packageId) !== immutablePackageId) {
362
+ throw new Error(`MemWalManual: ciphertext ${blob.blob_id} packageId does not match ` +
363
+ "the configured immutable packageId");
364
+ }
365
+ parsedBlobs.push({ ...blob, parsed });
366
+ }
367
+ if (parsedBlobs.length === 0) {
358
368
  return { results: [], total: 0 };
359
369
  }
360
- const callerAddress = await this.getOwnerAddress();
370
+ const callerAddress = await this.getSignerAddress();
361
371
  // Create signer (wallet adapter or keypair)
362
372
  const signer = await this.createSigner(callerAddress);
363
373
  // Create session key ONCE (triggers one wallet popup)
@@ -373,26 +383,29 @@ export class MemWalManual {
373
383
  });
374
384
  }
375
385
  catch (err) {
376
- console.error('[MemWalManual] SessionKey.create failed:', err);
386
+ console.error("[MemWalManual] SessionKey.create failed:", err);
377
387
  return { results: [], total: 0 };
378
388
  }
379
389
  // Decrypt each blob sequentially using the shared session key
380
390
  const results = [];
381
- for (const blob of downloadedBlobs) {
391
+ for (const blob of parsedBlobs) {
382
392
  try {
383
- const parsed = EncryptedObject.parse(blob.data);
384
- const fullId = parsed.id;
393
+ const fullId = blob.parsed.id;
385
394
  // Build seal_approve PTB
386
395
  const idBytes = Array.from(Uint8Array.from(fullId.match(/.{1,2}/g).map((b) => parseInt(b, 16))));
387
396
  const tx = new Transaction();
388
397
  tx.moveCall({
389
- target: `${this.config.packageId}::account::seal_approve`,
398
+ target: `${this.config.sealPolicyPackageId ?? this.config.packageId}::account::seal_approve`,
390
399
  arguments: [
391
400
  tx.pure("vector<u8>", idBytes),
401
+ tx.object(this.config.registryId),
392
402
  tx.object(this.config.accountId),
393
403
  ],
394
404
  });
395
- const txBytes = await tx.build({ client: suiClient, onlyTransactionKind: true });
405
+ const txBytes = await tx.build({
406
+ client: suiClient,
407
+ onlyTransactionKind: true,
408
+ });
396
409
  // Fetch decryption keys using shared session key
397
410
  await sealClient.fetchKeys({
398
411
  ids: [fullId],
@@ -442,8 +455,7 @@ export class MemWalManual {
442
455
  // ============================================================
443
456
  async embed(text) {
444
457
  if (!this.config.embeddingApiKey) {
445
- throw new Error("MemWalManual: embeddingApiKey is required. " +
446
- "Provide your OpenAI or OpenRouter API key in config.");
458
+ throw new Error("MemWalManual: embeddingApiKey is required. " + "Provide your OpenAI or OpenRouter API key in config.");
447
459
  }
448
460
  const apiBase = (this.config.embeddingApiBase ?? "https://api.openai.com/v1").replace(/\/$/, "");
449
461
  const isOpenRouter = apiBase.includes("openrouter.ai");
@@ -453,7 +465,7 @@ export class MemWalManual {
453
465
  method: "POST",
454
466
  headers: {
455
467
  "Content-Type": "application/json",
456
- "Authorization": `Bearer ${this.config.embeddingApiKey}`,
468
+ Authorization: `Bearer ${this.config.embeddingApiKey}`,
457
469
  },
458
470
  body: JSON.stringify({ model, input: text }),
459
471
  });
@@ -461,7 +473,7 @@ export class MemWalManual {
461
473
  const errText = await resp.text();
462
474
  throw new Error(`Embedding API error (${resp.status}): ${errText}`);
463
475
  }
464
- const data = await resp.json();
476
+ const data = (await resp.json());
465
477
  if (!data.data?.[0]?.embedding) {
466
478
  throw new Error("Embedding API returned no data");
467
479
  }
@@ -473,49 +485,50 @@ export class MemWalManual {
473
485
  /**
474
486
  * SEAL-encrypt a payload.
475
487
  *
476
- * LOW-24 (namespace scoping): The `id` passed to SEAL is the on-chain
477
- * policy identifier used by `seal_approve` to gate decryption. We scope
478
- * encryption keys by namespace so a delegate authorized to decrypt
479
- * namespace "A" cannot unwrap ciphertext for namespace "B".
488
+ * Namespace scoping: the `id` passed to SEAL includes the namespace, so
489
+ * namespaces receive distinct keys. `seal_approve` authorizes delegates at
490
+ * account scope, however, so this does not isolate delegates from each
491
+ * other's namespaces.
492
+ *
493
+ * ENG-1725 fix: The on-chain `seal_approve` matches the tail of the id
494
+ * against `bcs::to_bytes(account.owner)` for every caller — owner and
495
+ * delegate alike. The id MUST therefore carry the owner's 32 raw address
496
+ * bytes at that position (in hex form on the SEAL side, raw on the Move
497
+ * side). The previous LOW-24 layout — `hex(accountId) || hex(namespace)`
498
+ * — used the MemWalAccount object id (not the owner address) and put the
499
+ * namespace last, so the match always failed and owners could no longer
500
+ * recall their own manually-remembered data.
480
501
  *
481
- * ENG-1725 fix: The on-chain `seal_approve` does
482
- * `has_suffix(id, bcs::to_bytes(account.owner))` for the owner-caller
483
- * branch. The id MUST therefore end with the caller's 32 raw address
484
- * bytes (in hex form on the SEAL side, raw on the Move side). The
485
- * previous LOW-24 layout `hex(accountId) || hex(namespace)` — used
486
- * the MemWalAccount object id (not the owner address) and put the
487
- * namespace as the suffix, so `has_suffix` always failed and owners
488
- * could no longer recall their own manually-remembered data. (Delegate
489
- * decrypt still worked because the delegate branch skips the suffix
490
- * check.)
502
+ * Rotation: SEAL hands out one reusable secret key per identity, so an id
503
+ * fixed at `owner` would let any delegate that ever fetched the key keep
504
+ * decrypting new memories forever removal on chain would not touch the
505
+ * copy in their hands. Tailing the id with the account's
506
+ * `access_counter_version` means a revocation bumps the counter, which
507
+ * changes the identity, which yields a key they cannot fetch.
491
508
  *
492
509
  * Layout:
493
- * id = hex(utf8(namespace)) || hex(callerAddress[2:])
510
+ * id = hex(utf8(namespace)) || hex(ownerAddress[2:]) || hex(u64le(counter))
494
511
  *
495
- * - namespace is the prefix still distinct keys per namespace, so the
496
- * LOW-24 isolation property is preserved (different ns different
497
- * SEAL key).
498
- * - caller address (32 bytes) is the suffix `has_suffix` passes for
499
- * owner mode; delegate mode still passes via the delegate-list check
500
- * in `seal_approve` regardless of suffix.
512
+ * - namespace is the prefix, so different namespaces use different SEAL
513
+ * keys. It is an organization boundary, not an authorization boundary:
514
+ * every account delegate may request every namespace key.
515
+ * - owner address (32 bytes) then counter (8 bytes) are the tail →
516
+ * `seal_approve` parses the counter off the end and rebuilds the
517
+ * expected `owner ‖ counter` suffix to compare.
501
518
  *
502
- * NOTE: Ciphertext written between the original LOW-24 fix and this fix
503
- * (id = accountHex + nsHex) is unrecoverable by the owner caller. There
504
- * is no production data in that window per the team; if recovery is
505
- * needed, decrypt via a delegate key (delegate branch ignores suffix).
519
+ * NOTE: Ciphertext written between the original LOW-24 fix and the
520
+ * ENG-1725 fix (id = accountHex + nsHex) is unrecoverable by the owner
521
+ * caller. There is no production data in that window per the team.
506
522
  */
507
523
  async sealEncrypt(plaintext, namespace) {
508
524
  const sealClient = await this.getSealClient();
509
- // Build a namespace-scoped SEAL id whose final 32 bytes are the
510
- // caller's address bytes, so the on-chain `seal_approve` owner-branch
511
- // `has_suffix(id, bcs::to_bytes(owner))` check passes. Hex-encoded
512
- // throughout so the id is a stable ASCII hex string.
513
- const callerAddress = await this.getOwnerAddress();
514
- const callerHex = callerAddress.startsWith("0x")
515
- ? callerAddress.slice(2)
516
- : callerAddress;
525
+ // Build a namespace-scoped SEAL id tailing with the owner's address
526
+ // bytes then the rotation counter, so the on-chain `seal_approve`
527
+ // suffix check passes. Hex-encoded throughout so the id is a stable
528
+ // ASCII hex string.
529
+ const { ownerHex, counter } = await this.fetchSealIdentity();
517
530
  const nsHex = bytesToHex(new TextEncoder().encode(namespace));
518
- const scopedId = `${nsHex}${callerHex}`;
531
+ const scopedId = `${nsHex}${ownerHex}${u64ToLeHex(counter)}`;
519
532
  const result = await sealClient.encrypt({
520
533
  threshold: this.sealThreshold,
521
534
  packageId: this.config.packageId,
@@ -524,6 +537,64 @@ export class MemWalManual {
524
537
  });
525
538
  return new Uint8Array(result.encryptedObject);
526
539
  }
540
+ /**
541
+ * Read the account owner and SEAL rotation counter fresh from chain.
542
+ *
543
+ * Deliberately not cached, and it must stay that way: the counter's only
544
+ * job is to stop a just-removed delegate from reading what comes next, and
545
+ * a cached value would encrypt the next memory under the identity that
546
+ * delegate already holds a key for. One read per encrypt is the price of
547
+ * the property. Recall does not need this — `EncryptedObject.parse` gives
548
+ * back the id the blob was written under.
549
+ */
550
+ async fetchSealIdentity() {
551
+ const suiClient = await this.getSuiClient();
552
+ // getSuiClient() can hand back either client generation, and they
553
+ // disagree on both the request and the response: the v2 gRPC/JSON-RPC
554
+ // clients take { objectId, include } and answer { object: { json } },
555
+ // while the legacy client takes { id, options } and answers
556
+ // { data: { content: { fields } } }. Send both key sets — each client
557
+ // ignores the one it does not know — and read whichever came back.
558
+ const res = await suiClient.getObject({
559
+ objectId: this.config.accountId,
560
+ id: this.config.accountId,
561
+ include: { json: true },
562
+ options: { showContent: true },
563
+ });
564
+ const fields = res?.object?.json ?? res?.data?.content?.fields;
565
+ const objectType = res?.object?.type ?? res?.data?.type ?? res?.data?.content?.type;
566
+ const typeParts = typeof objectType === "string" ? objectType.split("::") : [];
567
+ const typePackageHex = typeParts[0]?.replace(/^0x/i, "") ?? "";
568
+ const configuredPackageHex = this.config.packageId.replace(/^0x/i, "");
569
+ const packageMatches = /^[0-9a-fA-F]{1,64}$/.test(typePackageHex) &&
570
+ /^[0-9a-fA-F]{1,64}$/.test(configuredPackageHex) &&
571
+ typePackageHex.padStart(64, "0").toLowerCase() === configuredPackageHex.padStart(64, "0").toLowerCase();
572
+ if (!packageMatches || typeParts[1] !== "account" || typeParts[2] !== "MemWalAccount") {
573
+ throw new Error(`MemWalManual: object ${this.config.accountId} is not a ` +
574
+ `${this.config.packageId}::account::MemWalAccount.`);
575
+ }
576
+ if (fields?.active !== true) {
577
+ throw new Error(`MemWalManual: account ${this.config.accountId} is not active; refusing to encrypt.`);
578
+ }
579
+ const owner = fields?.owner;
580
+ if (typeof owner !== "string") {
581
+ throw new Error(`MemWalManual: account ${this.config.accountId} has no owner field. ` +
582
+ "packageId/accountId may point at different contracts.");
583
+ }
584
+ const ownerHex = owner.replace(/^0x/i, "");
585
+ if (!/^[0-9a-fA-F]{1,64}$/.test(ownerHex)) {
586
+ throw new Error(`MemWalManual: account ${this.config.accountId} has an invalid owner field.`);
587
+ }
588
+ const rawCounter = fields?.access_counter_version;
589
+ if (rawCounter === undefined || rawCounter === null) {
590
+ throw new Error(`MemWalManual: account ${this.config.accountId} has no access_counter_version field. ` +
591
+ "This account predates SEAL identity rotation, or packageId/accountId point at different contracts.");
592
+ }
593
+ return {
594
+ ownerHex: ownerHex.padStart(64, "0").toLowerCase(),
595
+ counter: BigInt(rawCounter),
596
+ };
597
+ }
527
598
  // ============================================================
528
599
  // Internal: Walrus Upload/Download
529
600
  // ============================================================
@@ -545,11 +616,10 @@ export class MemWalManual {
545
616
  const errText = await resp.text();
546
617
  throw new Error(`Walrus upload failed (${resp.status}): ${errText}`);
547
618
  }
548
- const result = await resp.json();
619
+ const result = (await resp.json());
549
620
  // Response can be { newlyCreated: { blobObject: { blobId } } }
550
621
  // or { alreadyCertified: { blobId } }
551
- const blobId = result.newlyCreated?.blobObject?.blobId
552
- ?? result.alreadyCertified?.blobId;
622
+ const blobId = result.newlyCreated?.blobObject?.blobId ?? result.alreadyCertified?.blobId;
553
623
  if (!blobId) {
554
624
  throw new Error(`Walrus upload: unexpected response: ${JSON.stringify(result)}`);
555
625
  }
@@ -591,13 +661,17 @@ export class MemWalManual {
591
661
  return this.compatibilityPromise;
592
662
  }
593
663
  async fetchCompatibilityMetadata() {
594
- const versionRes = await fetch(`${this.serverUrl}/version`, { method: "GET" });
664
+ const versionRes = await fetch(`${this.serverUrl}/version`, {
665
+ method: "GET",
666
+ });
595
667
  let body;
596
668
  if (versionRes.ok) {
597
669
  body = (await versionRes.json());
598
670
  }
599
671
  else if (versionRes.status === 404 || versionRes.status === 405) {
600
- const healthRes = await fetch(`${this.serverUrl}/health`, { method: "GET" });
672
+ const healthRes = await fetch(`${this.serverUrl}/health`, {
673
+ method: "GET",
674
+ });
601
675
  if (!healthRes.ok) {
602
676
  throw new Error(`Walrus Memory compatibility check failed: GET /version returned ` +
603
677
  `${versionRes.status}, and GET /health returned ${healthRes.status}`);
@@ -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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"}
@@ -1 +1 @@
1
- {"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memwal.d.ts","sourceRoot":"","sources":["../src/memwal.ts"],"names":[],"mappings":"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"}