@oobe-protocol-labs/synapse-sap-sdk 0.9.2 → 0.9.3

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.
@@ -212,6 +212,148 @@ class MetaplexBridge {
212
212
  return this.firstWeb3Ix(builder, "updateExternalPluginAdapterV1");
213
213
  }
214
214
  // ─────────────────────────────────────────────────────
215
+ // Write side — combined SAP × MPL register flows (v0.9.3)
216
+ // ─────────────────────────────────────────────────────
217
+ /**
218
+ * @name buildMintAndAttachIxs
219
+ * @description Build the two MPL Core instructions needed to mint a new
220
+ * asset for an existing SAP agent and immediately bind it via the
221
+ * `AgentIdentity` plugin (URI = canonical EIP-8004 URL).
222
+ *
223
+ * Flow:
224
+ * 1. Generate a fresh asset keypair (returned as `assetSecretKey`).
225
+ * 2. Build `mpl_core::create` with the new asset as signer.
226
+ * 3. Build `addExternalPluginAdapterV1` for the AgentIdentity URI.
227
+ *
228
+ * The returned `instructions` are deterministic order. The caller
229
+ * partial-signs the assembled transaction with `assetSecretKey` and the
230
+ * authority/payer wallet.
231
+ *
232
+ * @since v0.9.3
233
+ */
234
+ async buildMintAndAttachIxs(opts) {
235
+ const { mplCore, umiBundle, umiCore } = await loadMplCore();
236
+ const umi = umiBundle.createUmi(opts.rpcUrl).use(mplCore.mplCore());
237
+ const [sapPda] = (0, pda_1.deriveAgent)(opts.sapAgentOwner);
238
+ const registrationUrl = this.deriveRegistrationUrl(sapPda, opts.registrationBaseUrl);
239
+ const assetUmiSigner = umiCore.generateSigner(umi);
240
+ const assetAddress = new web3_js_1.PublicKey(assetUmiSigner.publicKey.toString());
241
+ const assetSecretKey = assetUmiSigner.secretKey;
242
+ const authority = umiCore.createNoopSigner(umiCore.publicKey(opts.authority.toBase58()));
243
+ const payer = umiCore.createNoopSigner(umiCore.publicKey((opts.payer ?? opts.authority).toBase58()));
244
+ const ownerUmi = opts.owner
245
+ ? umiCore.publicKey(opts.owner.toBase58())
246
+ : umiCore.publicKey(opts.authority.toBase58());
247
+ const createBuilder = mplCore.create(umi, {
248
+ asset: assetUmiSigner,
249
+ collection: opts.collection
250
+ ? { publicKey: umiCore.publicKey(opts.collection.toBase58()) }
251
+ : undefined,
252
+ authority,
253
+ payer,
254
+ owner: ownerUmi,
255
+ name: opts.name,
256
+ uri: opts.metadataUri,
257
+ });
258
+ const mintIx = await this.firstWeb3Ix(createBuilder, "mpl_core::create");
259
+ const attachIx = await this.buildAddExternalPluginIx({
260
+ asset: assetAddress,
261
+ authority: opts.authority,
262
+ payer: opts.payer ?? opts.authority,
263
+ uri: registrationUrl,
264
+ rpcUrl: opts.rpcUrl,
265
+ });
266
+ return {
267
+ assetAddress,
268
+ assetSecretKey,
269
+ registrationUrl,
270
+ instructions: [mintIx, attachIx],
271
+ };
272
+ }
273
+ /**
274
+ * @name buildRegisterSapForMplOwnerIx
275
+ * @description Given an existing MPL Core asset, resolve its on-chain
276
+ * owner and build the SAP `registerAgent` instruction the owner must
277
+ * sign. Idempotent: if a SAP agent already exists for that owner the
278
+ * method returns `instruction: null` with `alreadyRegistered: true`.
279
+ *
280
+ * Use after a wallet has minted (or holds) an MPL Core agent NFT and
281
+ * wants to back-fill a SAP identity at the canonical PDA so the bridge's
282
+ * EIP-8004 URL becomes resolvable.
283
+ *
284
+ * @since v0.9.3
285
+ */
286
+ async buildRegisterSapForMplOwnerIx(opts) {
287
+ const snap = await this.fetchMplSnapshot(opts.asset, opts.rpcUrl);
288
+ if (!snap) {
289
+ throw new Error(`buildRegisterSapForMplOwnerIx: MPL Core asset ${opts.asset.toBase58()} not readable`);
290
+ }
291
+ const [sapPda] = (0, pda_1.deriveAgent)(snap.owner);
292
+ const existing = await this.fetchAgentNullable(sapPda);
293
+ if (existing) {
294
+ return {
295
+ assetOwner: snap.owner,
296
+ sapAgentPda: sapPda,
297
+ alreadyRegistered: true,
298
+ currentAgentIdentityUri: snap.agentIdentityUri,
299
+ instruction: null,
300
+ };
301
+ }
302
+ const ix = await this.buildRegisterAgentIx({
303
+ wallet: snap.owner,
304
+ args: opts.registerArgs,
305
+ });
306
+ return {
307
+ assetOwner: snap.owner,
308
+ sapAgentPda: sapPda,
309
+ alreadyRegistered: false,
310
+ currentAgentIdentityUri: snap.agentIdentityUri,
311
+ instruction: ix,
312
+ };
313
+ }
314
+ /**
315
+ * @name buildRegisterBothIxs
316
+ * @description Atomic 3-instruction bundle for a wallet that owns
317
+ * neither side: `[SAP registerAgent, MPL Core create, MPL AgentIdentity attach]`.
318
+ * Single transaction, single user signature (plus the ephemeral asset
319
+ * keypair returned in `assetSecretKey`).
320
+ *
321
+ * Throws if a SAP agent already exists for `wallet` — callers should
322
+ * fall through to {@link MetaplexBridge.buildMintAndAttachIxs} instead.
323
+ *
324
+ * @since v0.9.3
325
+ */
326
+ async buildRegisterBothIxs(opts) {
327
+ const [sapPda] = (0, pda_1.deriveAgent)(opts.wallet);
328
+ const existing = await this.fetchAgentNullable(sapPda);
329
+ if (existing) {
330
+ throw new Error(`buildRegisterBothIxs: SAP agent already exists at ${sapPda.toBase58()}; ` +
331
+ `use buildMintAndAttachIxs instead`);
332
+ }
333
+ const sapIx = await this.buildRegisterAgentIx({
334
+ wallet: opts.wallet,
335
+ args: opts.registerArgs,
336
+ });
337
+ const mint = await this.buildMintAndAttachIxs({
338
+ sapAgentOwner: opts.wallet,
339
+ authority: opts.wallet,
340
+ payer: opts.payer ?? opts.wallet,
341
+ owner: opts.wallet,
342
+ name: opts.mintName,
343
+ metadataUri: opts.mintMetadataUri,
344
+ registrationBaseUrl: opts.registrationBaseUrl,
345
+ rpcUrl: opts.rpcUrl,
346
+ collection: opts.collection,
347
+ });
348
+ return {
349
+ sapAgentPda: sapPda,
350
+ assetAddress: mint.assetAddress,
351
+ assetSecretKey: mint.assetSecretKey,
352
+ registrationUrl: mint.registrationUrl,
353
+ instructions: [sapIx, ...mint.instructions],
354
+ };
355
+ }
356
+ // ─────────────────────────────────────────────────────
215
357
  // Read side
216
358
  // ─────────────────────────────────────────────────────
217
359
  /**
@@ -235,7 +377,7 @@ class MetaplexBridge {
235
377
  }
236
378
  let mpl = null;
237
379
  if (input.asset) {
238
- mpl = await this.fetchMplSnapshot(input.asset, input.rpcUrl);
380
+ mpl = await this.fetchMplSnapshot(input.asset, input.rpcUrl, input.rpcHeaders);
239
381
  if (!sapPda && mpl?.registration?.synapseAgent) {
240
382
  try {
241
383
  sapPda = new web3_js_1.PublicKey(mpl.registration.synapseAgent);
@@ -299,7 +441,7 @@ class MetaplexBridge {
299
441
  };
300
442
  }
301
443
  // 2) MPL Core asset resolution
302
- const mpl = await this.fetchMplSnapshot(asPubkey, input.rpcUrl);
444
+ const mpl = await this.fetchMplSnapshot(asPubkey, input.rpcUrl, input.rpcHeaders);
303
445
  if (!mpl) {
304
446
  return {
305
447
  input: input.identifier,
@@ -332,7 +474,7 @@ class MetaplexBridge {
332
474
  * @since v0.9.0
333
475
  */
334
476
  async verifyLink(args) {
335
- const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl);
477
+ const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl, args.rpcHeaders);
336
478
  if (!snap?.agentIdentityUri || !snap.registration)
337
479
  return false;
338
480
  const expectedSuffix = `/agents/${args.sapAgentPda.toBase58()}/eip-8004.json`;
@@ -340,6 +482,61 @@ class MetaplexBridge {
340
482
  return false;
341
483
  return snap.registration.synapseAgent === args.sapAgentPda.toBase58();
342
484
  }
485
+ /**
486
+ * @name tripleCheckLink
487
+ * @description Explicit 3-layer verification for explorer/host badges.
488
+ * Returns one struct enumerating each check independently so UIs can
489
+ * present partial trust states (e.g. "MPL plugin present, JSON pending").
490
+ *
491
+ * Layers:
492
+ * 1. **mplOnChain** — Asset + AgentIdentity URI fetched on-chain.
493
+ * 2. **eip8004Json** — JSON fetched and `synapseAgent` matches PDA.
494
+ * 3. **sapOnChain** — `AgentAccount` PDA exists on the SAP program.
495
+ *
496
+ * @since v0.9.3
497
+ */
498
+ async tripleCheckLink(args) {
499
+ const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl, args.rpcHeaders);
500
+ if (!snap) {
501
+ const fallbackPda = args.expectedOwner
502
+ ? (0, pda_1.deriveAgent)(args.expectedOwner)[0]
503
+ : args.asset;
504
+ return {
505
+ asset: args.asset,
506
+ sapAgentPda: fallbackPda,
507
+ mplOnChain: false,
508
+ eip8004Json: false,
509
+ sapOnChain: false,
510
+ linked: false,
511
+ agentIdentityUri: null,
512
+ registration: null,
513
+ identity: null,
514
+ error: "MPL Core asset not readable on-chain",
515
+ };
516
+ }
517
+ const owner = args.expectedOwner ?? snap.owner;
518
+ const [sapPda] = (0, pda_1.deriveAgent)(owner);
519
+ const expectedSuffix = `/agents/${sapPda.toBase58()}/eip-8004.json`;
520
+ const mplOnChain = !!snap.agentIdentityUri;
521
+ const eip8004Json = !!snap.registration &&
522
+ !!snap.agentIdentityUri &&
523
+ snap.agentIdentityUri.endsWith(expectedSuffix) &&
524
+ snap.registration.synapseAgent === sapPda.toBase58();
525
+ const identity = await this.fetchAgentNullable(sapPda);
526
+ const sapOnChain = !!identity;
527
+ return {
528
+ asset: args.asset,
529
+ sapAgentPda: sapPda,
530
+ mplOnChain,
531
+ eip8004Json,
532
+ sapOnChain,
533
+ linked: mplOnChain && eip8004Json && sapOnChain,
534
+ agentIdentityUri: snap.agentIdentityUri,
535
+ registration: snap.registration,
536
+ identity,
537
+ error: null,
538
+ };
539
+ }
343
540
  // ═════════════════════════════════════════════════════
344
541
  // Private — SAP fetching
345
542
  // ═════════════════════════════════════════════════════
@@ -386,9 +583,17 @@ class MetaplexBridge {
386
583
  // ═════════════════════════════════════════════════════
387
584
  // Private — MPL fetching
388
585
  // ═════════════════════════════════════════════════════
389
- async fetchMplSnapshot(asset, rpcUrl) {
390
- const { mplCore, umiBundle, umiCore } = await loadMplCore();
391
- const umi = umiBundle.createUmi(rpcUrl).use(mplCore.mplCore());
586
+ async buildUmi(rpcUrl, rpcHeaders) {
587
+ const { mplCore, umiBundle } = await loadMplCore();
588
+ // umi-bundle-defaults.createUmi accepts an options object with httpHeaders
589
+ // since umi 1.x — required for gated providers like Synapse RPC that
590
+ // enforce `x-api-key`. Without it `getAccountInfo` returns 401 silently.
591
+ const umi = umiBundle.createUmi(rpcUrl, rpcHeaders ? { httpHeaders: rpcHeaders } : undefined).use(mplCore.mplCore());
592
+ return umi;
593
+ }
594
+ async fetchMplSnapshot(asset, rpcUrl, rpcHeaders) {
595
+ const { mplCore, umiCore } = await loadMplCore();
596
+ const umi = await this.buildUmi(rpcUrl, rpcHeaders);
392
597
  try {
393
598
  const fetched = await mplCore.fetchAsset(umi, umiCore.publicKey(asset.toBase58()));
394
599
  const owner = new web3_js_1.PublicKey(fetched.owner.toString());
@@ -469,6 +674,31 @@ class MetaplexBridge {
469
674
  });
470
675
  return this.firstWeb3Ix(builder, "addExternalPluginAdapterV1");
471
676
  }
677
+ // ═════════════════════════════════════════════════════
678
+ // Private — SAP instruction building (v0.9.3)
679
+ // ═════════════════════════════════════════════════════
680
+ async buildRegisterAgentIx(args) {
681
+ // Lazy import to avoid a hard cycle with `pda/index.ts`.
682
+ const { deriveGlobalRegistry } = await Promise.resolve().then(() => __importStar(require("../pda")));
683
+ const { SystemProgram } = await Promise.resolve().then(() => __importStar(require("@solana/web3.js")));
684
+ const [agentPda] = (0, pda_1.deriveAgent)(args.wallet);
685
+ const [statsPda] = (0, pda_1.deriveAgentStats)(agentPda);
686
+ const [globalPda] = deriveGlobalRegistry();
687
+ const a = args.args;
688
+ // Cast to `any` to sidestep Anchor's deep generic IDL inference, which
689
+ // otherwise blows TS recursion budget here. Same pattern as BaseModule.
690
+ const methods = this.program.methods;
691
+ return await methods
692
+ .registerAgent(a.name, a.description, a.capabilities, a.pricing, a.protocols, a.agentId ?? null, a.agentUri ?? null, a.x402Endpoint ?? null)
693
+ .accounts({
694
+ wallet: args.wallet,
695
+ agent: agentPda,
696
+ agentStats: statsPda,
697
+ globalRegistry: globalPda,
698
+ systemProgram: SystemProgram.programId,
699
+ })
700
+ .instruction();
701
+ }
472
702
  async firstWeb3Ix(builder, name) {
473
703
  const items = builder.getInstructions();
474
704
  const first = items[0];
@@ -1 +1 @@
1
- {"version":3,"file":"metaplex-bridge.js","sourceRoot":"","sources":["../../../src/registries/metaplex-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metaplex-bridge.js","sourceRoot":"","sources":["../../../src/registries/metaplex-bridge.ts"],"names":[],"mappings":"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"}
@@ -176,6 +176,148 @@ export class MetaplexBridge {
176
176
  return this.firstWeb3Ix(builder, "updateExternalPluginAdapterV1");
177
177
  }
178
178
  // ─────────────────────────────────────────────────────
179
+ // Write side — combined SAP × MPL register flows (v0.9.3)
180
+ // ─────────────────────────────────────────────────────
181
+ /**
182
+ * @name buildMintAndAttachIxs
183
+ * @description Build the two MPL Core instructions needed to mint a new
184
+ * asset for an existing SAP agent and immediately bind it via the
185
+ * `AgentIdentity` plugin (URI = canonical EIP-8004 URL).
186
+ *
187
+ * Flow:
188
+ * 1. Generate a fresh asset keypair (returned as `assetSecretKey`).
189
+ * 2. Build `mpl_core::create` with the new asset as signer.
190
+ * 3. Build `addExternalPluginAdapterV1` for the AgentIdentity URI.
191
+ *
192
+ * The returned `instructions` are deterministic order. The caller
193
+ * partial-signs the assembled transaction with `assetSecretKey` and the
194
+ * authority/payer wallet.
195
+ *
196
+ * @since v0.9.3
197
+ */
198
+ async buildMintAndAttachIxs(opts) {
199
+ const { mplCore, umiBundle, umiCore } = await loadMplCore();
200
+ const umi = umiBundle.createUmi(opts.rpcUrl).use(mplCore.mplCore());
201
+ const [sapPda] = deriveAgent(opts.sapAgentOwner);
202
+ const registrationUrl = this.deriveRegistrationUrl(sapPda, opts.registrationBaseUrl);
203
+ const assetUmiSigner = umiCore.generateSigner(umi);
204
+ const assetAddress = new PublicKey(assetUmiSigner.publicKey.toString());
205
+ const assetSecretKey = assetUmiSigner.secretKey;
206
+ const authority = umiCore.createNoopSigner(umiCore.publicKey(opts.authority.toBase58()));
207
+ const payer = umiCore.createNoopSigner(umiCore.publicKey((opts.payer ?? opts.authority).toBase58()));
208
+ const ownerUmi = opts.owner
209
+ ? umiCore.publicKey(opts.owner.toBase58())
210
+ : umiCore.publicKey(opts.authority.toBase58());
211
+ const createBuilder = mplCore.create(umi, {
212
+ asset: assetUmiSigner,
213
+ collection: opts.collection
214
+ ? { publicKey: umiCore.publicKey(opts.collection.toBase58()) }
215
+ : undefined,
216
+ authority,
217
+ payer,
218
+ owner: ownerUmi,
219
+ name: opts.name,
220
+ uri: opts.metadataUri,
221
+ });
222
+ const mintIx = await this.firstWeb3Ix(createBuilder, "mpl_core::create");
223
+ const attachIx = await this.buildAddExternalPluginIx({
224
+ asset: assetAddress,
225
+ authority: opts.authority,
226
+ payer: opts.payer ?? opts.authority,
227
+ uri: registrationUrl,
228
+ rpcUrl: opts.rpcUrl,
229
+ });
230
+ return {
231
+ assetAddress,
232
+ assetSecretKey,
233
+ registrationUrl,
234
+ instructions: [mintIx, attachIx],
235
+ };
236
+ }
237
+ /**
238
+ * @name buildRegisterSapForMplOwnerIx
239
+ * @description Given an existing MPL Core asset, resolve its on-chain
240
+ * owner and build the SAP `registerAgent` instruction the owner must
241
+ * sign. Idempotent: if a SAP agent already exists for that owner the
242
+ * method returns `instruction: null` with `alreadyRegistered: true`.
243
+ *
244
+ * Use after a wallet has minted (or holds) an MPL Core agent NFT and
245
+ * wants to back-fill a SAP identity at the canonical PDA so the bridge's
246
+ * EIP-8004 URL becomes resolvable.
247
+ *
248
+ * @since v0.9.3
249
+ */
250
+ async buildRegisterSapForMplOwnerIx(opts) {
251
+ const snap = await this.fetchMplSnapshot(opts.asset, opts.rpcUrl);
252
+ if (!snap) {
253
+ throw new Error(`buildRegisterSapForMplOwnerIx: MPL Core asset ${opts.asset.toBase58()} not readable`);
254
+ }
255
+ const [sapPda] = deriveAgent(snap.owner);
256
+ const existing = await this.fetchAgentNullable(sapPda);
257
+ if (existing) {
258
+ return {
259
+ assetOwner: snap.owner,
260
+ sapAgentPda: sapPda,
261
+ alreadyRegistered: true,
262
+ currentAgentIdentityUri: snap.agentIdentityUri,
263
+ instruction: null,
264
+ };
265
+ }
266
+ const ix = await this.buildRegisterAgentIx({
267
+ wallet: snap.owner,
268
+ args: opts.registerArgs,
269
+ });
270
+ return {
271
+ assetOwner: snap.owner,
272
+ sapAgentPda: sapPda,
273
+ alreadyRegistered: false,
274
+ currentAgentIdentityUri: snap.agentIdentityUri,
275
+ instruction: ix,
276
+ };
277
+ }
278
+ /**
279
+ * @name buildRegisterBothIxs
280
+ * @description Atomic 3-instruction bundle for a wallet that owns
281
+ * neither side: `[SAP registerAgent, MPL Core create, MPL AgentIdentity attach]`.
282
+ * Single transaction, single user signature (plus the ephemeral asset
283
+ * keypair returned in `assetSecretKey`).
284
+ *
285
+ * Throws if a SAP agent already exists for `wallet` — callers should
286
+ * fall through to {@link MetaplexBridge.buildMintAndAttachIxs} instead.
287
+ *
288
+ * @since v0.9.3
289
+ */
290
+ async buildRegisterBothIxs(opts) {
291
+ const [sapPda] = deriveAgent(opts.wallet);
292
+ const existing = await this.fetchAgentNullable(sapPda);
293
+ if (existing) {
294
+ throw new Error(`buildRegisterBothIxs: SAP agent already exists at ${sapPda.toBase58()}; ` +
295
+ `use buildMintAndAttachIxs instead`);
296
+ }
297
+ const sapIx = await this.buildRegisterAgentIx({
298
+ wallet: opts.wallet,
299
+ args: opts.registerArgs,
300
+ });
301
+ const mint = await this.buildMintAndAttachIxs({
302
+ sapAgentOwner: opts.wallet,
303
+ authority: opts.wallet,
304
+ payer: opts.payer ?? opts.wallet,
305
+ owner: opts.wallet,
306
+ name: opts.mintName,
307
+ metadataUri: opts.mintMetadataUri,
308
+ registrationBaseUrl: opts.registrationBaseUrl,
309
+ rpcUrl: opts.rpcUrl,
310
+ collection: opts.collection,
311
+ });
312
+ return {
313
+ sapAgentPda: sapPda,
314
+ assetAddress: mint.assetAddress,
315
+ assetSecretKey: mint.assetSecretKey,
316
+ registrationUrl: mint.registrationUrl,
317
+ instructions: [sapIx, ...mint.instructions],
318
+ };
319
+ }
320
+ // ─────────────────────────────────────────────────────
179
321
  // Read side
180
322
  // ─────────────────────────────────────────────────────
181
323
  /**
@@ -199,7 +341,7 @@ export class MetaplexBridge {
199
341
  }
200
342
  let mpl = null;
201
343
  if (input.asset) {
202
- mpl = await this.fetchMplSnapshot(input.asset, input.rpcUrl);
344
+ mpl = await this.fetchMplSnapshot(input.asset, input.rpcUrl, input.rpcHeaders);
203
345
  if (!sapPda && mpl?.registration?.synapseAgent) {
204
346
  try {
205
347
  sapPda = new PublicKey(mpl.registration.synapseAgent);
@@ -263,7 +405,7 @@ export class MetaplexBridge {
263
405
  };
264
406
  }
265
407
  // 2) MPL Core asset resolution
266
- const mpl = await this.fetchMplSnapshot(asPubkey, input.rpcUrl);
408
+ const mpl = await this.fetchMplSnapshot(asPubkey, input.rpcUrl, input.rpcHeaders);
267
409
  if (!mpl) {
268
410
  return {
269
411
  input: input.identifier,
@@ -296,7 +438,7 @@ export class MetaplexBridge {
296
438
  * @since v0.9.0
297
439
  */
298
440
  async verifyLink(args) {
299
- const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl);
441
+ const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl, args.rpcHeaders);
300
442
  if (!snap?.agentIdentityUri || !snap.registration)
301
443
  return false;
302
444
  const expectedSuffix = `/agents/${args.sapAgentPda.toBase58()}/eip-8004.json`;
@@ -304,6 +446,61 @@ export class MetaplexBridge {
304
446
  return false;
305
447
  return snap.registration.synapseAgent === args.sapAgentPda.toBase58();
306
448
  }
449
+ /**
450
+ * @name tripleCheckLink
451
+ * @description Explicit 3-layer verification for explorer/host badges.
452
+ * Returns one struct enumerating each check independently so UIs can
453
+ * present partial trust states (e.g. "MPL plugin present, JSON pending").
454
+ *
455
+ * Layers:
456
+ * 1. **mplOnChain** — Asset + AgentIdentity URI fetched on-chain.
457
+ * 2. **eip8004Json** — JSON fetched and `synapseAgent` matches PDA.
458
+ * 3. **sapOnChain** — `AgentAccount` PDA exists on the SAP program.
459
+ *
460
+ * @since v0.9.3
461
+ */
462
+ async tripleCheckLink(args) {
463
+ const snap = await this.fetchMplSnapshot(args.asset, args.rpcUrl, args.rpcHeaders);
464
+ if (!snap) {
465
+ const fallbackPda = args.expectedOwner
466
+ ? deriveAgent(args.expectedOwner)[0]
467
+ : args.asset;
468
+ return {
469
+ asset: args.asset,
470
+ sapAgentPda: fallbackPda,
471
+ mplOnChain: false,
472
+ eip8004Json: false,
473
+ sapOnChain: false,
474
+ linked: false,
475
+ agentIdentityUri: null,
476
+ registration: null,
477
+ identity: null,
478
+ error: "MPL Core asset not readable on-chain",
479
+ };
480
+ }
481
+ const owner = args.expectedOwner ?? snap.owner;
482
+ const [sapPda] = deriveAgent(owner);
483
+ const expectedSuffix = `/agents/${sapPda.toBase58()}/eip-8004.json`;
484
+ const mplOnChain = !!snap.agentIdentityUri;
485
+ const eip8004Json = !!snap.registration &&
486
+ !!snap.agentIdentityUri &&
487
+ snap.agentIdentityUri.endsWith(expectedSuffix) &&
488
+ snap.registration.synapseAgent === sapPda.toBase58();
489
+ const identity = await this.fetchAgentNullable(sapPda);
490
+ const sapOnChain = !!identity;
491
+ return {
492
+ asset: args.asset,
493
+ sapAgentPda: sapPda,
494
+ mplOnChain,
495
+ eip8004Json,
496
+ sapOnChain,
497
+ linked: mplOnChain && eip8004Json && sapOnChain,
498
+ agentIdentityUri: snap.agentIdentityUri,
499
+ registration: snap.registration,
500
+ identity,
501
+ error: null,
502
+ };
503
+ }
307
504
  // ═════════════════════════════════════════════════════
308
505
  // Private — SAP fetching
309
506
  // ═════════════════════════════════════════════════════
@@ -350,9 +547,17 @@ export class MetaplexBridge {
350
547
  // ═════════════════════════════════════════════════════
351
548
  // Private — MPL fetching
352
549
  // ═════════════════════════════════════════════════════
353
- async fetchMplSnapshot(asset, rpcUrl) {
354
- const { mplCore, umiBundle, umiCore } = await loadMplCore();
355
- const umi = umiBundle.createUmi(rpcUrl).use(mplCore.mplCore());
550
+ async buildUmi(rpcUrl, rpcHeaders) {
551
+ const { mplCore, umiBundle } = await loadMplCore();
552
+ // umi-bundle-defaults.createUmi accepts an options object with httpHeaders
553
+ // since umi 1.x — required for gated providers like Synapse RPC that
554
+ // enforce `x-api-key`. Without it `getAccountInfo` returns 401 silently.
555
+ const umi = umiBundle.createUmi(rpcUrl, rpcHeaders ? { httpHeaders: rpcHeaders } : undefined).use(mplCore.mplCore());
556
+ return umi;
557
+ }
558
+ async fetchMplSnapshot(asset, rpcUrl, rpcHeaders) {
559
+ const { mplCore, umiCore } = await loadMplCore();
560
+ const umi = await this.buildUmi(rpcUrl, rpcHeaders);
356
561
  try {
357
562
  const fetched = await mplCore.fetchAsset(umi, umiCore.publicKey(asset.toBase58()));
358
563
  const owner = new PublicKey(fetched.owner.toString());
@@ -433,6 +638,31 @@ export class MetaplexBridge {
433
638
  });
434
639
  return this.firstWeb3Ix(builder, "addExternalPluginAdapterV1");
435
640
  }
641
+ // ═════════════════════════════════════════════════════
642
+ // Private — SAP instruction building (v0.9.3)
643
+ // ═════════════════════════════════════════════════════
644
+ async buildRegisterAgentIx(args) {
645
+ // Lazy import to avoid a hard cycle with `pda/index.ts`.
646
+ const { deriveGlobalRegistry } = await import("../pda");
647
+ const { SystemProgram } = await import("@solana/web3.js");
648
+ const [agentPda] = deriveAgent(args.wallet);
649
+ const [statsPda] = deriveAgentStats(agentPda);
650
+ const [globalPda] = deriveGlobalRegistry();
651
+ const a = args.args;
652
+ // Cast to `any` to sidestep Anchor's deep generic IDL inference, which
653
+ // otherwise blows TS recursion budget here. Same pattern as BaseModule.
654
+ const methods = this.program.methods;
655
+ return await methods
656
+ .registerAgent(a.name, a.description, a.capabilities, a.pricing, a.protocols, a.agentId ?? null, a.agentUri ?? null, a.x402Endpoint ?? null)
657
+ .accounts({
658
+ wallet: args.wallet,
659
+ agent: agentPda,
660
+ agentStats: statsPda,
661
+ globalRegistry: globalPda,
662
+ systemProgram: SystemProgram.programId,
663
+ })
664
+ .instruction();
665
+ }
436
666
  async firstWeb3Ix(builder, name) {
437
667
  const items = builder.getInstructions();
438
668
  const first = items[0];