Skip to content

Enable Sui -> Any manual exec#107

Merged
andrevmatos merged 4 commits intomainfrom
add-sui-evm-manual-exec
Jan 27, 2026
Merged

Enable Sui -> Any manual exec#107
andrevmatos merged 4 commits intomainfrom
add-sui-evm-manual-exec

Conversation

@RodrigoAD
Copy link
Copy Markdown
Member

  • Adds Sui logic to handle from Sui messages
  • Enhances Sui discovery logic when contracts are owned by MCMS

@vercel
Copy link
Copy Markdown

vercel Bot commented Jan 19, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Review Updated (UTC)
ccip-tools-ts Error Error Jan 27, 2026 10:59am

Request Review

@RodrigoAD RodrigoAD marked this pull request as ready for review January 19, 2026 12:19
@RodrigoAD RodrigoAD requested a review from a team as a code owner January 19, 2026 12:19
@RodrigoAD RodrigoAD requested a review from andrevmatos January 19, 2026 12:20
@RodrigoAD RodrigoAD force-pushed the add-sui-evm-manual-exec branch from 8bb8add to e571c3a Compare January 19, 2026 15:01
@github-actions
Copy link
Copy Markdown

github-actions Bot commented Jan 19, 2026

Coverage Report

ℹ tests 639
ℹ suites 195
ℹ pass 639
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 75070.903094
-------------------------------|---------|----------|---------|---------|---------------------------
File                           | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s         
-------------------------------|---------|----------|---------|---------|---------------------------
All files                      |   65.48 |    79.26 |   53.93 |   65.48 |                           
 ccip-cli/src                  |   86.45 |    83.33 |      50 |   86.45 |                           
  index.ts                     |   86.45 |    83.33 |      50 |   86.45 | 72-76,82-83,88-93         
 ccip-cli/src/commands         |   52.12 |    78.21 |   52.08 |   52.12 |                           
  index.ts                     |     100 |      100 |     100 |     100 |                           
  lane-latency.ts              |   67.74 |     87.5 |   33.33 |   67.74 | 23-37,44-51,85-91         
  manual-exec.ts               |   20.17 |      100 |       0 |   20.17 | 37-101,108-118,120-221    
  parse.ts                     |   41.79 |      100 |       0 |   41.79 | 22-26,33-40,42-67         
  send.ts                      |   11.67 |      100 |       0 |   11.67 | 31-134,141-148,150-317    
  show.ts                      |   90.35 |    63.82 |      60 |   90.35 | ...20-126,132-134,143-144 
  supported-tokens.ts          |   23.48 |      100 |       0 |   23.48 | ...83-175,177-232,234-247 
  token.ts                     |   25.42 |      100 |       0 |   25.42 | 24-39,46-53,55-118        
  types.ts                     |     100 |      100 |     100 |     100 |                           
  utils.ts                     |   86.59 |    82.05 |    91.3 |   86.59 | ...99-517,524-532,542-548 
 ccip-cli/src/providers        |   53.87 |    75.51 |   17.39 |   53.87 |                           
  aptos.ts                     |   53.65 |      100 |       0 |   53.65 | ...70,78-85,91-92,101-123 
  evm.ts                       |   46.03 |      100 |       0 |   46.03 | 20,31-63                  
  index.ts                     |   82.88 |    72.72 |      80 |   82.88 | 48-49,187-222             
  solana.ts                    |   50.42 |      100 |       0 |   50.42 | ...-71,79-85,89-90,99-117 
  sui.ts                       |   64.28 |      100 |       0 |   64.28 | 10-14                     
  ton.ts                       |   14.58 |      100 |       0 |   14.58 | 22-144                    
 ccip-sdk/src                  |   93.59 |    86.97 |   92.06 |   93.59 |                           
  chain.ts                     |   91.48 |    78.78 |      70 |   91.48 | ...46,358-363,633,691-700 
  commits.ts                   |     100 |    88.88 |     100 |     100 | 35,52                     
  execution.ts                 |   84.61 |      100 |      75 |   84.61 | 122-143                   
  explorer.ts                  |     100 |      100 |     100 |     100 |                           
  extra-args.ts                |     100 |    85.71 |     100 |     100 | 71,90                     
  gas.ts                       |   94.18 |       60 |     100 |   94.18 | 67-71                     
  http-status.ts               |     100 |      100 |     100 |     100 |                           
  index.ts                     |     100 |      100 |     100 |     100 |                           
  offchain.ts                  |     100 |      100 |     100 |     100 |                           
  requests.ts                  |   86.38 |    82.22 |    87.5 |   86.38 | ...16,324,349-350,354-355 
  supported-chains.ts          |     100 |      100 |     100 |     100 |                           
  types.ts                     |     100 |      100 |     100 |     100 |                           
  utils.ts                     |   95.16 |    88.88 |     100 |   95.16 | ...78,542-543,559,624-632 
 ccip-sdk/src/api              |   97.92 |    80.76 |     100 |   97.92 |                           
  index.ts                     |   97.92 |    80.76 |     100 |   97.92 | ...04-205,285-286,350-351 
 ccip-sdk/src/aptos            |   57.65 |    69.93 |   59.37 |   57.65 |                           
  exec.ts                      |   29.31 |      100 |       0 |   29.31 | 18-58                     
  hasher.ts                    |   76.31 |       80 |   66.66 |   76.31 | 19-38,52-58               
  index.ts                     |   58.45 |    74.07 |   61.36 |   58.45 | ...04-739,743-836,840-851 
  logs.ts                      |   78.52 |    57.44 |      75 |   78.52 | ...90-196,200-233,264-268 
  send.ts                      |    25.2 |      100 |       0 |    25.2 | 10-51,62-79,92-123        
  token.ts                     |   23.75 |       75 |     100 |   23.75 | 35-156                    
  types.ts                     |   69.72 |      100 |       0 |   69.72 | 25-32,77-101              
  utils.ts                     |     100 |      100 |     100 |     100 |                           
 ccip-sdk/src/errors           |   79.29 |    77.22 |   47.05 |   79.29 |                           
  CCIPError.ts                 |     100 |      100 |     100 |     100 |                           
  codes.ts                     |     100 |      100 |     100 |     100 |                           
  index.ts                     |     100 |      100 |     100 |     100 |                           
  recovery.ts                  |     100 |      100 |     100 |     100 |                           
  specialized.ts               |   71.18 |    72.78 |   44.24 |   71.18 | ...36,1744-1753,1761-1770 
  utils.ts                     |   94.52 |    77.77 |     100 |   94.52 | 16,18,23,25               
 ccip-sdk/src/evm              |   66.33 |    78.12 |    62.5 |   66.33 |                           
  const.ts                     |     100 |      100 |     100 |     100 |                           
  errors.ts                    |   82.48 |    78.46 |     100 |   82.48 | ...55-157,188-195,198-216 
  gas.ts                       |   97.98 |    53.84 |     100 |   97.98 | 71-72,74                  
  hasher.ts                    |     100 |     87.5 |     100 |     100 | 122                       
  index.ts                     |   57.93 |    85.16 |    56.6 |   57.93 | ...02,1406-1455,1492-1499 
  logs.ts                      |   33.99 |    46.66 |      25 |   33.99 | ...13-214,229-258,274-302 
  messages.ts                  |     100 |      100 |     100 |     100 |                           
  offchain.ts                  |    80.4 |    53.33 |      75 |    80.4 | ...45-147,151-165,191-196 
 ccip-sdk/src/evm/viem         |   77.72 |       92 |   69.23 |   77.72 |                           
  client-adapter.ts            |     100 |     92.3 |     100 |     100 | 48                        
  index.ts                     |     100 |      100 |     100 |     100 |                           
  wallet-adapter.ts            |   63.09 |     90.9 |   55.55 |   63.09 | ...6,53-73,91-124,131-157 
 ccip-sdk/src/hasher           |   94.29 |    78.94 |     100 |   94.29 |                           
  common.ts                    |     100 |      100 |     100 |     100 |                           
  hasher.ts                    |     100 |    66.66 |     100 |     100 | 19                        
  index.ts                     |     100 |      100 |     100 |     100 |                           
  merklemulti.ts               |   93.43 |       78 |     100 |   93.43 | ...59-260,306-307,315-316 
 ccip-sdk/src/solana           |   52.34 |    70.24 |   55.17 |   52.34 |                           
  cleanup.ts                   |   12.22 |      100 |       0 |   12.22 | 29-229                    
  exec.ts                      |    9.43 |      100 |       0 |    9.43 | ...68-343,345-384,386-498 
  hasher.ts                    |   96.58 |    81.81 |     100 |   96.58 | 67-70                     
  index.ts                     |   70.78 |    76.38 |   64.15 |   70.78 | ...37,1441-1465,1469-1490 
  logs.ts                      |   74.19 |    27.27 |     100 |   74.19 | ...,50-51,53-54,56-88,119 
  offchain.ts                  |   78.87 |     64.7 |      50 |   78.87 | ...,96-97,110-111,126-142 
  patchBorsh.ts                |   65.06 |    57.14 |      75 |   65.06 | 30-49,65-66,72-78         
  send.ts                      |   13.93 |      100 |       0 |   13.93 | ...57-246,259-325,327-366 
  types.ts                     |   74.46 |      100 |       0 |   74.46 | 36-47                     
  utils.ts                     |   54.62 |    77.77 |   54.54 |   54.62 | ...37-350,392-455,461-476 
 ccip-sdk/src/sui              |   31.61 |    90.38 |   17.24 |   31.61 |                           
  discovery.ts                 |   13.02 |      100 |       0 |   13.02 | 18-36,46-182,185-215      
  events.ts                    |   30.21 |      100 |       0 |   30.21 | ...83-154,199-288,296-321 
  hasher.ts                    |   98.16 |    66.66 |     100 |   98.16 | 33,49                     
  index.ts                     |   36.05 |       95 |   16.27 |   36.05 | ...33-834,838-839,843-844 
  objects.ts                   |   12.77 |      100 |       0 |   12.77 | ...05-146,157-207,218-360 
 ccip-sdk/src/sui/manuallyExec |   39.46 |      100 |       0 |   39.46 |                           
  encoder.ts                   |   47.67 |      100 |       0 |   47.67 | 42-86                     
  index.ts                     |    34.3 |      100 |       0 |    34.3 | 48-137                    
 ccip-sdk/src/ton              |   71.55 |    83.19 |   54.41 |   71.55 |                           
  exec.ts                      |     100 |      100 |     100 |     100 |                           
  hasher.ts                    |   77.95 |    77.77 |      75 |   77.95 | 99-107,155-186            
  index.ts                     |   68.94 |    75.23 |    41.3 |   68.94 | ...55,1059-1060,1064-1065 
  logs.ts                      |     100 |    98.43 |     100 |     100 | 56                        
  types.ts                     |   78.41 |    69.23 |   66.66 |   78.41 | ...-76,94,121-134,136-139 
  utils.ts                     |   60.78 |    83.33 |    87.5 |   60.78 | ...55-261,269-327,329-332 
-------------------------------|---------|----------|---------|---------|---------------------------

Comment thread ccip-sdk/src/sui/index.ts
Comment on lines +276 to +277
const packageId = address.replace(/::onramp$/, '')
const target = `${packageId}::onramp::type_and_version`
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You shouldn't assume ::onramp: this method should be generic, and work with any suffix handled to it; this way, we can identify a ::router or an ::offramp, like on Aptos:

function: `${address}::type_and_version` as `${string}::${string}::type_and_version`,

What we should do instead is, ensure every address WE keep anywhere and hand to sui.typeAndVersion() has the module suffix; the only place when/where we should handle non-suffixed addresses/packageId is when we receive them from users, but there we usually know what the user wants (e.g. a sendMessage call is probably expected to call the ::router at that packageId, but even then, if user explicitly passed a suffixed address, we should honor it)

Suggested change
const packageId = address.replace(/::onramp$/, '')
const target = `${packageId}::onramp::type_and_version`
const target = `${address}::type_and_version`

@andrevmatos andrevmatos merged commit 95471dd into main Jan 27, 2026
15 of 17 checks passed
@andrevmatos andrevmatos deleted the add-sui-evm-manual-exec branch January 27, 2026 21:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants