@@ -293,7 +293,7 @@ class AcpClient {
293293 callback ( true ) ;
294294
295295 if ( this . onEvaluate ) {
296- const job = this . _hydrateJob ( data ) ;
296+ const job = await this . _hydrateJob ( data ) ;
297297
298298 this . onEvaluate ( job ) ;
299299 }
@@ -303,7 +303,7 @@ class AcpClient {
303303 callback ( true ) ;
304304
305305 if ( this . onNewTask ) {
306- const job = this . _hydrateJob ( data ) ;
306+ const job = await this . _hydrateJob ( data ) ;
307307
308308 if ( job . phase === AcpJobPhases . EXPIRED ) {
309309 console . warn ( `onNewTask skipped for job ${ data . id } : job has expired` ) ;
@@ -364,13 +364,10 @@ class AcpClient {
364364 }
365365 }
366366
367- private _hydrateMemo (
368- memo : IAcpMemoData ,
369- contractClient : BaseAcpContractClient
370- ) : AcpMemo {
367+ private async _hydrateMemo ( memo : IAcpMemoData ) : Promise < AcpMemo > {
371368 try {
372- return new AcpMemo (
373- contractClient ,
369+ return await AcpMemo . build (
370+ this ,
374371 memo . id ,
375372 memo . memoType ,
376373 memo . content ,
@@ -389,7 +386,7 @@ class AcpClient {
389386 }
390387 }
391388
392- private _hydrateJob ( job : IAcpJob ) : AcpJob {
389+ private async _hydrateJob ( job : IAcpJob ) : Promise < AcpJob > {
393390 try {
394391 return new AcpJob (
395392 this ,
@@ -399,37 +396,33 @@ class AcpClient {
399396 job . evaluatorAddress ,
400397 job . price ,
401398 job . priceTokenAddress ,
402- job . memos . map ( ( memo ) =>
403- this . _hydrateMemo (
404- memo ,
405- this . contractClientByAddress ( job . contractAddress )
406- )
407- ) ,
399+ await Promise . all ( job . memos . map ( ( memo ) => this . _hydrateMemo ( memo ) ) ) ,
408400 job . phase ,
409401 job . context ,
410402 job . contractAddress ,
411- job . deliverable ,
412403 job . netPayableAmount
413404 ) ;
414405 } catch ( err ) {
415406 throw new AcpError ( `Failed to hydrate job ${ job . id } ` , err ) ;
416407 }
417408 }
418409
419- private _hydrateJobs (
410+ private async _hydrateJobs (
420411 rawJobs : IAcpJob [ ] ,
421412 options ?: {
422413 logPrefix ?: string ;
423414 }
424- ) : AcpJob [ ] {
425- const jobs = rawJobs . map ( ( job ) => {
426- try {
427- return this . _hydrateJob ( job ) ;
428- } catch ( err ) {
429- console . warn ( `${ options ?. logPrefix ?? "Skipped" } ` , err ) ;
430- return null ;
431- }
432- } ) ;
415+ ) : Promise < AcpJob [ ] > {
416+ const jobs = await Promise . all (
417+ rawJobs . map ( ( job ) => {
418+ try {
419+ return this . _hydrateJob ( job ) ;
420+ } catch ( err ) {
421+ console . warn ( `${ options ?. logPrefix ?? "Skipped" } ` , err ) ;
422+ return null ;
423+ }
424+ } )
425+ ) ;
433426
434427 return jobs . filter ( ( job ) => ! ! job ) as AcpJob [ ] ;
435428 }
@@ -471,6 +464,7 @@ class AcpClient {
471464 offering . requirement ,
472465 offering . deliverable ,
473466 offering . subscriptionTiers ?? [ ] ,
467+ offering . isPrivate
474468 ) ;
475469 } ) ,
476470 contractAddress : agent . contractAddress ,
@@ -657,12 +651,25 @@ class AcpClient {
657651 priceType : PriceType . SUBSCRIPTION ,
658652 } )
659653 : preparePayload ( serviceRequirement ) ;
654+ const isPrivate =
655+ typeof serviceRequirement === "object" &&
656+ "isPrivate" in serviceRequirement &&
657+ serviceRequirement . isPrivate ;
658+
659+ let content = preparePayload ( serviceRequirement ) ;
660+
661+ if ( isPrivate ) {
662+ const memoContent = await this . createMemoContent ( jobId , content ) ;
663+ content = memoContent . url ;
664+ }
660665
661666 payloads . push (
662667 this . acpContractClient . createMemo (
663668 jobId ,
664669 memoPayload ,
665670 MemoType . MESSAGE ,
671+ content ,
672+ isPrivate ? MemoType . OBJECT_URL : MemoType . MESSAGE ,
666673 true ,
667674 AcpJobPhases . NEGOTIATION
668675 )
@@ -744,10 +751,7 @@ class AcpClient {
744751 return null ;
745752 }
746753
747- return this . _hydrateMemo (
748- memo ,
749- this . contractClientByAddress ( memo . contractAddress )
750- ) ;
754+ return this . _hydrateMemo ( memo ) ;
751755 }
752756
753757 async getAgent ( walletAddress : Address , options : IAcpGetAgentOptions = { } ) {
0 commit comments