getindexinfo reports synced and best_block_height, but not how far along an index actually is. To know it today, you either subtract best_block_height from getblockcount, which gives the number of blocks left rather than the number of transactions left (what the other RPCs use to report progress), or you work out the remaining transactions with four extra calls: getblockhash plus getchaintxstats, for both the index's best block and the chain tip.
This adds a progress field per index, computed like verificationprogress in getchainstates: a ratio of cumulative transactions, measured against this node's validated chain tip.
Two things I left open. I considered renaming best_block_height to blocks to match getchainstates, but that would break existing callers, so I didnt do it. And I did not find a way to hold an index at a known height, so the tests only cover the fully synced case. Input welcome on both.